=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramDataEntryService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramDataEntryService.java 2011-05-27 04:02:40 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramDataEntryService.java 2011-05-30 04:34:47 +0000 @@ -30,7 +30,6 @@ import java.util.Collection; import java.util.regex.Pattern; -import org.hisp.dhis.dataelement.DataElement; import org.hisp.dhis.i18n.I18n; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.patientdatavalue.PatientDataValue; @@ -45,7 +44,9 @@ final Pattern INPUT_PATTERN = Pattern.compile( "(", Pattern.DOTALL ); final Pattern SELECT_PATTERN = Pattern.compile( "(", Pattern.DOTALL ); final Pattern IDENTIFIER_PATTERN_TEXTBOX = Pattern.compile( "\"value\\[([\\p{Digit}.]*)\\].value:value\\[([\\p{Digit}.]*)\\].value:value\\[([\\p{Digit}.]*)\\].value\"" ); - final Pattern IDENTIFIER_PATTERN_OTHERS = Pattern.compile( "\"value\\[([\\p{Digit}.]*)\\].\\S+:value\\[([\\p{Digit}.]*)\\].\\S+\"" ); + final Pattern IDENTIFIER_PATTERN_BOOLEAN = Pattern.compile( "value\\[(.*)\\].boolean:value\\[(.*)\\].boolean" ); + final Pattern IDENTIFIER_PATTERN_COMBO = Pattern.compile( "\"value\\[([\\p{Digit}.]*)\\].combo:value\\[([\\p{Digit}.]*)\\].combo\"" ); + final Pattern IDENTIFIER_PATTERN_DATE = Pattern.compile( "\"value\\[([\\p{Digit}.]*)\\].date:value\\[([\\p{Digit}.]*)\\].date\"" ); //-------------------------------------------------------------------------- // ProgramDataEntryService @@ -55,5 +56,5 @@ I18n i18n, ProgramStage programStage, ProgramStageInstance programStageInstance, OrganisationUnit organisationUnit ); - String prepareDataEntryFormForEdit( String htmlCode, Collection dataElements ); + String prepareDataEntryFormForEdit( String htmlCode ); } === modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/DefaultProgramDataEntryService.java' --- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/DefaultProgramDataEntryService.java 2011-05-27 04:02:40 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/DefaultProgramDataEntryService.java 2011-05-30 04:34:47 +0000 @@ -27,6 +27,7 @@ package org.hisp.dhis.program; +import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Map; @@ -135,13 +136,15 @@ return result; } - public String prepareDataEntryFormForEdit( String htmlCode , Collection dataElements ) + public String prepareDataEntryFormForEdit( String htmlCode ) { - String result = populateCustomDataEntryForTextBox( htmlCode, dataElements ); - - result = populateCustomDataEntryForCombo( htmlCode, dataElements ); - - result = populateCustomDataEntryForDate( htmlCode, dataElements ); + String result = populateCustomDataEntryForTextBox( htmlCode ); + + result = populateCustomDataEntryForCombo( result ); + + result = populateCustomDataEntryForBoolean( result ); + + result = populateCustomDataEntryForDate( result ); return result; } @@ -150,7 +153,7 @@ // Supportive methods // ------------------------------------------------------------------------- - private String populateCustomDataEntryForTextBox( String htmlCode , Collection dataElements ) + private String populateCustomDataEntryForTextBox( String htmlCode ) { // --------------------------------------------------------------------- // Metadata code to add to HTML before outputting @@ -187,12 +190,14 @@ // Get data element ID of data element // ------------------------------------------------------------- + int programStageId = Integer.parseInt( identifierMatcher.group( 1 ) ); + ProgramStage programStage = programStageService.getProgramStage( programStageId ); + Collection dataElements = new ArrayList( programStageDataElementService.getListDataElement( programStage ) ); + int dataElementId = Integer.parseInt( identifierMatcher.group( 2 ) ); + DataElement dataElement = dataElementService.getDataElement( dataElementId ); int optionComboId = Integer.parseInt( identifierMatcher.group( 3 ) ); - - DataElement dataElement = dataElementService.getDataElement( dataElementId ); - DataElementCategoryOptionCombo optionCombo = categoryService .getDataElementCategoryOptionCombo( optionComboId ); @@ -208,64 +213,122 @@ } } - return sb.toString(); - } - - private String populateCustomDataEntryForCombo( String htmlCode, Collection dataElements) - { - // --------------------------------------------------------------------- - // Metadata code to add to HTML before outputting - // --------------------------------------------------------------------- - - StringBuffer sb = new StringBuffer(); - - // --------------------------------------------------------------------- - // Pattern to match data elements in the HTML code - // --------------------------------------------------------------------- - - Matcher inputMatcher = SELECT_PATTERN.matcher( htmlCode ); - - // --------------------------------------------------------------------- - // Iterate through all matching data element fields - // --------------------------------------------------------------------- - - while ( inputMatcher.find() ) - { - String inputHTML = inputMatcher.group(); - - // ----------------------------------------------------------------- - // Get HTML input field code - // ----------------------------------------------------------------- - - String dataElementCode = inputMatcher.group( 1 ); - - Matcher identifierMatcher = IDENTIFIER_PATTERN_OTHERS.matcher( dataElementCode ); - - if ( identifierMatcher.find() && identifierMatcher.groupCount() > 0 ) - { - // ------------------------------------------------------------- - // Get data element ID of data element - // ------------------------------------------------------------- - - int dataElementId = Integer.parseInt( identifierMatcher.group( 2 ) ); - - DataElement dataElement = dataElementService.getDataElement( dataElementId ); - - if ( !dataElements.contains( dataElement ) ) - { - inputMatcher.appendReplacement( sb, DATA_ELEMENT_DOES_NOT_EXIST ); - } - else - { - inputMatcher.appendReplacement( sb, inputHTML ); - } - } - } - - return sb.toString(); - } - - private String populateCustomDataEntryForDate( String htmlCode, Collection dataElements ) + return ( sb.toString().isEmpty() ) ? htmlCode : sb.toString(); + } + + private String populateCustomDataEntryForBoolean( String htmlCode ) + { + // --------------------------------------------------------------------- + // Metadata code to add to HTML before outputting + // --------------------------------------------------------------------- + + StringBuffer sb = new StringBuffer(); + + // --------------------------------------------------------------------- + // Pattern to match data elements in the HTML code + // --------------------------------------------------------------------- + + Matcher inputMatcher = SELECT_PATTERN.matcher( htmlCode ); + + // --------------------------------------------------------------------- + // Iterate through all matching data element fields + // --------------------------------------------------------------------- + + while ( inputMatcher.find() ) + { + String inputHTML = inputMatcher.group(); + + // ----------------------------------------------------------------- + // Get HTML input field code + // ----------------------------------------------------------------- + + String dataElementCode = inputMatcher.group( 1 ); + + Matcher identifierMatcher = IDENTIFIER_PATTERN_BOOLEAN.matcher( dataElementCode ); + + if ( identifierMatcher.find() && identifierMatcher.groupCount() > 0 ) + { + // ------------------------------------------------------------- + // Get data element ID of data element + // ------------------------------------------------------------- + int programStageId = Integer.parseInt( identifierMatcher.group( 1 ) ); + ProgramStage programStage = programStageService.getProgramStage( programStageId ); + Collection dataElements = new ArrayList( programStageDataElementService.getListDataElement( programStage ) ); + + int dataElementId = Integer.parseInt( identifierMatcher.group( 2 ) ); + DataElement dataElement = dataElementService.getDataElement( dataElementId ); + + if ( !dataElements.contains( dataElement ) ) + { + inputMatcher.appendReplacement( sb, DATA_ELEMENT_DOES_NOT_EXIST ); + } + else + { + inputMatcher.appendReplacement( sb, inputHTML ); + } + } + } + + return ( sb.toString().isEmpty() ) ? htmlCode : sb.toString(); + } + + private String populateCustomDataEntryForCombo( String htmlCode ) + { + // --------------------------------------------------------------------- + // Metadata code to add to HTML before outputting + // --------------------------------------------------------------------- + + StringBuffer sb = new StringBuffer(); + + // --------------------------------------------------------------------- + // Pattern to match data elements in the HTML code + // --------------------------------------------------------------------- + + Matcher inputMatcher = SELECT_PATTERN.matcher( htmlCode ); + + // --------------------------------------------------------------------- + // Iterate through all matching data element fields + // --------------------------------------------------------------------- + + while ( inputMatcher.find() ) + { + String inputHTML = inputMatcher.group(); + + // ----------------------------------------------------------------- + // Get HTML input field code + // ----------------------------------------------------------------- + + String dataElementCode = inputMatcher.group( 1 ); + + Matcher identifierMatcher = IDENTIFIER_PATTERN_COMBO.matcher( dataElementCode ); + + if ( identifierMatcher.find() && identifierMatcher.groupCount() > 0 ) + { + // ------------------------------------------------------------- + // Get data element ID of data element + // ------------------------------------------------------------- + int programStageId = Integer.parseInt( identifierMatcher.group( 1 ) ); + ProgramStage programStage = programStageService.getProgramStage( programStageId ); + Collection dataElements = new ArrayList( programStageDataElementService.getListDataElement( programStage ) ); + + int dataElementId = Integer.parseInt( identifierMatcher.group( 2 ) ); + DataElement dataElement = dataElementService.getDataElement( dataElementId ); + + if ( !dataElements.contains( dataElement ) ) + { + inputMatcher.appendReplacement( sb, DATA_ELEMENT_DOES_NOT_EXIST ); + } + else + { + inputMatcher.appendReplacement( sb, inputHTML ); + } + } + } + + return ( sb.toString().isEmpty() ) ? htmlCode : sb.toString(); + } + + private String populateCustomDataEntryForDate( String htmlCode ) { // --------------------------------------------------------------------- // Metadata code to add to HTML before outputting @@ -293,18 +356,21 @@ String dataElementCode = inputMatcher.group( 1 ); - Matcher identifierMatcher = IDENTIFIER_PATTERN_OTHERS.matcher( dataElementCode ); + Matcher identifierMatcher = IDENTIFIER_PATTERN_DATE.matcher( dataElementCode ); if ( identifierMatcher.find() && identifierMatcher.groupCount() > 0 ) { // ------------------------------------------------------------- // Get data element ID of data element // ------------------------------------------------------------- + + int programStageId = Integer.parseInt( identifierMatcher.group( 1 ) ); + ProgramStage programStage = programStageService.getProgramStage( programStageId ); + Collection dataElements = new ArrayList( programStageDataElementService.getListDataElement( programStage ) ); int dataElementId = Integer.parseInt( identifierMatcher.group( 2 ) ); - DataElement dataElement = dataElementService.getDataElement( dataElementId ); - + if ( !dataElements.contains( dataElement ) ) { inputMatcher.appendReplacement( sb, DATA_ELEMENT_DOES_NOT_EXIST ); @@ -315,7 +381,7 @@ } } - return sb.toString(); + return ( sb.toString().isEmpty() ) ? htmlCode : sb.toString(); } private String populateCustomDataEntryForTextBox( String dataEntryFormCode, @@ -572,7 +638,7 @@ String compulsory = "null"; String dataElementCode = dataElementMatcher.group( 1 ); - Matcher identifierMatcher = IDENTIFIER_PATTERN_OTHERS.matcher( dataElementCode ); + Matcher identifierMatcher = IDENTIFIER_PATTERN_BOOLEAN.matcher( dataElementCode ); if ( identifierMatcher.find() && identifierMatcher.groupCount() > 0 ) { // ------------------------------------------------------------- @@ -815,7 +881,7 @@ String dataElementCode = dataElementMatcher.group( 1 ); - Matcher identifierMatcher = IDENTIFIER_PATTERN_OTHERS.matcher( dataElementCode ); + Matcher identifierMatcher = IDENTIFIER_PATTERN_COMBO.matcher( dataElementCode ); String compulsory = "null"; @@ -1050,7 +1116,7 @@ String compulsory = "null"; String dataElementCode = dataElementMatcher.group( 1 ); - Matcher identifierMatcher = IDENTIFIER_PATTERN_OTHERS.matcher( dataElementCode ); + Matcher identifierMatcher = IDENTIFIER_PATTERN_DATE.matcher( dataElementCode ); if ( identifierMatcher.find() && identifierMatcher.groupCount() > 0 ) { === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/java/org/hisp/dhis/patient/action/dataentryform/ViewDataEntryFormAction.java' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/java/org/hisp/dhis/patient/action/dataentryform/ViewDataEntryFormAction.java 2011-05-27 04:02:40 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/java/org/hisp/dhis/patient/action/dataentryform/ViewDataEntryFormAction.java 2011-05-30 04:34:47 +0000 @@ -31,13 +31,10 @@ import java.util.Collections; import java.util.List; -import org.hisp.dhis.dataelement.DataElement; -import org.hisp.dhis.dataelement.comparator.DataElementNameComparator; import org.hisp.dhis.dataentryform.DataEntryForm; import org.hisp.dhis.dataentryform.DataEntryFormService; import org.hisp.dhis.program.ProgramDataEntryService; import org.hisp.dhis.program.ProgramStage; -import org.hisp.dhis.program.ProgramStageDataElementService; import org.hisp.dhis.program.ProgramStageService; import org.hisp.dhis.program.comparator.ProgramStageNameComparator; @@ -77,13 +74,6 @@ this.programStageService = programStageService; } - private ProgramStageDataElementService programStageDataElementService; - - public void setProgramStageDataElementService( ProgramStageDataElementService programStageDataElementService ) - { - this.programStageDataElementService = programStageDataElementService; - } - // ------------------------------------------------------------------------- // Getters & Setters // ------------------------------------------------------------------------- @@ -116,13 +106,6 @@ return existingDataEntryForms; } - public List dataElements; - - public List getDataElements() - { - return dataElements; - } - private List programStages; public List getProgramStages() @@ -147,14 +130,6 @@ programStage = programStageService.getProgramStage( programStageId ); // --------------------------------------------------------------------- - // Get data-elements into selected program-stage - // --------------------------------------------------------------------- - - dataElements = new ArrayList( programStageDataElementService.getListDataElement( programStage ) ); - - Collections.sort( dataElements, new DataElementNameComparator() ); - - // --------------------------------------------------------------------- // Get dataEntryForm of selected program-stage // --------------------------------------------------------------------- @@ -162,7 +137,7 @@ if ( dataEntryForm != null ) { - dataEntryValue = programDataEntryService.prepareDataEntryFormForEdit( dataEntryForm.getHtmlCode(), dataElements ); + dataEntryValue = programDataEntryService.prepareDataEntryFormForEdit( dataEntryForm.getHtmlCode() ); } else { === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/resources/META-INF/dhis/beans.xml 2011-05-27 04:02:40 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/resources/META-INF/dhis/beans.xml 2011-05-30 04:34:47 +0000 @@ -809,8 +809,6 @@ -