=== added file 'local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/CategoryOptionAssociation.java' --- local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/CategoryOptionAssociation.java 1970-01-01 00:00:00 +0000 +++ local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/CategoryOptionAssociation.java 2012-05-04 09:50:39 +0000 @@ -0,0 +1,166 @@ +package org.hisp.dhis.reportsheet; + +/* + * Copyright (c) 2004-2012, 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.dataelement.DataElementCategoryOption; +import org.hisp.dhis.organisationunit.OrganisationUnit; + +/** + * @author Dang Duy Hieu + * @version $Id$ + */ +public class CategoryOptionAssociation +{ + private int id; + + private OrganisationUnit source; + + private DataElementCategoryOption categoryOption; + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + public CategoryOptionAssociation() + { + } + + public CategoryOptionAssociation( OrganisationUnit source, DataElementCategoryOption categoryOption ) + { + this.source = source; + this.categoryOption = categoryOption; + } + + // ------------------------------------------------------------------------- + // Getters and setters + // ------------------------------------------------------------------------- + + public int getId() + { + return id; + } + + public void setId( int id ) + { + this.id = id; + } + + public OrganisationUnit getSource() + { + return source; + } + + public void setSource( OrganisationUnit source ) + { + this.source = source; + } + + public DataElementCategoryOption getCategoryOption() + { + return categoryOption; + } + + public void setCategoryOption( DataElementCategoryOption categoryOption ) + { + this.categoryOption = categoryOption; + } + + // ------------------------------------------------------------------------- + // hashCode and equals + // ------------------------------------------------------------------------- + + @Override + public int hashCode() + { + final int prime = 31; + int result = 1; + + result = prime * result + ((source == null) ? 0 : source.hashCode()); + result = prime * result + ((categoryOption == null) ? 0 : categoryOption.hashCode()); + + return result; + } + + @Override + public boolean equals( Object obj ) + { + if ( this == obj ) + { + return true; + } + if ( obj == null ) + { + return false; + } + if ( getClass() != obj.getClass() ) + { + return false; + } + + CategoryOptionAssociation other = (CategoryOptionAssociation) obj; + + if ( source == null ) + { + if ( other.source != null ) + { + return false; + } + } + else if ( !source.equals( other.source ) ) + { + return false; + } + + if ( categoryOption == null ) + { + if ( other.categoryOption != null ) + { + return false; + } + } + else if ( !categoryOption.equals( other.categoryOption ) ) + { + return false; + } + + if ( id != other.id ) + { + return false; + } + + return true; + } + + @Override + public String toString() + { + String toString = "[" + source + ", " + categoryOption + "]"; + + return toString; + } +} === added file 'local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/CategoryOptionAssociationDeletionHandler.java' --- local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/CategoryOptionAssociationDeletionHandler.java 1970-01-01 00:00:00 +0000 +++ local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/CategoryOptionAssociationDeletionHandler.java 2012-05-04 09:50:39 +0000 @@ -0,0 +1,80 @@ +package org.hisp.dhis.reportsheet; + +/* + * Copyright (c) 2004-2012, 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.dataelement.DataElementCategoryOption; +import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.system.deletion.DeletionHandler; + +/** + * @author Dang Duy Hieu + * @version $Id$ + */ +public class CategoryOptionAssociationDeletionHandler + extends DeletionHandler +{ + // ------------------------------------------------------------------------- + // Dependencies + // ------------------------------------------------------------------------- + + public CategoryOptionAssociationService categoryOptionAssociationService; + + public void setCategoryOptionAssociationService( CategoryOptionAssociationService categoryOptionAssociationService ) + { + this.categoryOptionAssociationService = categoryOptionAssociationService; + } + + // ------------------------------------------------------------------------- + // DeletionHandler implementation + // ------------------------------------------------------------------------- + + @Override + public String getClassName() + { + return CategoryOptionAssociation.class.getSimpleName(); + } + + @Override + public void deleteOrganisationUnit( OrganisationUnit unit ) + { + for ( CategoryOptionAssociation registration : categoryOptionAssociationService + .getAllCategoryOptionAssociations() ) + { + if ( registration.getSource().equals( unit ) ) + { + categoryOptionAssociationService.deleteCategoryOptionAssociation( registration ); + } + } + } + + @Override + public void deleteDataElementCategoryOption( DataElementCategoryOption categoryOption ) + { + categoryOptionAssociationService.deleteCategoryOptionAssociations( categoryOption ); + } +} === added file 'local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/CategoryOptionAssociationService.java' --- local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/CategoryOptionAssociationService.java 1970-01-01 00:00:00 +0000 +++ local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/CategoryOptionAssociationService.java 2012-05-04 09:50:39 +0000 @@ -0,0 +1,134 @@ +package org.hisp.dhis.reportsheet; + +/* + * Copyright (c) 2004-2012, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import java.util.Collection; + +import org.hisp.dhis.dataelement.DataElementCategoryOption; +import org.hisp.dhis.organisationunit.OrganisationUnit; + +/** + * @author Dang Duy Hieu + * @version $Id$ + */ +public interface CategoryOptionAssociationService +{ + String ID = CategoryOptionAssociationService.class.getName(); + + /** + * Saves a CategoryOptionAssociation. + * + * @param association the CategoryOptionAssociation to save. + */ + void saveCategoryOptionAssociation( CategoryOptionAssociation association ); + + /** + * Updates a CategoryOptionAssociation. + * + * @param association the CategoryOptionAssociation to update. + */ + void updateCategoryOptionAssociation( CategoryOptionAssociation association ); + + /** + * Deletes a CategoryOptionAssociation. + * + * @param association the CategoryOptionAssociation to delete. + */ + void deleteCategoryOptionAssociation( CategoryOptionAssociation association ); + + /** + * Deletes the CategoryOptionAssociations associated with the given + * OrganisationUnit. + * + * @param source the OrganisationUnit. + */ + void deleteCategoryOptionAssociations( OrganisationUnit source ); + + /** + * Deletes the CategoryOptionAssociations associated with the given + * DataElementCategoryOption. + * + * @param categoryOption the DataElementCategoryOption. + */ + void deleteCategoryOptionAssociations( DataElementCategoryOption categoryOption ); + + /** + * Deletes the CategoryOptionAssociations associated with the given + * DataElementCategoryOption and the list of OrganisationUnits. + * + * @param categoryOption the DataElementCategoryOption. + * @param sources the list of OrganisationUnits. + */ + void deleteCategoryOptionAssociations( Collection sources, + DataElementCategoryOption categoryOption ); + + /** + * Retrieves all CategoryOptionAssociations. + * + * @return a Collection of CategoryOptionAssociations. + */ + Collection getAllCategoryOptionAssociations(); + + /** + * Retrieves all CategoryOptionAssociations associated with the given + * OrganisationUnit. + * + * @param source the OrganisationUnit + * @return a Collection of CategoryOptionAssociations. + */ + Collection getCategoryOptionAssociations( OrganisationUnit source ); + + /** + * Retrieves the CategoryOptionAssociation for the given OrganisationUnit, + * DataElementCategoryOption + * + * @param source the OrganisationUnit. + * @param categoryOption the DataElementCategoryOption. + * @return the CategoryOptionAssociation. + */ + CategoryOptionAssociation getCategoryOptionAssociation( OrganisationUnit source, + DataElementCategoryOption categoryOption ); + + /** + * Retrieves all DataElementCategoryOptions associated with the given + * OrganisationUnit. + * + * @param source the OrganisationUnit + * @return a Collection of DataElementCategoryOptions. + */ + Collection getCategoryOptions( OrganisationUnit source ); + + /** + * Retrieves all OrganisationUnits associated with the given + * DataElementCategoryOption. + * + * @param categoryOption the DataElementCategoryOption + * @return a Collection of OrganisationUnits. + */ + Collection getCategoryOptionAssociations( DataElementCategoryOption categoryOption ); +} === added file 'local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/CategoryOptionAssociationStore.java' --- local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/CategoryOptionAssociationStore.java 1970-01-01 00:00:00 +0000 +++ local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/CategoryOptionAssociationStore.java 2012-05-04 09:50:39 +0000 @@ -0,0 +1,134 @@ +package org.hisp.dhis.reportsheet; + +/* + * Copyright (c) 2004-2012, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import java.util.Collection; + +import org.hisp.dhis.dataelement.DataElementCategoryOption; +import org.hisp.dhis.organisationunit.OrganisationUnit; + +/** + * @author Dang Duy Hieu + * @version $Id$ + */ +public interface CategoryOptionAssociationStore +{ + String ID = CategoryOptionAssociationStore.class.getName(); + + /** + * Saves a CategoryOptionAssociation. + * + * @param association the CategoryOptionAssociation to save. + */ + void saveCategoryOptionAssociation( CategoryOptionAssociation association ); + + /** + * Updates a CategoryOptionAssociation. + * + * @param association the CategoryOptionAssociation to update. + */ + void updateCategoryOptionAssociation( CategoryOptionAssociation association ); + + /** + * Deletes a CategoryOptionAssociation. + * + * @param association the CategoryOptionAssociation to delete. + */ + void deleteCategoryOptionAssociation( CategoryOptionAssociation association ); + + /** + * Deletes the CategoryOptionAssociations associated with the given + * OrganisationUnit. + * + * @param source the OrganisationUnit. + */ + void deleteCategoryOptionAssociations( OrganisationUnit source ); + + /** + * Deletes the CategoryOptionAssociations associated with the given + * DataElementCategoryOption. + * + * @param categoryOption the DataElementCategoryOption. + */ + void deleteCategoryOptionAssociations( DataElementCategoryOption categoryOption ); + + /** + * Deletes the CategoryOptionAssociations associated with the given + * DataElementCategoryOption and the list of OrganisationUnits. + * + * @param categoryOption the DataElementCategoryOption. + * @param sources the list of OrganisationUnits. + */ + void deleteCategoryOptionAssociations( Collection sources, + DataElementCategoryOption categoryOption ); + + /** + * Retrieves all CategoryOptionAssociations. + * + * @return a Collection of CategoryOptionAssociations. + */ + Collection getAllCategoryOptionAssociations(); + + /** + * Retrieves all CategoryOptionAssociations associated with the given + * OrganisationUnit. + * + * @param source the OrganisationUnit + * @return a Collection of CategoryOptionAssociations. + */ + Collection getCategoryOptionAssociations( OrganisationUnit source ); + + /** + * Retrieves the CategoryOptionAssociation for the given OrganisationUnit, + * DataElementCategoryOption + * + * @param source the OrganisationUnit. + * @param categoryOption the DataElementCategoryOption. + * @return the CategoryOptionAssociation. + */ + CategoryOptionAssociation getCategoryOptionAssociation( OrganisationUnit source, + DataElementCategoryOption categoryOption ); + + /** + * Retrieves all DataElementCategoryOptions associated with the given + * OrganisationUnit. + * + * @param source the OrganisationUnit + * @return a Collection of DataElementCategoryOptions. + */ + Collection getCategoryOptions( OrganisationUnit source ); + + /** + * Retrieves all OrganisationUnits associated with the given + * DataElementCategoryOption. + * + * @param categoryOption the DataElementCategoryOption + * @return a Collection of OrganisationUnits. + */ + Collection getCategoryOptionAssociations( DataElementCategoryOption categoryOption ); +} === added file 'local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/hibernate/HibernateCategoryOptionAssociationStore.java' --- local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/hibernate/HibernateCategoryOptionAssociationStore.java 1970-01-01 00:00:00 +0000 +++ local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/hibernate/HibernateCategoryOptionAssociationStore.java 2012-05-04 09:50:39 +0000 @@ -0,0 +1,162 @@ +package org.hisp.dhis.reportsheet.hibernate; + +/* + * Copyright (c) 2004-2012, University of Oslo All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. * Redistributions in binary + * form must reproduce the above copyright notice, this list of conditions and + * the following disclaimer in the documentation and/or other materials provided + * with the distribution. * Neither the name of the HISP project nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. THIS SOFTWARE IS + * PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + +import org.hibernate.Criteria; +import org.hibernate.Query; +import org.hibernate.SessionFactory; +import org.hibernate.criterion.Restrictions; +import org.hisp.dhis.dataelement.DataElementCategoryOption; +import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.reportsheet.CategoryOptionAssociation; +import org.hisp.dhis.reportsheet.CategoryOptionAssociationStore; +import org.hisp.dhis.system.util.ConversionUtils; + +/** + * @author Dang Duy Hieu + * @version $Id$ + */ +public class HibernateCategoryOptionAssociationStore + implements CategoryOptionAssociationStore +{ + // ------------------------------------------------------------------------- + // Dependencies + // ------------------------------------------------------------------------- + + private SessionFactory sessionFactory; + + public void setSessionFactory( SessionFactory sessionFactory ) + { + this.sessionFactory = sessionFactory; + } + + // ------------------------------------------------------------------------- + // Implementation + // ------------------------------------------------------------------------- + + public void saveCategoryOptionAssociation( CategoryOptionAssociation registration ) + { + sessionFactory.getCurrentSession().save( registration ); + } + + public void updateCategoryOptionAssociation( CategoryOptionAssociation registration ) + { + sessionFactory.getCurrentSession().update( registration ); + } + + @SuppressWarnings( "unchecked" ) + public Collection getAllCategoryOptionAssociations() + { + return sessionFactory.getCurrentSession().createCriteria( CategoryOptionAssociation.class ).list(); + } + + public CategoryOptionAssociation getCategoryOptionAssociation( OrganisationUnit source, + DataElementCategoryOption categoryOption ) + { + Criteria criteria = sessionFactory.getCurrentSession().createCriteria( CategoryOptionAssociation.class ); + + criteria.add( Restrictions.eq( "source", source ) ); + criteria.add( Restrictions.eq( "categoryOption", categoryOption ) ); + + return (CategoryOptionAssociation) criteria.uniqueResult(); + } + + public void deleteCategoryOptionAssociation( CategoryOptionAssociation registration ) + { + sessionFactory.getCurrentSession().delete( registration ); + sessionFactory.getCurrentSession().flush(); + } + + public void deleteCategoryOptionAssociations( OrganisationUnit source ) + { + String hql = "delete from CategoryOptionAssociation c where c.source = :source"; + + Query query = sessionFactory.getCurrentSession().createQuery( hql ); + + query.setEntity( "source", source ); + + query.executeUpdate(); + } + + public void deleteCategoryOptionAssociations( DataElementCategoryOption categoryOption ) + { + String hql = "delete from CategoryOptionAssociation c where c.categoryOption = :categoryOption"; + + Query query = sessionFactory.getCurrentSession().createQuery( hql ); + + query.setEntity( "categoryOption", categoryOption ); + + query.executeUpdate(); + } + + @Override + public void deleteCategoryOptionAssociations( Collection sources, + DataElementCategoryOption categoryOption ) + { + String hql = "delete from CategoryOptionAssociation c where c.categoryOption = :categoryOption and c.source.id in (:ids)"; + + Query query = sessionFactory.getCurrentSession().createQuery( hql ); + + query.setEntity( "categoryOption", categoryOption ); + query.setParameterList( "ids", ConversionUtils.getIdentifiers( OrganisationUnit.class, sources ) ); + + query.executeUpdate(); + } + + @SuppressWarnings( "unchecked" ) + public Collection getCategoryOptionAssociations( OrganisationUnit source ) + { + Criteria criteria = sessionFactory.getCurrentSession().createCriteria( CategoryOptionAssociation.class ); + + criteria.add( Restrictions.eq( "source", source ) ); + + return criteria.list(); + } + + public Collection getCategoryOptions( OrganisationUnit source ) + { + Set categoryOptions = new HashSet(); + + for ( CategoryOptionAssociation association : this.getCategoryOptionAssociations( source ) ) + { + categoryOptions.add( association.getCategoryOption() ); + } + + return categoryOptions; + } + + @SuppressWarnings( "unchecked" ) + public Collection getCategoryOptionAssociations( DataElementCategoryOption categoryOption ) + { + Criteria criteria = sessionFactory.getCurrentSession().createCriteria( CategoryOptionAssociation.class ); + + criteria.add( Restrictions.eq( "categoryOption", categoryOption ) ); + + return criteria.list(); + } +} === added file 'local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/impl/DefaultCategoryOptionAssociationService.java' --- local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/impl/DefaultCategoryOptionAssociationService.java 1970-01-01 00:00:00 +0000 +++ local/vn/dhis-service-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/impl/DefaultCategoryOptionAssociationService.java 2012-05-04 09:50:39 +0000 @@ -0,0 +1,125 @@ +package org.hisp.dhis.reportsheet.impl; + +/* + * Copyright (c) 2004-2012, University of Oslo All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. * Redistributions in binary + * form must reproduce the above copyright notice, this list of conditions and + * the following disclaimer in the documentation and/or other materials provided + * with the distribution. * Neither the name of the HISP project nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. THIS SOFTWARE IS + * PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import java.util.Collection; + +import org.hisp.dhis.dataelement.DataElementCategoryOption; +import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.reportsheet.CategoryOptionAssociation; +import org.hisp.dhis.reportsheet.CategoryOptionAssociationService; +import org.hisp.dhis.reportsheet.CategoryOptionAssociationStore; +import org.springframework.transaction.annotation.Transactional; + +/** + * @author Dang Duy Hieu + * @version $Id$ + */ +@Transactional +public class DefaultCategoryOptionAssociationService + implements CategoryOptionAssociationService +{ + // ------------------------------------------------------------------------- + // Dependencies + // ------------------------------------------------------------------------- + + private CategoryOptionAssociationStore categoryOptionAssociationStore; + + public void setCategoryOptionAssociationStore( CategoryOptionAssociationStore categoryOptionAssociationStore ) + { + this.categoryOptionAssociationStore = categoryOptionAssociationStore; + } + + // ------------------------------------------------------------------------- + // CategoryOptionAssociationService + // ------------------------------------------------------------------------- + + @Override + public void saveCategoryOptionAssociation( CategoryOptionAssociation association ) + { + categoryOptionAssociationStore.saveCategoryOptionAssociation( association ); + } + + @Override + public void updateCategoryOptionAssociation( CategoryOptionAssociation association ) + { + categoryOptionAssociationStore.updateCategoryOptionAssociation( association ); + } + + @Override + public void deleteCategoryOptionAssociation( CategoryOptionAssociation association ) + { + categoryOptionAssociationStore.deleteCategoryOptionAssociation( association ); + } + + @Override + public void deleteCategoryOptionAssociations( OrganisationUnit source ) + { + categoryOptionAssociationStore.deleteCategoryOptionAssociations( source ); + } + + @Override + public void deleteCategoryOptionAssociations( DataElementCategoryOption categoryOption ) + { + categoryOptionAssociationStore.deleteCategoryOptionAssociations( categoryOption ); + } + + @Override + public void deleteCategoryOptionAssociations( Collection sources, + DataElementCategoryOption categoryOption ) + { + categoryOptionAssociationStore.deleteCategoryOptionAssociations( sources, categoryOption ); + } + + @Override + public Collection getAllCategoryOptionAssociations() + { + return categoryOptionAssociationStore.getAllCategoryOptionAssociations(); + } + + @Override + public Collection getCategoryOptionAssociations( OrganisationUnit source ) + { + return categoryOptionAssociationStore.getCategoryOptionAssociations( source ); + } + + @Override + public CategoryOptionAssociation getCategoryOptionAssociation( OrganisationUnit source, + DataElementCategoryOption categoryOption ) + { + return categoryOptionAssociationStore.getCategoryOptionAssociation( source, categoryOption ); + } + + @Override + public Collection getCategoryOptions( OrganisationUnit source ) + { + return categoryOptionAssociationStore.getCategoryOptions( source ); + } + + @Override + public Collection getCategoryOptionAssociations( DataElementCategoryOption categoryOption ) + { + return categoryOptionAssociationStore.getCategoryOptionAssociations( categoryOption ); + } +} === modified file 'local/vn/dhis-service-spreadsheet-reporting/src/main/resources/META-INF/dhis/beans.xml' --- local/vn/dhis-service-spreadsheet-reporting/src/main/resources/META-INF/dhis/beans.xml 2012-04-29 09:57:26 +0000 +++ local/vn/dhis-service-spreadsheet-reporting/src/main/resources/META-INF/dhis/beans.xml 2012-05-04 09:50:39 +0000 @@ -74,7 +74,7 @@ - + + + + + + + + + @@ -111,6 +122,12 @@ ref="org.hisp.dhis.reportsheet.importitem.ImportReportService" /> + + + + + + + + + + + + + + + + + + + + === added file 'local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/cogroup/action/OpenCategoryOptionAssociationsAction.java' --- local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/cogroup/action/OpenCategoryOptionAssociationsAction.java 1970-01-01 00:00:00 +0000 +++ local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/cogroup/action/OpenCategoryOptionAssociationsAction.java 2012-05-04 09:50:39 +0000 @@ -0,0 +1,96 @@ +package org.hisp.dhis.reportsheet.cogroup.action; + +/* + * Copyright (c) 2004-2012, 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.reportsheet.CategoryOptionGroupOrder; +import org.hisp.dhis.reportsheet.CategoryOptionGroupOrderService; +import org.springframework.beans.factory.annotation.Autowired; + +import com.opensymphony.xwork2.Action; + +/** + * @author Dang Duy Hieu + * @version $Id$ + */ + +public class OpenCategoryOptionAssociationsAction + implements Action +{ + // ------------------------------------------------------------------------- + // Dependency + // ------------------------------------------------------------------------- + + @Autowired + private CategoryOptionGroupOrderService groupOrderService; + + // ------------------------------------------------------------------------- + // Input & Output + // ------------------------------------------------------------------------- + + private Integer id; + + private Integer reportId; + + private CategoryOptionGroupOrder group; + + // ------------------------------------------------------------------------- + // Getter & Setter + // ------------------------------------------------------------------------- + + public void setId( Integer id ) + { + this.id = id; + } + + public void setReportId( Integer reportId ) + { + this.reportId = reportId; + } + + public Integer getReportId() + { + return reportId; + } + + public CategoryOptionGroupOrder getGroup() + { + return group; + } + + // ------------------------------------------------------------------------- + // Action implementation + // ------------------------------------------------------------------------- + + public String execute() + throws Exception + { + group = groupOrderService.getCategoryOptionGroupOrder( id ); + + return SUCCESS; + } +} === added file 'local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/cogroup/action/ShowDefineCategoryOptionAssociationsAction.java' --- local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/cogroup/action/ShowDefineCategoryOptionAssociationsAction.java 1970-01-01 00:00:00 +0000 +++ local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/cogroup/action/ShowDefineCategoryOptionAssociationsAction.java 2012-05-04 09:50:39 +0000 @@ -0,0 +1,100 @@ +package org.hisp.dhis.reportsheet.cogroup.action; + +/* + * Copyright (c) 2004-2012, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import java.util.HashSet; +import java.util.Set; + +import org.hisp.dhis.dataelement.DataElementCategoryOption; +import org.hisp.dhis.dataelement.DataElementCategoryService; +import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.oust.manager.SelectionTreeManager; +import org.hisp.dhis.reportsheet.CategoryOptionAssociation; +import org.hisp.dhis.reportsheet.CategoryOptionAssociationService; +import org.springframework.beans.factory.annotation.Autowired; + +import com.opensymphony.xwork2.Action; + +/** + * @author Dang Duy Hieu + * @version $Id$ + */ + +public class ShowDefineCategoryOptionAssociationsAction + implements Action +{ + // ------------------------------------------------------------------------- + // Dependency + // ------------------------------------------------------------------------- + + @Autowired + private DataElementCategoryService categoryService; + + @Autowired + private CategoryOptionAssociationService associationService; + + @Autowired + private SelectionTreeManager selectionTreeManager; + + // ------------------------------------------------------------------------- + // Input & Output + // ------------------------------------------------------------------------- + + private Integer categoryOptionId; + + public void setCategoryOptionId( Integer categoryOptionId ) + { + this.categoryOptionId = categoryOptionId; + } + + // ------------------------------------------------------------------------- + // Action implementation + // ------------------------------------------------------------------------- + + public String execute() + throws Exception + { + DataElementCategoryOption categoryOption = categoryService.getDataElementCategoryOption( categoryOptionId ); + + Set sources = new HashSet(); + + if ( categoryOption != null ) + { + for ( CategoryOptionAssociation association : associationService + .getCategoryOptionAssociations( categoryOption ) ) + { + sources.add( association.getSource() ); + } + } + + selectionTreeManager.setSelectedOrganisationUnits( sources ); + + return SUCCESS; + } + +} === added file 'local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/cogroup/action/UpdateCategoryOptionAssociationsAction.java' --- local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/cogroup/action/UpdateCategoryOptionAssociationsAction.java 1970-01-01 00:00:00 +0000 +++ local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/cogroup/action/UpdateCategoryOptionAssociationsAction.java 2012-05-04 09:50:39 +0000 @@ -0,0 +1,123 @@ +package org.hisp.dhis.reportsheet.cogroup.action; + +/* + * Copyright (c) 2004-2012, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + +import org.hisp.dhis.dataelement.DataElementCategoryOption; +import org.hisp.dhis.dataelement.DataElementCategoryService; +import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.oust.manager.SelectionTreeManager; +import org.hisp.dhis.reportsheet.CategoryOptionAssociation; +import org.hisp.dhis.reportsheet.CategoryOptionAssociationService; +import org.hisp.dhis.reportsheet.action.ActionSupport; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @author Dang Duy Hieu + * @version $Id$ + */ + +public class UpdateCategoryOptionAssociationsAction + extends ActionSupport +{ + // ------------------------------------------------------------------------- + // Dependency + // ------------------------------------------------------------------------- + + @Autowired + private DataElementCategoryService categoryService; + + @Autowired + private CategoryOptionAssociationService associationService; + + @Autowired + private SelectionTreeManager selectionTreeManager; + + // ------------------------------------------------------------------------- + // Input & Output + // ------------------------------------------------------------------------- + + private Integer categoryOptionId; + + public void setCategoryOptionId( Integer categoryOptionId ) + { + this.categoryOptionId = categoryOptionId; + } + + // ------------------------------------------------------------------------- + // Action Implementation + // ------------------------------------------------------------------------- + + public String execute() + throws Exception + { + DataElementCategoryOption categoryOption = categoryService.getDataElementCategoryOption( categoryOptionId ); + + Set sources = new HashSet(); + + if ( categoryOption != null ) + { + for ( CategoryOptionAssociation association : associationService + .getCategoryOptionAssociations( categoryOption ) ) + { + sources.add( association.getSource() ); + } + } + + Set cloneSources = new HashSet( sources ); + + Collection selectedUnits = selectionTreeManager.getReloadedSelectedOrganisationUnits(); + + sources.removeAll( selectedUnits ); + + if ( sources != null && !sources.isEmpty() ) + { + associationService.deleteCategoryOptionAssociations( sources, categoryOption ); + } + + selectedUnits.removeAll( cloneSources ); + + for ( OrganisationUnit newSource : selectedUnits ) + { + CategoryOptionAssociation association = new CategoryOptionAssociation( newSource, categoryOption ); + + associationService.saveCategoryOptionAssociation( association ); + } + + sources = null; + cloneSources = null; + selectedUnits = null; + + message = i18n.getString( "update_associations_successful" ); + + return SUCCESS; + } +} === modified file 'local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/AbstractGenerateMultiExcelReportSupport.java' --- local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/AbstractGenerateMultiExcelReportSupport.java 2012-05-03 10:04:29 +0000 +++ local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/AbstractGenerateMultiExcelReportSupport.java 2012-05-04 09:50:39 +0000 @@ -33,6 +33,7 @@ import org.hisp.dhis.organisationunit.OrganisationUnitService; import org.hisp.dhis.period.Period; import org.hisp.dhis.period.PeriodType; +import org.hisp.dhis.reportsheet.CategoryOptionAssociationService; import org.hisp.dhis.reportsheet.ExportReport; import org.springframework.beans.factory.annotation.Autowired; @@ -51,11 +52,14 @@ // ------------------------------------------------------------------------- @Autowired + protected OrganisationUnitService organisationUnitService; + + @Autowired + protected CategoryOptionAssociationService categoryOptionAssociationService; + + @Autowired protected LocalDataElementService localDataElementService; - @Autowired - protected OrganisationUnitService organisationUnitService; - // ------------------------------------------------------------------------- // Action implementation // ------------------------------------------------------------------------- === modified file 'local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/GenerateMultiReportAction.java' --- local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/GenerateMultiReportAction.java 2012-05-03 10:04:29 +0000 +++ local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/GenerateMultiReportAction.java 2012-05-04 09:50:39 +0000 @@ -130,8 +130,7 @@ { ExportReportPeriodColumnListing reportInstance = (ExportReportPeriodColumnListing) report; - this - .generatePeriodListing( reportInstance.getPeriodColumns(), exportItems, organisationUnit, sheet ); + this.generatePeriodListing( reportInstance.getPeriodColumns(), exportItems, organisationUnit, sheet ); } } } @@ -141,6 +140,10 @@ // Supportive method // ------------------------------------------------------------------------- + + /** + * NORMAL + * */ private void generateNormal( Collection exportItems, OrganisationUnit organisationUnit, Sheet sheet ) { for ( ExportItem reportItem : exportItems ) @@ -175,6 +178,9 @@ } } + /** + * ATTRIBUTE + * */ private void generateAttribute( DataElementCategoryOptionCombo optionCombo, ExportReportAttribute exportReport, Collection exportItems, OrganisationUnit organisationUnit, Sheet sheet ) { @@ -252,6 +258,9 @@ } } + /** + * CATEGORY + * */ private void generateVerticalOutPutFile( ExportReportCategory exportReport, Collection exportItems, OrganisationUnit organisationUnit, Sheet sheet ) { @@ -386,13 +395,18 @@ return true; } + /** + * CATEGORY-VERTICAL + * */ private void generateCategoryVertical( ExportReportVerticalCategory exportReport, - Collection exportItems, OrganisationUnit organisationUnit, Sheet sheet ) + Collection exportReportItems, OrganisationUnit organisationUnit, Sheet sheet ) { DataElement de = null; Set optionCombos = new HashSet(); + Set associatedCategoryOptions = new HashSet( + categoryOptionAssociationService.getCategoryOptions( organisationUnit ) ); - for ( ExportItem reportItem : exportItems ) + for ( ExportItem reportItem : exportReportItems ) { int run = 0; int rowBegin = reportItem.getRow(); @@ -421,61 +435,69 @@ for ( DataElementCategoryOption categoryOption : group.getCategoryOptions() ) { - if ( reportItem.getItemType().equalsIgnoreCase( ExportItem.TYPE.DATAELEMENT_NAME ) ) - { - ExcelUtils.writeValueByPOI( rowBegin, reportItem.getColumn(), categoryOption.getName(), - ExcelUtils.TEXT, sheet, this.csText10Bold ); - } - else if ( reportItem.getItemType().equalsIgnoreCase( ExportItem.TYPE.SERIAL ) ) - { - ExcelUtils.writeValueByPOI( rowBegin, reportItem.getColumn(), String.valueOf( serial ), - ExcelUtils.NUMBER, sheet, this.csTextSerial ); - } - else if ( reportItem.getItemType().equalsIgnoreCase( ExportItem.TYPE.FORMULA_EXCEL ) ) - { - ExcelUtils.writeFormulaByPOI( rowBegin, reportItem.getColumn(), ExcelUtils - .generateExcelFormula( reportItem.getExpression(), run, run ), sheet, csFormula ); - } - else - { - for ( DataElementCategoryOptionCombo optionCombo : optionCombos ) - { - if ( optionCombo.getCategoryOptions().contains( categoryOption ) ) + if ( associatedCategoryOptions.contains( categoryOption ) ) + { + if ( reportItem.getItemType().equalsIgnoreCase( ExportItem.TYPE.DATAELEMENT_NAME ) ) + { + ExcelUtils.writeValueByPOI( rowBegin, reportItem.getColumn(), categoryOption.getName(), + ExcelUtils.TEXT, sheet, this.csText10Bold ); + } + else if ( reportItem.getItemType().equalsIgnoreCase( ExportItem.TYPE.SERIAL ) ) + { + ExcelUtils.writeValueByPOI( rowBegin, reportItem.getColumn(), String.valueOf( serial ), + ExcelUtils.NUMBER, sheet, this.csTextSerial ); + } + else if ( reportItem.getItemType().equalsIgnoreCase( ExportItem.TYPE.FORMULA_EXCEL ) ) + { + ExcelUtils.writeFormulaByPOI( rowBegin, reportItem.getColumn(), ExcelUtils + .generateExcelFormula( reportItem.getExpression(), run, run ), sheet, csFormula ); + } + else + { + for ( DataElementCategoryOptionCombo optionCombo : optionCombos ) { - ExportItem newReportItem = new ExportItem(); - - String expression = reportItem.getExpression(); - expression = expression.replace( "*", String.valueOf( optionCombo.getId() ) ); - - newReportItem.setPeriodType( reportItem.getPeriodType() ); - newReportItem.setExpression( expression ); - - double value = this.getDataValue( newReportItem, organisationUnit ); - - ExcelUtils.writeValueByPOI( rowBegin, reportItem.getColumn(), String.valueOf( value ), - ExcelUtils.NUMBER, sheet, this.csNumber ); - - break; + if ( optionCombo.getCategoryOptions().contains( categoryOption ) ) + { + ExportItem newReportItem = new ExportItem(); + + String expression = reportItem.getExpression(); + expression = expression.replace( "*", String.valueOf( optionCombo.getId() ) ); + + newReportItem.setPeriodType( reportItem.getPeriodType() ); + newReportItem.setExpression( expression ); + + double value = this.getDataValue( newReportItem, organisationUnit ); + + ExcelUtils.writeValueByPOI( rowBegin, reportItem.getColumn(), String + .valueOf( value ), ExcelUtils.NUMBER, sheet, this.csNumber ); + + break; + } } } + + rowBegin++; + serial++; + run++; + + if ( reportItem.getItemType().equalsIgnoreCase( ExportItem.TYPE.DATAELEMENT ) ) + { + String columnName = ExcelUtils.convertColumnNumberToName( reportItem.getColumn() ); + String formula = "SUM(" + columnName + (beginChapter + 1) + ":" + columnName + + (rowBegin - 1) + ")"; + + ExcelUtils.writeFormulaByPOI( beginChapter, reportItem.getColumn(), formula, sheet, + this.csFormula ); + } } - - rowBegin++; - serial++; - run++; - } - - if ( reportItem.getItemType().equalsIgnoreCase( ExportItem.TYPE.DATAELEMENT ) ) - { - String columnName = ExcelUtils.convertColumnNumberToName( reportItem.getColumn() ); - String formula = "SUM(" + columnName + (beginChapter + 1) + ":" + columnName + (rowBegin - 1) + ")"; - - ExcelUtils.writeFormulaByPOI( beginChapter, reportItem.getColumn(), formula, sheet, this.csFormula ); } } } } + /** + * ORGUNIT-LISTING + * */ private void generateOrgUnitListing( ExportReportOrganizationGroupListing exportReport, Map orgUniGroupAtLevels, Collection exportItems, OrganisationUnit organisationUnit, Sheet sheet ) @@ -613,6 +635,9 @@ } } + /** + * PERIOD-LISTING + * */ private void generatePeriodListing( Set periodColumns, Collection exportItems, OrganisationUnit organisationUnit, Sheet sheet ) { === modified file 'local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/GenerateReportAttributeAction.java' --- local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/GenerateReportAttributeAction.java 2012-05-03 10:04:29 +0000 +++ local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/GenerateReportAttributeAction.java 2012-05-04 09:50:39 +0000 @@ -86,7 +86,7 @@ // Supportive method // ------------------------------------------------------------------------- - public void generateOutPutFile( DataElementCategoryOptionCombo optionCombo, ExportReportAttribute exportReport, + private void generateOutPutFile( DataElementCategoryOptionCombo optionCombo, ExportReportAttribute exportReport, Collection exportReportItems, OrganisationUnit organisationUnit, Sheet sheet ) { boolean flag = false; === modified file 'local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/GenerateReportCategoryAction.java' --- local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/GenerateReportCategoryAction.java 2012-05-03 10:04:29 +0000 +++ local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/GenerateReportCategoryAction.java 2012-05-04 09:50:39 +0000 @@ -80,7 +80,7 @@ // Supportive method // ------------------------------------------------------------------------- - public void generateVerticalOutPutFile( ExportReportCategory exportReport, + private void generateVerticalOutPutFile( ExportReportCategory exportReport, Collection exportReportItems, OrganisationUnit organisationUnit, Sheet sheet ) { for ( ExportItem reportItem : exportReportItems ) @@ -162,7 +162,7 @@ } } - public void generateHorizontalOutPutFile( ExportReportCategory exportReport, + private void generateHorizontalOutPutFile( ExportReportCategory exportReport, Collection exportReportItems, OrganisationUnit organisationUnit, Sheet sheet ) { for ( ExportItem reportItem : exportReportItems ) @@ -197,7 +197,7 @@ } } - public boolean isVerticalCategory( Collection items ) + private boolean isVerticalCategory( Collection items ) { Integer previousRow = null; === modified file 'local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/GenerateReportNormalAction.java' --- local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/GenerateReportNormalAction.java 2012-05-03 10:04:29 +0000 +++ local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/GenerateReportNormalAction.java 2012-05-04 09:50:39 +0000 @@ -71,7 +71,7 @@ // Supportive method // ------------------------------------------------------------------------- - public void generateOutPutFile( Collection exportReportItems, OrganisationUnit organisationUnit, + private void generateOutPutFile( Collection exportReportItems, OrganisationUnit organisationUnit, Sheet sheet ) { for ( ExportItem reportItem : exportReportItems ) === modified file 'local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/GenerateReportOrgGroupListingAction.java' --- local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/GenerateReportOrgGroupListingAction.java 2012-05-03 10:04:29 +0000 +++ local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/GenerateReportOrgGroupListingAction.java 2012-05-04 09:50:39 +0000 @@ -97,7 +97,7 @@ // Supportive method // ------------------------------------------------------------------------- - public void generateOutPutFile( ExportReportOrganizationGroupListing exportReport, + private void generateOutPutFile( ExportReportOrganizationGroupListing exportReport, Map orgUniGroupAtLevels, Collection exportReportItems, OrganisationUnit organisationUnit, Sheet sheet ) { === modified file 'local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/GenerateReportPeriodColumnListingAction.java' --- local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/GenerateReportPeriodColumnListingAction.java 2012-05-03 10:04:29 +0000 +++ local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/GenerateReportPeriodColumnListingAction.java 2012-05-04 09:50:39 +0000 @@ -74,7 +74,7 @@ // Supportive method // ------------------------------------------------------------------------- - public void generateOutPutFile( Set periodColumns, Collection exportReportItems, + private void generateOutPutFile( Set periodColumns, Collection exportReportItems, OrganisationUnit organisationUnit, Sheet sheet ) { for ( ExportItem reportItem : exportReportItems ) === modified file 'local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/GenerateReportVerticalCategoryAction.java' --- local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/GenerateReportVerticalCategoryAction.java 2012-05-03 10:04:29 +0000 +++ local/vn/dhis-web-spreadsheet-reporting/src/main/java/org/hisp/dhis/reportsheet/exporting/action/GenerateReportVerticalCategoryAction.java 2012-05-04 09:50:39 +0000 @@ -27,6 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ import static org.hisp.dhis.dataelement.DataElementOperand.SEPARATOR; + import java.util.Collection; import java.util.HashSet; import java.util.Set; @@ -37,12 +38,14 @@ import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.period.Period; +import org.hisp.dhis.reportsheet.CategoryOptionAssociationService; import org.hisp.dhis.reportsheet.CategoryOptionGroupOrder; import org.hisp.dhis.reportsheet.ExportItem; import org.hisp.dhis.reportsheet.ExportReport; import org.hisp.dhis.reportsheet.ExportReportVerticalCategory; import org.hisp.dhis.reportsheet.exporting.AbstractGenerateExcelReportSupport; import org.hisp.dhis.reportsheet.utils.ExcelUtils; +import org.springframework.beans.factory.annotation.Autowired; /** * @author Dang Duy Hieu @@ -51,6 +54,9 @@ public class GenerateReportVerticalCategoryAction extends AbstractGenerateExcelReportSupport { + @Autowired + private CategoryOptionAssociationService categoryOptionAssociationService; + @Override protected void executeGenerateOutputFile( ExportReport exportReport, Period period ) throws Exception @@ -75,11 +81,13 @@ // Supportive method // ------------------------------------------------------------------------- - public void generateVerticalOutPutFile( ExportReportVerticalCategory exportReport, + private void generateVerticalOutPutFile( ExportReportVerticalCategory exportReport, Collection exportReportItems, OrganisationUnit organisationUnit, Sheet sheet ) { DataElement de = null; Set optionCombos = new HashSet(); + Set associatedCategoryOptions = new HashSet( + categoryOptionAssociationService.getCategoryOptions( organisationUnit ) ); for ( ExportItem reportItem : exportReportItems ) { @@ -110,56 +118,61 @@ for ( DataElementCategoryOption categoryOption : group.getCategoryOptions() ) { - if ( reportItem.getItemType().equalsIgnoreCase( ExportItem.TYPE.DATAELEMENT_NAME ) ) - { - ExcelUtils.writeValueByPOI( rowBegin, reportItem.getColumn(), categoryOption.getName(), - ExcelUtils.TEXT, sheet, this.csText10Bold ); - } - else if ( reportItem.getItemType().equalsIgnoreCase( ExportItem.TYPE.SERIAL ) ) - { - ExcelUtils.writeValueByPOI( rowBegin, reportItem.getColumn(), String.valueOf( serial ), - ExcelUtils.NUMBER, sheet, this.csTextSerial ); - } - else if ( reportItem.getItemType().equalsIgnoreCase( ExportItem.TYPE.FORMULA_EXCEL ) ) - { - ExcelUtils.writeFormulaByPOI( rowBegin, reportItem.getColumn(), ExcelUtils - .generateExcelFormula( reportItem.getExpression(), run, run ), sheet, csFormula ); - } - else - { - for ( DataElementCategoryOptionCombo optionCombo : optionCombos ) - { - if ( optionCombo.getCategoryOptions().contains( categoryOption ) ) + if ( associatedCategoryOptions.contains( categoryOption ) ) + { + if ( reportItem.getItemType().equalsIgnoreCase( ExportItem.TYPE.DATAELEMENT_NAME ) ) + { + ExcelUtils.writeValueByPOI( rowBegin, reportItem.getColumn(), categoryOption.getName(), + ExcelUtils.TEXT, sheet, this.csText10Bold ); + } + else if ( reportItem.getItemType().equalsIgnoreCase( ExportItem.TYPE.SERIAL ) ) + { + ExcelUtils.writeValueByPOI( rowBegin, reportItem.getColumn(), String.valueOf( serial ), + ExcelUtils.NUMBER, sheet, this.csTextSerial ); + } + else if ( reportItem.getItemType().equalsIgnoreCase( ExportItem.TYPE.FORMULA_EXCEL ) ) + { + ExcelUtils.writeFormulaByPOI( rowBegin, reportItem.getColumn(), ExcelUtils + .generateExcelFormula( reportItem.getExpression(), run, run ), sheet, csFormula ); + } + else + { + for ( DataElementCategoryOptionCombo optionCombo : optionCombos ) { - ExportItem newReportItem = new ExportItem(); - - String expression = reportItem.getExpression(); - expression = expression.replace( "*", String.valueOf( optionCombo.getId() ) ); - - newReportItem.setPeriodType( reportItem.getPeriodType() ); - newReportItem.setExpression( expression ); - - double value = this.getDataValue( newReportItem, organisationUnit ); - - ExcelUtils.writeValueByPOI( rowBegin, reportItem.getColumn(), String.valueOf( value ), - ExcelUtils.NUMBER, sheet, this.csNumber ); - - break; + if ( optionCombo.getCategoryOptions().contains( categoryOption ) ) + { + ExportItem newReportItem = new ExportItem(); + + String expression = reportItem.getExpression(); + expression = expression.replace( "*", String.valueOf( optionCombo.getId() ) ); + + newReportItem.setPeriodType( reportItem.getPeriodType() ); + newReportItem.setExpression( expression ); + + double value = this.getDataValue( newReportItem, organisationUnit ); + + ExcelUtils.writeValueByPOI( rowBegin, reportItem.getColumn(), String + .valueOf( value ), ExcelUtils.NUMBER, sheet, this.csNumber ); + + break; + } } } + + rowBegin++; + serial++; + run++; + + if ( reportItem.getItemType().equalsIgnoreCase( ExportItem.TYPE.DATAELEMENT ) ) + { + String columnName = ExcelUtils.convertColumnNumberToName( reportItem.getColumn() ); + String formula = "SUM(" + columnName + (beginChapter + 1) + ":" + columnName + + (rowBegin - 1) + ")"; + + ExcelUtils.writeFormulaByPOI( beginChapter, reportItem.getColumn(), formula, sheet, + this.csFormula ); + } } - - rowBegin++; - serial++; - run++; - } - - if ( reportItem.getItemType().equalsIgnoreCase( ExportItem.TYPE.DATAELEMENT ) ) - { - String columnName = ExcelUtils.convertColumnNumberToName( reportItem.getColumn() ); - String formula = "SUM(" + columnName + (beginChapter + 1) + ":" + columnName + (rowBegin - 1) + ")"; - - ExcelUtils.writeFormulaByPOI( beginChapter, reportItem.getColumn(), formula, sheet, this.csFormula ); } } } === modified file 'local/vn/dhis-web-spreadsheet-reporting/src/main/resources/META-INF/dhis/beans.xml' --- local/vn/dhis-web-spreadsheet-reporting/src/main/resources/META-INF/dhis/beans.xml 2012-05-03 10:04:29 +0000 +++ local/vn/dhis-web-spreadsheet-reporting/src/main/resources/META-INF/dhis/beans.xml 2012-05-04 09:50:39 +0000 @@ -300,6 +300,21 @@ id="org.hisp.dhis.reportsheet.cogroup.action.GetCategoryOptionsByCategoryAction" class="org.hisp.dhis.reportsheet.cogroup.action.GetCategoryOptionsByCategoryAction" scope="prototype" /> + + + + + + === modified file 'local/vn/dhis-web-spreadsheet-reporting/src/main/resources/org/hisp/dhis/reportsheet/i18n_module.properties' --- local/vn/dhis-web-spreadsheet-reporting/src/main/resources/org/hisp/dhis/reportsheet/i18n_module.properties 2012-05-03 10:04:29 +0000 +++ local/vn/dhis-web-spreadsheet-reporting/src/main/resources/org/hisp/dhis/reportsheet/i18n_module.properties 2012-05-04 09:50:39 +0000 @@ -324,9 +324,15 @@ no_attribute_selected = There is no attribute selected selected_list_should_not_empty = The selected list should not empty select_category = Select category +select_category_option = Select category option please_select_category = Please select a category +please_select_category_option = Please select category option categoryoption_groups = Category Option Groups specify_export_report = Please select report export_type = Export type export_single = Export a single report -export_multi = Export multi-reports \ No newline at end of file +export_multi = Export multi-reports +categoryoption_associations = Open category option associations +define_categoryoption_associations = Define Categoryoption Associations Management +update_associations_successful = Update associations successfully +category_options = Category options \ No newline at end of file === modified file 'local/vn/dhis-web-spreadsheet-reporting/src/main/resources/org/hisp/dhis/reportsheet/i18n_module_vi_VN.properties' --- local/vn/dhis-web-spreadsheet-reporting/src/main/resources/org/hisp/dhis/reportsheet/i18n_module_vi_VN.properties 2012-05-03 10:04:29 +0000 +++ local/vn/dhis-web-spreadsheet-reporting/src/main/resources/org/hisp/dhis/reportsheet/i18n_module_vi_VN.properties 2012-05-04 09:50:39 +0000 @@ -359,9 +359,15 @@ no_attribute_selected = Kh\u00f4ng c\u00f3 Thu\u1ed9c t\u00ednh n\u00e0o \u0111\u01b0\u1ee3c ch\u1ecdn trong khi thi\u1ebft k\u1ebf b\u00e1o c\u00e1o attribute_with_id = Thu\u1ed9c t\u00ednh c\u00f3 m\u00e3 select_category = Ch\u1ecdn ph\u00e2n lo\u1ea1i +select_category_option = Select ph\u1ea7n t\u1eed ph\u00e2n lo\u1ea1i please_select_category = H\u00e3y ch\u1ecdn ph\u00e2n lo\u1ea1i +please_select_category_option = H\u00e3y ch\u1ecdn ph\u1ea7n t\u1eed ph\u00e2n lo\u1ea1i categoryoption_groups = Nh\u00f3m c\u00e1c Ph\u00e2n lo\u1ea1i specify_export_report = H\u00e3y ch\u1ecdn b\u00e1o c\u00e1o export_type = Ki\u1ec3u xu\u1ea5t b\u00e1o c\u00e1o export_single = Xu\u1ea5t b\u00e1o c\u00e1o \u0111\u01a1n l\u1ebb -export_multi = Xu\u1ea5t \u0111a b\u00e1o c\u00e1o \ No newline at end of file +export_multi = Xu\u1ea5t \u0111a b\u00e1o c\u00e1o +categoryoption_associations = G\u00e1n ph\u1ea7n t\u1eed ph\u00e2n lo\u1ea1i cho \u0111\u01a1n v\u1ecb +define_categoryoption_associations = Qu\u1ea3n l\u00fd g\u00e1n ph\u1ea7n t\u1eed ph\u00e2n lo\u1ea1i cho \u0111\u01a1n v\u1ecb +update_associations_successful = C\u1eadp nh\u1eadt th\u00e0nh c\u00f4ng +category_options = Ph\u1ea7n t\u1eed ph\u00e2n lo\u1ea1i \ No newline at end of file === modified file 'local/vn/dhis-web-spreadsheet-reporting/src/main/resources/struts.xml' --- local/vn/dhis-web-spreadsheet-reporting/src/main/resources/struts.xml 2012-05-03 10:04:29 +0000 +++ local/vn/dhis-web-spreadsheet-reporting/src/main/resources/struts.xml 2012-05-04 09:50:39 +0000 @@ -287,6 +287,26 @@ /dhis-web-spreadsheet-reporting/jsonCategoryOptions.vm plainTextError + + + /main.vm + /dhis-web-spreadsheet-reporting/categoryOptionAssociations.vm + /dhis-web-spreadsheet-reporting/menu.vm + style/basic.css + + + + + /dhis-web-commons/ajax/jsonResponseSuccess.vm + + + + + /dhis-web-commons/ajax/jsonResponseSuccess.vm + === added file 'local/vn/dhis-web-spreadsheet-reporting/src/main/webapp/dhis-web-spreadsheet-reporting/categoryOptionAssociations.vm' --- local/vn/dhis-web-spreadsheet-reporting/src/main/webapp/dhis-web-spreadsheet-reporting/categoryOptionAssociations.vm 1970-01-01 00:00:00 +0000 +++ local/vn/dhis-web-spreadsheet-reporting/src/main/webapp/dhis-web-spreadsheet-reporting/categoryOptionAssociations.vm 2012-05-04 09:50:39 +0000 @@ -0,0 +1,91 @@ + + +

$i18n.getString( "define_categoryoption_associations" )

+ +

$encoder.htmlEncode( $!group.name )

+ +
+ + + + + + + +
$i18n.getString( "category_options" )
+ +
+ + + + + + + + +
+ #organisationUnitSelectionTree( true, true, false ) +
+ + +
+ +
+ + \ No newline at end of file === modified file 'local/vn/dhis-web-spreadsheet-reporting/src/main/webapp/dhis-web-spreadsheet-reporting/javascript/categoryOptionGroupOrder.js' --- local/vn/dhis-web-spreadsheet-reporting/src/main/webapp/dhis-web-spreadsheet-reporting/javascript/categoryOptionGroupOrder.js 2012-04-29 09:57:26 +0000 +++ local/vn/dhis-web-spreadsheet-reporting/src/main/webapp/dhis-web-spreadsheet-reporting/javascript/categoryOptionGroupOrder.js 2012-05-04 09:50:39 +0000 @@ -140,4 +140,12 @@ moveAllById( 'availableList', 'selectedList' ); selectAllById( 'selectedList' ); document.forms[0].submit(); +} + +/* + * Open Category Option Associations + */ +function openCategoryOptionAssociations( id ) +{ + window.location = "openCategoryOptionAssociations.action?id="+id+"&reportId="+reportId; } \ No newline at end of file === modified file 'local/vn/dhis-web-spreadsheet-reporting/src/main/webapp/dhis-web-spreadsheet-reporting/listCategoryOptionGroupOrder.vm' --- local/vn/dhis-web-spreadsheet-reporting/src/main/webapp/dhis-web-spreadsheet-reporting/listCategoryOptionGroupOrder.vm 2012-04-29 09:57:26 +0000 +++ local/vn/dhis-web-spreadsheet-reporting/src/main/webapp/dhis-web-spreadsheet-reporting/listCategoryOptionGroupOrder.vm 2012-05-04 09:50:39 +0000 @@ -52,9 +52,10 @@ $!encoder.htmlEncode( $group.name ) - $i18n.getString( 'remove' ) + $i18n.getString( 'categoryoption_associations' ) $i18n.getString( 'edit' ) + $i18n.getString( 'remove' ) $i18n.getString( 'show_details' )