dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #16742
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 6439: Merged datavalueset and datavalues resources
------------------------------------------------------------
revno: 6439
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Thu 2012-03-29 18:45:18 +0200
message:
Merged datavalueset and datavalues resources
removed:
dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalue/
dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalue/DataValues.java
dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetService.java
dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DefaultDataValueSetService.java
dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataValueController.java
added:
dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalue/
renamed:
dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalue/DataValue.java => dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalue/DataValue.java
dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalue/DataValueService.java => dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetService.java
dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalue/DefaultDataValueService.java => dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DefaultDataValueSetService.java
modified:
dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/IdentifiableObjectManager.java
dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/CompleteDataSetRegistrationService.java
dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/CompleteDataSetRegistrationStore.java
dhis-2/dhis-api/src/main/java/org/hisp/dhis/period/PeriodType.java
dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataValueSet.java
dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/importsummary/ImportSummary.java
dhis-2/dhis-dxf2/src/main/resources/META-INF/dhis/beans.xml
dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/common/DefaultIdentifiableObjectManager.java
dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataset/DefaultCompleteDataSetRegistrationService.java
dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataset/hibernate/HibernateCompleteDataSetRegistrationStore.java
dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataValueSetController.java
dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetService.java
dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DefaultDataValueSetService.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 2012-03-28 18:27:56 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/IdentifiableObjectManager.java 2012-03-29 16:45:18 +0000
@@ -1,9 +1,5 @@
package org.hisp.dhis.common;
-import java.util.Map;
-
-import org.hisp.dhis.common.IdentifiableObject.IdentifiableProperty;
-
/*
* Copyright (c) 2004-2005, University of Oslo
* All rights reserved.
@@ -31,6 +27,10 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+import java.util.Map;
+
+import org.hisp.dhis.common.IdentifiableObject.IdentifiableProperty;
+
/**
* @author Lars Helge Overland
*/
@@ -46,6 +46,8 @@
<T extends IdentifiableObject> Map<String, T> getIdMap( Class<T> clazz, IdentifiableProperty property );
+ <T extends IdentifiableObject> T getObject( Class<T> clazz, IdentifiableProperty property, String id );
+
IdentifiableObject getObject( String uid, String simpleClassName );
IdentifiableObject getObject( int id, String simpleClassName );
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/CompleteDataSetRegistrationService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/CompleteDataSetRegistrationService.java 2011-12-26 10:07:59 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/CompleteDataSetRegistrationService.java 2012-03-29 16:45:18 +0000
@@ -47,6 +47,13 @@
* @param registration the CompleteDataSetRegistration to save.
*/
void saveCompleteDataSetRegistration( CompleteDataSetRegistration registration );
+
+ /**
+ * Updates a CompleteDataSetRegistration.
+ *
+ * @param registration the CompleteDataSetRegistration to update.
+ */
+ void updateCompleteDataSetRegistration( CompleteDataSetRegistration registration );
/**
* Retrieves the CompleteDataSetRegistration for the given DataSet, Period
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/CompleteDataSetRegistrationStore.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/CompleteDataSetRegistrationStore.java 2011-12-26 10:07:59 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/CompleteDataSetRegistrationStore.java 2012-03-29 16:45:18 +0000
@@ -49,6 +49,13 @@
void saveCompleteDataSetRegistration( CompleteDataSetRegistration registration );
/**
+ * Updates a CompleteDataSetRegistration.
+ *
+ * @param registration the CompleteDataSetRegistration to update.
+ */
+ void updateCompleteDataSetRegistration( CompleteDataSetRegistration registration );
+
+ /**
* Retrieves the CompleteDataSetRegistration for the given DataSet, Period
* and Source.
*
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/period/PeriodType.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/period/PeriodType.java 2012-03-28 18:27:56 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/period/PeriodType.java 2012-03-29 16:45:18 +0000
@@ -303,16 +303,21 @@
*/
public static Period getPeriodFromIsoString( String isoPeriod )
{
- PeriodType periodType = getPeriodTypeFromIsoString( isoPeriod );
+ if ( isoPeriod != null )
+ {
+ PeriodType periodType = getPeriodTypeFromIsoString( isoPeriod );
+
+ try
+ {
+ return periodType != null ? periodType.createPeriod() : null;
+ }
+ catch ( Exception ex )
+ {
+ // Do nothing and return null
+ }
+ }
- try
- {
- return periodType != null ? periodType.createPeriod() : null;
- }
- catch ( Exception ex )
- {
- return null;
- }
+ return null;
}
/**
=== removed directory 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalue'
=== added directory 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalue'
=== renamed file 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalue/DataValue.java' => 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalue/DataValue.java'
=== removed file 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalue/DataValues.java'
--- dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalue/DataValues.java 2012-03-28 18:27:56 +0000
+++ dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalue/DataValues.java 1970-01-01 00:00:00 +0000
@@ -1,57 +0,0 @@
-package org.hisp.dhis.dxf2.datavalue;
-
-/*
- * Copyright (c) 2011, University of Oslo
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * * Neither the name of the HISP project nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.hisp.dhis.common.Dxf2Namespace;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
-import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
-import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
-
-@JacksonXmlRootElement( localName = "dxf2", namespace = Dxf2Namespace.NAMESPACE )
-public class DataValues
-{
- private List<DataValue> dataValues = new ArrayList<DataValue>();
-
- @JsonProperty
- @JacksonXmlElementWrapper( localName = "dataValues", namespace = Dxf2Namespace.NAMESPACE )
- @JacksonXmlProperty( localName = "dataValue", namespace = Dxf2Namespace.NAMESPACE )
- public List<DataValue> getDataValues()
- {
- return dataValues;
- }
-
- public void setDataValues( List<DataValue> dataValues )
- {
- this.dataValues = dataValues;
- }
-}
=== modified file 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataValueSet.java'
--- dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataValueSet.java 2012-03-28 18:46:31 +0000
+++ dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataValueSet.java 2012-03-29 16:45:18 +0000
@@ -34,45 +34,28 @@
import org.hisp.dhis.dxf2.datavalue.DataValue;
import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
+import com.fasterxml.jackson.annotation.JsonUnwrapped;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
@JacksonXmlRootElement( localName = "dataValueSet", namespace = Dxf2Namespace.NAMESPACE )
public class DataValueSet
-{
+{
public enum IdentificationStrategy { INTERNAL, UID, CODE };
- /**
- * A default strategy to use.
- */
public static final IdentificationStrategy DEFAULT_STRATEGY = IdentificationStrategy.UID;
private String dataSet;
+ private String completeDate;
+
+ private String period;
+
private String orgUnit;
- private String period;
-
- private String completeDate;
-
- private IdentificationStrategy idScheme;
-
private List<DataValue> dataValues = new ArrayList<DataValue>();
- @JsonProperty
- @JacksonXmlProperty( isAttribute=true, namespace = Dxf2Namespace.NAMESPACE )
- public IdentificationStrategy getIdScheme()
- {
- return (idScheme != null) ? idScheme : DEFAULT_STRATEGY;
- }
-
- public void setIdScheme( IdentificationStrategy idScheme )
- {
- this.idScheme = idScheme;
- }
-
- @JsonProperty() //TODO make required
+ @JsonProperty()
@JacksonXmlProperty( isAttribute=true, namespace = Dxf2Namespace.NAMESPACE )
public String getDataSet()
{
@@ -86,18 +69,6 @@
@JsonProperty()
@JacksonXmlProperty( isAttribute=true, namespace = Dxf2Namespace.NAMESPACE )
- public String getOrgUnit()
- {
- return orgUnit;
- }
-
- public void setOrgUnit( String orgUnit )
- {
- this.orgUnit = orgUnit;
- }
-
- @JsonProperty()
- @JacksonXmlProperty( isAttribute=true, namespace = Dxf2Namespace.NAMESPACE )
public String getPeriod()
{
return period;
@@ -120,9 +91,20 @@
this.completeDate = completeDate;
}
+ @JsonProperty()
+ @JacksonXmlProperty( isAttribute=true, namespace = Dxf2Namespace.NAMESPACE )
+ public String getOrgUnit()
+ {
+ return orgUnit;
+ }
+
+ public void setOrgUnit( String orgUnit )
+ {
+ this.orgUnit = orgUnit;
+ }
+
@JsonProperty
- @JacksonXmlElementWrapper( localName = "dataValues", namespace = Dxf2Namespace.NAMESPACE )
- @JacksonXmlProperty( localName = "dataValue", namespace = Dxf2Namespace.NAMESPACE )
+ @JacksonXmlProperty( namespace = Dxf2Namespace.NAMESPACE )
public List<DataValue> getDataValues()
{
return dataValues;
=== removed file 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetService.java'
--- dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetService.java 2012-03-28 18:28:57 +0000
+++ dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetService.java 1970-01-01 00:00:00 +0000
@@ -1,33 +0,0 @@
-package org.hisp.dhis.dxf2.datavalueset;
-
-/*
- * Copyright (c) 2004-2005, University of Oslo
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * * Neither the name of the <ORGANIZATION> nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-public interface DataValueSetService
-{
- void saveDataValueSet( DataValueSet dataValueSet );
-}
=== renamed file 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalue/DataValueService.java' => 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetService.java'
--- dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalue/DataValueService.java 2012-03-29 09:59:05 +0000
+++ dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetService.java 2012-03-29 16:45:18 +0000
@@ -1,4 +1,4 @@
-package org.hisp.dhis.dxf2.datavalue;
+package org.hisp.dhis.dxf2.datavalueset;
/*
* Copyright (c) 2011, University of Oslo
@@ -28,10 +28,13 @@
*/
import org.hisp.dhis.common.IdentifiableObject.IdentifiableProperty;
+import org.hisp.dhis.dxf2.datavalueset.DataValueSet;
import org.hisp.dhis.dxf2.importsummary.ImportSummary;
import org.hisp.dhis.importexport.ImportStrategy;
-public interface DataValueService
+public interface DataValueSetService
{
- ImportSummary saveDataValues( DataValues dataValues, IdentifiableProperty idScheme, boolean dryRun, ImportStrategy strategy );
+ ImportSummary saveDataValueSet( DataValueSet dataValueSet );
+
+ ImportSummary saveDataValueSet( DataValueSet dataValueSet, IdentifiableProperty idScheme, boolean dryRun, ImportStrategy strategy );
}
=== removed file 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DefaultDataValueSetService.java'
--- dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DefaultDataValueSetService.java 2012-03-28 18:46:31 +0000
+++ dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DefaultDataValueSetService.java 1970-01-01 00:00:00 +0000
@@ -1,421 +0,0 @@
-package org.hisp.dhis.dxf2.datavalueset;
-
-/*
- * Copyright (c) 2011, University of Oslo
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * * Neither the name of the HISP project nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.hisp.dhis.dataelement.DataElement;
-import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo;
-import org.hisp.dhis.dataelement.DataElementCategoryService;
-import org.hisp.dhis.dataelement.DataElementService;
-import org.hisp.dhis.dataset.CompleteDataSetRegistration;
-import org.hisp.dhis.dataset.CompleteDataSetRegistrationService;
-import org.hisp.dhis.dataset.DataSet;
-import org.hisp.dhis.dataset.DataSetService;
-import org.hisp.dhis.datavalue.DataValue;
-import org.hisp.dhis.datavalue.DataValueService;
-import org.hisp.dhis.dxf2.datavalueset.DataValueSet.IdentificationStrategy;
-import org.hisp.dhis.organisationunit.OrganisationUnit;
-import org.hisp.dhis.organisationunit.OrganisationUnitService;
-import org.hisp.dhis.period.DailyPeriodType;
-import org.hisp.dhis.period.Period;
-import org.hisp.dhis.period.PeriodType;
-import org.hisp.dhis.user.CurrentUserService;
-import org.springframework.transaction.annotation.Transactional;
-
-public class DefaultDataValueSetService
- implements DataValueSetService
-{
- private static final Log log = LogFactory.getLog( DataValueSetService.class );
-
- private OrganisationUnitService organisationUnitService;
-
- private DataSetService dataSetService;
-
- private DataElementCategoryService categoryService;
-
- private DataElementService dataElementService;
-
- private DataValueService dataValueService;
-
- private CompleteDataSetRegistrationService registrationService;
-
- private CurrentUserService currentUserService;
-
- /**
- * Save a dataValueSet.
- * <p>
- * Handles the content in the following way
- * <ul>
- * <li>if data set is not specified, will resolve it through data elements
- * if not ambiguous.
- * <li>optionCombo defaults to 'default' if not specified
- * <li>storedBy defaults to currently logged in user's name
- * <li>if value is empty not present -> delete value
- * </ul>
- * <ul>
- * Validates the following:
- * <p>
- * First checks that:
- * <ul>
- * <li>dataSet exists (tries to resolve it through the data elements if not
- * specified)
- * <li>orgUnit exists
- * <li>orgunit reports dataSet
- * <li>period is a valid period
- * <li>the dataValueSet is not registered as complete or that if it is a
- * complete date is present
- * <li>if complete date is empty string - delete completion
- * <li>if complete date present checks validity
- * </ul>
- * For all dataValues check that:
- * <ul>
- * <li>dataElement exists and is in dataSet
- * <li>optionCombo exists and is in dataElement
- * </ul>
- * What isn't checked yet:
- * <ul>
- * <li>The value is valid!
- * <li>There isn't duplicated value entries (will throw Constraint
- * exception)
- * <li>If multiple data sets are possible, evaluate if they are incompatible
- * (complete, locking and possibly period)
- * </ul>
- * Concerns:
- * <ul>
- * <li>deletion through sending "empty string" value dependent on semantics
- * of add/update in data value store
- * <li>completed semantics: can't uncomplete but can complete and
- * "recomplete"
- *
- * @param dataValueSet
- * @throws IllegalArgumentException if there are any inconsistencies
- */
- @Transactional
- public void saveDataValueSet( DataValueSet dataValueSet )
- {
- Date timestamp = new Date();
-
- IdentificationStrategy idStrategy = dataValueSet.getIdScheme();
-
- if ( idStrategy != DataValueSet.DEFAULT_STRATEGY )
- {
- throw new IllegalArgumentException( "Only UID id strategy supported currently" );
- }
-
- DataSet dataSet = getDataSet( dataValueSet );
-
- OrganisationUnit unit = getOrgUnit( dataValueSet.getOrgUnit() );
-
- if ( !dataSet.getSources().contains( unit ) )
- {
- throw new IllegalArgumentException( "Organisation unit with ID " + unit.getUid()
- + " does not report data set with ID " + dataSet.getUid() );
- }
-
- Period period = getPeriod( dataValueSet.getPeriod(), dataSet.getPeriodType() );
-
- handleComplete( dataValueSet, dataSet, unit, period );
-
- for ( org.hisp.dhis.dxf2.datavalue.DataValue dxfValue : dataValueSet.getDataValues() )
- {
- saveDataValue( timestamp, dataSet, unit, period, dxfValue );
- }
-
- log( dataValueSet, unit, dataSet );
- }
-
- private void log( DataValueSet dataValueSet, OrganisationUnit unit, DataSet dataSet )
- {
- String message = "Saved data value set for " + dataSet.getName() + ", " + unit.getName() + ", "
- + dataValueSet.getPeriod() + " - data values received: ";
-
- for ( org.hisp.dhis.dxf2.datavalue.DataValue value : dataValueSet.getDataValues() )
- {
- message += value.getDataElement() + " = " + value.getValue() + ", ";
- }
-
- log.info( message.substring( 0, message.length() - 3 ) );
- }
-
- private DataSet getDataSet( DataValueSet dataValueSet )
- {
- DataSet dataSet = null;
-
- String uid = dataValueSet.getDataSet();
-
- if ( uid != null )
- {
- dataSet = dataSetService.getDataSet( uid );
-
- if ( dataSet == null )
- {
- throw new IllegalArgumentException( "Data set with ID " + uid + " does not exist" );
- }
- }
- else
- {
- dataSet = resolveDataSet( dataValueSet );
- }
-
- return dataSet;
- }
-
- private DataSet resolveDataSet( DataValueSet dataValueSet )
- {
- //TODO make data set required
-
- if ( dataValueSet.getDataValues() == null )
- {
- throw new IllegalArgumentException( "Data value set does not specify a data set and does not contain data values" );
- }
-
- Set<DataSet> potentialDataSets = new HashSet<DataSet>();
-
- for ( org.hisp.dhis.dxf2.datavalue.DataValue value : dataValueSet.getDataValues() )
- {
- DataElement dataElement = getDataElement( value.getDataElement() );
- Set<DataSet> dataSets = dataElement.getDataSets();
-
- if ( dataSets == null || dataSets.isEmpty() )
- {
- throw new IllegalArgumentException( "Data element " + dataElement.getUid() + " is not in a data set" );
- }
- else if ( dataSets.size() == 1 )
- {
- return dataSets.iterator().next();
- }
- else
- {
- potentialDataSets.addAll( dataSets );
- }
- }
-
- String message = "Ambiguous which of these data set the data values belong to: ";
-
- for ( DataSet ds : potentialDataSets )
- {
- message += ds.getUid() + ", ";
- }
-
- message.substring( 0, message.length() - 2 );
-
- throw new IllegalArgumentException( message );
- }
-
- private void saveDataValue( Date timestamp, DataSet dataSet, OrganisationUnit unit, Period period,
- org.hisp.dhis.dxf2.datavalue.DataValue dxfValue )
- {
- DataElement dataElement = getDataElement( dxfValue.getDataElement() );
-
- if ( !dataSet.getDataElements().contains( dataElement ) )
- {
- throw new IllegalArgumentException( "Data element " + dataElement.getUid() + " is not in data set "
- + dataSet.getUid() );
- }
-
- DataElementCategoryOptionCombo combo = getOptionCombo( dxfValue.getCategoryOptionCombo(), dataElement );
-
- DataValue dv = dataValueService.getDataValue( unit, dataElement, period, combo );
-
- String value = dxfValue.getValue();
-
- String storedBy = currentUserService.getCurrentUsername();
-
- if ( dv == null )
- {
- dv = new DataValue( dataElement, period, unit, value, storedBy, timestamp, null, combo );
- dataValueService.addDataValue( dv );
- }
- else
- {
- dv.setValue( value );
- dv.setTimestamp( timestamp );
- dv.setStoredBy( storedBy );
- dataValueService.updateDataValue( dv );
- }
- }
-
- private void handleComplete( DataValueSet dataValueSet, DataSet dataSet, OrganisationUnit unit, Period period )
- {
- CompleteDataSetRegistration alreadyComplete = registrationService.getCompleteDataSetRegistration( dataSet,
- period, unit );
-
- String completeDateString = dataValueSet.getCompleteDate();
-
- if ( alreadyComplete != null && completeDateString == null )
- {
- throw new IllegalArgumentException( "Data value set is complete, include a new complete date if you want to recomplete" );
- }
-
- if ( alreadyComplete != null )
- {
- registrationService.deleteCompleteDataSetRegistration( alreadyComplete );
- }
-
- CompleteDataSetRegistration complete = null;
-
- if ( completeDateString != null && !completeDateString.trim().isEmpty() )
- {
- complete = getComplete( dataSet, unit, period, completeDateString, complete );
- }
-
- if ( complete != null )
- {
- registrationService.saveCompleteDataSetRegistration( complete );
- }
- }
-
- private CompleteDataSetRegistration getComplete( DataSet dataSet, OrganisationUnit unit, Period period,
- String completeDateString, CompleteDataSetRegistration complete )
- {
- SimpleDateFormat format = new SimpleDateFormat( DailyPeriodType.ISO_FORMAT );
-
- try
- {
- Date completeDate = format.parse( completeDateString );
- complete = new CompleteDataSetRegistration( dataSet, period, unit, completeDate,
- currentUserService.getCurrentUsername() );
- }
- catch ( ParseException e )
- {
- throw new IllegalArgumentException( "Complete date not in valid format: " + DailyPeriodType.ISO_FORMAT );
- }
-
- return complete;
- }
-
- private Period getPeriod( String periodIsoDate, PeriodType periodType )
- {
- Period period;
-
- try
- {
- period = periodType.createPeriod( periodIsoDate );
- }
- catch ( Exception e )
- {
- throw new IllegalArgumentException( "Period " + periodIsoDate + " is not a valid period of type "
- + periodType.getName() );
- }
-
- return period;
- }
-
- private OrganisationUnit getOrgUnit( String uid )
- {
- OrganisationUnit unit = organisationUnitService.getOrganisationUnit( uid );
-
- if ( unit == null )
- {
- throw new IllegalArgumentException( "Org unit with ID " + uid + " does not exist" );
- }
-
- return unit;
- }
-
- private DataElement getDataElement( String uid )
- {
- DataElement dataElement = dataElementService.getDataElement( uid );
-
- if ( dataElement == null )
- {
- throw new IllegalArgumentException( "Data element with ID " + uid + " does not exist" );
- }
-
- return dataElement;
- }
-
- private DataElementCategoryOptionCombo getOptionCombo( String uid, DataElement dataElement )
- {
- DataElementCategoryOptionCombo combo;
-
- if ( uid == null )
- {
- combo = categoryService.getDefaultDataElementCategoryOptionCombo();
- }
- else
- {
- combo = categoryService.getDataElementCategoryOptionCombo( uid );
- }
-
- if ( combo == null )
- {
- throw new IllegalArgumentException( "Data element category option combo with ID " + uid
- + " does not exist" );
- }
-
- if ( !dataElement.getCategoryCombo().getOptionCombos().contains( combo ) )
- {
- throw new IllegalArgumentException( "Data element category option combo with ID " + combo.getUid()
- + " is not in data element " + dataElement.getUid() );
- }
- return combo;
- }
-
- public void setOrganisationUnitService( OrganisationUnitService organisationUnitService )
- {
- this.organisationUnitService = organisationUnitService;
- }
-
- public void setDataSetService( DataSetService dataSetService )
- {
- this.dataSetService = dataSetService;
- }
-
- public void setCategoryService( DataElementCategoryService categoryService )
- {
- this.categoryService = categoryService;
- }
-
- public void setDataElementService( DataElementService dataElementService )
- {
- this.dataElementService = dataElementService;
- }
-
- public void setDataValueService( DataValueService dataValueService )
- {
- this.dataValueService = dataValueService;
- }
-
- public void setRegistrationService( CompleteDataSetRegistrationService registrationService )
- {
- this.registrationService = registrationService;
- }
-
- public void setCurrentUserService( CurrentUserService currentUserService )
- {
- this.currentUserService = currentUserService;
- }
-}
=== renamed file 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalue/DefaultDataValueService.java' => 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DefaultDataValueSetService.java'
--- dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalue/DefaultDataValueService.java 2012-03-29 12:02:12 +0000
+++ dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DefaultDataValueSetService.java 2012-03-29 16:45:18 +0000
@@ -1,4 +1,4 @@
-package org.hisp.dhis.dxf2.datavalue;
+package org.hisp.dhis.dxf2.datavalueset;
/*
* Copyright (c) 2011, University of Oslo
@@ -27,9 +27,12 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+import static org.hisp.dhis.importexport.ImportStrategy.NEW;
+import static org.hisp.dhis.importexport.ImportStrategy.NEW_AND_UPDATES;
+import static org.hisp.dhis.importexport.ImportStrategy.UPDATES;
import static org.hisp.dhis.system.util.DateUtils.getDefaultDate;
-import static org.hisp.dhis.importexport.ImportStrategy.*;
+import java.util.Date;
import java.util.Map;
import org.amplecode.quick.BatchHandler;
@@ -39,6 +42,9 @@
import org.hisp.dhis.dataelement.DataElement;
import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo;
import org.hisp.dhis.dataelement.DataElementCategoryService;
+import org.hisp.dhis.dataset.CompleteDataSetRegistration;
+import org.hisp.dhis.dataset.CompleteDataSetRegistrationService;
+import org.hisp.dhis.dataset.DataSet;
import org.hisp.dhis.datavalue.DataValue;
import org.hisp.dhis.dxf2.importsummary.ImportConflict;
import org.hisp.dhis.dxf2.importsummary.ImportCount;
@@ -49,11 +55,13 @@
import org.hisp.dhis.period.Period;
import org.hisp.dhis.period.PeriodService;
import org.hisp.dhis.period.PeriodType;
+import org.hisp.dhis.system.util.DateUtils;
+import org.hisp.dhis.user.CurrentUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
-public class DefaultDataValueService
- implements DataValueService
+public class DefaultDataValueSetService
+ implements DataValueSetService
{
@Autowired
private IdentifiableObjectManager identifiableObjectManager;
@@ -67,8 +75,20 @@
@Autowired
private BatchHandlerFactory batchHandlerFactory;
- @Transactional
- public ImportSummary saveDataValues( DataValues dataValues, IdentifiableProperty idScheme, boolean dryRun, ImportStrategy strategy )
+ @Autowired
+ private CompleteDataSetRegistrationService registrationService;
+
+ @Autowired
+ private CurrentUserService currentUserService;
+
+ @Transactional
+ public ImportSummary saveDataValueSet( DataValueSet dataValueSet )
+ {
+ return saveDataValueSet( dataValueSet, IdentifiableProperty.UID, false, ImportStrategy.NEW_AND_UPDATES );
+ }
+
+ @Transactional
+ public ImportSummary saveDataValueSet( DataValueSet dataValueSet, IdentifiableProperty idScheme, boolean dryRun, ImportStrategy strategy )
{
ImportSummary summary = new ImportSummary();
@@ -76,6 +96,17 @@
Map<String, OrganisationUnit> orgUnitMap = identifiableObjectManager.getIdMap( OrganisationUnit.class, idScheme );
Map<String, DataElementCategoryOptionCombo> categoryOptionComboMap = identifiableObjectManager.getIdMap( DataElementCategoryOptionCombo.class, IdentifiableProperty.UID );
+ DataSet dataSet = dataValueSet.getDataSet() != null ? identifiableObjectManager.getObject( DataSet.class, idScheme, dataValueSet.getDataSet() ) : null;
+ Date completeDate = getDefaultDate( dataValueSet.getCompleteDate() );
+
+ Period period = PeriodType.getPeriodFromIsoString( dataValueSet.getPeriod() );
+ OrganisationUnit orgUnit = dataValueSet.getOrgUnit() != null ? identifiableObjectManager.getObject( OrganisationUnit.class, idScheme, dataValueSet.getOrgUnit() ) : null;
+
+ if ( dataSet != null )
+ {
+ handleComplete( dataSet, completeDate, orgUnit, period, summary );
+ }
+
DataElementCategoryOptionCombo fallbackCategoryOptionCombo = categoryService.getDefaultDataElementCategoryOptionCombo();
BatchHandler<DataValue> batchHandler = batchHandlerFactory.createBatchHandler( DataValueBatchHandler.class ).init();
@@ -84,22 +115,28 @@
int updateCount = 0;
int totalCount = 0;
- for ( org.hisp.dhis.dxf2.datavalue.DataValue dataValue : dataValues.getDataValues() )
+ for ( org.hisp.dhis.dxf2.datavalue.DataValue dataValue : dataValueSet.getDataValues() )
{
DataValue internalValue = new DataValue();
totalCount++;
DataElement dataElement = dataElementMap.get( dataValue.getDataElement() );
- OrganisationUnit orgUnit = orgUnitMap.get( dataValue.getOrgUnit() );
DataElementCategoryOptionCombo categoryOptionCombo = categoryOptionComboMap.get( dataValue.getCategoryOptionCombo() );
- Period period = PeriodType.getPeriodFromIsoString( dataValue.getPeriod() );
+ period = period != null ? period : PeriodType.getPeriodFromIsoString( dataValue.getPeriod() );
+ orgUnit = orgUnit != null ? orgUnit : orgUnitMap.get( dataValue.getOrgUnit() );
if ( dataElement == null )
{
summary.getNoneExistingIdentifiers().add( new ImportConflict( DataElement.class.getSimpleName(), dataValue.getDataElement() ) );
continue;
}
+
+ if ( period == null )
+ {
+ summary.getNoneExistingIdentifiers().add( new ImportConflict( Period.class.getSimpleName(), dataValue.getPeriod() ) );
+ continue;
+ }
if ( orgUnit == null )
{
@@ -107,12 +144,6 @@
continue;
}
- if ( period == null )
- {
- summary.getNoneExistingIdentifiers().add( new ImportConflict( Period.class.getSimpleName(), dataValue.getPeriod() ) );
- continue;
- }
-
if ( categoryOptionCombo == null )
{
categoryOptionCombo = fallbackCategoryOptionCombo;
@@ -162,4 +193,45 @@
return summary;
}
+
+ private void handleComplete( DataSet dataSet, Date completeDate, OrganisationUnit orgUnit, Period period, ImportSummary summary )
+ {
+ if ( orgUnit == null )
+ {
+ throw new IllegalArgumentException( "Org unit must be provided on data value set in order to complete data set" );
+ }
+
+ if ( period == null )
+ {
+ throw new IllegalArgumentException( "Period must be provided on data value set in order to complete data set" );
+ }
+
+ CompleteDataSetRegistration complete = registrationService.getCompleteDataSetRegistration( dataSet, period, orgUnit );
+
+ String username = currentUserService.getCurrentUsername();
+
+ if ( completeDate == null && complete != null )
+ {
+ throw new IllegalArgumentException( "Data value set is complete - include a new complete date if you want to update it" );
+ }
+
+ if ( completeDate != null )
+ {
+ if ( complete != null )
+ {
+ complete.setStoredBy( username );
+ complete.setDate( completeDate );
+
+ registrationService.updateCompleteDataSetRegistration( complete );
+ }
+ else
+ {
+ CompleteDataSetRegistration registration = new CompleteDataSetRegistration( dataSet, period, orgUnit, completeDate, username );
+
+ registrationService.saveCompleteDataSetRegistration( registration );
+ }
+
+ summary.setDataSetComplete( DateUtils.getMediumDateString( completeDate ) );
+ }
+ }
}
=== modified file 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/importsummary/ImportSummary.java'
--- dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/importsummary/ImportSummary.java 2012-03-29 09:59:05 +0000
+++ dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/importsummary/ImportSummary.java 2012-03-29 16:45:18 +0000
@@ -42,13 +42,15 @@
private List<ImportConflict> noneExistingIdentifiers = new ArrayList<ImportConflict>();
+ private String dataSetComplete;
+
public void increaseImportCount( Class<?> clazz )
{
}
@JsonProperty
- @JacksonXmlElementWrapper( localName = "importCounts" )
- @JacksonXmlProperty( localName = "count" )
+ @JacksonXmlElementWrapper
+ @JacksonXmlProperty
public List<ImportCount> getCounts()
{
return counts;
@@ -60,8 +62,8 @@
}
@JsonProperty
- @JacksonXmlElementWrapper( localName = "noneExistingIdentifiers" )
- @JacksonXmlProperty( localName = "conflict" )
+ @JacksonXmlElementWrapper
+ @JacksonXmlProperty
public List<ImportConflict> getNoneExistingIdentifiers()
{
return noneExistingIdentifiers;
@@ -71,4 +73,16 @@
{
this.noneExistingIdentifiers = noneExistingIdentifiers;
}
+
+ @JsonProperty
+ @JacksonXmlProperty
+ public String getDataSetComplete()
+ {
+ return dataSetComplete;
+ }
+
+ public void setDataSetComplete( String dataSetComplete )
+ {
+ this.dataSetComplete = dataSetComplete;
+ }
}
=== modified file 'dhis-2/dhis-dxf2/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-dxf2/src/main/resources/META-INF/dhis/beans.xml 2012-03-28 18:27:56 +0000
+++ dhis-2/dhis-dxf2/src/main/resources/META-INF/dhis/beans.xml 2012-03-29 16:45:18 +0000
@@ -2,16 +2,6 @@
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
- <bean id="org.hisp.dhis.dxf2.datavalue.DataValueService" class="org.hisp.dhis.dxf2.datavalue.DefaultDataValueService"/>
-
- <bean id="org.hisp.dhis.dxf2.datavalueset.DataValueSetService" class="org.hisp.dhis.dxf2.datavalueset.DefaultDataValueSetService">
- <property name="categoryService" ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
- <property name="organisationUnitService" ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
- <property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
- <property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
- <property name="dataValueService" ref="org.hisp.dhis.datavalue.DataValueService" />
- <property name="registrationService" ref="org.hisp.dhis.dataset.CompleteDataSetRegistrationService" />
- <property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
- </bean>
+ <bean id="org.hisp.dhis.dxf2.datavalueset.DataValueSetService" class="org.hisp.dhis.dxf2.datavalueset.DefaultDataValueSetService"/>
</beans>
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/common/DefaultIdentifiableObjectManager.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/common/DefaultIdentifiableObjectManager.java 2012-03-28 18:27:56 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/common/DefaultIdentifiableObjectManager.java 2012-03-29 16:45:18 +0000
@@ -118,6 +118,31 @@
return map;
}
+
+ @SuppressWarnings("unchecked")
+ public <T extends IdentifiableObject> T getObject( Class<T> clazz, IdentifiableProperty property, String id )
+ {
+ GenericIdentifiableObjectStore<T> store = (GenericIdentifiableObjectStore<T>) objectStoreMap.get( clazz );
+
+ if ( IdentifiableProperty.ID.equals( property ) )
+ {
+ return store.get( Integer.valueOf( id ) );
+ }
+ else if ( IdentifiableProperty.UID.equals( property ) )
+ {
+ return store.getByUid( id );
+ }
+ else if ( IdentifiableProperty.CODE.equals( property ) )
+ {
+ return store.getByCode( id );
+ }
+ else if ( IdentifiableProperty.NAME.equals( property ) )
+ {
+ return store.getByName( id );
+ }
+
+ throw new IllegalArgumentException( String.valueOf( property ) );
+ }
public IdentifiableObject getObject( String uid, String simpleClassName )
{
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataset/DefaultCompleteDataSetRegistrationService.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataset/DefaultCompleteDataSetRegistrationService.java 2011-12-26 10:07:59 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataset/DefaultCompleteDataSetRegistrationService.java 2012-03-29 16:45:18 +0000
@@ -58,6 +58,12 @@
{
completeDataSetRegistrationStore.saveCompleteDataSetRegistration( registration );
}
+
+ public void updateCompleteDataSetRegistration( CompleteDataSetRegistration registration )
+ {
+ completeDataSetRegistrationStore.updateCompleteDataSetRegistration( registration );
+ }
+
public void deleteCompleteDataSetRegistration( CompleteDataSetRegistration registration )
{
completeDataSetRegistrationStore.deleteCompleteDataSetRegistration( registration );
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataset/hibernate/HibernateCompleteDataSetRegistrationStore.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataset/hibernate/HibernateCompleteDataSetRegistrationStore.java 2011-12-26 10:07:59 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataset/hibernate/HibernateCompleteDataSetRegistrationStore.java 2012-03-29 16:45:18 +0000
@@ -92,6 +92,13 @@
sessionFactory.getCurrentSession().save( registration );
}
+ public void updateCompleteDataSetRegistration( CompleteDataSetRegistration registration )
+ {
+ registration.setPeriod( reloadPeriod( registration.getPeriod() ) );
+
+ sessionFactory.getCurrentSession().update( registration );
+ }
+
public CompleteDataSetRegistration getCompleteDataSetRegistration( DataSet dataSet, Period period, OrganisationUnit source )
{
period = reloadPeriod( period );
=== removed file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataValueController.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataValueController.java 2012-03-29 12:02:12 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataValueController.java 1970-01-01 00:00:00 +0000
@@ -1,85 +0,0 @@
-package org.hisp.dhis.api.controller;
-
-/*
- * Copyright (c) 2011, University of Oslo
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * * Neither the name of the HISP project nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.hisp.dhis.common.IdentifiableObject.IdentifiableProperty;
-import org.hisp.dhis.dxf2.datavalue.DataValueService;
-import org.hisp.dhis.dxf2.datavalue.DataValues;
-import org.hisp.dhis.dxf2.importsummary.ImportSummary;
-import org.hisp.dhis.dxf2.utils.JacksonUtils;
-import org.hisp.dhis.importexport.ImportStrategy;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-
-import static org.hisp.dhis.api.utils.ContextUtils.*;
-
-@Controller
-@RequestMapping( value = DataValueController.RESOURCE_PATH )
-public class DataValueController
-{
- public static final String RESOURCE_PATH = "/dataValues";
-
- private static final Log log = LogFactory.getLog( DataValueController.class );
-
- @Autowired
- private DataValueService dataValueService;
-
- @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/xml"} )
- @PreAuthorize( "hasRole('ALL') or hasRole('F_DATAVALUE_ADD')" )
- public void postDataValues( @RequestParam(required=false, defaultValue="UID") String idScheme,
- @RequestParam(required=false) boolean dryRun,
- @RequestParam(required=false, defaultValue="NEW_AND_UPDATES") String strategy,
- HttpServletResponse response,
- InputStream input,
- Model model ) throws IOException
- {
- IdentifiableProperty _idScheme = IdentifiableProperty.valueOf( idScheme.toUpperCase() );
- ImportStrategy _strategy = ImportStrategy.valueOf( strategy.toUpperCase() );
-
- DataValues dataValues = JacksonUtils.fromXml( input, DataValues.class );
-
- ImportSummary summary = dataValueService.saveDataValues( dataValues, _idScheme, dryRun, _strategy );
-
- log.info( "Data values saved using id scheme: " + _idScheme + ", dry run: " + dryRun + ", strategy: " + _strategy );
-
- response.setContentType( CONTENT_TYPE_XML );
- JacksonUtils.toXml( response.getOutputStream(), summary );
- }
-}
=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataValueSetController.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataValueSetController.java 2012-03-28 18:46:31 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataValueSetController.java 2012-03-29 16:45:18 +0000
@@ -27,6 +27,8 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+import static org.hisp.dhis.api.utils.ContextUtils.CONTENT_TYPE_XML;
+
import java.io.IOException;
import java.io.InputStream;
@@ -34,11 +36,14 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.hisp.dhis.api.utils.ContextUtils;
+import org.hisp.dhis.common.IdentifiableObject.IdentifiableProperty;
+import org.hisp.dhis.dxf2.datavalue.DataValue;
import org.hisp.dhis.dxf2.datavalueset.DataValueSet;
import org.hisp.dhis.dxf2.datavalueset.DataValueSetService;
import org.hisp.dhis.dxf2.datavalueset.DataValueSets;
+import org.hisp.dhis.dxf2.importsummary.ImportSummary;
import org.hisp.dhis.dxf2.utils.JacksonUtils;
+import org.hisp.dhis.importexport.ImportStrategy;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Controller;
@@ -46,6 +51,7 @@
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
@Controller
@RequestMapping( value = DataValueSetController.RESOURCE_PATH )
@@ -71,17 +77,24 @@
@RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/xml"} )
@PreAuthorize( "hasRole('ALL') or hasRole('F_DATAVALUE_ADD')" )
- public void postDataValueSet( HttpServletResponse response, InputStream input )
- throws IOException
+ public void postDataValueSet( @RequestParam(required=false, defaultValue="UID") String idScheme,
+ @RequestParam(required=false) boolean dryRun,
+ @RequestParam(required=false, defaultValue="NEW_AND_UPDATES") String strategy,
+ HttpServletResponse response,
+ InputStream input,
+ Model model ) throws IOException
{
+ IdentifiableProperty _idScheme = IdentifiableProperty.valueOf( idScheme.toUpperCase() );
+ ImportStrategy _strategy = ImportStrategy.valueOf( strategy.toUpperCase() );
+
DataValueSet dataValueSet = JacksonUtils.fromXml( input, DataValueSet.class );
- dataValueSetService.saveDataValueSet( dataValueSet );
-
- log.debug( "Saved data value set for data set: " + dataValueSet.getDataSet() +
- ", org unit: " + dataValueSet.getOrgUnit() + ", period: " + dataValueSet.getPeriod() );
-
- ContextUtils.okResponse( response, "Saved data value set succesfully" );
+ ImportSummary summary = dataValueSetService.saveDataValueSet( dataValueSet, _idScheme, dryRun, _strategy );
+
+ log.info( "Data values saved using id scheme: " + _idScheme + ", dry run: " + dryRun + ", strategy: " + _strategy );
+
+ response.setContentType( CONTENT_TYPE_XML );
+ JacksonUtils.toXml( response.getOutputStream(), summary );
}
@ExceptionHandler( IllegalArgumentException.class )
@@ -90,4 +103,30 @@
{
response.sendError( HttpServletResponse.SC_CONFLICT, ex.getMessage() );
}
+
+ @RequestMapping( value = "/test", method = RequestMethod.GET )
+ public String getDataValueSetTest( Model model ) throws Exception
+ {
+ DataValueSets dataValueSets = new DataValueSets();
+
+ DataValue v1 = new DataValue();
+ v1.setDataElement( "de" );
+ v1.setValue( "va" );
+
+ DataValue v2 = new DataValue();
+ v2.setDataElement( "de" );
+ v2.setValue( "va" );
+
+ DataValueSet d = new DataValueSet();
+ d.setDataSet( "ds" );
+ d.setOrgUnit( "ou" );
+ d.setPeriod( "pe" );
+ d.getDataValues().add( v1 );
+ d.getDataValues().add( v2 );
+ dataValueSets.getDataValueSets().add( d );
+
+ model.addAttribute( "model", dataValueSets );
+
+ return "dataValueSets";
+ }
}