------------------------------------------------------------ revno: 10246 committer: Lars Helge Ă˜verland <larshe...@gmail.com> branch nick: dhis2 timestamp: Fri 2013-03-15 12:10:10 +0100 message: Analytics tables, aborting gracefull if in invalid state, eg if there are no data values in the database modified: dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/IdentifiableObjectManager.java dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/SharingUtils.java dhis-2/dhis-api/src/main/java/org/hisp/dhis/scheduling/TaskId.java dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/AnalyticsTableManager.java dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/DefaultAnalyticsTableService.java dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/JdbcAnalyticsTableManager.java dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/JdbcCompletenessTableManager.java dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/JdbcCompletenessTargetTableManager.java dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/notification/InMemoryNotifier.java
-- lp:dhis2 https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk Your team DHIS 2 developers is subscribed to branch lp:dhis2. To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/IdentifiableObjectManager.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/IdentifiableObjectManager.java 2013-03-14 04:50:21 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/IdentifiableObjectManager.java 2013-03-15 11:10:10 +0000 @@ -27,15 +27,14 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import org.hisp.dhis.common.IdentifiableObject.IdentifiableProperty; -import org.hisp.dhis.common.NameableObject.NameableProperty; - import java.util.Collection; import java.util.Date; -import java.util.List; import java.util.Map; import java.util.Set; +import org.hisp.dhis.common.IdentifiableObject.IdentifiableProperty; +import org.hisp.dhis.common.NameableObject.NameableProperty; + /** * @author Lars Helge Overland */ === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/SharingUtils.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/SharingUtils.java 2013-03-14 10:58:42 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/SharingUtils.java 2013-03-15 11:10:10 +0000 @@ -27,9 +27,13 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + import org.hisp.dhis.chart.Chart; import org.hisp.dhis.datadictionary.DataDictionary; -import org.hisp.dhis.dataelement.DataElement; import org.hisp.dhis.dataset.DataSet; import org.hisp.dhis.document.Document; import org.hisp.dhis.indicator.Indicator; @@ -42,11 +46,6 @@ import org.hisp.dhis.user.UserGroup; import org.hisp.dhis.user.UserGroupAccess; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - /** * @author Morten Olav Hansen <morte...@gmail.com> */ === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/scheduling/TaskId.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/scheduling/TaskId.java 2012-04-03 22:08:32 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/scheduling/TaskId.java 2013-03-15 11:10:10 +0000 @@ -36,7 +36,9 @@ { private static final String SEPARATOR = "-"; - private String id; + private TaskCategory category; + + private User user; public TaskId() { @@ -44,18 +46,26 @@ public TaskId( TaskCategory category, User user ) { - this.id = category.toString() + SEPARATOR + user.getUserCredentials().getUsername(); + this.category = category; + this.user = user; } public String getId() { + String id = category.toString(); + + if ( user != null && user.getUserCredentials() != null ) + { + id += SEPARATOR + user.getUserCredentials().getUsername(); + } + return id; } @Override public int hashCode() { - return id.hashCode(); + return getId().hashCode(); } @Override @@ -78,12 +88,12 @@ TaskId other = (TaskId) obj; - return id.equals( other.id ); + return getId().equals( other.getId() ); } @Override public String toString() { - return "[" + id + "]"; + return "[" + getId() + "]"; } } === modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/AnalyticsTableManager.java' --- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/AnalyticsTableManager.java 2013-02-21 18:18:15 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/AnalyticsTableManager.java 2013-03-15 11:10:10 +0000 @@ -41,6 +41,11 @@ public static final String COMPLETENESS_TARGET_TABLE_NAME = "completenesstarget"; /** + * Checks if the database content is in valid state for analytics table generation. + */ + boolean validState(); + + /** * Returns the base table name. */ String getTableName(); === modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/DefaultAnalyticsTableService.java' --- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/DefaultAnalyticsTableService.java 2013-03-05 22:03:40 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/DefaultAnalyticsTableService.java 2013-03-15 11:10:10 +0000 @@ -83,12 +83,21 @@ { Clock clock = new Clock().startClock().logTime( "Starting update" ); + boolean valid = tableManager.validState(); + + if ( !valid ) + { + notifier.notify( taskId, DATAMART, "Table not valid, aborted update" ); + return; + } + final Date threeYrsAgo = new Cal().subtract( Calendar.YEAR, 2 ).set( 1, 1 ).time(); final Date earliest = last3YearsOnly ? threeYrsAgo : tableManager.getEarliestData(); final Date latest = tableManager.getLatestData(); final String tableName = tableManager.getTableName(); final List<String> tables = PartitionUtils.getTempTableNames( earliest, latest, tableName ); - clock.logTime( "Got partition tables: " + tables + ", earliest: " + earliest + ", latest: " + latest ); + + clock.logTime( "Partition tables: " + tables + ", earliest: " + earliest + ", latest: " + latest + ", last 3 years: " + last3YearsOnly ); notifier.notify( taskId, DATAMART, "Creating analytics tables" ); === modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/JdbcAnalyticsTableManager.java' --- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/JdbcAnalyticsTableManager.java 2013-03-07 09:42:11 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/JdbcAnalyticsTableManager.java 2013-03-15 11:10:10 +0000 @@ -71,6 +71,11 @@ //TODO use statement builder for double column type + public boolean validState() + { + return jdbcTemplate.queryForRowSet( "select dataelementid from datavalue limit 1" ).next(); + } + public String getTableName() { return "analytics"; === modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/JdbcCompletenessTableManager.java' --- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/JdbcCompletenessTableManager.java 2013-03-07 09:42:11 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/JdbcCompletenessTableManager.java 2013-03-15 11:10:10 +0000 @@ -44,6 +44,11 @@ public class JdbcCompletenessTableManager extends AbstractJdbcTableManager { + public boolean validState() + { + return jdbcTemplate.queryForRowSet( "select datasetid from completedatasetregistration limit 1" ).next(); + } + public String getTableName() { return "completeness"; === modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/JdbcCompletenessTargetTableManager.java' --- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/JdbcCompletenessTargetTableManager.java 2013-03-07 09:42:11 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/table/JdbcCompletenessTargetTableManager.java 2013-03-15 11:10:10 +0000 @@ -41,6 +41,11 @@ public class JdbcCompletenessTargetTableManager extends AbstractJdbcTableManager { + public boolean validState() + { + return true; + } + public String getTableName() { return "completenesstarget"; === modified file 'dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/notification/InMemoryNotifier.java' --- dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/notification/InMemoryNotifier.java 2013-03-05 19:00:51 +0000 +++ dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/notification/InMemoryNotifier.java 2013-03-15 11:10:10 +0000 @@ -49,7 +49,7 @@ { private static final Log log = LogFactory.getLog( InMemoryNotifier.class ); - private int MAX_SIZE = 100; + private int MAX_SIZE = 75; private TaskLocalList<Notification> notifications;
_______________________________________________ Mailing list: https://launchpad.net/~dhis2-devs Post to : dhis2-devs@lists.launchpad.net Unsubscribe : https://launchpad.net/~dhis2-devs More help : https://help.launchpad.net/ListHelp