=== modified file 'local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/ExportReport.java' --- local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/ExportReport.java 2011-07-28 09:50:39 +0000 +++ local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/ExportReport.java 2011-11-18 04:24:39 +0000 @@ -27,6 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; @@ -193,6 +194,24 @@ return null; } + public Collection getExportItemsByItemType( String... types ) + { + List items = new ArrayList(); + + for ( ExportItem e : this.exportItems ) + { + for ( String type : types ) + { + if ( e.getItemType().equalsIgnoreCase( type ) ) + { + items.add( e ); + } + } + } + + return items; + } + // ------------------------------------------------------------------------- // Getters and setters // ------------------------------------------------------------------------- === modified file 'local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/ExportReportService.java' --- local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/ExportReportService.java 2011-08-04 08:39:55 +0000 +++ local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/ExportReportService.java 2011-11-18 04:24:39 +0000 @@ -29,6 +29,7 @@ import java.util.Collection; import org.hisp.dhis.dataset.DataSet; +import org.hisp.dhis.i18n.I18n; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.period.Period; import org.hisp.dhis.reportsheet.status.DataEntryStatus; @@ -123,4 +124,6 @@ public PeriodColumn getPeriodColumn( Integer id ); public void updatePeriodColumn( PeriodColumn periodColumn ); + + public String validateEmportItems( ExportReport exportReport, I18n i18n ); } === modified file 'local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/impl/DefaultExportReportService.java' --- local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/impl/DefaultExportReportService.java 2011-08-04 08:39:55 +0000 +++ local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/impl/DefaultExportReportService.java 2011-11-18 04:24:39 +0000 @@ -31,15 +31,28 @@ import java.util.ArrayList; import java.util.Collection; +import java.util.HashSet; +import java.util.List; import java.util.Set; import org.apache.commons.collections.CollectionUtils; +import org.hisp.dhis.dataelement.DataElement; +import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo; +import org.hisp.dhis.dataelement.DataElementCategoryService; +import org.hisp.dhis.dataelement.DataElementOperand; +import org.hisp.dhis.dataelement.DataElementService; import org.hisp.dhis.dataset.DataSet; +import org.hisp.dhis.expression.ExpressionService; +import org.hisp.dhis.i18n.I18n; import org.hisp.dhis.i18n.I18nService; +import org.hisp.dhis.indicator.Indicator; +import org.hisp.dhis.indicator.IndicatorService; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.period.Period; +import org.hisp.dhis.reportsheet.DataElementGroupOrder; import org.hisp.dhis.reportsheet.ExportItem; import org.hisp.dhis.reportsheet.ExportReport; +import org.hisp.dhis.reportsheet.ExportReportCategory; import org.hisp.dhis.reportsheet.ExportReportService; import org.hisp.dhis.reportsheet.ExportReportStore; import org.hisp.dhis.reportsheet.PeriodColumn; @@ -62,6 +75,20 @@ // Dependency // ------------------------------------------------------------------------- + private DataElementService dataElementService; + + public void setDataElementService( DataElementService dataElementService ) + { + this.dataElementService = dataElementService; + } + + private DataElementCategoryService categoryService; + + public void setCategoryService( DataElementCategoryService categoryService ) + { + this.categoryService = categoryService; + } + private ExportReportStore exportReportStore; public void setExportReportStore( ExportReportStore exportReportStore ) @@ -69,6 +96,13 @@ this.exportReportStore = exportReportStore; } + private ExpressionService expressionService; + + public void setExpressionService( ExpressionService expressionService ) + { + this.expressionService = expressionService; + } + private UserStore userStore; public void setUserStore( UserStore userStore ) @@ -76,6 +110,13 @@ this.userStore = userStore; } + private IndicatorService indicatorService; + + public void setIndicatorService( IndicatorService indicatorService ) + { + this.indicatorService = indicatorService; + } + private I18nService i18nService; public void setI18nService( I18nService i18nService ) @@ -175,7 +216,7 @@ { return exportReportStore.getExportReportsByReportType( reportType ); } - + public Collection getAllExportReportTemplates() { return exportReportStore.getAllExportReportTemplates(); @@ -277,7 +318,7 @@ { return exportReportStore.getDataEntryStatusByDataSets( arg0 ); } - + public Collection getDataEntryStatusDefaultByDataSets( Collection arg0 ) { return exportReportStore.getDataEntryStatusDefaultByDataSets( arg0 ); @@ -297,4 +338,88 @@ { exportReportStore.updatePeriodColumn( periodColumn ); } + + public String validateEmportItems( ExportReport exportReport, I18n i18n ) + { + Set items = new HashSet( exportReport.getExportItemsByItemType( + ExportItem.TYPE.DATAELEMENT, ExportItem.TYPE.INDICATOR ) ); + + if ( exportReport.getReportType().equalsIgnoreCase( ExportReport.TYPE.CATEGORY ) ) + { + for ( DataElementGroupOrder groupOrder : ((ExportReportCategory) exportReport).getDataElementOrders() ) + { + if ( groupOrder.getDataElements() == null || groupOrder.getDataElements().isEmpty() ) + { + return i18n.getString( "group_order" ) + ": " + groupOrder.getName() + " " + + i18n.getString( "has_no_element" ); + } + } + + String optionComboId = null; + List optionComboIds = new ArrayList(); + + for ( ExportItem item : items ) + { + optionComboId = item.getExpression().split( "\\" + DataElementOperand.SEPARATOR )[1].replace( "]", "" ); + + if ( !optionComboIds.contains( optionComboId ) ) + { + optionComboIds.add( optionComboId ); + + DataElementCategoryOptionCombo optionCombo = categoryService + .getDataElementCategoryOptionCombo( Integer.parseInt( optionComboId ) ); + + if ( optionCombo == null ) + { + return i18n.getString( "cate_option_combo_with_id" ) + ": " + optionComboId + " " + + i18n.getString( "does_not_exist" ); + } + } + } + } + else + { + Set operands = new HashSet(); + + for ( ExportItem item : items ) + { + operands = expressionService.getOperandsInExpression( item.getExpression() ); + + for ( DataElementOperand operand : operands ) + { + if ( operand.getOptionComboId() == 0 ) + { + Indicator indicator = indicatorService.getIndicator( operand.getDataElementId() ); + + if ( indicator == null ) + { + return i18n.getString( "indicator_with_id" ) + ": " + operand.getDataElementId() + " " + + i18n.getString( "does_not_exist" ); + } + } + else + { + DataElement dataElement = dataElementService.getDataElement( operand.getDataElementId() ); + + if ( dataElement == null ) + { + return i18n.getString( "dataelement_with_id" ) + ": " + operand.getDataElementId() + " " + + i18n.getString( "does_not_exist" ); + } + + DataElementCategoryOptionCombo optionCombo = categoryService + .getDataElementCategoryOptionCombo( operand.getOptionComboId() ); + + if ( optionCombo == null ) + { + return i18n.getString( "cate_option_combo_with_id" ) + ": " + operand.getOptionComboId() + + " " + i18n.getString( "does_not_exist" ); + } + } + } + } + } + + return null; + } } === modified file 'local/vn/dhis-service-spreadsheet-reporting/src/main/resources/META-INF/dhis/beans.xml' --- local/vn/dhis-service-spreadsheet-reporting/src/main/resources/META-INF/dhis/beans.xml 2011-08-03 08:38:38 +0000 +++ local/vn/dhis-service-spreadsheet-reporting/src/main/resources/META-INF/dhis/beans.xml 2011-11-18 04:24:39 +0000 @@ -16,6 +16,10 @@ + + + + === modified file 'local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/ValidateGenerateExportReportAction.java' --- local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/ValidateGenerateExportReportAction.java 2011-10-13 03:03:58 +0000 +++ local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/ValidateGenerateExportReportAction.java 2011-11-18 04:24:39 +0000 @@ -93,16 +93,23 @@ throws Exception { Integer reportId = Integer.parseInt( exportReportId.split( "_" )[0] ); - + ExportReport exportReport = exportReportService.getExportReport( reportId ); - + if ( exportReport == null ) { message = i18n.getString( "the_specified_report_is_not_exist" ); return ERROR; } - + + message = exportReportService.validateEmportItems( exportReport, i18n ); + + if ( message != null ) + { + return ERROR; + } + File templateDirectory = reportLocationManager.getExportReportTemplateDirectory(); if ( templateDirectory == null || !templateDirectory.exists() ) @@ -120,7 +127,7 @@ return ERROR; } - + selectionManager.setSelectedPeriodIndex( periodIndex ); selectionManager.setSelectedReportId( reportId ); === modified file 'local/vn/dhis-web-spreadsheet-reporting/src/main/resources/org/hisp/dhis/reportsheet/i18n_module.properties' --- local/vn/dhis-web-spreadsheet-reporting/src/main/resources/org/hisp/dhis/reportsheet/i18n_module.properties 2011-11-03 09:28:41 +0000 +++ local/vn/dhis-web-spreadsheet-reporting/src/main/resources/org/hisp/dhis/reportsheet/i18n_module.properties 2011-11-18 04:24:39 +0000 @@ -299,4 +299,10 @@ file_format_structure_broken= Warning! File format structure is broken. number_of_members = Number of members edit_excel_template = Edit name of excel template -no_group_order_created_for_category = No group order created for this category report \ No newline at end of file +no_group_order_created_for_category = No group order created for this category report +group_order = Data element group order +has_no_element = has no element +indicator_with_id = Indicator with id +dataelement_with_id = Dataelement with id +cate_option_combo_with_id = Option combo with id +does_not_exist = does not exist \ No newline at end of file === modified file 'local/vn/dhis-web-spreadsheet-reporting/src/main/resources/org/hisp/dhis/reportsheet/i18n_module_vi_VN.properties' --- local/vn/dhis-web-spreadsheet-reporting/src/main/resources/org/hisp/dhis/reportsheet/i18n_module_vi_VN.properties 2011-11-03 09:28:41 +0000 +++ local/vn/dhis-web-spreadsheet-reporting/src/main/resources/org/hisp/dhis/reportsheet/i18n_module_vi_VN.properties 2011-11-18 04:24:39 +0000 @@ -331,3 +331,10 @@ PERIOD_COLUMN_LISTING=Li\u1ec7t k\u00ea th\u1eddi \u0111i\u1ec3m theo c\u1ed9t upload_successful=T\u1ea3i t\u1eadp tin th\u00e0nh c\u00f4ng \! override_confirm=B\u1ea3ng m\u1eabu \u0111\u00e3 t\u1ed3n t\u1ea1i. B\u1ea1n c\u00f3 mu\u1ed1n ghi \u0111\u00e8 hay kh\u00f4ng ? +no_group_order_created_for_category = No group order created for this category report +group_order=Nh\u00f3m ph\u1ea7n t\u1eed d\u1eef li\u1ec7u s\u1eafp x\u1ebfp (Category) +has_no_element=kh\u00f4ng c\u00f3 t\u1eadp con +indicator_with_id=Ch\u1ec9 s\u1ed1 c\u00f3 m\u00e3 +dataelement_with_id=Ph\u1ea7n t\u1eed d\u1eef li\u1ec7u c\u00f3 m\u00e3 +cate_option_combo_with_id=T\u1eadp m\u1ee5c ch\u1ecdn ph\u00e2n lo\u1ea1i c\u00f3 m\u00e3 +does_not_exist=kh\u00f4ng t\u1ed3n t\u1ea1i \ No newline at end of file