=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/attribute/AttributeValue.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/attribute/AttributeValue.java 2011-12-06 21:57:53 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/attribute/AttributeValue.java 2011-12-09 18:08:05 +0000 @@ -75,8 +75,8 @@ this.id = id; } - @XmlAttribute - @JsonProperty + @XmlAttribute( name = "id" ) + @JsonProperty( value = "id" ) public String getAttributeTypeRef() { return attribute.getUid(); @@ -89,10 +89,6 @@ return attribute.getName(); } - /* @XmlElement( name = "attributeType" ) -@XmlJavaTypeAdapter( BaseIdentifiableObjectXmlAdapter.class ) -@JsonSerialize( using = JsonIdentifiableObjectSerializer.class ) -@JsonProperty( value = "attributeType" ) */ public Attribute getAttribute() { return attribute; === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/chart/Chart.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/chart/Chart.java 2011-12-06 22:23:13 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/chart/Chart.java 2011-12-09 18:08:05 +0000 @@ -30,6 +30,7 @@ import org.codehaus.jackson.annotate.JsonProperty; import org.codehaus.jackson.map.annotate.JsonSerialize; import org.hisp.dhis.common.BaseIdentifiableObject; +import org.hisp.dhis.common.Dxf2Namespace; import org.hisp.dhis.common.adapter.BaseNameableObjectXmlAdapter; import org.hisp.dhis.common.adapter.JsonNameableObjectCollectionSerializer; import org.hisp.dhis.dataelement.DataElement; @@ -46,12 +47,11 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import org.hisp.dhis.common.Dxf2Namespace; /** * @author Lars Helge Overland */ -@XmlRootElement( name = "chart", namespace=Dxf2Namespace.NAMESPACE ) +@XmlRootElement( name = "chart", namespace = Dxf2Namespace.NAMESPACE ) @XmlAccessorType( value = XmlAccessType.NONE ) public class Chart extends BaseIdentifiableObject @@ -76,13 +76,13 @@ public static final String SIZE_NORMAL = "normal"; public static final String SIZE_WIDE = "wide"; public static final String SIZE_TALL = "tall"; - - public static final String TYPE_COLUMN = "column"; - public static final String TYPE_STACKED_COLUMN = "stackedColumn"; - public static final String TYPE_BAR = "bar"; - public static final String TYPE_STACKED_BAR = "stackedBar"; - public static final String TYPE_LINE = "line"; - public static final String TYPE_AREA = "area"; + + public static final String TYPE_COLUMN = "column"; + public static final String TYPE_STACKED_COLUMN = "stackedColumn"; + public static final String TYPE_BAR = "bar"; + public static final String TYPE_STACKED_BAR = "stackedBar"; + public static final String TYPE_LINE = "line"; + public static final String TYPE_AREA = "area"; public static final String TYPE_PIE = "pie"; public static final String DIMENSION_DATA = "data"; @@ -280,8 +280,8 @@ // Getters and setters // ------------------------------------------------------------------------- - @XmlElement - @JsonProperty + @XmlElement( name = "domainAxisLabel" ) + @JsonProperty( value = "domainAxisLabel" ) public String getDomainAxixLabel() { return domainAxixLabel; @@ -476,7 +476,7 @@ @XmlElementWrapper( name = "indicators" ) @XmlElement( name = "indicator" ) @JsonProperty - @JsonSerialize( using = JsonNameableObjectCollectionSerializer.class ) + @JsonSerialize( contentAs = BaseIdentifiableObject.class ) public List getIndicators() { return indicators; @@ -487,11 +487,11 @@ this.indicators = indicators; } - @XmlJavaTypeAdapter( BaseNameableObjectXmlAdapter.class ) @XmlElementWrapper( name = "dataElements" ) @XmlElement( name = "dataElement" ) + @XmlJavaTypeAdapter( BaseNameableObjectXmlAdapter.class ) @JsonProperty - @JsonSerialize( using = JsonNameableObjectCollectionSerializer.class ) + @JsonSerialize( contentAs = BaseIdentifiableObject.class ) public List getDataElements() { return dataElements; @@ -502,11 +502,11 @@ this.dataElements = dataElements; } - @XmlJavaTypeAdapter( BaseNameableObjectXmlAdapter.class ) @XmlElementWrapper( name = "dataSets" ) @XmlElement( name = "dataSet" ) + @XmlJavaTypeAdapter( BaseNameableObjectXmlAdapter.class ) @JsonProperty - @JsonSerialize( using = JsonNameableObjectCollectionSerializer.class ) + @JsonSerialize( contentAs = BaseIdentifiableObject.class ) public List getDataSets() { return dataSets; === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/BaseIdentifiableObject.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/BaseIdentifiableObject.java 2011-12-09 13:40:07 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/BaseIdentifiableObject.java 2011-12-09 18:08:05 +0000 @@ -27,6 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.codehaus.jackson.annotate.JsonIgnore; import org.codehaus.jackson.annotate.JsonProperty; import org.codehaus.jackson.map.annotate.JsonSerialize; import org.hisp.dhis.common.adapter.JsonDateSerializer; @@ -42,7 +43,6 @@ */ @XmlRootElement( name = "identifiableObject", namespace = Dxf2Namespace.NAMESPACE ) @XmlAccessorType( value = XmlAccessType.NONE ) -@XmlType( propOrder = {"uid", "name", "code", "lastUpdated" } ) public class BaseIdentifiableObject extends BaseLinkableObject implements IdentifiableObject { @@ -110,7 +110,6 @@ this.id = id; } - @XmlID @XmlAttribute( name = "id" ) @JsonProperty( value = "id" ) public String getUid() @@ -123,9 +122,8 @@ this.uid = uid; } - @XmlAttribute + @XmlAttribute(required = false) @JsonProperty - @JsonSerialize( include = JsonSerialize.Inclusion.NON_NULL ) public String getCode() { return code; @@ -136,7 +134,7 @@ this.code = code; } - @XmlAttribute + @XmlAttribute(required = false) @JsonProperty public String getName() { @@ -148,9 +146,8 @@ this.name = name; } - @XmlAttribute + @XmlAttribute(required = false) @JsonProperty - @JsonSerialize( using = JsonDateSerializer.class ) public Date getLastUpdated() { return lastUpdated; === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/BaseIdentifiableObjectXmlAdapter.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/BaseIdentifiableObjectXmlAdapter.java 2011-12-03 12:53:47 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/BaseIdentifiableObjectXmlAdapter.java 2011-12-09 18:08:05 +0000 @@ -27,7 +27,6 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import org.apache.commons.lang.NotImplementedException; import org.hisp.dhis.common.BaseIdentifiableObject; import javax.xml.bind.annotation.adapters.XmlAdapter; @@ -40,7 +39,7 @@ @Override public BaseIdentifiableObject unmarshal( BaseIdentifiableObject baseIdentifiableObject ) throws Exception { - throw new NotImplementedException(); + return baseIdentifiableObject; } @Override @@ -51,7 +50,6 @@ BaseIdentifiableObject bio = new BaseIdentifiableObject(); bio.setUid( baseIdentifiableObject.getUid() ); - bio.setCode( baseIdentifiableObject.getCode() ); bio.setName( baseIdentifiableObject.getName() ); bio.setLastUpdated( baseIdentifiableObject.getLastUpdated() ); bio.setLink( baseIdentifiableObject.getLink() ); === removed file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/BaseNameableObjectXmlAdapter.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/BaseNameableObjectXmlAdapter.java 2011-12-03 12:53:47 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/BaseNameableObjectXmlAdapter.java 1970-01-01 00:00:00 +0000 @@ -1,68 +0,0 @@ -package org.hisp.dhis.common.adapter; - -/* - * Copyright (c) 2004-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 org.apache.commons.lang.NotImplementedException; -import org.hisp.dhis.common.BaseNameableObject; - -import javax.xml.bind.annotation.adapters.XmlAdapter; - -/** - * @author Morten Olav Hansen - */ -public class BaseNameableObjectXmlAdapter extends XmlAdapter -{ - @Override - public BaseNameableObject unmarshal( BaseNameableObject baseNameableObject ) throws Exception - { - throw new NotImplementedException(); - } - - @Override - public BaseNameableObject marshal( BaseNameableObject baseNameableObject ) throws Exception - { - if ( baseNameableObject != null ) - { - BaseNameableObject bno = new BaseNameableObject(); - - bno.setUid( baseNameableObject.getUid() ); - bno.setCode( baseNameableObject.getCode() ); - bno.setName( baseNameableObject.getName() ); - bno.setLastUpdated( baseNameableObject.getLastUpdated() ); - bno.setLink( baseNameableObject.getLink() ); - - bno.setShortName( baseNameableObject.getShortName() ); - bno.setAlternativeName( baseNameableObject.getAlternativeName() ); - bno.setDescription( baseNameableObject.getDescription() ); - - return bno; - } - - return null; - } -} === added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/BaseNameableObjectXmlAdapter.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/BaseNameableObjectXmlAdapter.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/BaseNameableObjectXmlAdapter.java 2011-12-09 18:08:05 +0000 @@ -0,0 +1,62 @@ +package org.hisp.dhis.common.adapter; + +/* + * Copyright (c) 2004-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 org.hisp.dhis.common.BaseNameableObject; + +import javax.xml.bind.annotation.adapters.XmlAdapter; + +/** + * @author Morten Olav Hansen + */ +public class BaseNameableObjectXmlAdapter extends XmlAdapter +{ + @Override + public BaseNameableObject unmarshal( BaseNameableObject baseIdentifiableObject ) throws Exception + { + return baseIdentifiableObject; + } + + @Override + public BaseNameableObject marshal( BaseNameableObject baseIdentifiableObject ) throws Exception + { + if ( baseIdentifiableObject != null ) + { + BaseNameableObject bio = new BaseNameableObject(); + + bio.setUid( baseIdentifiableObject.getUid() ); + bio.setName( baseIdentifiableObject.getName() ); + bio.setLastUpdated( baseIdentifiableObject.getLastUpdated() ); + bio.setLink( baseIdentifiableObject.getLink() ); + + return bio; + } + + return null; + } +} === added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/CategoryComboXmlAdapter.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/CategoryComboXmlAdapter.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/CategoryComboXmlAdapter.java 2011-12-09 13:41:05 +0000 @@ -0,0 +1,60 @@ +package org.hisp.dhis.common.adapter; + +/* + * Copyright (c) 2004-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 org.hisp.dhis.common.BaseIdentifiableObject; +import org.hisp.dhis.dataelement.DataElementCategoryCombo; + +import javax.xml.bind.annotation.adapters.XmlAdapter; +import java.util.UUID; + +/** + * @author Morten Olav Hansen + */ +public class CategoryComboXmlAdapter extends XmlAdapter +{ + private BaseIdentifiableObjectXmlAdapter baseIdentifiableObjectXmlAdapter = new BaseIdentifiableObjectXmlAdapter(); + + @Override + public DataElementCategoryCombo unmarshal( BaseIdentifiableObject identifiableObject ) throws Exception + { + DataElementCategoryCombo categoryCombo = new DataElementCategoryCombo(); + + categoryCombo.setUid( identifiableObject.getUid() ); + categoryCombo.setLastUpdated( identifiableObject.getLastUpdated() ); + categoryCombo.setName( identifiableObject.getName() == null ? UUID.randomUUID().toString() : identifiableObject.getName() ); + + return categoryCombo; + } + + @Override + public BaseIdentifiableObject marshal( DataElementCategoryCombo categoryCombo ) throws Exception + { + return baseIdentifiableObjectXmlAdapter.marshal( categoryCombo ); + } +} === added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/CategoryOptionComboXmlAdapter.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/CategoryOptionComboXmlAdapter.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/CategoryOptionComboXmlAdapter.java 2011-12-09 13:41:05 +0000 @@ -0,0 +1,60 @@ +package org.hisp.dhis.common.adapter; + +/* + * Copyright (c) 2004-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 org.hisp.dhis.common.BaseIdentifiableObject; +import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo; + +import javax.xml.bind.annotation.adapters.XmlAdapter; +import java.util.UUID; + +/** + * @author Morten Olav Hansen + */ +public class CategoryOptionComboXmlAdapter extends XmlAdapter +{ + private BaseIdentifiableObjectXmlAdapter baseIdentifiableObjectXmlAdapter = new BaseIdentifiableObjectXmlAdapter(); + + @Override + public DataElementCategoryOptionCombo unmarshal( BaseIdentifiableObject identifiableObject ) throws Exception + { + DataElementCategoryOptionCombo categoryOptionCombo = new DataElementCategoryOptionCombo(); + + categoryOptionCombo.setUid( identifiableObject.getUid() ); + categoryOptionCombo.setLastUpdated( identifiableObject.getLastUpdated() ); + categoryOptionCombo.setName( identifiableObject.getName() == null ? UUID.randomUUID().toString() : identifiableObject.getName() ); + + return categoryOptionCombo; + } + + @Override + public BaseIdentifiableObject marshal( DataElementCategoryOptionCombo categoryOptionCombo ) throws Exception + { + return baseIdentifiableObjectXmlAdapter.marshal( categoryOptionCombo ); + } +} === added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/CategoryOptionXmlAdapter.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/CategoryOptionXmlAdapter.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/CategoryOptionXmlAdapter.java 2011-12-09 13:41:05 +0000 @@ -0,0 +1,60 @@ +package org.hisp.dhis.common.adapter; + +/* + * Copyright (c) 2004-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 org.hisp.dhis.common.BaseIdentifiableObject; +import org.hisp.dhis.dataelement.DataElementCategoryOption; + +import javax.xml.bind.annotation.adapters.XmlAdapter; +import java.util.UUID; + +/** + * @author Morten Olav Hansen + */ +public class CategoryOptionXmlAdapter extends XmlAdapter +{ + private BaseIdentifiableObjectXmlAdapter baseIdentifiableObjectXmlAdapter = new BaseIdentifiableObjectXmlAdapter(); + + @Override + public DataElementCategoryOption unmarshal( BaseIdentifiableObject identifiableObject ) throws Exception + { + DataElementCategoryOption categoryOption = new DataElementCategoryOption(); + + categoryOption.setUid( identifiableObject.getUid() ); + categoryOption.setLastUpdated( identifiableObject.getLastUpdated() ); + categoryOption.setName( identifiableObject.getName() == null ? UUID.randomUUID().toString() : identifiableObject.getName() ); + + return categoryOption; + } + + @Override + public BaseIdentifiableObject marshal( DataElementCategoryOption categoryOption ) throws Exception + { + return baseIdentifiableObjectXmlAdapter.marshal( categoryOption ); + } +} === added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/CategoryXmlAdapter.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/CategoryXmlAdapter.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/CategoryXmlAdapter.java 2011-12-09 13:41:05 +0000 @@ -0,0 +1,60 @@ +package org.hisp.dhis.common.adapter; + +/* + * Copyright (c) 2004-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 org.hisp.dhis.common.BaseIdentifiableObject; +import org.hisp.dhis.dataelement.DataElementCategory; + +import javax.xml.bind.annotation.adapters.XmlAdapter; +import java.util.UUID; + +/** + * @author Morten Olav Hansen + */ +public class CategoryXmlAdapter extends XmlAdapter +{ + private BaseIdentifiableObjectXmlAdapter baseIdentifiableObjectXmlAdapter = new BaseIdentifiableObjectXmlAdapter(); + + @Override + public DataElementCategory unmarshal( BaseIdentifiableObject identifiableObject ) throws Exception + { + DataElementCategory category = new DataElementCategory(); + + category.setUid( identifiableObject.getUid() ); + category.setLastUpdated( identifiableObject.getLastUpdated() ); + category.setName( identifiableObject.getName() == null ? UUID.randomUUID().toString() : identifiableObject.getName() ); + + return category; + } + + @Override + public BaseIdentifiableObject marshal( DataElementCategory category ) throws Exception + { + return baseIdentifiableObjectXmlAdapter.marshal( category ); + } +} === added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/ChartXmlAdapter.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/ChartXmlAdapter.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/ChartXmlAdapter.java 2011-12-09 14:27:51 +0000 @@ -0,0 +1,60 @@ +package org.hisp.dhis.common.adapter; + +/* + * Copyright (c) 2004-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 org.hisp.dhis.chart.Chart; +import org.hisp.dhis.common.BaseIdentifiableObject; + +import javax.xml.bind.annotation.adapters.XmlAdapter; +import java.util.UUID; + +/** + * @author Morten Olav Hansen + */ +public class ChartXmlAdapter extends XmlAdapter +{ + private BaseIdentifiableObjectXmlAdapter baseIdentifiableObjectXmlAdapter = new BaseIdentifiableObjectXmlAdapter(); + + @Override + public Chart unmarshal( BaseIdentifiableObject identifiableObject ) throws Exception + { + Chart chart = new Chart(); + + chart.setUid( identifiableObject.getUid() ); + chart.setLastUpdated( identifiableObject.getLastUpdated() ); + chart.setName( identifiableObject.getName() == null ? UUID.randomUUID().toString() : identifiableObject.getName() ); + + return chart; + } + + @Override + public BaseIdentifiableObject marshal( Chart chart ) throws Exception + { + return baseIdentifiableObjectXmlAdapter.marshal( chart ); + } +} === added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/DataElementGroupSetXmlAdapter.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/DataElementGroupSetXmlAdapter.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/DataElementGroupSetXmlAdapter.java 2011-12-09 13:41:05 +0000 @@ -0,0 +1,60 @@ +package org.hisp.dhis.common.adapter; + +/* + * Copyright (c) 2004-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 org.hisp.dhis.common.BaseIdentifiableObject; +import org.hisp.dhis.dataelement.DataElementGroupSet; + +import javax.xml.bind.annotation.adapters.XmlAdapter; +import java.util.UUID; + +/** + * @author Morten Olav Hansen + */ +public class DataElementGroupSetXmlAdapter extends XmlAdapter +{ + private BaseIdentifiableObjectXmlAdapter baseIdentifiableObjectXmlAdapter = new BaseIdentifiableObjectXmlAdapter(); + + @Override + public DataElementGroupSet unmarshal( BaseIdentifiableObject identifiableObject ) throws Exception + { + DataElementGroupSet dataElementGroupSet = new DataElementGroupSet(); + + dataElementGroupSet.setUid( identifiableObject.getUid() ); + dataElementGroupSet.setLastUpdated( identifiableObject.getLastUpdated() ); + dataElementGroupSet.setName( identifiableObject.getName() == null ? UUID.randomUUID().toString() : identifiableObject.getName() ); + + return dataElementGroupSet; + } + + @Override + public BaseIdentifiableObject marshal( DataElementGroupSet dataElementGroupSet ) throws Exception + { + return baseIdentifiableObjectXmlAdapter.marshal( dataElementGroupSet ); + } +} === added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/DataElementGroupXmlAdapter.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/DataElementGroupXmlAdapter.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/DataElementGroupXmlAdapter.java 2011-12-09 13:41:05 +0000 @@ -0,0 +1,60 @@ +package org.hisp.dhis.common.adapter; + +/* + * Copyright (c) 2004-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 org.hisp.dhis.common.BaseIdentifiableObject; +import org.hisp.dhis.dataelement.DataElementGroup; + +import javax.xml.bind.annotation.adapters.XmlAdapter; +import java.util.UUID; + +/** + * @author Morten Olav Hansen + */ +public class DataElementGroupXmlAdapter extends XmlAdapter +{ + private BaseIdentifiableObjectXmlAdapter baseIdentifiableObjectXmlAdapter = new BaseIdentifiableObjectXmlAdapter(); + + @Override + public DataElementGroup unmarshal( BaseIdentifiableObject identifiableObject ) throws Exception + { + DataElementGroup dataElementGroup = new DataElementGroup(); + + dataElementGroup.setUid( identifiableObject.getUid() ); + dataElementGroup.setLastUpdated( identifiableObject.getLastUpdated() ); + dataElementGroup.setName( identifiableObject.getName() == null ? UUID.randomUUID().toString() : identifiableObject.getName() ); + + return dataElementGroup; + } + + @Override + public BaseIdentifiableObject marshal( DataElementGroup dataElementGroup ) throws Exception + { + return baseIdentifiableObjectXmlAdapter.marshal( dataElementGroup ); + } +} === added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/DataSetXmlAdapter.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/DataSetXmlAdapter.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/DataSetXmlAdapter.java 2011-12-09 13:41:05 +0000 @@ -0,0 +1,60 @@ +package org.hisp.dhis.common.adapter; + +/* + * Copyright (c) 2004-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 org.hisp.dhis.common.BaseIdentifiableObject; +import org.hisp.dhis.dataset.DataSet; + +import javax.xml.bind.annotation.adapters.XmlAdapter; +import java.util.UUID; + +/** + * @author Morten Olav Hansen + */ +public class DataSetXmlAdapter extends XmlAdapter +{ + private BaseIdentifiableObjectXmlAdapter baseIdentifiableObjectXmlAdapter = new BaseIdentifiableObjectXmlAdapter(); + + @Override + public DataSet unmarshal( BaseIdentifiableObject identifiableObject ) throws Exception + { + DataSet dataSet = new DataSet(); + + dataSet.setUid( identifiableObject.getUid() ); + dataSet.setLastUpdated( identifiableObject.getLastUpdated() ); + dataSet.setName( identifiableObject.getName() == null ? UUID.randomUUID().toString() : identifiableObject.getName() ); + + return dataSet; + } + + @Override + public BaseIdentifiableObject marshal( DataSet dataSet ) throws Exception + { + return baseIdentifiableObjectXmlAdapter.marshal( dataSet ); + } +} === added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/IndicatorGroupSetXmlAdapter.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/IndicatorGroupSetXmlAdapter.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/IndicatorGroupSetXmlAdapter.java 2011-12-09 14:27:51 +0000 @@ -0,0 +1,60 @@ +package org.hisp.dhis.common.adapter; + +/* + * Copyright (c) 2004-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 org.hisp.dhis.common.BaseIdentifiableObject; +import org.hisp.dhis.indicator.IndicatorGroupSet; + +import javax.xml.bind.annotation.adapters.XmlAdapter; +import java.util.UUID; + +/** + * @author Morten Olav Hansen + */ +public class IndicatorGroupSetXmlAdapter extends XmlAdapter +{ + private BaseIdentifiableObjectXmlAdapter baseIdentifiableObjectXmlAdapter = new BaseIdentifiableObjectXmlAdapter(); + + @Override + public IndicatorGroupSet unmarshal( BaseIdentifiableObject identifiableObject ) throws Exception + { + IndicatorGroupSet indicatorGroupSet = new IndicatorGroupSet(); + + indicatorGroupSet.setUid( identifiableObject.getUid() ); + indicatorGroupSet.setLastUpdated( identifiableObject.getLastUpdated() ); + indicatorGroupSet.setName( identifiableObject.getName() == null ? UUID.randomUUID().toString() : identifiableObject.getName() ); + + return indicatorGroupSet; + } + + @Override + public BaseIdentifiableObject marshal( IndicatorGroupSet indicatorGroupSet ) throws Exception + { + return baseIdentifiableObjectXmlAdapter.marshal( indicatorGroupSet ); + } +} === added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/IndicatorGroupXmlAdapter.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/IndicatorGroupXmlAdapter.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/IndicatorGroupXmlAdapter.java 2011-12-09 14:27:51 +0000 @@ -0,0 +1,60 @@ +package org.hisp.dhis.common.adapter; + +/* + * Copyright (c) 2004-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 org.hisp.dhis.common.BaseIdentifiableObject; +import org.hisp.dhis.indicator.IndicatorGroup; + +import javax.xml.bind.annotation.adapters.XmlAdapter; +import java.util.UUID; + +/** + * @author Morten Olav Hansen + */ +public class IndicatorGroupXmlAdapter extends XmlAdapter +{ + private BaseIdentifiableObjectXmlAdapter baseIdentifiableObjectXmlAdapter = new BaseIdentifiableObjectXmlAdapter(); + + @Override + public IndicatorGroup unmarshal( BaseIdentifiableObject identifiableObject ) throws Exception + { + IndicatorGroup indicatorGroup = new IndicatorGroup(); + + indicatorGroup.setUid( identifiableObject.getUid() ); + indicatorGroup.setLastUpdated( identifiableObject.getLastUpdated() ); + indicatorGroup.setName( identifiableObject.getName() == null ? UUID.randomUUID().toString() : identifiableObject.getName() ); + + return indicatorGroup; + } + + @Override + public BaseIdentifiableObject marshal( IndicatorGroup indicatorGroup ) throws Exception + { + return baseIdentifiableObjectXmlAdapter.marshal( indicatorGroup ); + } +} === added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/IndicatorXmlAdapter.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/IndicatorXmlAdapter.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/IndicatorXmlAdapter.java 2011-12-09 14:27:51 +0000 @@ -0,0 +1,60 @@ +package org.hisp.dhis.common.adapter; + +/* + * Copyright (c) 2004-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 org.hisp.dhis.common.BaseIdentifiableObject; +import org.hisp.dhis.indicator.Indicator; + +import javax.xml.bind.annotation.adapters.XmlAdapter; +import java.util.UUID; + +/** + * @author Morten Olav Hansen + */ +public class IndicatorXmlAdapter extends XmlAdapter +{ + private BaseIdentifiableObjectXmlAdapter baseIdentifiableObjectXmlAdapter = new BaseIdentifiableObjectXmlAdapter(); + + @Override + public Indicator unmarshal( BaseIdentifiableObject identifiableObject ) throws Exception + { + Indicator indicator = new Indicator(); + + indicator.setUid( identifiableObject.getUid() ); + indicator.setLastUpdated( identifiableObject.getLastUpdated() ); + indicator.setName( identifiableObject.getName() == null ? UUID.randomUUID().toString() : identifiableObject.getName() ); + + return indicator; + } + + @Override + public BaseIdentifiableObject marshal( Indicator indicator ) throws Exception + { + return baseIdentifiableObjectXmlAdapter.marshal( indicator ); + } +} === added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/JsonDataSetDeserializer.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/JsonDataSetDeserializer.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/JsonDataSetDeserializer.java 2011-12-09 13:41:05 +0000 @@ -0,0 +1,28 @@ +package org.hisp.dhis.common.adapter; + +import org.codehaus.jackson.JsonParser; +import org.codehaus.jackson.JsonProcessingException; +import org.codehaus.jackson.map.DeserializationContext; +import org.codehaus.jackson.map.JsonDeserializer; +import org.hisp.dhis.common.BaseNameableObject; +import org.hisp.dhis.dataset.DataSet; + +import java.io.IOException; + +/** + * @author Morten Olav Hansen + */ +public class JsonDataSetDeserializer extends JsonDeserializer +{ + @Override + public DataSet deserialize( JsonParser jp, DeserializationContext context ) throws IOException, JsonProcessingException + { + DataSet dataSet = new DataSet(); + BaseNameableObject baseNameableObject = jp.readValueAs( BaseNameableObject.class ); + + dataSet.setUid( baseNameableObject.getUid() ); + dataSet.setName( baseNameableObject.getName() ); + + return dataSet; + } +} === added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/OrganisationUnitGroupSetXmlAdapter.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/OrganisationUnitGroupSetXmlAdapter.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/OrganisationUnitGroupSetXmlAdapter.java 2011-12-09 14:27:51 +0000 @@ -0,0 +1,60 @@ +package org.hisp.dhis.common.adapter; + +/* + * Copyright (c) 2004-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 org.hisp.dhis.common.BaseIdentifiableObject; +import org.hisp.dhis.organisationunit.OrganisationUnitGroupSet; + +import javax.xml.bind.annotation.adapters.XmlAdapter; +import java.util.UUID; + +/** + * @author Morten Olav Hansen + */ +public class OrganisationUnitGroupSetXmlAdapter extends XmlAdapter +{ + private BaseIdentifiableObjectXmlAdapter baseIdentifiableObjectXmlAdapter = new BaseIdentifiableObjectXmlAdapter(); + + @Override + public OrganisationUnitGroupSet unmarshal( BaseIdentifiableObject identifiableObject ) throws Exception + { + OrganisationUnitGroupSet organisationUnitGroupSet = new OrganisationUnitGroupSet(); + + organisationUnitGroupSet.setUid( identifiableObject.getUid() ); + organisationUnitGroupSet.setLastUpdated( identifiableObject.getLastUpdated() ); + organisationUnitGroupSet.setName( identifiableObject.getName() == null ? UUID.randomUUID().toString() : identifiableObject.getName() ); + + return organisationUnitGroupSet; + } + + @Override + public BaseIdentifiableObject marshal( OrganisationUnitGroupSet organisationUnitGroupSet ) throws Exception + { + return baseIdentifiableObjectXmlAdapter.marshal( organisationUnitGroupSet ); + } +} === added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/OrganisationUnitGroupXmlAdapter.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/OrganisationUnitGroupXmlAdapter.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/OrganisationUnitGroupXmlAdapter.java 2011-12-09 14:27:51 +0000 @@ -0,0 +1,60 @@ +package org.hisp.dhis.common.adapter; + +/* + * Copyright (c) 2004-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 org.hisp.dhis.common.BaseIdentifiableObject; +import org.hisp.dhis.organisationunit.OrganisationUnitGroup; + +import javax.xml.bind.annotation.adapters.XmlAdapter; +import java.util.UUID; + +/** + * @author Morten Olav Hansen + */ +public class OrganisationUnitGroupXmlAdapter extends XmlAdapter +{ + private BaseIdentifiableObjectXmlAdapter baseIdentifiableObjectXmlAdapter = new BaseIdentifiableObjectXmlAdapter(); + + @Override + public OrganisationUnitGroup unmarshal( BaseIdentifiableObject identifiableObject ) throws Exception + { + OrganisationUnitGroup organisationUnitGroup = new OrganisationUnitGroup(); + + organisationUnitGroup.setUid( identifiableObject.getUid() ); + organisationUnitGroup.setLastUpdated( identifiableObject.getLastUpdated() ); + organisationUnitGroup.setName( identifiableObject.getName() == null ? UUID.randomUUID().toString() : identifiableObject.getName() ); + + return organisationUnitGroup; + } + + @Override + public BaseIdentifiableObject marshal( OrganisationUnitGroup organisationUnitGroup ) throws Exception + { + return baseIdentifiableObjectXmlAdapter.marshal( organisationUnitGroup ); + } +} === added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/OrganisationUnitXmlAdapter.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/OrganisationUnitXmlAdapter.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/OrganisationUnitXmlAdapter.java 2011-12-09 14:27:51 +0000 @@ -0,0 +1,60 @@ +package org.hisp.dhis.common.adapter; + +/* + * Copyright (c) 2004-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 org.hisp.dhis.common.BaseIdentifiableObject; +import org.hisp.dhis.organisationunit.OrganisationUnit; + +import javax.xml.bind.annotation.adapters.XmlAdapter; +import java.util.UUID; + +/** + * @author Morten Olav Hansen + */ +public class OrganisationUnitXmlAdapter extends XmlAdapter +{ + private BaseIdentifiableObjectXmlAdapter baseIdentifiableObjectXmlAdapter = new BaseIdentifiableObjectXmlAdapter(); + + @Override + public OrganisationUnit unmarshal( BaseIdentifiableObject identifiableObject ) throws Exception + { + OrganisationUnit organisationUnit = new OrganisationUnit(); + + organisationUnit.setUid( identifiableObject.getUid() ); + organisationUnit.setLastUpdated( identifiableObject.getLastUpdated() ); + organisationUnit.setName( identifiableObject.getName() == null ? UUID.randomUUID().toString() : identifiableObject.getName() ); + + return organisationUnit; + } + + @Override + public BaseIdentifiableObject marshal( OrganisationUnit organisationUnit ) throws Exception + { + return baseIdentifiableObjectXmlAdapter.marshal( organisationUnit ); + } +} === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElement.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElement.java 2011-12-07 13:32:36 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElement.java 2011-12-09 18:08:05 +0000 @@ -31,9 +31,12 @@ import org.codehaus.jackson.annotate.JsonProperty; import org.codehaus.jackson.map.annotate.JsonSerialize; import org.hisp.dhis.attribute.AttributeValue; +import org.hisp.dhis.common.BaseIdentifiableObject; import org.hisp.dhis.common.BaseNameableObject; import org.hisp.dhis.common.Dxf2Namespace; -import org.hisp.dhis.common.adapter.*; +import org.hisp.dhis.common.adapter.CategoryComboXmlAdapter; +import org.hisp.dhis.common.adapter.DataElementGroupXmlAdapter; +import org.hisp.dhis.common.adapter.DataSetXmlAdapter; import org.hisp.dhis.dataset.DataSet; import org.hisp.dhis.period.PeriodType; import org.hisp.dhis.period.YearlyPeriodType; @@ -432,7 +435,9 @@ } @XmlElement - @XmlJavaTypeAdapter( BaseIdentifiableObjectXmlAdapter.class ) + @XmlJavaTypeAdapter( CategoryComboXmlAdapter.class ) + @JsonProperty + @JsonSerialize( as = BaseIdentifiableObject.class ) public DataElementCategoryCombo getCategoryCombo() { return categoryCombo; @@ -469,8 +474,9 @@ @XmlElementWrapper( name = "dataElementGroups" ) @XmlElement( name = "dataElementGroup" ) - @XmlJavaTypeAdapter( BaseIdentifiableObjectXmlAdapter.class ) - @JsonSerialize( using = JsonIdentifiableObjectCollectionSerializer.class ) + @XmlJavaTypeAdapter( DataElementGroupXmlAdapter.class ) + @JsonProperty( value = "dataElementGroups" ) + @JsonSerialize( contentAs = BaseIdentifiableObject.class ) public Set getGroups() { return groups; @@ -483,8 +489,8 @@ @XmlElementWrapper( name = "dataSets" ) @XmlElement( name = "dataSet" ) - @XmlJavaTypeAdapter( BaseNameableObjectXmlAdapter.class ) - @JsonSerialize( using = JsonNameableObjectCollectionSerializer.class ) + @XmlJavaTypeAdapter( DataSetXmlAdapter.class ) + @JsonSerialize( contentAs = BaseIdentifiableObject.class ) public Set getDataSets() { return dataSets; @@ -534,7 +540,6 @@ @XmlElementWrapper( name = "attributes" ) @XmlElement( name = "attribute" ) @JsonProperty( value = "attributes" ) - @JsonSerialize( using = JsonCollectionSerializer.class ) public Set getAttributeValues() { return attributeValues; === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryCombo.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryCombo.java 2011-12-07 12:27:51 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryCombo.java 2011-12-09 18:08:05 +0000 @@ -213,9 +213,8 @@ // ------------------------------------------------------------------------- @XmlElementWrapper( name = "categories" ) - @XmlJavaTypeAdapter( BaseIdentifiableObjectXmlAdapter.class ) @XmlElement( name = "category" ) - @JsonSerialize( using = JsonIdentifiableObjectCollectionSerializer.class ) + @XmlJavaTypeAdapter( BaseIdentifiableObjectXmlAdapter.class ) public List getCategories() { return categories; @@ -227,9 +226,8 @@ } @XmlElementWrapper( name = "optionCombos" ) - @XmlJavaTypeAdapter( BaseIdentifiableObjectXmlAdapter.class ) @XmlElement( name = "optionCombo" ) - @JsonSerialize( using = JsonIdentifiableObjectCollectionSerializer.class ) + @XmlJavaTypeAdapter( BaseIdentifiableObjectXmlAdapter.class ) public Set getOptionCombos() { return optionCombos; === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementGroup.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementGroup.java 2011-12-06 19:52:58 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementGroup.java 2011-12-09 18:08:05 +0000 @@ -27,10 +27,11 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.codehaus.jackson.annotate.JsonProperty; import org.codehaus.jackson.map.annotate.JsonSerialize; import org.hisp.dhis.common.BaseIdentifiableObject; import org.hisp.dhis.common.Dxf2Namespace; -import org.hisp.dhis.common.adapter.*; +import org.hisp.dhis.common.adapter.BaseIdentifiableObjectXmlAdapter; import javax.xml.bind.annotation.*; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; @@ -145,9 +146,10 @@ // ------------------------------------------------------------------------- @XmlElementWrapper( name = "dataElements" ) - @XmlJavaTypeAdapter( BaseIdentifiableObjectXmlAdapter.class ) @XmlElement( name = "dataElement" ) - @JsonSerialize( using = JsonIdentifiableObjectCollectionSerializer.class ) + @XmlJavaTypeAdapter( BaseIdentifiableObjectXmlAdapter.class ) + @JsonProperty( value = "dataElements" ) + @JsonSerialize( contentAs = BaseIdentifiableObject.class ) public Set getMembers() { return members; @@ -158,9 +160,10 @@ this.members = members; } - @XmlJavaTypeAdapter( BaseIdentifiableObjectXmlAdapter.class ) @XmlElement( name = "dataElementGroupSet" ) - @JsonSerialize( using = JsonIdentifiableObjectSerializer.class ) + @XmlJavaTypeAdapter( BaseIdentifiableObjectXmlAdapter.class ) + @JsonProperty( value = "dataElementGroupSet" ) + @JsonSerialize( as = BaseIdentifiableObject.class ) public DataElementGroupSet getGroupSet() { return groupSet; === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementGroupSet.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementGroupSet.java 2011-12-06 19:52:58 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementGroupSet.java 2011-12-09 18:08:05 +0000 @@ -32,7 +32,6 @@ import org.hisp.dhis.common.BaseIdentifiableObject; import org.hisp.dhis.common.Dxf2Namespace; import org.hisp.dhis.common.adapter.BaseIdentifiableObjectXmlAdapter; -import org.hisp.dhis.common.adapter.JsonIdentifiableObjectCollectionSerializer; import org.hisp.dhis.dataelement.comparator.DataElementGroupNameComparator; import javax.xml.bind.annotation.*; @@ -220,9 +219,10 @@ } @XmlElementWrapper( name = "dataElementGroups" ) + @XmlElement( name = "dataElementGroup" ) @XmlJavaTypeAdapter( BaseIdentifiableObjectXmlAdapter.class ) - @XmlElement( name = "dataElementGroup" ) - @JsonSerialize( using = JsonIdentifiableObjectCollectionSerializer.class ) + @JsonProperty( value = "dataElementGroups" ) + @JsonSerialize( contentAs = BaseIdentifiableObject.class ) public List getMembers() { return members; === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementService.java 2011-11-22 16:17:49 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementService.java 2011-12-09 13:41:05 +0000 @@ -38,7 +38,7 @@ /** * Defines service functionality for DataElements and DataElementGroups. - * + * * @author Kristian Nordal * @version $Id: DataElementService.java 6289 2008-11-14 17:53:24Z larshelg $ */ @@ -52,7 +52,7 @@ /** * Adds a DataElement. - * + * * @param dataElement the DataElement to add. * @return a generated unique id of the added DataElement. */ @@ -60,7 +60,7 @@ /** * Updates a DataElement. - * + * * @param dataElement the DataElement to update. */ void updateDataElement( DataElement dataElement ); @@ -69,7 +69,7 @@ * Deletes a DataElement. The DataElement is also removed from any * DataElementGroups it is a member of. It is not possible to delete a * DataElement with children. - * + * * @param dataElement the DataElement to delete. * @throws HierarchyViolationException if the DataElement has children. */ @@ -78,7 +78,7 @@ /** * Returns a DataElement. - * + * * @param id the id of the DataElement to return. * @return the DataElement with the given id, or null if no match. */ @@ -86,7 +86,7 @@ /** * Returns the DataElement with the given UID. - * + * * @param uid the UID. * @return the DataElement with the given UID, or null if no match. */ @@ -94,7 +94,7 @@ /** * Returns the DataElement with the given code. - * + * * @param code the code. * @return the DataElement with the given code, or null if no match. */ @@ -102,7 +102,7 @@ /** * Returns a DataElement with a given name. - * + * * @param name the name of the DataElement to return. * @return the DataElement with the given name, or null if no match. */ @@ -110,7 +110,7 @@ /** * Returns a DataElement with a given alternative name. - * + * * @param alternativeName the alternative name of the DataElement to return. * @return the DataElement with the given alternative name, or null if no * match. @@ -119,7 +119,7 @@ /** * Returns List of DataElements with a given key. - * + * * @param key the name of the DataElement to return. * @return List of DataElements with a given key, or all dataelements if no * match. @@ -128,7 +128,7 @@ /** * Returns a DataElement with a given short name. - * + * * @param shortName the short name of the DataElement to return. * @return the DataElement with the given short name, or null if no match. */ @@ -136,7 +136,7 @@ /** * Returns all DataElements. - * + * * @return a collection of all DataElements, or an empty collection if there * are no DataElements. */ @@ -145,7 +145,7 @@ /** * Returns all DataElements with corresponding identifiers. Returns all * DataElements if the given argument is null. - * + * * @param identifiers the collection of identifiers. * @return a collection of DataElements. */ @@ -154,14 +154,14 @@ /** * Returns all DataElements with types that are possible to aggregate. The * types are currently INT and BOOL. - * + * * @return all DataElements with types that are possible to aggregate. */ Collection getAggregateableDataElements(); /** * Returns all active DataElements. - * + * * @return a collection of all active DataElements, or an empty collection * if there are no active DataElements. */ @@ -169,7 +169,7 @@ /** * Returns all DataElements with a given aggregantion operator. - * + * * @param aggregationOperator the aggregation operator of the DataElements * to return. * @return a collection of all DataElements with the given aggregation @@ -180,7 +180,7 @@ /** * Returns all DataElements with the given domain type. - * + * * @param domainType the domainType. * @return all DataElements with the given domainType. */ @@ -188,7 +188,7 @@ /** * Returns all DataElements with the given type. - * + * * @param type the type. * @return all DataElements with the given type. */ @@ -197,7 +197,7 @@ /** * Returns the DataElements with the given PeriodType. - * + * * @param periodType the PeriodType. * @return a Collection of DataElements. */ @@ -205,7 +205,7 @@ /** * Returns all DataElements with the given category combo. - * + * * @param categoryCombo the DataElementCategoryCombo. * @return all DataElements with the given category combo. */ @@ -215,7 +215,7 @@ * Returns a Map with DataElementCategoryCombo as key and a Collection of * the DataElements belonging to the DataElementCategoryCombo from the given * argument List of DataElements as value. - * + * * @param dataElements the DataElements to include. * @return grouped DataElements based on their DataElementCategoryCombo. */ @@ -225,7 +225,7 @@ /** * Returns the DataElementCategoryCombos associated with the given argument * list of DataElements. - * + * * @param dataElements the DataElements. * @return a list of DataElements. */ @@ -234,7 +234,7 @@ /** * Returns all DataElements which are associated with one or more * DataElementGroupSets. - * + * * @return all DataElements which are associated with one or more * DataElementGroupSets. */ @@ -242,28 +242,28 @@ /** * Returns all DataElements which are not member of any DataElementGroups. - * + * * @return all DataElements which are not member of any DataElementGroups. */ Collection getDataElementsWithoutGroups(); /** * Returns all DataElements which are not assigned to any DataSets. - * + * * @return all DataElements which are not assigned to any DataSets. */ Collection getDataElementsWithoutDataSets(); /** * Returns all DataElements which are assigned to at least one DataSet. - * + * * @return all DataElements which are assigned to at least one DataSet. */ Collection getDataElementsWithDataSets(); /** * Checks whether a DataElement with the given identifier exists. - * + * * @param id the DataElement identifier. * @return true or false. */ @@ -272,7 +272,7 @@ /** * Checks whether a DataElementCategoryOptionCombo with the given identifier * exists. - * + * * @param id the DataElementCategoryOptionCombo identifier. * @return true or false. */ @@ -289,7 +289,7 @@ int getDataElementCount(); int getDataElementCountByName( String name ); - + Map> getDataElementCategoryOptionCombos(); // ------------------------------------------------------------------------- @@ -298,7 +298,7 @@ /** * Adds a DataElementGroup. - * + * * @param dataElementGroup the DataElementGroup to add. * @return a generated unique id of the added DataElementGroup. */ @@ -306,21 +306,21 @@ /** * Updates a DataElementGroup. - * + * * @param dataElementGroup the DataElementGroup to update. */ void updateDataElementGroup( DataElementGroup dataElementGroup ); /** * Deletes a DataElementGroup. - * + * * @param dataElementGroup the DataElementGroup to delete. */ void deleteDataElementGroup( DataElementGroup dataElementGroup ); /** * Returns a DataElementGroup. - * + * * @param id the id of the DataElementGroup to return. * @return the DataElementGroup with the given id, or null if no match. */ @@ -328,7 +328,7 @@ /** * Returns data elements with identifiers in the given collection. - * + * * @param identifiers the id collection. * @return data elements with identifiers in the given collection. */ @@ -336,7 +336,7 @@ /** * Returns the DataElementGroup with the given UID. - * + * * @param id the UID of the DataElementGroup to return. * @return the DataElementGroup with the given UID, or null if no match. */ @@ -344,7 +344,7 @@ /** * Returns a DataElementGroup with a given name. - * + * * @param name the name of the DataElementGroup to return. * @return the DataElementGroup with the given name, or null if no match. */ @@ -352,7 +352,7 @@ /** * Returns all DataElementGroups. - * + * * @return a collection of all DataElementGroups, or an empty collection if * no DataElementGroups exist. */ @@ -360,7 +360,7 @@ /** * Returns all DataElementGroups which contain the given DataElement. - * + * * @param dataElement the DataElement which the DataElementGroups must * contain. * @return a collection of all DataElementGroups that contain the given @@ -370,7 +370,7 @@ /** * Returns data elements with identifier in the given id. - * + * * @param groupId is the id of data element group. * @return data elements with identifier in the given id. */ @@ -379,7 +379,7 @@ /** * Defines the given data elements as zero is significant. All other data * elements are defined as zero is in-significant. - * + * * @param dataElementIds identifiers of data elements where zero is * significant. */ @@ -387,7 +387,7 @@ /** * Returns all DataElement which zeroIsSignificant property is true or false - * + * * @param zeroIsSignificant is zeroIsSignificant property * @return a collection of all DataElement */ @@ -395,7 +395,7 @@ /** * Returns all DataElement which zeroIsSignificant property is true or false - * + * * @param zeroIsSignificant is zeroIsSignificant property * @param dataElementGroup is group contain data elements * @return a collection of all DataElement @@ -422,7 +422,7 @@ void deleteDataElementGroupSet( DataElementGroupSet groupSet ); DataElementGroupSet getDataElementGroupSet( int id ); - + DataElementGroupSet getDataElementGroupSet( String uid ); DataElementGroupSet getDataElementGroupSetByName( String name ); @@ -452,7 +452,7 @@ /** * Returns all Operands. Requires the categoryoptioncomboname resource table * to be populated. - * + * * @return a collection of all Operands. */ Collection getAllGeneratedOperands(); @@ -461,7 +461,7 @@ * Returns all generated permutations of Operands for the given collection * of DataElements. Requires the categoryoptioncomboname resource table to * be populated. - * + * * @param dataElements the DataElements. * @return a collection of all Operands. */ === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataentryform/DataEntryForm.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataentryform/DataEntryForm.java 2011-05-05 21:14:56 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataentryform/DataEntryForm.java 2011-12-09 18:08:05 +0000 @@ -27,13 +27,13 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.common.ImportableObject; + import java.io.Serializable; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.hisp.dhis.common.ImportableObject; - /** * @author Bharath Kumar */ @@ -47,7 +47,7 @@ public static final Pattern INPUT_PATTERN = Pattern.compile( "value\\[\\d+\\]\\.value:value\\[\\d+\\]\\.value" ); public static final Pattern OPERAND_PATTERN = Pattern.compile( "\\d+" ); - + /** * The unique identifier for this DataEntryForm */ @@ -62,7 +62,7 @@ * HTML Code of DataEntryForm */ private String htmlCode; - + // ------------------------------------------------------------------------- // Contructors // ------------------------------------------------------------------------- @@ -87,43 +87,43 @@ // ------------------------------------------------------------------------- /** - * Map the identifiers inside the HTML code according to the provided data + * Map the identifiers inside the HTML code according to the provided data * element identifier and category option combo identifier mappings. - * - * @param htmlCode the HTML code. - * @param dataElementMap the mapping between data element identifiers to be - * converted. + * + * @param htmlCode the HTML code. + * @param dataElementMap the mapping between data element identifiers to be + * converted. * @param categoryOptionComboMap the mapping between category option combo - * identifiers to be converted. + * identifiers to be converted. * @return the converted HTML code. */ public void convertDataEntryForm( Map dataElementMap, Map categoryOptionComboMap ) { - Matcher inputMatcher = INPUT_PATTERN.matcher( htmlCode ); + Matcher inputMatcher = INPUT_PATTERN.matcher( htmlCode ); StringBuffer buffer = new StringBuffer(); - + while ( inputMatcher.find() ) { String input = inputMatcher.group(); Matcher operandMatcher = OPERAND_PATTERN.matcher( input ); - - operandMatcher.find(); + + operandMatcher.find(); String d = operandMatcher.group(); throwException( d == null, "Could not find data element identifier in form" ); Integer dataElement = dataElementMap.get( Integer.parseInt( d ) ); throwException( dataElement == null, "Data element identifier does not exist: " + d ); - + operandMatcher.find(); String c = operandMatcher.group(); throwException( c == null, "Could not find category option combo identifier in form" ); Integer categoryOptionCombo = categoryOptionComboMap.get( Integer.parseInt( c ) ); throwException( categoryOptionCombo == null, "Category option combo identifier does not exist: " + c ); - + inputMatcher.appendReplacement( buffer, "value[" + dataElement + "].value:value[" + categoryOptionCombo + "].value" ); } - + inputMatcher.appendTail( buffer ); - + this.htmlCode = buffer.toString(); } @@ -134,7 +134,7 @@ throw new IllegalArgumentException( message ); } } - + // ------------------------------------------------------------------------- // hashCode and equals // ------------------------------------------------------------------------- @@ -172,16 +172,6 @@ // Getters and setters // ------------------------------------------------------------------------- - public String getHtmlCode() - { - return htmlCode; - } - - public void setHtmlCode( String htmlCode ) - { - this.htmlCode = htmlCode; - } - public int getId() { return id; @@ -201,4 +191,14 @@ { this.name = name; } + + public String getHtmlCode() + { + return htmlCode; + } + + public void setHtmlCode( String htmlCode ) + { + this.htmlCode = htmlCode; + } } === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/DataSet.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/DataSet.java 2011-12-06 19:52:58 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/DataSet.java 2011-12-09 18:08:05 +0000 @@ -29,9 +29,11 @@ import org.codehaus.jackson.annotate.JsonProperty; import org.codehaus.jackson.map.annotate.JsonSerialize; +import org.hisp.dhis.common.BaseIdentifiableObject; import org.hisp.dhis.common.BaseNameableObject; import org.hisp.dhis.common.Dxf2Namespace; -import org.hisp.dhis.common.adapter.*; +import org.hisp.dhis.common.adapter.BaseIdentifiableObjectXmlAdapter; +import org.hisp.dhis.common.adapter.BaseNameableObjectXmlAdapter; import org.hisp.dhis.dataelement.DataElement; import org.hisp.dhis.dataelement.DataElementOperand; import org.hisp.dhis.dataentryform.DataEntryForm; @@ -306,7 +308,8 @@ @XmlElementWrapper( name = "dataElements" ) @XmlElement( name = "dataElement" ) @XmlJavaTypeAdapter( BaseNameableObjectXmlAdapter.class ) - @JsonSerialize( using = JsonNameableObjectCollectionSerializer.class ) + @JsonProperty( value = "dataElements" ) + @JsonSerialize( contentAs = BaseIdentifiableObject.class ) public Set getDataElements() { return dataElements; @@ -320,7 +323,8 @@ @XmlElementWrapper( name = "indicators" ) @XmlElement( name = "indicator" ) @XmlJavaTypeAdapter( BaseNameableObjectXmlAdapter.class ) - @JsonSerialize( using = JsonNameableObjectCollectionSerializer.class ) + @JsonProperty( value = "indicators" ) + @JsonSerialize( contentAs = BaseIdentifiableObject.class ) public Set getIndicators() { return indicators; @@ -346,7 +350,8 @@ @XmlElementWrapper( name = "organisationUnits" ) @XmlElement( name = "organisationUnit" ) @XmlJavaTypeAdapter( BaseIdentifiableObjectXmlAdapter.class ) - @JsonSerialize( using = JsonIdentifiableObjectCollectionSerializer.class ) + @JsonProperty( value = "organisationUnits" ) + @JsonSerialize( contentAs = BaseIdentifiableObject.class ) public Set getSources() { return sources; @@ -372,7 +377,6 @@ @XmlElementWrapper( name = "sections" ) @XmlElement( name = "section" ) @JsonProperty - @JsonSerialize( using = JsonCollectionSerializer.class ) public Set
getSections() { return sections; === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/Section.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/Section.java 2011-12-06 19:52:58 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/Section.java 2011-12-09 18:08:05 +0000 @@ -25,9 +25,9 @@ import org.codehaus.jackson.annotate.JsonProperty; import org.codehaus.jackson.map.annotate.JsonSerialize; +import org.hisp.dhis.common.BaseIdentifiableObject; import org.hisp.dhis.common.Dxf2Namespace; import org.hisp.dhis.common.adapter.BaseIdentifiableObjectXmlAdapter; -import org.hisp.dhis.common.adapter.JsonIdentifiableObjectCollectionSerializer; import org.hisp.dhis.dataelement.DataElement; import org.hisp.dhis.dataelement.DataElementCategoryCombo; import org.hisp.dhis.dataelement.DataElementOperand; @@ -200,7 +200,8 @@ @XmlElementWrapper( name = "dataElements" ) @XmlElement( name = "dataElement" ) @XmlJavaTypeAdapter( BaseIdentifiableObjectXmlAdapter.class ) - @JsonSerialize( using = JsonIdentifiableObjectCollectionSerializer.class ) + @JsonProperty( value = "dataElements" ) + @JsonSerialize( contentAs = BaseIdentifiableObject.class ) public List getDataElements() { return dataElements; === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/indicator/Indicator.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/indicator/Indicator.java 2011-12-06 21:57:53 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/indicator/Indicator.java 2011-12-09 18:08:05 +0000 @@ -30,9 +30,11 @@ import org.codehaus.jackson.annotate.JsonProperty; import org.codehaus.jackson.map.annotate.JsonSerialize; import org.hisp.dhis.attribute.AttributeValue; +import org.hisp.dhis.common.BaseIdentifiableObject; import org.hisp.dhis.common.BaseNameableObject; import org.hisp.dhis.common.Dxf2Namespace; -import org.hisp.dhis.common.adapter.*; +import org.hisp.dhis.common.adapter.BaseIdentifiableObjectXmlAdapter; +import org.hisp.dhis.common.adapter.BaseNameableObjectXmlAdapter; import org.hisp.dhis.dataset.DataSet; import javax.xml.bind.annotation.*; @@ -170,7 +172,7 @@ @XmlElement @XmlJavaTypeAdapter( BaseIdentifiableObjectXmlAdapter.class ) - @JsonSerialize( using = JsonIdentifiableObjectSerializer.class ) + @JsonSerialize( as = BaseIdentifiableObject.class ) public IndicatorType getIndicatorType() { return indicatorType; @@ -280,7 +282,8 @@ @XmlElementWrapper( name = "indicatorGroups" ) @XmlJavaTypeAdapter( BaseIdentifiableObjectXmlAdapter.class ) @XmlElement( name = "indicatorGroup" ) - @JsonSerialize( using = JsonIdentifiableObjectCollectionSerializer.class ) + @JsonProperty( value = "indicatorGroups" ) + @JsonSerialize( contentAs = BaseIdentifiableObject.class ) public Set getGroups() { return groups; @@ -294,7 +297,7 @@ @XmlElementWrapper( name = "dataSets" ) @XmlJavaTypeAdapter( BaseNameableObjectXmlAdapter.class ) @XmlElement( name = "dataSet" ) - @JsonSerialize( using = JsonNameableObjectCollectionSerializer.class ) + @JsonSerialize( contentAs = BaseIdentifiableObject.class ) public Set getDataSets() { return dataSets; @@ -308,7 +311,6 @@ @XmlElementWrapper( name = "attributes" ) @XmlElement( name = "attribute" ) @JsonProperty( value = "attributes" ) - @JsonSerialize( using = JsonCollectionSerializer.class ) public Set getAttributeValues() { return attributeValues; === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/indicator/IndicatorGroup.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/indicator/IndicatorGroup.java 2011-12-06 19:52:58 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/indicator/IndicatorGroup.java 2011-12-09 18:08:05 +0000 @@ -27,12 +27,12 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.codehaus.jackson.annotate.JsonProperty; import org.codehaus.jackson.map.annotate.JsonSerialize; import org.hisp.dhis.common.BaseIdentifiableObject; import org.hisp.dhis.common.Dxf2Namespace; import org.hisp.dhis.common.adapter.BaseIdentifiableObjectXmlAdapter; import org.hisp.dhis.common.adapter.JsonIdentifiableObjectCollectionSerializer; -import org.hisp.dhis.common.adapter.JsonIdentifiableObjectSerializer; import javax.xml.bind.annotation.*; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; @@ -157,9 +157,10 @@ this.members = members; } - @XmlJavaTypeAdapter( BaseIdentifiableObjectXmlAdapter.class ) @XmlElement( name = "indicatorGroupSet" ) - @JsonSerialize( using = JsonIdentifiableObjectSerializer.class ) + @XmlJavaTypeAdapter( BaseIdentifiableObjectXmlAdapter.class ) + @JsonProperty( value = "indicatorGroupSet" ) + @JsonSerialize( as = BaseIdentifiableObject.class ) public IndicatorGroupSet getGroupSet() { return groupSet; === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/indicator/IndicatorGroupSet.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/indicator/IndicatorGroupSet.java 2011-12-06 19:52:58 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/indicator/IndicatorGroupSet.java 2011-12-09 18:08:05 +0000 @@ -27,27 +27,25 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - import org.codehaus.jackson.annotate.JsonProperty; import org.codehaus.jackson.map.annotate.JsonSerialize; import org.hisp.dhis.common.BaseIdentifiableObject; import org.hisp.dhis.common.Dxf2Namespace; import org.hisp.dhis.common.adapter.BaseIdentifiableObjectXmlAdapter; -import org.hisp.dhis.common.adapter.JsonIdentifiableObjectCollectionSerializer; import org.hisp.dhis.indicator.comparator.IndicatorGroupNameComparator; import javax.xml.bind.annotation.*; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; /** * An IndicatorGroupSet is a set of IndicatorGroups. It is by default exclusive, * in the sense that an Indicator can only be a member of one or zero of the * IndicatorGroups in a IndicatorGroupSet. - * + * * @author Lars Helge Overland */ @XmlRootElement( name = "indicatorGroupSet", namespace = Dxf2Namespace.NAMESPACE ) @@ -221,9 +219,10 @@ } @XmlElementWrapper( name = "indicatorGroups" ) + @XmlElement( name = "indicatorGroup" ) @XmlJavaTypeAdapter( BaseIdentifiableObjectXmlAdapter.class ) - @XmlElement( name = "indicatorGroup" ) - @JsonSerialize( using = JsonIdentifiableObjectCollectionSerializer.class ) + @JsonProperty( value = "indicatorGroups" ) + @JsonSerialize( contentAs = BaseIdentifiableObject.class ) public List getMembers() { return members; === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnit.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnit.java 2011-12-06 21:57:53 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnit.java 2011-12-09 18:08:05 +0000 @@ -31,9 +31,11 @@ import org.codehaus.jackson.annotate.JsonProperty; import org.codehaus.jackson.map.annotate.JsonSerialize; import org.hisp.dhis.attribute.AttributeValue; +import org.hisp.dhis.common.BaseIdentifiableObject; import org.hisp.dhis.common.BaseNameableObject; import org.hisp.dhis.common.Dxf2Namespace; -import org.hisp.dhis.common.adapter.*; +import org.hisp.dhis.common.adapter.BaseIdentifiableObjectXmlAdapter; +import org.hisp.dhis.common.adapter.BaseNameableObjectXmlAdapter; import org.hisp.dhis.dataelement.DataElement; import org.hisp.dhis.dataset.DataSet; import org.hisp.dhis.organisationunit.comparator.OrganisationUnitNameComparator; @@ -128,7 +130,7 @@ private transient String type; private transient String[] groupNames; - + private transient Double value; // ------------------------------------------------------------------------- @@ -505,7 +507,7 @@ @XmlElement @XmlJavaTypeAdapter( BaseNameableObjectXmlAdapter.class ) - @JsonSerialize( using = JsonNameableObjectSerializer.class ) + @JsonSerialize( as = BaseIdentifiableObject.class ) public OrganisationUnit getParent() { return parent; @@ -528,7 +530,6 @@ @XmlElement @JsonProperty - @JsonSerialize( using = JsonDateSerializer.class ) public Date getOpeningDate() { return openingDate; @@ -541,7 +542,6 @@ @XmlElement @JsonProperty - @JsonSerialize( using = JsonDateSerializer.class ) public Date getClosedDate() { return closedDate; @@ -627,7 +627,8 @@ @XmlElementWrapper( name = "organisationUnitGroups" ) @XmlElement( name = "organisationUnitGroup" ) @XmlJavaTypeAdapter( BaseIdentifiableObjectXmlAdapter.class ) - @JsonSerialize( using = JsonIdentifiableObjectCollectionSerializer.class ) + @JsonProperty( value = "organisationUnitGroups" ) + @JsonSerialize( contentAs = BaseIdentifiableObject.class ) public Set getGroups() { return groups; @@ -641,7 +642,7 @@ @XmlElementWrapper( name = "dataSets" ) @XmlElement( name = "dataSet" ) @XmlJavaTypeAdapter( BaseNameableObjectXmlAdapter.class ) - @JsonSerialize( using = JsonNameableObjectCollectionSerializer.class ) + @JsonSerialize( contentAs = BaseIdentifiableObject.class ) public Set getDataSets() { return dataSets; @@ -723,16 +724,6 @@ this.hasPatients = hasPatients; } - public int getLevel() - { - return level; - } - - public void setLevel( int level ) - { - this.level = level; - } - @XmlElement @JsonProperty public boolean isCurrentParent() @@ -760,7 +751,6 @@ @XmlElementWrapper( name = "attributes" ) @XmlElement( name = "attribute" ) @JsonProperty( value = "attributes" ) - @JsonSerialize( using = JsonCollectionSerializer.class ) public Set getAttributeValues() { return attributeValues; @@ -771,6 +761,16 @@ this.attributeValues = attributeValues; } + public int getLevel() + { + return level; + } + + public void setLevel( int level ) + { + this.level = level; + } + public String[] getGroupNames() { return groupNames; === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitGroup.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitGroup.java 2011-12-06 19:52:58 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitGroup.java 2011-12-09 18:08:05 +0000 @@ -27,10 +27,12 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.codehaus.jackson.annotate.JsonProperty; import org.codehaus.jackson.map.annotate.JsonSerialize; import org.hisp.dhis.common.BaseIdentifiableObject; import org.hisp.dhis.common.Dxf2Namespace; -import org.hisp.dhis.common.adapter.*; +import org.hisp.dhis.common.adapter.BaseIdentifiableObjectXmlAdapter; +import org.hisp.dhis.common.adapter.BaseNameableObjectXmlAdapter; import javax.xml.bind.annotation.*; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; @@ -144,7 +146,8 @@ @XmlElementWrapper( name = "organisationUnits" ) @XmlElement( name = "organisationUnit" ) @XmlJavaTypeAdapter( BaseNameableObjectXmlAdapter.class ) - @JsonSerialize( using = JsonNameableObjectCollectionSerializer.class ) + @JsonProperty( value = "organisationUnits" ) + @JsonSerialize( contentAs = BaseIdentifiableObject.class ) public Set getMembers() { return members; @@ -157,7 +160,8 @@ @XmlElement( name = "organisationUnitGroupSet" ) @XmlJavaTypeAdapter( BaseIdentifiableObjectXmlAdapter.class ) - @JsonSerialize( using = JsonIdentifiableObjectSerializer.class ) + @JsonProperty( value = "organisationUnitGroupSet" ) + @JsonSerialize( as = BaseIdentifiableObject.class ) public OrganisationUnitGroupSet getGroupSet() { return groupSet; === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitGroupSet.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitGroupSet.java 2011-12-06 19:52:58 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitGroupSet.java 2011-12-09 18:08:05 +0000 @@ -32,7 +32,6 @@ import org.hisp.dhis.common.BaseIdentifiableObject; import org.hisp.dhis.common.Dxf2Namespace; import org.hisp.dhis.common.adapter.BaseIdentifiableObjectXmlAdapter; -import org.hisp.dhis.common.adapter.JsonIdentifiableObjectCollectionSerializer; import org.hisp.dhis.organisationunit.comparator.OrganisationUnitGroupNameComparator; import javax.xml.bind.annotation.*; @@ -200,7 +199,8 @@ @XmlElementWrapper( name = "organisationUnitGroups" ) @XmlElement( name = "organisationUnitGroup" ) @XmlJavaTypeAdapter( BaseIdentifiableObjectXmlAdapter.class ) - @JsonSerialize( using = JsonIdentifiableObjectCollectionSerializer.class ) + @JsonProperty( value = "organisationUnitGroups" ) + @JsonSerialize( contentAs = BaseIdentifiableObject.class ) public Set getOrganisationUnitGroups() { return organisationUnitGroups; === removed file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AttributeController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AttributeController.java 2011-12-06 15:03:45 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AttributeController.java 1970-01-01 00:00:00 +0000 @@ -1,87 +0,0 @@ -package org.hisp.dhis.api.controller; - -/* - * Copyright (c) 2004-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 org.hisp.dhis.api.utils.IdentifiableObjectParams; -import org.hisp.dhis.api.utils.WebLinkPopulator; -import org.hisp.dhis.attribute.Attribute; -import org.hisp.dhis.attribute.AttributeService; -import org.hisp.dhis.attribute.Attributes; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; - -import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; - -/** - * @author Morten Olav Hansen - */ -@Controller -@RequestMapping( value = "/attributes" ) -public class AttributeController -{ - @Autowired - private AttributeService attributeService; - - @RequestMapping( method = RequestMethod.GET ) - public String getAttributes( IdentifiableObjectParams params, Model model, HttpServletRequest request ) - { - Attributes attributes = new Attributes(); - attributes.setAttributes( new ArrayList( attributeService.getAllAttributes() ) ); - - if ( params.hasLinks() ) - { - WebLinkPopulator listener = new WebLinkPopulator( request ); - listener.addLinks( attributes ); - } - - model.addAttribute( "model", attributes ); - - return "attributes"; - } - - @RequestMapping( value = "/{uid}", method = RequestMethod.GET ) - public String getAttribute( @PathVariable( "uid" ) String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) - { - Attribute attribute = attributeService.getAttribute( uid ); - - if ( params.hasLinks() ) - { - WebLinkPopulator listener = new WebLinkPopulator( request ); - listener.addLinks( attribute ); - } - - model.addAttribute( "model", attribute ); - - return "attribute"; - } -} === added file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AttributeTypeController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AttributeTypeController.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AttributeTypeController.java 2011-12-09 18:08:05 +0000 @@ -0,0 +1,221 @@ +package org.hisp.dhis.api.controller; + +/* + * Copyright (c) 2004-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 org.hisp.dhis.api.utils.IdentifiableObjectParams; +import org.hisp.dhis.api.utils.WebLinkPopulator; +import org.hisp.dhis.api.view.JacksonUtils; +import org.hisp.dhis.api.view.Jaxb2Utils; +import org.hisp.dhis.attribute.Attribute; +import org.hisp.dhis.attribute.AttributeService; +import org.hisp.dhis.attribute.Attributes; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; +import java.util.ArrayList; + +/** + * @author Morten Olav Hansen + */ +@Controller +@RequestMapping( value = AttributeTypeController.RESOURCE_PATH ) +public class AttributeTypeController +{ + public static final String RESOURCE_PATH = "/attributeTypes"; + + @Autowired + private AttributeService attributeService; + + //------------------------------------------------------------------------------------------------------- + // GET + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( method = RequestMethod.GET ) + public String getAttributeTypes( IdentifiableObjectParams params, Model model, HttpServletRequest request ) + { + Attributes attributes = new Attributes(); + attributes.setAttributes( new ArrayList( attributeService.getAllAttributes() ) ); + + if ( params.hasLinks() ) + { + WebLinkPopulator listener = new WebLinkPopulator( request ); + listener.addLinks( attributes ); + } + + model.addAttribute( "model", attributes ); + + return "attributeTypes"; + } + + @RequestMapping( value = "/{uid}", method = RequestMethod.GET ) + public String getAttributeType( @PathVariable( "uid" ) String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) + { + Attribute attribute = attributeService.getAttribute( uid ); + + if ( params.hasLinks() ) + { + WebLinkPopulator listener = new WebLinkPopulator( request ); + listener.addLinks( attribute ); + } + + model.addAttribute( "model", attribute ); + + return "attributeType"; + } + + //------------------------------------------------------------------------------------------------------- + // POST + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/xml, text/xml"} ) + public void postAttributeTypeXML( HttpServletResponse response, InputStream input ) throws Exception + { + Attribute attribute = (Attribute) Jaxb2Utils.unmarshal( Attribute.class, input ); + postAttributeType( attribute, response ); + } + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/json"} ) + public void postAttributeTypeJSON( HttpServletResponse response, InputStream input ) throws Exception + { + Attribute attribute = JacksonUtils.readValueAs( Attribute.class, input ); + postAttributeType( attribute, response ); + } + + public void postAttributeType( Attribute attribute, HttpServletResponse response ) + { + if ( attribute == null ) + { + response.setStatus( HttpServletResponse.SC_NOT_IMPLEMENTED ); + } + else + { + try + { + attributeService.addAttribute( attribute ); + + if ( attribute.getUid() == null ) + { + response.setStatus( HttpServletResponse.SC_INTERNAL_SERVER_ERROR ); + } + else + { + response.setStatus( HttpServletResponse.SC_CREATED ); + response.setHeader( "Location", AttributeTypeController.RESOURCE_PATH + "/" + attribute.getUid() ); + } + } catch ( Exception e ) + { + response.setStatus( HttpServletResponse.SC_CONFLICT ); + } + } + } + + //------------------------------------------------------------------------------------------------------- + // PUT + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/xml, text/xml"} ) + public void putAttributeTypeXML( @PathVariable( "uid" ) String uid, InputStream input, HttpServletResponse response ) throws Exception + { + Attribute updateAttribute = (Attribute) Jaxb2Utils.unmarshal( Attribute.class, input ); + updateAttribute.setUid( uid ); + putAttributeType( updateAttribute, response ); + } + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/json"} ) + public void putAttributeTypeJSON( @PathVariable( "uid" ) String uid, InputStream input, HttpServletResponse response ) throws Exception + { + Attribute updateAttribute = JacksonUtils.readValueAs( Attribute.class, input ); + updateAttribute.setUid( uid ); + putAttributeType( updateAttribute, response ); + } + + public void putAttributeType( Attribute updatedAttribute, HttpServletResponse response ) + { + Attribute attribute = attributeService.getAttribute( updatedAttribute.getUid() ); + + if ( updatedAttribute == null || attribute == null ) + { + response.setStatus( HttpServletResponse.SC_NOT_IMPLEMENTED ); + } + else + { + attribute.setName( updatedAttribute.getName() ); + attribute.setCode( updatedAttribute.getCode() ); + attribute.setDataElementAttribute( updatedAttribute.isDataElementAttribute() ); + attribute.setIndicatorAttribute( updatedAttribute.isIndicatorAttribute() ); + attribute.setOrganisationUnitAttribute( updatedAttribute.isOrganisationUnitAttribute() ); + attribute.setMandatory( updatedAttribute.isMandatory() ); + attribute.setAttributeValues( updatedAttribute.getAttributeValues() ); + + try + { + attributeService.updateAttribute( attribute ); + + if ( updatedAttribute.getUid() == null ) + { + response.setStatus( HttpServletResponse.SC_INTERNAL_SERVER_ERROR ); + } + else + { + response.setStatus( HttpServletResponse.SC_NO_CONTENT ); + response.setHeader( "Location", AttributeTypeController.RESOURCE_PATH + "/" + updatedAttribute.getUid() ); + } + } catch ( Exception e ) + { + response.setStatus( HttpServletResponse.SC_CONFLICT ); + } + } + } + + //------------------------------------------------------------------------------------------------------- + // DELETE + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.DELETE ) + public void deleteAttributeType( @PathVariable( "uid" ) String uid, HttpServletResponse response ) throws Exception + { + Attribute attribute = attributeService.getAttribute( uid ); + + if ( attribute == null ) + { + response.setStatus( HttpServletResponse.SC_NOT_FOUND ); + } + else + { + response.setStatus( HttpServletResponse.SC_NO_CONTENT ); + attributeService.deleteAttribute( attribute ); + } + } +} === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/CategoryComboController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/CategoryComboController.java 2011-12-07 12:27:51 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/CategoryComboController.java 2011-12-08 17:11:47 +0000 @@ -33,25 +33,36 @@ import org.hisp.dhis.dataelement.DataElementCategoryCombos; import org.hisp.dhis.dataelement.DataElementCategoryService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.HttpRequestMethodNotSupportedException; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseStatus; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; import java.util.ArrayList; /** * @author Morten Olav Hansen */ @Controller -@RequestMapping( value = "/categoryCombos" ) +@RequestMapping( value = CategoryComboController.RESOURCE_PATH ) public class CategoryComboController { + public static final String RESOURCE_PATH = "/categoryCombos"; + @Autowired private DataElementCategoryService dataElementCategoryService; + //------------------------------------------------------------------------------------------------------- + // GET + //------------------------------------------------------------------------------------------------------- + @RequestMapping( method = RequestMethod.GET ) public String getCategoryCombos( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { @@ -84,4 +95,51 @@ return "categoryCombo"; } + + //------------------------------------------------------------------------------------------------------- + // POST + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postCategoryComboXML( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postCategoryComboJSON( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // PUT + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putCategoryComboXML( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putCategoryComboJSON( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.PUT.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // DELETE + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.DELETE ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void deleteCategoryCombo( @PathVariable( "uid" ) String uid ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/CategoryController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/CategoryController.java 2011-12-07 12:27:51 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/CategoryController.java 2011-12-08 17:11:47 +0000 @@ -33,25 +33,36 @@ import org.hisp.dhis.dataelement.DataElementCategory; import org.hisp.dhis.dataelement.DataElementCategoryService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.HttpRequestMethodNotSupportedException; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseStatus; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; import java.util.ArrayList; /** * @author Morten Olav Hansen */ @Controller -@RequestMapping( value = "/categories" ) +@RequestMapping( value = CategoryController.RESOURCE_PATH ) public class CategoryController { + public static final String RESOURCE_PATH = "/categories"; + @Autowired private DataElementCategoryService dataElementCategoryService; + //------------------------------------------------------------------------------------------------------- + // GET + //------------------------------------------------------------------------------------------------------- + @RequestMapping( method = RequestMethod.GET ) public String getCategories( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { @@ -84,4 +95,51 @@ return "category"; } + + //------------------------------------------------------------------------------------------------------- + // POST + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postCategoryXML( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postCategoryJSON( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // PUT + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putCategoryXML( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putCategoryJSON( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.PUT.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // DELETE + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.DELETE ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void deleteCategory( @PathVariable( "uid" ) String uid ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/CategoryOptionComboController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/CategoryOptionComboController.java 2011-12-07 12:27:51 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/CategoryOptionComboController.java 2011-12-08 17:11:47 +0000 @@ -46,12 +46,18 @@ * @author Morten Olav Hansen */ @Controller -@RequestMapping( value = "/categoryOptionCombos" ) +@RequestMapping( value = CategoryOptionComboController.RESOURCE_PATH ) public class CategoryOptionComboController { + public static final String RESOURCE_PATH = "/categoryOptionCombos"; + @Autowired private DataElementCategoryService dataElementCategoryService; + //------------------------------------------------------------------------------------------------------- + // GET + //------------------------------------------------------------------------------------------------------- + @RequestMapping( method = RequestMethod.GET ) public String getCategoryOptionCombos( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/CategoryOptionController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/CategoryOptionController.java 2011-12-07 12:27:51 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/CategoryOptionController.java 2011-12-08 17:11:47 +0000 @@ -33,27 +33,38 @@ import org.hisp.dhis.dataelement.DataElementCategoryOptions; import org.hisp.dhis.dataelement.DataElementCategoryService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.HttpRequestMethodNotSupportedException; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseStatus; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; import java.util.ArrayList; /** * @author Morten Olav Hansen */ @Controller -@RequestMapping( value = "/categoryOptions" ) +@RequestMapping( value = CategoryOptionController.RESOURCE_PATH ) public class CategoryOptionController { + public static final String RESOURCE_PATH = "/categoryOptions"; + @Autowired private DataElementCategoryService dataElementCategoryService; + //------------------------------------------------------------------------------------------------------- + // GET + //------------------------------------------------------------------------------------------------------- + @RequestMapping( method = RequestMethod.GET ) - public String getDataElementCategoryOptions( IdentifiableObjectParams params, Model model, HttpServletRequest request ) + public String getCategoryOptions( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { DataElementCategoryOptions categoryOptions = new DataElementCategoryOptions(); categoryOptions.setCategoryOptions( new ArrayList( dataElementCategoryService.getAllDataElementCategoryOptions() ) ); @@ -70,7 +81,7 @@ } @RequestMapping( value = "/{uid}", method = RequestMethod.GET ) - public String getDataElementCategoryOption( @PathVariable( "uid" ) String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) + public String getCategoryOption( @PathVariable( "uid" ) String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) { DataElementCategoryOption categoryOption = dataElementCategoryService.getDataElementCategoryOption( uid ); @@ -84,4 +95,51 @@ return "categoryOption"; } + + //------------------------------------------------------------------------------------------------------- + // POST + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postCategoryOptionXML( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postCategoryOptionJSON( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // PUT + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putCategoryOptionXML( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putCategoryOptionJSON( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.PUT.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // DELETE + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.DELETE ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void deleteCategoryOption( @PathVariable( "uid" ) String uid ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/ChartController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/ChartController.java 2011-12-06 15:03:45 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/ChartController.java 2011-12-08 17:11:47 +0000 @@ -54,12 +54,18 @@ * @author Morten Olav Hansen */ @Controller -@RequestMapping( value = "/charts" ) +@RequestMapping( value = ChartController.RESOURCE_PATH ) public class ChartController { + public static final String RESOURCE_PATH = "/charts"; + @Autowired private ChartService chartService; + //------------------------------------------------------------------------------------------------------- + // GET + //------------------------------------------------------------------------------------------------------- + @RequestMapping( method = RequestMethod.GET ) public String getCharts( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/CompleteDataSetRegistrationController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/CompleteDataSetRegistrationController.java 2011-12-03 14:20:18 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/CompleteDataSetRegistrationController.java 2011-12-08 14:31:31 +0000 @@ -49,10 +49,9 @@ @Autowired private CompleteDataSetRegistrationService completeDataSetRegistrationService; - public CompleteDataSetRegistrationController() - { - - } + //------------------------------------------------------------------------------------------------------- + // GET + //------------------------------------------------------------------------------------------------------- @RequestMapping( method = RequestMethod.GET ) public String getCompleteDataSetRegistrations( Model model, HttpServletRequest request ) === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementController.java 2011-12-06 15:03:45 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementController.java 2011-12-09 13:41:05 +0000 @@ -28,14 +28,18 @@ */ import org.hisp.dhis.api.utils.IdentifiableObjectParams; +import org.hisp.dhis.api.utils.ObjectPersister; import org.hisp.dhis.api.utils.WebLinkPopulator; +import org.hisp.dhis.api.view.Jaxb2Utils; import org.hisp.dhis.dataelement.DataElement; import org.hisp.dhis.dataelement.DataElementService; import org.hisp.dhis.dataelement.DataElements; +import org.hisp.dhis.dataset.DataSetService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.HttpRequestMethodNotSupportedException; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -50,12 +54,24 @@ * @author Morten Olav Hansen */ @Controller -@RequestMapping( value = "/dataElements" ) +@RequestMapping( value = DataElementController.RESOURCE_PATH ) public class DataElementController { + public static final String RESOURCE_PATH = "/dataElements"; + @Autowired private DataElementService dataElementService; + @Autowired + private DataSetService dataSetService; + + @Autowired + private ObjectPersister objectPersister; + + //------------------------------------------------------------------------------------------------------- + // GET + //------------------------------------------------------------------------------------------------------- + @RequestMapping( method = RequestMethod.GET ) public String getDataElements( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { @@ -73,24 +89,6 @@ return "dataElements"; } - @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/xml, text/xml"} ) - @ResponseStatus( value = HttpStatus.CREATED ) - public void postDataElementXML( HttpServletResponse response, InputStream input ) throws Exception - { - System.err.println( "POST request on DataElement using XML." ); - - // response.setHeader("Location", "/spittles/" + spittle.getId()); - } - - @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/json"} ) - @ResponseStatus( value = HttpStatus.CREATED ) - public void postDataElementJSON( HttpServletResponse response, InputStream input ) throws Exception - { - System.err.println( "POST request on DataElement using JSON." ); - - // response.setHeader("Location", "/spittles/" + spittle.getId()); - } - @RequestMapping( value = "/{uid}", method = RequestMethod.GET ) public String getDataElement( @PathVariable( "uid" ) String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) { @@ -107,24 +105,80 @@ return "dataElement"; } - @RequestMapping( value = "/{uid}", method = RequestMethod.DELETE ) - @ResponseStatus( value = HttpStatus.NO_CONTENT ) - public void deleteDataElement( @PathVariable( "uid" ) String uid ) - { - System.err.println( "DELETE request on DataElement with UID = " + uid ); - } + //------------------------------------------------------------------------------------------------------- + // POST + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/xml, text/xml"} ) + public void postDataElementXML( HttpServletResponse response, InputStream input ) throws Exception + { + DataElement dataElement = Jaxb2Utils.unmarshal( DataElement.class, input ); + postDataElement( dataElement, response ); + } + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/json"} ) + public void postDataElementJSON( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + //DataElement dataElement = JacksonUtils.readValueAs( DataElement.class, input ); + //postDataElement( dataElement, response ); + } + + public void postDataElement( DataElement dataElement, HttpServletResponse response ) + { + if ( dataElement == null ) + { + response.setStatus( HttpServletResponse.SC_NOT_IMPLEMENTED ); + } + else + { + try + { + objectPersister.persistDataElement( dataElement ); + + if ( dataElement.getUid() == null ) + { + response.setStatus( HttpServletResponse.SC_INTERNAL_SERVER_ERROR ); + } + else + { + response.setStatus( HttpServletResponse.SC_CREATED ); + response.setHeader( "Location", DataElementController.RESOURCE_PATH + "/" + dataElement.getUid() ); + } + } catch ( Exception e ) + { + e.printStackTrace(); + response.setStatus( HttpServletResponse.SC_CONFLICT ); + } + } + } + + //------------------------------------------------------------------------------------------------------- + // PUT + //------------------------------------------------------------------------------------------------------- @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/xml, text/xml"} ) @ResponseStatus( value = HttpStatus.NO_CONTENT ) - public void putDataElementXML( @PathVariable( "uid" ) String uid, InputStream input ) + public void putDataElementXML( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception { - System.err.println( "PUT request on DataElement with UID = " + uid + " using XML." ); + throw new HttpRequestMethodNotSupportedException( RequestMethod.PUT.toString() ); } @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/json"} ) @ResponseStatus( value = HttpStatus.NO_CONTENT ) - public void putDataElementJSON( @PathVariable( "uid" ) String uid, InputStream input ) - { - System.err.println( "PUT request on DataElement with UID = " + uid + " using JSON." ); + public void putDataElementJSON( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.PUT.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // DELETE + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.DELETE ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void deleteDataElement( @PathVariable( "uid" ) String uid ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); } } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementGroupController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementGroupController.java 2011-12-06 15:03:45 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementGroupController.java 2011-12-08 17:11:47 +0000 @@ -33,22 +33,33 @@ import org.hisp.dhis.dataelement.DataElementGroups; import org.hisp.dhis.dataelement.DataElementService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.HttpRequestMethodNotSupportedException; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseStatus; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; import java.util.ArrayList; @Controller -@RequestMapping( value = "/dataElementGroups" ) +@RequestMapping( value = DataElementGroupController.RESOURCE_PATH ) public class DataElementGroupController { + public static final String RESOURCE_PATH = "/dataElementGroups"; + @Autowired private DataElementService dataElementService; + //------------------------------------------------------------------------------------------------------- + // GET + //------------------------------------------------------------------------------------------------------- + @RequestMapping( method = RequestMethod.GET ) public String getDataElementGroups( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { @@ -81,4 +92,51 @@ return "dataElementGroup"; } + + //------------------------------------------------------------------------------------------------------- + // POST + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postDataElementGroupXML( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postDataElementGroupJSON( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // PUT + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putDataElementGroupXML( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putDataElementGroupJSON( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.PUT.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // DELETE + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.DELETE ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void deleteDataElementGroup( @PathVariable( "uid" ) String uid ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementGroupSetController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementGroupSetController.java 2011-12-06 15:03:45 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementGroupSetController.java 2011-12-08 17:11:47 +0000 @@ -46,12 +46,18 @@ * @author Morten Olav Hansen */ @Controller -@RequestMapping( value = "/dataElementGroupSets" ) +@RequestMapping( value = DataElementGroupSetController.RESOURCE_PATH ) public class DataElementGroupSetController { + public static final String RESOURCE_PATH = "/dataElementGroupSets"; + @Autowired private DataElementService dataElementService; + //------------------------------------------------------------------------------------------------------- + // GET + //------------------------------------------------------------------------------------------------------- + @RequestMapping( method = RequestMethod.GET ) public String getDataElementGroupSets( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataSetController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataSetController.java 2011-12-06 15:03:45 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataSetController.java 2011-12-08 14:31:31 +0000 @@ -33,13 +33,18 @@ import org.hisp.dhis.dataset.DataSetService; import org.hisp.dhis.dataset.DataSets; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.HttpRequestMethodNotSupportedException; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseStatus; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; import java.util.ArrayList; /** @@ -52,6 +57,10 @@ @Autowired private DataSetService dataSetService; + //------------------------------------------------------------------------------------------------------- + // GET + //------------------------------------------------------------------------------------------------------- + @RequestMapping( method = RequestMethod.GET ) public String getDataSets( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { @@ -84,4 +93,51 @@ return "dataSet"; } + + //------------------------------------------------------------------------------------------------------- + // POST + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postDataSetXML( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postDataSetJSON( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // PUT + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putDataSetXML( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putDataSetJSON( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.PUT.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // DELETE + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.DELETE ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void deleteDataSet( @PathVariable( "uid" ) String uid ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } } === 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 2011-12-03 14:11:49 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataValueSetController.java 2011-12-08 17:11:47 +0000 @@ -21,9 +21,11 @@ import org.springframework.web.bind.annotation.RequestParam; @Controller -@RequestMapping( value = "/dataValueSets" ) +@RequestMapping( value = DataValueSetController.RESOURCE_PATH ) public class DataValueSetController { + public static final String RESOURCE_PATH = "/dataValueSets"; + private static final Log log = LogFactory.getLog( DataValueSetController.class ); @Autowired === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndexController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndexController.java 2011-12-06 08:39:29 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndexController.java 2011-12-08 14:31:31 +0000 @@ -38,6 +38,10 @@ @Controller public class IndexController { + //------------------------------------------------------------------------------------------------------- + // GET + //------------------------------------------------------------------------------------------------------- + @RequestMapping( value = "/api", method = RequestMethod.GET ) public String getIndex( Model model ) { === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorController.java 2011-12-06 15:03:45 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorController.java 2011-12-08 17:11:47 +0000 @@ -33,25 +33,36 @@ import org.hisp.dhis.indicator.IndicatorService; import org.hisp.dhis.indicator.Indicators; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.HttpRequestMethodNotSupportedException; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseStatus; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; import java.util.ArrayList; /** * @author Morten Olav Hansen */ @Controller -@RequestMapping( value = "/indicators" ) +@RequestMapping( value = IndicatorController.RESOURCE_PATH ) public class IndicatorController { + public static final String RESOURCE_PATH = "/indicators"; + @Autowired private IndicatorService indicatorService; + //------------------------------------------------------------------------------------------------------- + // GET + //------------------------------------------------------------------------------------------------------- + @RequestMapping( method = RequestMethod.GET ) public String getIndicators( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { @@ -84,4 +95,51 @@ return "indicator"; } + + //------------------------------------------------------------------------------------------------------- + // POST + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postIndicatorXML( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postIndicatorJSON( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // PUT + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putIndicatorXML( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putIndicatorJSON( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.PUT.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // DELETE + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.DELETE ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void deleteIndicator( @PathVariable( "uid" ) String uid ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorGroupController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorGroupController.java 2011-12-06 15:03:45 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorGroupController.java 2011-12-08 17:11:47 +0000 @@ -46,12 +46,18 @@ * @author Morten Olav Hansen */ @Controller -@RequestMapping( value = "/indicatorGroups" ) +@RequestMapping( value = IndicatorGroupController.RESOURCE_PATH ) public class IndicatorGroupController { + public static final String RESOURCE_PATH = "/indicatorGroups"; + @Autowired private IndicatorService indicatorService; + //------------------------------------------------------------------------------------------------------- + // GET + //------------------------------------------------------------------------------------------------------- + @RequestMapping( method = RequestMethod.GET ) public String getIndicatorGroups( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorGroupSetController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorGroupSetController.java 2011-12-06 15:03:45 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorGroupSetController.java 2011-12-08 17:11:47 +0000 @@ -33,25 +33,36 @@ import org.hisp.dhis.indicator.IndicatorGroupSets; import org.hisp.dhis.indicator.IndicatorService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.HttpRequestMethodNotSupportedException; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseStatus; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; import java.util.ArrayList; /** * @author Morten Olav Hansen */ @Controller -@RequestMapping( value = "/indicatorGroupSets" ) +@RequestMapping( value = IndicatorGroupSetController.RESOURCE_PATH ) public class IndicatorGroupSetController { + public static final String RESOURCE_PATH = "/indicatorGroupSets"; + @Autowired private IndicatorService indicatorService; + //------------------------------------------------------------------------------------------------------- + // GET + //------------------------------------------------------------------------------------------------------- + @RequestMapping( method = RequestMethod.GET ) public String getIndicatorGroupSets( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { @@ -84,4 +95,51 @@ return "indicatorGroupSet"; } + + //------------------------------------------------------------------------------------------------------- + // POST + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postIndicatorGroupSetXML( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postIndicatorGroupSetJSON( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // PUT + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putIndicatorGroupSetXML( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putIndicatorGroupSetJSON( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.PUT.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // DELETE + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.DELETE ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void deleteIndicatorGroupSet( @PathVariable( "uid" ) String uid ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorTypeController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorTypeController.java 2011-12-06 15:03:45 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorTypeController.java 2011-12-08 17:11:47 +0000 @@ -46,12 +46,18 @@ * @author Morten Olav Hansen */ @Controller -@RequestMapping( value = "/indicatorTypes" ) +@RequestMapping( value = IndicatorTypeController.RESOURCE_PATH ) public class IndicatorTypeController { + public static final String RESOURCE_PATH = "/indicatorTypes"; + @Autowired private IndicatorService indicatorService; + //------------------------------------------------------------------------------------------------------- + // GET + //------------------------------------------------------------------------------------------------------- + @RequestMapping( method = RequestMethod.GET ) public String getIndicatorTypes( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/MapController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/MapController.java 2011-12-06 15:03:45 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/MapController.java 2011-12-08 14:31:31 +0000 @@ -28,9 +28,11 @@ */ import java.io.IOException; +import java.io.InputStream; import java.util.ArrayList; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import org.hisp.dhis.api.utils.IdentifiableObjectParams; import org.hisp.dhis.api.utils.WebLinkPopulator; @@ -39,11 +41,14 @@ import org.hisp.dhis.mapping.MappingService; import org.hisp.dhis.mapping.Maps; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.HttpRequestMethodNotSupportedException; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseStatus; @Controller @RequestMapping( value = "/maps" ) @@ -55,6 +60,10 @@ @Autowired MappingService mappingService; + //------------------------------------------------------------------------------------------------------- + // GET + //------------------------------------------------------------------------------------------------------- + @RequestMapping( method = RequestMethod.GET ) public String getMaps(IdentifiableObjectParams params, Model model, HttpServletRequest request ) throws IOException { @@ -73,7 +82,7 @@ } @RequestMapping( value = "/{uid}", method = RequestMethod.GET ) - public String getChart( @PathVariable String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) + public String getMap( @PathVariable String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) { MapView mapView = mappingService.getMapView( uid ); @@ -92,4 +101,51 @@ return "map"; } + + //------------------------------------------------------------------------------------------------------- + // POST + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postMapXML( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postMapJSON( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // PUT + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putMapXML( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putMapJSON( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.PUT.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // DELETE + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.DELETE ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void deleteMap( @PathVariable( "uid" ) String uid ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitController.java 2011-12-07 13:29:09 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitController.java 2011-12-08 17:11:47 +0000 @@ -6,25 +6,36 @@ import org.hisp.dhis.organisationunit.OrganisationUnitService; import org.hisp.dhis.organisationunit.OrganisationUnits; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.HttpRequestMethodNotSupportedException; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseStatus; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; import java.util.ArrayList; /** * @author Morten Olav Hansen */ @Controller -@RequestMapping( value = "/organisationUnits" ) +@RequestMapping( value = OrganisationUnitController.RESOURCE_PATH ) public class OrganisationUnitController { + public static final String RESOURCE_PATH = "/organisationUnits"; + @Autowired private OrganisationUnitService organisationUnitService; + //------------------------------------------------------------------------------------------------------- + // GET + //------------------------------------------------------------------------------------------------------- + @RequestMapping( method = RequestMethod.GET ) public String getOrganisationUnits( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { @@ -65,4 +76,51 @@ return "organisationUnit"; } + + //------------------------------------------------------------------------------------------------------- + // POST + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postOrganisationUnitXML( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postOrganisationUnitJSON( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // PUT + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putOrganisationUnitXML( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putOrganisationUnitJSON( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.PUT.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // DELETE + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.DELETE ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void deleteOrganisationUnit( @PathVariable( "uid" ) String uid ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitGroupController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitGroupController.java 2011-12-06 15:03:45 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitGroupController.java 2011-12-08 17:15:56 +0000 @@ -19,12 +19,18 @@ * @author Morten Olav Hansen */ @Controller -@RequestMapping( value = "/organisationUnitGroups" ) +@RequestMapping( value = OrganisationUnitGroupController.RESOURCE_PATH ) public class OrganisationUnitGroupController { + public static final String RESOURCE_PATH = "/organisationUnitGroups"; + @Autowired private OrganisationUnitGroupService organisationUnitGroupService; + //------------------------------------------------------------------------------------------------------- + // GET + //------------------------------------------------------------------------------------------------------- + @RequestMapping( method = RequestMethod.GET ) public String getOrganisationUnits( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitGroupSetController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitGroupSetController.java 2011-12-06 15:03:45 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitGroupSetController.java 2011-12-08 17:11:47 +0000 @@ -33,25 +33,36 @@ import org.hisp.dhis.organisationunit.OrganisationUnitGroupSet; import org.hisp.dhis.organisationunit.OrganisationUnitGroupSets; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.HttpRequestMethodNotSupportedException; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseStatus; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; import java.util.ArrayList; /** * @author Morten Olav Hansen */ @Controller -@RequestMapping( value = "/organisationUnitGroupSets" ) +@RequestMapping( value = OrganisationUnitGroupSetController.RESOURCE_PATH ) public class OrganisationUnitGroupSetController { + public static final String RESOURCE_PATH = "/organisationUnitGroupSets"; + @Autowired private OrganisationUnitGroupService organisationUnitGroupService; + //------------------------------------------------------------------------------------------------------- + // GET + //------------------------------------------------------------------------------------------------------- + @RequestMapping( method = RequestMethod.GET ) public String getOrganisationUnitGroupSets( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { @@ -84,4 +95,51 @@ return "organisationUnitGroupSet"; } + + //------------------------------------------------------------------------------------------------------- + // POST + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postOrganisationUnitGroupSetXML( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postOrganisationUnitGroupSetJSON( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // PUT + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putOrganisationUnitGroupSetXML( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putOrganisationUnitGroupSetJSON( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.PUT.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // DELETE + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.DELETE ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void deleteOrganisationUnitGroupSet( @PathVariable( "uid" ) String uid ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitLevelController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitLevelController.java 2011-12-06 15:03:45 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitLevelController.java 2011-12-08 17:11:47 +0000 @@ -33,25 +33,36 @@ import org.hisp.dhis.organisationunit.OrganisationUnitLevels; import org.hisp.dhis.organisationunit.OrganisationUnitService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.HttpRequestMethodNotSupportedException; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseStatus; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; import java.util.ArrayList; /** * @author Morten Olav Hansen */ @Controller -@RequestMapping( value = "/organisationUnitLevels" ) +@RequestMapping( value = OrganisationUnitLevelController.RESOURCE_PATH ) public class OrganisationUnitLevelController { + public static final String RESOURCE_PATH = "/organisationUnitLevels"; + @Autowired private OrganisationUnitService organisationUnitService; + //------------------------------------------------------------------------------------------------------- + // GET + //------------------------------------------------------------------------------------------------------- + @RequestMapping( method = RequestMethod.GET ) public String getOrganisationUnitLevels( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { @@ -84,4 +95,51 @@ return "organisationUnitLevel"; } + + //------------------------------------------------------------------------------------------------------- + // POST + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postOrganisationUnitLevelXML( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postOrganisationUnitLevelJSON( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // PUT + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putOrganisationUnitLevelXML( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putOrganisationUnitLevelJSON( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.PUT.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // DELETE + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.DELETE ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void deleteOrganisationUnitLevel( @PathVariable( "uid" ) String uid ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/ResourceController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/ResourceController.java 2011-12-06 15:03:45 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/ResourceController.java 2011-12-08 17:11:47 +0000 @@ -41,9 +41,15 @@ * @author Morten Olav Hansen */ @Controller -@RequestMapping( value = "/resources" ) +@RequestMapping( value = ResourceController.RESOURCE_PATH ) public class ResourceController { + public static final String RESOURCE_PATH = "/resources"; + + //------------------------------------------------------------------------------------------------------- + // GET + //------------------------------------------------------------------------------------------------------- + @RequestMapping( method = RequestMethod.GET ) public String getResources( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/UserController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/UserController.java 2011-12-06 15:03:45 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/UserController.java 2011-12-08 17:11:47 +0000 @@ -33,25 +33,36 @@ import org.hisp.dhis.user.UserService; import org.hisp.dhis.user.Users; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.HttpRequestMethodNotSupportedException; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseStatus; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; import java.util.ArrayList; /** * @author Morten Olav Hansen */ @Controller -@RequestMapping( value = "/users" ) +@RequestMapping( value = UserController.RESOURCE_PATH ) public class UserController { + public static final String RESOURCE_PATH = "/users"; + @Autowired private UserService userService; + //------------------------------------------------------------------------------------------------------- + // GET + //------------------------------------------------------------------------------------------------------- + @RequestMapping( method = RequestMethod.GET ) public String getUsers( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { @@ -84,4 +95,51 @@ return "user"; } + + //------------------------------------------------------------------------------------------------------- + // POST + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postUserXML( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + @RequestMapping( method = RequestMethod.POST, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.CREATED ) + public void postUserJSON( HttpServletResponse response, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // PUT + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/xml, text/xml"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putUserXML( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } + + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, headers = {"Content-Type=application/json"} ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putUserJSON( @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.PUT.toString() ); + } + + //------------------------------------------------------------------------------------------------------- + // DELETE + //------------------------------------------------------------------------------------------------------- + + @RequestMapping( value = "/{uid}", method = RequestMethod.DELETE ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void deleteUser( @PathVariable( "uid" ) String uid ) throws Exception + { + throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() ); + } } === added file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/HibernateObjectPersister.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/HibernateObjectPersister.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/HibernateObjectPersister.java 2011-12-09 15:05:53 +0000 @@ -0,0 +1,202 @@ +package org.hisp.dhis.api.utils; + +/* + * Copyright (c) 2004-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 org.hisp.dhis.attribute.Attribute; +import org.hisp.dhis.chart.Chart; +import org.hisp.dhis.dataelement.*; +import org.hisp.dhis.dataset.DataSet; +import org.hisp.dhis.dataset.DataSetService; +import org.hisp.dhis.indicator.Indicator; +import org.hisp.dhis.indicator.IndicatorGroup; +import org.hisp.dhis.indicator.IndicatorGroupSet; +import org.hisp.dhis.indicator.IndicatorType; +import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.organisationunit.OrganisationUnitGroup; +import org.hisp.dhis.organisationunit.OrganisationUnitGroupSet; +import org.hisp.dhis.organisationunit.OrganisationUnitLevel; +import org.hisp.dhis.user.User; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.Collection; + +/** + * @author Morten Olav Hansen + */ +@Component +public class HibernateObjectPersister implements ObjectPersister +{ + @Autowired + private DataElementService dataElementService; + + @Autowired + private DataElementCategoryService dataElementCategoryService; + + @Autowired + private DataSetService dataSetService; + + @Override + public void persistAttribute( Attribute attribute ) + { + //To change body of implemented methods use File | Settings | File Templates. + } + + public void persistDataElement( DataElement dataElement ) + { + if ( dataElement.getCategoryCombo() != null ) + { + DataElementCategoryCombo dataElementCategoryCombo = dataElementCategoryService.getDataElementCategoryCombo( dataElement.getCategoryCombo().getUid() ); + dataElement.setCategoryCombo( dataElementCategoryCombo ); + } + + Collection dataElementGroups = new ArrayList( dataElement.getGroups() ); + Collection dataSets = new ArrayList( dataElement.getDataSets() ); + dataElement.getGroups().clear(); + dataElement.getDataSets().clear(); + + dataElementService.addDataElement( dataElement ); + + for ( DataElementGroup dataElementGroup : dataElementGroups ) + { + dataElementGroup = dataElementService.getDataElementGroup( dataElementGroup.getUid() ); + dataElement.addDataElementGroup( dataElementGroup ); + } + + for ( DataSet dataSet : dataSets ) + { + dataSet = dataSetService.getDataSet( dataSet.getUid() ); + dataSet.addDataElement( dataElement ); + } + + dataElementService.updateDataElement( dataElement ); + } + + @Override + public void persistDataElementGroup( DataElementGroup dataElementGroup ) + { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void persistDataElementGroupSet( DataElementGroupSet dataElementGroupSet ) + { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void persistCategory( DataElementCategory category ) + { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void persistCategoryOption( DataElementCategoryOption categoryOption ) + { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void persistCategoryCombo( DataElementCategoryCombo categoryCombo ) + { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void persistCategoryOptionCombo( DataElementCategoryOptionCombo categoryOptionCombo ) + { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void persistIndicator( Indicator indicator ) + { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void persistIndicatorType( IndicatorType indicatorType ) + { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void persistIndicatorGroup( IndicatorGroup indicatorGroup ) + { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void persistIndicatorGroupSet( IndicatorGroupSet indicatorGroupSet ) + { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void persistOrganisationUnit( OrganisationUnit organisationUnit ) + { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void persistOrganisationUnitLevel( OrganisationUnitLevel organisationUnitLevel ) + { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void persistOrganisationUnitGroup( OrganisationUnitGroup organisationUnitGroup ) + { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void persistOrganisationUnitGroupSet( OrganisationUnitGroupSet organisationUnitGroupSet ) + { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void persistDataSet( DataSet dataSet ) + { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void persistChart( Chart chart ) + { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void persistUser( User user ) + { + //To change body of implemented methods use File | Settings | File Templates. + } +} === added file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/ObjectPersister.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/ObjectPersister.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/ObjectPersister.java 2011-12-09 15:05:53 +0000 @@ -0,0 +1,86 @@ +package org.hisp.dhis.api.utils; + +/* + * Copyright (c) 2004-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 org.hisp.dhis.attribute.Attribute; +import org.hisp.dhis.chart.Chart; +import org.hisp.dhis.dataelement.*; +import org.hisp.dhis.dataset.DataSet; +import org.hisp.dhis.indicator.Indicator; +import org.hisp.dhis.indicator.IndicatorGroup; +import org.hisp.dhis.indicator.IndicatorGroupSet; +import org.hisp.dhis.indicator.IndicatorType; +import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.organisationunit.OrganisationUnitGroup; +import org.hisp.dhis.organisationunit.OrganisationUnitGroupSet; +import org.hisp.dhis.organisationunit.OrganisationUnitLevel; +import org.hisp.dhis.user.User; + +/** + * @author Morten Olav Hansen + */ +public interface ObjectPersister +{ + public void persistAttribute( Attribute attribute ); + + public void persistDataElement( DataElement dataElement ); + + public void persistDataElementGroup( DataElementGroup dataElementGroup ); + + public void persistDataElementGroupSet( DataElementGroupSet dataElementGroupSet ); + + public void persistCategory( DataElementCategory category ); + + public void persistCategoryOption( DataElementCategoryOption categoryOption ); + + public void persistCategoryCombo( DataElementCategoryCombo categoryCombo ); + + public void persistCategoryOptionCombo( DataElementCategoryOptionCombo categoryOptionCombo ); + + public void persistIndicator( Indicator indicator ); + + public void persistIndicatorType( IndicatorType indicatorType ); + + public void persistIndicatorGroup( IndicatorGroup indicatorGroup ); + + public void persistIndicatorGroupSet( IndicatorGroupSet indicatorGroupSet ); + + public void persistOrganisationUnit( OrganisationUnit organisationUnit ); + + public void persistOrganisationUnitLevel( OrganisationUnitLevel organisationUnitLevel ); + + public void persistOrganisationUnitGroup( OrganisationUnitGroup organisationUnitGroup ); + + public void persistOrganisationUnitGroupSet( OrganisationUnitGroupSet organisationUnitGroupSet ); + + public void persistDataSet( DataSet dataSet ); + + public void persistChart( Chart chart ); + + public void persistUser( User user ); +} === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/WebLinkPopulator.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/WebLinkPopulator.java 2011-12-07 12:27:51 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/WebLinkPopulator.java 2011-12-09 18:08:05 +0000 @@ -64,6 +64,9 @@ static { + resourcePaths.put( Attributes.class, "attributeTypes" ); + resourcePaths.put( Attribute.class, "attributeTypes" ); + resourcePaths.put( DataElementCategories.class, "categories" ); resourcePaths.put( DataElementCategory.class, "categories" ); @@ -719,7 +722,9 @@ private void populateIdentifiableObject( BaseIdentifiableObject baseIdentifiableObject ) { if ( baseIdentifiableObject != null ) + { baseIdentifiableObject.setLink( getPathWithUid( baseIdentifiableObject ) ); + } } private String getPathWithUid( BaseIdentifiableObject baseIdentifiableObject ) === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/view/ExtendedMappingJacksonView.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/view/ExtendedMappingJacksonView.java 2011-12-06 11:36:12 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/view/ExtendedMappingJacksonView.java 2011-12-08 17:04:19 +0000 @@ -27,15 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import org.codehaus.jackson.JsonEncoding; -import org.codehaus.jackson.JsonFactory; -import org.codehaus.jackson.JsonGenerator; -import org.codehaus.jackson.map.AnnotationIntrospector; -import org.codehaus.jackson.map.ObjectMapper; -import org.codehaus.jackson.map.annotate.JsonSerialize; -import org.codehaus.jackson.map.introspect.JacksonAnnotationIntrospector; import org.codehaus.jackson.map.util.JSONPObject; -import org.codehaus.jackson.xc.JaxbAnnotationIntrospector; import org.springframework.web.servlet.view.json.MappingJacksonJsonView; import javax.servlet.http.HttpServletRequest; @@ -84,17 +76,6 @@ model = ViewUtils.filterModel( model ); Object value = model.get( "model" ); - ObjectMapper objectMapper = new ObjectMapper(); - - AnnotationIntrospector jacksonAnnotationIntrospector = new JacksonAnnotationIntrospector(); - AnnotationIntrospector jaxAnnotationIntrospector = new JaxbAnnotationIntrospector(); - AnnotationIntrospector pair = new AnnotationIntrospector.Pair( jacksonAnnotationIntrospector, jaxAnnotationIntrospector ); - - objectMapper.setAnnotationIntrospector( pair ); - - JsonFactory jf = objectMapper.getJsonFactory(); - JsonGenerator jg = jf.createJsonGenerator( response.getOutputStream(), JsonEncoding.UTF8 ); - if ( withPadding ) { String callback = request.getParameter( callbackParameter ); @@ -104,12 +85,9 @@ callback = paddingFunction; } - JSONPObject valueWithPadding = valueWithPadding = new JSONPObject( callback, value ); - jg.writeObject( valueWithPadding ); - } - else - { - jg.writeObject( value ); - } + value = new JSONPObject( callback, value ); + } + + JacksonUtils.writeObject( value, response.getOutputStream() ); } } === added file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/view/JacksonUtils.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/view/JacksonUtils.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/view/JacksonUtils.java 2011-12-09 18:08:05 +0000 @@ -0,0 +1,73 @@ +package org.hisp.dhis.api.view; + +import org.codehaus.jackson.JsonEncoding; +import org.codehaus.jackson.JsonFactory; +import org.codehaus.jackson.JsonGenerator; +import org.codehaus.jackson.JsonParser; +import org.codehaus.jackson.map.AnnotationIntrospector; +import org.codehaus.jackson.map.ObjectMapper; +import org.codehaus.jackson.map.SerializationConfig; +import org.codehaus.jackson.map.annotate.JsonSerialize; +import org.codehaus.jackson.map.introspect.JacksonAnnotationIntrospector; +import org.codehaus.jackson.xc.JaxbAnnotationIntrospector; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +/** + * @author Morten Olav Hansen + */ +public class JacksonUtils +{ + public static JsonFactory createJsonFactory() + { + ObjectMapper objectMapper = new ObjectMapper(); + + AnnotationIntrospector jacksonAnnotationIntrospector = new JacksonAnnotationIntrospector(); + //AnnotationIntrospector jaxAnnotationIntrospector = new JaxbAnnotationIntrospector(); + //AnnotationIntrospector pair = new AnnotationIntrospector.Pair( jacksonAnnotationIntrospector, jaxAnnotationIntrospector ); + + objectMapper.setAnnotationIntrospector( jacksonAnnotationIntrospector ); + objectMapper.setSerializationInclusion( JsonSerialize.Inclusion.NON_NULL ); + objectMapper.configure( SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false ); + objectMapper.configure( SerializationConfig.Feature.WRITE_EMPTY_JSON_ARRAYS, false ); + objectMapper.configure( SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false ); + objectMapper.configure( SerializationConfig.Feature.AUTO_DETECT_FIELDS, false ); + objectMapper.configure( SerializationConfig.Feature.AUTO_DETECT_GETTERS, false ); + objectMapper.configure( SerializationConfig.Feature.AUTO_DETECT_IS_GETTERS, false ); + + JsonFactory factory = objectMapper.getJsonFactory(); + factory.enable( JsonGenerator.Feature.QUOTE_FIELD_NAMES ); + + return factory; + } + + //--------------------------------------------------------------------------------------------------- + // Json Serializer + //--------------------------------------------------------------------------------------------------- + + public static JsonGenerator createJsonGenerator( OutputStream output ) throws IOException + { + return JacksonUtils.createJsonFactory().createJsonGenerator( output, JsonEncoding.UTF8 ); + } + + public static void writeObject( Object value, OutputStream output ) throws IOException + { + JacksonUtils.createJsonGenerator( output ).writeObject( value ); + } + + //--------------------------------------------------------------------------------------------------- + // Json Deserializer + //--------------------------------------------------------------------------------------------------- + + public static JsonParser createJsonParser( InputStream input ) throws IOException + { + return JacksonUtils.createJsonFactory().createJsonParser( input ); + } + + public static T readValueAs( Class clazz, InputStream input ) throws IOException + { + return (T) JacksonUtils.createJsonParser( input ).readValueAs( clazz ); + } +} === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/view/Jaxb2Utils.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/view/Jaxb2Utils.java 2011-12-06 13:19:35 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/view/Jaxb2Utils.java 2011-12-09 13:41:05 +0000 @@ -27,10 +27,20 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.common.BaseIdentifiableObject; +import org.hisp.dhis.common.BaseNameableObject; +import org.hisp.dhis.common.adapter.DataElementGroupXmlAdapter; +import org.hisp.dhis.common.adapter.DataSetXmlAdapter; +import org.hisp.dhis.dataelement.DataElementGroup; +import org.hisp.dhis.dataset.DataSet; + import javax.servlet.http.HttpServletRequest; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; +import javax.xml.bind.Unmarshaller; +import javax.xml.bind.annotation.adapters.XmlAdapter; +import java.io.InputStream; public class Jaxb2Utils { @@ -45,4 +55,19 @@ return marshaller; } + + public static Unmarshaller createUnmarshaller( Class clazz ) + throws JAXBException + { + JAXBContext context = JAXBContext.newInstance( clazz ); + + Unmarshaller unmarshaller = context.createUnmarshaller(); + + return unmarshaller; + } + + public static T unmarshal( Class clazz, InputStream input ) throws JAXBException + { + return (T) Jaxb2Utils.createUnmarshaller( clazz ).unmarshal( input ); + } } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/webdomain/Resources.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/webdomain/Resources.java 2011-12-07 13:29:09 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/webdomain/Resources.java 2011-12-09 18:08:05 +0000 @@ -101,7 +101,7 @@ List requestMethods = Arrays.asList( defaultRequestMethods ); List mediaTypes = Arrays.asList( defaultMediaTypes ); - resources.add( new Resource( "Attributes", Attributes.class, requestMethods, mediaTypes ) ); + resources.add( new Resource( "AttributeTypes", Attributes.class, requestMethods, mediaTypes ) ); resources.add( new Resource( "Charts", Charts.class, requestMethods, mediaTypes ) ); resources.add( new Resource( "Maps", Maps.class, requestMethods, mediaTypes ) ); resources.add( new Resource( "CompleteDataSetRegistrations", CompleteDataSetRegistrations.class, requestMethods, mediaTypes ) ); === added file 'dhis-2/dhis-web/dhis-web-api/src/main/resources/templates/html/attributeType.xsl' --- dhis-2/dhis-web/dhis-web-api/src/main/resources/templates/html/attributeType.xsl 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/resources/templates/html/attributeType.xsl 2011-12-09 18:08:05 +0000 @@ -0,0 +1,53 @@ + + + + +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ID
Last Updated
Mandatory
Value Type
Applicable for DataElements
Applicable for Indicators
Applicable for OrganisationUnits
Applicable for Users
Sort Order
+ +
+
+ +
=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/resources/templates/html/list.xsl' --- dhis-2/dhis-web/dhis-web-api/src/main/resources/templates/html/list.xsl 2011-12-07 14:04:35 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/resources/templates/html/list.xsl 2011-12-09 18:08:05 +0000 @@ -11,7 +11,7 @@ d:categoryOptions|d:categoryOptionCombos|d:dataElements|d:indicators| d:organisationUnits|d:dataElementGroups|d:dataElementGroupSets| d:indicatorGroups|d:indicatorGroupSets|d:organisationUnitGroups| - d:organisationUnitGroupSets|d:indicatorTypes"> + d:organisationUnitGroupSets|d:indicatorTypes|d:attributeTypes">

=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/resources/templates/html/model2html.xsl' --- dhis-2/dhis-web/dhis-web-api/src/main/resources/templates/html/model2html.xsl 2011-12-07 16:03:19 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/resources/templates/html/model2html.xsl 2011-12-09 18:08:05 +0000 @@ -34,6 +34,7 @@ +