=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/DataSetService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/DataSetService.java 2010-12-22 04:05:46 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/DataSetService.java 2011-01-25 16:29:50 +0000 @@ -278,4 +278,11 @@ Collection getDataSetsBetween(int first, int max ); + /** + * Retrieves true/false with data set has members for a given PeriodType. + * + * @param periodType the PeriodType. + * @return true or false. + */ + boolean dataSetHasMembers( PeriodType periodType ); } === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/DataSetStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/DataSetStore.java 2010-12-22 04:05:46 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/DataSetStore.java 2011-01-25 16:29:50 +0000 @@ -189,5 +189,7 @@ int getDataSetCount(); Collection getDataSetsBetween(int first, int max ); + + boolean dataSetHasMembers( PeriodType periodType ); } === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataset/DefaultDataSetService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataset/DefaultDataSetService.java 2010-12-22 04:05:46 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataset/DefaultDataSetService.java 2011-01-25 16:29:50 +0000 @@ -344,4 +344,10 @@ { return dataSetStore.getDataSetsBetweenByName( name, first, max ); } + + @Override + public boolean dataSetHasMembers( PeriodType periodType ) + { + return dataSetStore.dataSetHasMembers( periodType ); + } } === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataset/hibernate/HibernateDataSetStore.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataset/hibernate/HibernateDataSetStore.java 2011-01-06 13:33:29 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataset/hibernate/HibernateDataSetStore.java 2011-01-25 16:29:50 +0000 @@ -358,4 +358,15 @@ { return getBetweenByName( name, first, max ); } + + public boolean dataSetHasMembers( PeriodType periodType ) + { + periodType = periodStore.getPeriodType( periodType.getClass() ); + + String hql = "select count(*) from DataSet d where d.dataElements.size > 0 and d.periodType = :periodType"; + Query query = sessionFactory.getCurrentSession().createQuery( hql ); + Number rs = (Number)query.setEntity( "periodType", periodType ).uniqueResult(); + + return rs == null ? false : rs.intValue() > 0; + } } === modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/ValidateValidationRuleAction.java' --- dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/ValidateValidationRuleAction.java 2010-09-18 09:50:09 +0000 +++ dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/ValidateValidationRuleAction.java 2011-01-25 16:29:50 +0000 @@ -27,15 +27,18 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.dataset.DataSetService; import org.hisp.dhis.i18n.I18n; +import org.hisp.dhis.period.PeriodService; import org.hisp.dhis.validation.ValidationRule; import org.hisp.dhis.validation.ValidationRuleService; import com.opensymphony.xwork2.ActionSupport; -/** +/** * @author Margrethe Store - * @version $Id: ValidateValidationRuleAction.java 3868 2007-11-08 15:11:12Z larshelg $ + * @version $Id: ValidateValidationRuleAction.java 3868 2007-11-08 15:11:12Z + * larshelg $ */ public class ValidateValidationRuleAction extends ActionSupport @@ -50,7 +53,21 @@ { this.validationRuleService = validationRuleService; } - + + private PeriodService periodService; + + public void setPeriodService( PeriodService periodService ) + { + this.periodService = periodService; + } + + private DataSetService dataSetService; + + public void setDataSetService( DataSetService dataSetService ) + { + this.dataSetService = dataSetService; + } + private I18n i18n; public void setI18n( I18n i18n ) @@ -61,7 +78,7 @@ // ------------------------------------------------------------------------- // Input // ------------------------------------------------------------------------- - + private Integer id; public void setId( Integer id ) @@ -75,7 +92,14 @@ { this.name = validationName; } - + + private String periodTypeName; + + public void setPeriodTypeName( String periodTypeName ) + { + this.periodTypeName = periodTypeName; + } + // ------------------------------------------------------------------------- // Output // ------------------------------------------------------------------------- @@ -93,33 +117,46 @@ public String execute() { - if ( name == null ) - { - message = i18n.getString( "specify_name" ); - - return INPUT; - } - else + if ( name != null ) { name = name.trim(); if ( name.length() == 0 ) { message = i18n.getString( "specify_name" ); - + return INPUT; } ValidationRule match = validationRuleService.getValidationRuleByName( name ); - if ( match != null && ( id == null || match.getId() != id ) ) + if ( match != null && (id == null || match.getId() != id) ) { message = i18n.getString( "name_in_use" ); return INPUT; } } - + + if ( periodTypeName != null ) + { + periodTypeName = periodTypeName.trim(); + + if ( periodTypeName.length() == 0 ) + { + message = i18n.getString( "specify_period_type" ); + + return INPUT; + } + + if ( !dataSetService.dataSetHasMembers( periodService.getPeriodTypeByName( periodTypeName ) ) ) + { + message = i18n.getString( "specify_period_type_used_in_dataset_has_member" ); + + return INPUT; + } + } + message = i18n.getString( "everything_is_ok" ); return SUCCESS; === modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-web/dhis-web-validationrule/src/main/resources/META-INF/dhis/beans.xml 2010-12-27 00:21:07 +0000 +++ dhis-2/dhis-web/dhis-web-validationrule/src/main/resources/META-INF/dhis/beans.xml 2011-01-25 16:29:50 +0000 @@ -71,6 +71,12 @@ + + + + + + - + - #foreach ( $periodType in $periodTypes ) #end @@ -45,7 +46,7 @@ - + - - #foreach ( $periodType in $periodTypes ) #end @@ -54,7 +51,7 @@ - +