← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 3466: Removed CalculatedDataElement

 

------------------------------------------------------------
revno: 3466
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Sun 2011-04-24 17:50:02 +0200
message:
  Removed CalculatedDataElement
removed:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/CalculatedDataElement.java
  dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/dataelement/hibernate/CalculatedDataElement.hbm.xml
  dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/calculateddataelement/
  dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/calculateddataelement/CalculatedDataElementDataMart.java
  dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/calculateddataelement/DefaultCalculatedDataElementDataMart.java
  dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/CalculatedDataElementConverter.java
  dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/importer/CalculatedDataElementImporter.java
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/Objects.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementService.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementStore.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/expression/ExpressionService.java
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataelement/DefaultDataElementService.java
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataelement/hibernate/HibernateDataElementStore.java
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/expression/DefaultExpressionService.java
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableAlteror.java
  dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataelement/DataElementServiceTest.java
  dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataelement/DataElementStoreTest.java
  dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/engine/DefaultDataMartEngine.java
  dhis-2/dhis-services/dhis-service-datamart-default/src/main/resources/META-INF/dhis/beans.xml
  dhis-2/dhis-services/dhis-service-datamart-default/src/test/java/org/hisp/dhis/datamart/DataMartServiceTest.java
  dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/ExportParams.java
  dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/ImportObjectManager.java
  dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/util/Dhis14ParsingUtils.java
  dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/xml/converter/DataElementConverter.java
  dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/xml/converter/DataElementGroupMemberConverter.java
  dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/DXFConverter.java
  dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/DataElementConverter.java
  dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/DataElementGroupMemberConverter.java
  dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/DataElementGroupSetMemberConverter.java
  dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/DataSetMemberConverter.java
  dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/exporter/DefaultDXFExportService.java
  dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/importer/DataElementImporter.java
  dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/service/DefaultImportObjectManager.java
  dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/service/DefaultImportObjectService.java
  dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/deletion/DeletionHandler.java
  dhis-2/dhis-support/dhis-support-test/src/main/java/org/hisp/dhis/DhisConvenienceTest.java
  dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/CustomDataEntryAction.java
  dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/ProgramStageCustomDataEntryAction.java
  dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/screen/DataEntryScreenManager.java
  dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/screen/DefaultDataEntryScreenManager.java
  dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/exp/DetailedMetaDataExportAction.java
  dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/exp/MetaDataExportAction.java
  dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/imp/GetMatchOptionsAction.java
  dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/imp/GetPreviewOptionsAction.java
  dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/util/ClassMapUtil.java
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/dataelement/AddDataElementAction.java
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/dataelement/ShowUpdateDataElementFormAction.java
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/dataelement/UpdateDataElementAction.java
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicator/AddIndicatorAction.java
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicator/UpdateIndicatorAction.java
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/resources/META-INF/dhis/beans.xml
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/addDataElementForm.vm
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/javascript/addDataElementForm.js
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/javascript/dataElement.js
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/javascript/updateDataElementForm.js
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/updateDataElementForm.vm
  dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/exp/MetaDataExportAction.java


--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk

Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/Objects.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/Objects.java	2011-04-24 12:47:31 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/Objects.java	2011-04-24 15:50:02 +0000
@@ -34,7 +34,6 @@
 public enum Objects
 {
     DATAELEMENT,
-    CALCULATEDDATAELEMENT,
     EXTENDEDDATAELEMENT,
     DATAELEMENTGROUP,
     DATAELEMENTGROUPSET,

=== removed file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/CalculatedDataElement.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/CalculatedDataElement.java	2010-04-12 21:23:33 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/CalculatedDataElement.java	1970-01-01 00:00:00 +0000
@@ -1,95 +0,0 @@
-package org.hisp.dhis.dataelement;
-
-/*
- * Copyright (c) 2004-2010, 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.expression.Expression;
-
-/**
- * A CalculatedDataElement (CDE) is created for a set of other related
- * DataElements. Each constituent DataElement may be multiplied with a factor.
- * 
- * An example: A value for the CDE "Number of births" is summed together from
- * two other Data Elements, "Number of still births" and "Number of live
- * births".
- * 
- * CDEs may be displayed as subtotals in a data entry form. The user may specify
- * whether or not the calculated value should be stored in the database. In all
- * other cases, a CDE behaves just like any other DataElement.
- * 
- * @author Hans S. Toemmerholt
- * @version $Id$
- */
-public class CalculatedDataElement
-    extends DataElement
-{
-    private boolean saved;
-
-    private Expression expression;
-    
-    // -------------------------------------------------------------------------
-    // Constructors
-    // -------------------------------------------------------------------------
-
-    public CalculatedDataElement()
-    {
-    }
-
-    // -------------------------------------------------------------------------
-    // Getters and setters
-    // -------------------------------------------------------------------------
-
-    public boolean isSaved()
-    {
-        return saved;
-    }
-
-    public void setSaved( boolean saved )
-    {
-        this.saved = saved;
-    }
-    
-    public Expression getExpression()
-    {
-        return expression;
-    }
-
-    public void setExpression( Expression expression )
-    {
-        this.expression = expression;
-    }
-    
-    public boolean equals( Object other )
-    {
-        return super.equals( other );
-    }
-    
-    public int hashCode()
-    {
-        return super.hashCode();
-    }
-}

=== 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-03-22 05:49:48 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementService.java	2011-04-24 15:50:02 +0000
@@ -132,15 +132,6 @@
     Collection<DataElement> getAllDataElements();
 
     /**
-     * Returns all DataElements which are not instances of
-     * CalculatedDataElements.
-     * 
-     * @return all DataElements which are not instances of
-     *         CalculatedDataElements.
-     */
-    Collection<DataElement> getNonCalculatedDataElements();
-
-    /**
      * Returns all DataElements with corresponding identifiers. Returns all
      * DataElements if the given argument is null.
      * 
@@ -150,24 +141,6 @@
     Collection<DataElement> getDataElements( Collection<Integer> identifiers );
 
     /**
-     * Returns all CalculatedDataElements with corresponding identifiers.
-     * Returns all CalculatedDataElements if the given argument is null.
-     * 
-     * @param identifiers the collection of identifiers.
-     * @return a collection of CalculatedDataElements.
-     */
-    Collection<CalculatedDataElement> getCalculatedDataElements( Collection<Integer> identifiers );
-
-    /**
-     * Returns all non-calculated DataElements with corresponding identifiers.
-     * Returns all non-calculated DataElements if the given argument is null.
-     * 
-     * @param identifiers the collection of identifiers.
-     * @return a collection of DataElements.
-     */
-    Collection<DataElement> getNonCalculatedDataElements( Collection<Integer> identifiers );
-
-    /**
      * Returns all DataElements with types that are possible to aggregate. The
      * types are currently INT and BOOL.
      * 
@@ -299,76 +272,6 @@
     int getDataElementCountByName( String name );
     
     // -------------------------------------------------------------------------
-    // Calculated Data Elements
-    // -------------------------------------------------------------------------
-
-    /**
-     * Returns a CalclulatedDataElement which contains a given dataElement
-     * 
-     * @param dataElement the DataElement which is contained by the
-     *        CalculatedDataElement to return.
-     * @return a CalculatedDataElement which contains the given DataElement, or
-     *         null if the DataElement is not part of a CalculatedDataElement.
-     */
-    CalculatedDataElement getCalculatedDataElementByDataElement( DataElement dataElement );
-
-    /**
-     * Returns CalculatedDataElements which contain any of the given
-     * DataElements
-     * 
-     * @param dataElements Collection of DataElements which can be contained by
-     *        the returned CalculatedDataElements
-     * @return a collection of CalculatedDataElements which contain any of the
-     *         given DataElements, or an empty collection if no
-     *         CalculatedDataElements contain any of the DataElements.
-     */
-    Collection<CalculatedDataElement> getCalculatedDataElementsByDataElements( Collection<DataElement> dataElements );
-
-    /**
-     * Returns all CalculatedDataElements
-     * 
-     * @return a collection of all CalculatedDataElements, or an empty
-     *         collection if there are no CalculcatedDataELements
-     */
-    Collection<CalculatedDataElement> getAllCalculatedDataElements();
-
-    /**
-     * Returns a Map of factors for the DataElements in the given
-     * CalculatedDataElement
-     * 
-     * @param calculatedDataElement CalculatedDataElement to get factors for
-     * @return a map of factors for the DataElements in the given
-     *         CalculatedDataElement
-     */
-    Map<DataElement, Double> getDataElementFactors( CalculatedDataElement calculatedDataElement );
-
-    /**
-     * Returns a Map of factors for the Operands in the given
-     * CalculatedDataElement
-     * 
-     * @param calculatedDataElement CalculatedDataElement to get factors for
-     * @return a map of factors for the Operands in the given
-     *         CalculatedDataElement
-     */
-    Map<String, Double> getOperandFactors( CalculatedDataElement calculatedDataElement );
-
-    /**
-     * Returns a collection of OperandIds in the given CalculatedDataElement
-     * 
-     * @param calculatedDataElement CalculatedDataElement to get operands for
-     * @return a collection of operands (actually string) for the expression in
-     *         the given CalculatedDataElement
-     */
-    Collection<String> getOperandIds( CalculatedDataElement calculatedDataElement );
-
-    /**
-     * 
-     * @param identifiers
-     * @return
-     */
-    Map<Integer, String> getCalculatedDataElementExpressionMap( Collection<Integer> identifiers );
-
-    // -------------------------------------------------------------------------
     // DataElementGroup
     // -------------------------------------------------------------------------
 

=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementStore.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementStore.java	2011-01-13 10:50:02 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementStore.java	2011-04-24 15:50:02 +0000
@@ -247,40 +247,6 @@
     int getDataElementCountByName( String name );
     
     // -------------------------------------------------------------------------
-    // Calculated Data Elements
-    // -------------------------------------------------------------------------
-
-    /**
-     * Returns a CalclulatedDataElement which contains a given dataElement
-     * 
-     * @paran dataElement the DataElement which is contained by the
-     *        CalculatedDataElement to return.
-     * @return a CalculatedDataElement which contains the given DataElement, or
-     *         null if the DataElement is not part of a CalculatedDataElement.
-     */
-    CalculatedDataElement getCalculatedDataElementByDataElement( DataElement dataElement );
-
-    /**
-     * Returns CalculatedDataElements which contain any of the given
-     * DataElements
-     * 
-     * @param dataElements Collection of DataElements which can be contained by
-     *        the returned CalculatedDataElements
-     * @return a collection of CalculatedDataElements which contain any of the
-     *         given DataElements, or an empty collection if no
-     *         CalculatedDataElements contain any of the DataElements.
-     */
-    Collection<CalculatedDataElement> getCalculatedDataElementsByDataElements( Collection<DataElement> dataElements );
-
-    /**
-     * Returns all CalculatedDataElements
-     * 
-     * @return a collection of all CalculatedDataElements, or an empty
-     *         collection if there are no CalculcatedDataELements
-     */
-    Collection<CalculatedDataElement> getAllCalculatedDataElements();
-
-    // -------------------------------------------------------------------------
     // DataElementOperand
     // -------------------------------------------------------------------------
 

=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/expression/ExpressionService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/expression/ExpressionService.java	2011-04-22 21:04:14 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/expression/ExpressionService.java	2011-04-24 15:50:02 +0000
@@ -170,15 +170,6 @@
     String getExpressionDescription( String expression );
 
     /**
-     * Looks for the existence of calculated dataelement in the give expression.
-     * If exists, it will replace this CDE with its equivalent expression.
-     * 
-     * @param expression The expression string
-     * @return expression containing non CDE
-     */
-    String replaceCDEsWithTheirExpression( String expression );
-    
-    /**
      * Replaces references to data element totals with references to all
      * category option combos in the category combo for that data element.
      * 

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataelement/DefaultDataElementService.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataelement/DefaultDataElementService.java	2011-03-22 05:49:48 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataelement/DefaultDataElementService.java	2011-04-24 15:50:02 +0000
@@ -39,8 +39,6 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 import org.hisp.dhis.common.GenericIdentifiableObjectStore;
 import org.hisp.dhis.common.comparator.CategoryComboSizeComparator;
@@ -147,21 +145,6 @@
         return i18n( i18nService, dataElementStore.getAllDataElements() );
     }
 
-    public Collection<DataElement> getNonCalculatedDataElements()
-    {
-        Collection<DataElement> dataElements = new ArrayList<DataElement>();
-
-        for ( DataElement dataElement : getAllDataElements() )
-        {
-            if ( !(dataElement instanceof CalculatedDataElement) )
-            {
-                dataElements.add( dataElement );
-            }
-        }
-
-        return dataElements;
-    }
-
     public Collection<DataElement> getDataElements( final Collection<Integer> identifiers )
     {
         Collection<DataElement> dataElements = getAllDataElements();
@@ -204,16 +187,6 @@
         return dataElements;
     }
 
-    public Collection<DataElement> getNonCalculatedDataElements( Collection<Integer> identifiers )
-    {
-        if ( identifiers == null )
-        {
-            return getNonCalculatedDataElements();
-        }
-
-        return getDataElements( identifiers );
-    }
-
     public Collection<DataElement> getAggregateableDataElements()
     {
         return i18n( i18nService, dataElementStore.getAggregateableDataElements() );
@@ -365,132 +338,6 @@
         return dataElementStore.getDataElementCountByName( name );
     }
     
-    // -------------------------------------------------------------------------
-    // CalculatedDataElement
-    // -------------------------------------------------------------------------
-
-    public Collection<CalculatedDataElement> getAllCalculatedDataElements()
-    {
-        return i18n( i18nService, dataElementStore.getAllCalculatedDataElements() );
-    }
-
-    public Collection<CalculatedDataElement> getCalculatedDataElements( final Collection<Integer> identifiers )
-    {
-        Collection<CalculatedDataElement> dataElements = getAllCalculatedDataElements();
-
-        return identifiers == null ? dataElements : FilterUtils.filter( dataElements,
-            new Filter<CalculatedDataElement>()
-            {
-                public boolean retain( CalculatedDataElement dataElement )
-                {
-                    return identifiers.contains( dataElement.getId() );
-                }
-            } );
-    }
-
-    public CalculatedDataElement getCalculatedDataElementByDataElement( DataElement dataElement )
-    {
-        return i18n( i18nService, dataElementStore.getCalculatedDataElementByDataElement( dataElement ) );
-    }
-
-    public Collection<CalculatedDataElement> getCalculatedDataElementsByDataElements(
-        Collection<DataElement> dataElements )
-    {
-        return i18n( i18nService, dataElementStore.getCalculatedDataElementsByDataElements( dataElements ) );
-    }
-
-    public Map<DataElement, Double> getDataElementFactors( CalculatedDataElement calculatedDataElement )
-    {
-        Map<DataElement, Double> factorMap = new HashMap<DataElement, Double>();
-
-        Pattern pattern = Pattern.compile( "\\[(\\d+)\\]\\s*\\*\\s*(\\d+(\\.\\d)*)" );
-
-        // ---------------------------------------------------------------------
-        // In readable form: \[(\d+)\]\s*\*\s*(\d+)
-        // Meaning any expression on the form "[id] * factor"
-        // ---------------------------------------------------------------------
-
-        Matcher matcher = pattern.matcher( calculatedDataElement.getExpression().getExpression() );
-
-        while ( matcher.find() )
-        {
-            // -----------------------------------------------------------------
-            // Key: Datelementid
-            // Value: Factor
-            // -----------------------------------------------------------------
-
-            factorMap.put( getDataElement( Integer.parseInt( matcher.group( 1 ) ) ), Double.parseDouble( matcher
-                .group( 2 ) ) );
-        }
-
-        return factorMap;
-    }
-
-    public Map<String, Double> getOperandFactors( CalculatedDataElement calculatedDataElement )
-    {
-        Map<String, Double> factorMap = new HashMap<String, Double>();
-
-        Pattern pattern = Pattern.compile( "\\[(\\d+\\.\\d+)\\]\\s*\\*\\s*(-?\\d+(\\.\\d)*)" );
-
-        // ---------------------------------------------------------------------
-        // In readable form: \[(\d+)\]\s*\*\s*(\d+)
-        // Meaning any expression on the form "[id] * factor"
-        // ---------------------------------------------------------------------
-
-        Matcher matcher = pattern.matcher( calculatedDataElement.getExpression().getExpression() );
-
-        while ( matcher.find() )
-        {
-            // -----------------------------------------------------------------
-            // Key: Datelementid.optioncomboid
-            // Value: Factor
-            // -----------------------------------------------------------------
-
-            factorMap.put( matcher.group( 1 ), Double.parseDouble( matcher.group( 2 ) ) );
-        }
-
-        return factorMap;
-    }
-
-    public Collection<String> getOperandIds( CalculatedDataElement calculatedDataElement )
-    {
-        Collection<String> operands = new ArrayList<String>();
-
-        Pattern pattern = Pattern.compile( "\\[(\\d+\\.\\d+)\\]" );
-
-        // ---------------------------------------------------------------------
-        // In readable form: \[(\d+)\]\s*\*\s*(\d+)
-        // Meaning any expression on the form "[id] * factor"
-        // ---------------------------------------------------------------------
-
-        Matcher matcher = pattern.matcher( calculatedDataElement.getExpression().getExpression() );
-
-        while ( matcher.find() )
-        {
-            // -----------------------------------------------------------------
-            // Datelementid.optioncomboid
-            // -----------------------------------------------------------------
-
-            operands.add( matcher.group( 1 ) );
-        }
-
-        return operands;
-    }
-
-    public Map<Integer, String> getCalculatedDataElementExpressionMap( Collection<Integer> identifiers )
-    {
-        Collection<CalculatedDataElement> dataElements = getCalculatedDataElements( identifiers );
-
-        Map<Integer, String> map = new HashMap<Integer, String>();
-
-        for ( CalculatedDataElement element : dataElements )
-        {
-            map.put( element.getId(), element.getExpression().getExpression() );
-        }
-
-        return map;
-    }
-
     public Collection<DataElement> getDataElementsByDataSets( Collection<DataSet> dataSets )
     {
         return i18n( i18nService, dataElementStore.getDataElementsByDataSets( dataSets ) );

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataelement/hibernate/HibernateDataElementStore.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataelement/hibernate/HibernateDataElementStore.java	2011-04-02 09:48:38 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataelement/hibernate/HibernateDataElementStore.java	2011-04-24 15:50:02 +0000
@@ -40,7 +40,6 @@
 import org.hibernate.Session;
 import org.hibernate.criterion.Order;
 import org.hibernate.criterion.Restrictions;
-import org.hisp.dhis.dataelement.CalculatedDataElement;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementCategoryCombo;
 import org.hisp.dhis.dataelement.DataElementOperand;
@@ -331,53 +330,6 @@
             ConversionUtils.getIdentifiers( DataSet.class, dataSets ) ).list();
     }
 
-    // -------------------------------------------------------------------------
-    // CalculatedDataElement
-    // -------------------------------------------------------------------------
-
-    @SuppressWarnings( "unchecked" )
-    public Collection<CalculatedDataElement> getAllCalculatedDataElements()
-    {
-        Session session = sessionFactory.getCurrentSession();
-
-        Criteria criteria = session.createCriteria( CalculatedDataElement.class );
-
-        return criteria.list();
-    }
-
-    public CalculatedDataElement getCalculatedDataElementByDataElement( DataElement dataElement )
-    {
-        Session session = sessionFactory.getCurrentSession();
-
-        Set<Integer> dataElementIds = new HashSet<Integer>();
-        dataElementIds.add( dataElement.getId() );
-
-        Criteria criteria = session.createCriteria( CalculatedDataElement.class ).createCriteria( "expression" )
-            .createCriteria( "dataElementsInExpression" ).add( Restrictions.in( "id", dataElementIds ) );
-
-        return (CalculatedDataElement) criteria.uniqueResult();
-    }
-
-    @SuppressWarnings( "unchecked" )
-    public Collection<CalculatedDataElement> getCalculatedDataElementsByDataElements(
-        Collection<DataElement> dataElements )
-    {
-        Session session = sessionFactory.getCurrentSession();
-
-        Set<Integer> dataElementIds = new HashSet<Integer>();
-
-        for ( DataElement dataElement : dataElements )
-        {
-            dataElementIds.add( dataElement.getId() );
-        }
-
-        Criteria criteria = session.createCriteria( CalculatedDataElement.class ).createCriteria( "expression" )
-            .createCriteria( "dataElementsInExpression" ).add( Restrictions.in( "id", dataElementIds ) );
-
-        return new HashSet<CalculatedDataElement>( criteria.list() );
-
-    }
-
     public Collection<DataElement> getDataElementsLikeName( String name )
     {
         return getLikeName( name );

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/expression/DefaultExpressionService.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/expression/DefaultExpressionService.java	2011-04-22 21:04:14 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/expression/DefaultExpressionService.java	2011-04-24 15:50:02 +0000
@@ -34,7 +34,6 @@
 
 import java.util.Collection;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 import java.util.regex.Matcher;
@@ -44,7 +43,6 @@
 import org.apache.commons.logging.LogFactory;
 import org.hisp.dhis.aggregation.AggregatedDataValueService;
 import org.hisp.dhis.common.GenericStore;
-import org.hisp.dhis.dataelement.CalculatedDataElement;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementCategoryCombo;
 import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo;
@@ -335,51 +333,6 @@
         return buffer != null ? buffer.toString() : null;
     }
 
-    public String replaceCDEsWithTheirExpression( String expression )
-    {
-        StringBuffer buffer = null;
-
-        if ( expression != null )
-        {
-            buffer = new StringBuffer();
-
-            final Set<DataElement> caclulatedDataElementsInExpression = getDataElementsInExpression( expression );
-
-            final Iterator<DataElement> iterator = caclulatedDataElementsInExpression.iterator();
-
-            while ( iterator.hasNext() )
-            {
-                if ( !(iterator.next() instanceof CalculatedDataElement) )
-                {
-                    iterator.remove();
-                }
-            }
-
-            final Matcher matcher = FORMULA_PATTERN.matcher( expression );
-
-            while ( matcher.find() )
-            {
-                String replaceString = matcher.group();
-
-                for ( DataElement dataElement : caclulatedDataElementsInExpression )
-                {
-                    if ( replaceString.startsWith( EXP_OPEN + dataElement.getId() + SEPARATOR ) )
-                    {
-                        replaceString = ((CalculatedDataElement) dataElement).getExpression().getExpression();
-
-                        break;
-                    }
-                }
-
-                matcher.appendReplacement( buffer, replaceString );
-            }
-
-            matcher.appendTail( buffer );
-        }
-
-        return buffer != null ? buffer.toString() : null;
-    }
-
     public String explodeExpression( String expression )
     {
         StringBuffer buffer = null;

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableAlteror.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableAlteror.java	2011-04-24 12:47:31 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableAlteror.java	2011-04-24 15:50:02 +0000
@@ -90,6 +90,7 @@
         executeSql( "DROP TABLE dataelement_dataelementgroupsetmembers" );
         executeSql( "DROP TABLE dashboardcontent_olapurls" );
         executeSql( "DROP TABLE olapurl" );
+        executeSql( "DROP TABLE calculateddataelement" );
         executeSql( "ALTER TABLE dataelementcategoryoption drop column categoryid" );
         executeSql( "ALTER TABLE reporttable DROP column dimension_type" );
         executeSql( "ALTER TABLE reporttable DROP column dimensiontype" );

=== removed file 'dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/dataelement/hibernate/CalculatedDataElement.hbm.xml'
--- dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/dataelement/hibernate/CalculatedDataElement.hbm.xml	2011-04-12 13:25:06 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/dataelement/hibernate/CalculatedDataElement.hbm.xml	1970-01-01 00:00:00 +0000
@@ -1,18 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE hibernate-mapping PUBLIC
-  "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
-  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd";>
-
-<hibernate-mapping>
-  <joined-subclass name="org.hisp.dhis.dataelement.CalculatedDataElement" extends="org.hisp.dhis.dataelement.DataElement"
-    table="calculateddataelement">
-
-    <key column="calculateddataelementid" />
-
-    <property name="saved" not-null="true" />
-
-    <many-to-one name="expression" class="org.hisp.dhis.expression.Expression" cascade="all" column="expressionid"
-      foreign-key="fk_expression_expressionid" />
-
-  </joined-subclass>
-</hibernate-mapping>

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataelement/DataElementServiceTest.java'
--- dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataelement/DataElementServiceTest.java	2011-03-22 05:49:48 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataelement/DataElementServiceTest.java	2011-04-24 15:50:02 +0000
@@ -28,20 +28,18 @@
  */
 
 
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
+import static junit.framework.Assert.assertTrue;
+
 import java.util.Collection;
 import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
 import java.util.Set;
 
 import org.hisp.dhis.DhisSpringTest;
-import org.hisp.dhis.expression.Expression;
-import org.hisp.dhis.system.util.UUIdUtils;
-import org.junit.Ignore;
 import org.junit.Test;
 
-import static junit.framework.Assert.*;
-
 /**
  * @author Kristian Nordal
  * @version $Id: DataElementServiceTest.java 5742 2008-09-26 11:37:35Z larshelg $
@@ -61,23 +59,6 @@
     {
         dataElementService = (DataElementService) getBean( DataElementService.ID );
     }
-
-    // -------------------------------------------------------------------------
-    // Support methods
-    // -------------------------------------------------------------------------
-    
-    private DataElement setDataElementFields( DataElement dataElement, char uniqueCharacter )
-    {
-        dataElement.setUuid( UUIdUtils.getUUId() );
-        dataElement.setName( "DataElement" + uniqueCharacter );
-        dataElement.setAlternativeName( "DataElementAlternative" + uniqueCharacter );
-        dataElement.setShortName( "DataElementShort" + uniqueCharacter );
-        dataElement.setCode( "DataElementCode" + uniqueCharacter );
-        dataElement.setDescription( "DataElementDescription" + uniqueCharacter );
-        dataElement.setAggregationOperator( DataElement.AGGREGATION_OPERATOR_SUM );
-        dataElement.setType( DataElement.VALUE_TYPE_INT );
-        return dataElement;
-    }
     
     // -------------------------------------------------------------------------
     // Tests
@@ -430,93 +411,6 @@
     }
 
     // -------------------------------------------------------------------------
-    // CalculatedDataElements
-    // -------------------------------------------------------------------------
-
-    @Ignore //TODO
-    @Test
-    public void testCalculatedDataElements()
-        throws Exception
-    {
-        DataElement deA = createDataElement('A');
-        DataElement deB = createDataElement('B');
-        DataElement deC = createDataElement('C');
-        DataElement deD = createDataElement('D');
-        DataElement deE = createDataElement('E');
-
-        int deIdA = dataElementService.addDataElement(deA);
-        int deIdB = dataElementService.addDataElement(deB);
-        int deIdC = dataElementService.addDataElement(deC);
-        int deIdD = dataElementService.addDataElement(deD);
-        dataElementService.addDataElement(deE);
-        
-        CalculatedDataElement cdeX = (CalculatedDataElement) setDataElementFields( new CalculatedDataElement (), 'X' );
-        CalculatedDataElement cdeY = (CalculatedDataElement) setDataElementFields( new CalculatedDataElement (), 'Y' );
-
-        Set<DataElement> dataElementsX = new HashSet<DataElement> ();
-        dataElementsX.add(deA);
-        dataElementsX.add(deB);
-        Expression expressionX = new Expression ( "["+deIdA+"] * 2 + ["+deIdB+"] * 3", "foo", dataElementsX );
-        cdeX.setExpression(expressionX);
-        cdeX.setSaved(true);
-        dataElementService.addDataElement(cdeX);
-        
-        Set<DataElement> dataElementsY = new HashSet<DataElement> ();
-        dataElementsY.add(deC);
-        dataElementsY.add(deD);
-        Expression expressionY = new Expression ( "["+deIdC+"] * 2 + ["+deIdD+"] * 3", "foo", dataElementsY );
-        cdeY.setExpression(expressionY);
-        cdeY.setSaved(true);
-        dataElementService.addDataElement(cdeY);
-        
-        Collection<CalculatedDataElement> cdes = dataElementService.getAllCalculatedDataElements();
-        assertEquals( 2, cdes.size() );
-        
-        //CalculatedDataElement cde;
-        CalculatedDataElement cde = dataElementService.getCalculatedDataElementByDataElement( deA );
-        assertNotNull(cde);
-        assertEquals("DataElementX", cde.getName() );
-        
-        cde = dataElementService.getCalculatedDataElementByDataElement( deE );
-        assertNull(cde);
-        
-        Set<DataElement> dataElements = new HashSet<DataElement> ();
-        dataElements.add(deA);
-        cdes = dataElementService.getCalculatedDataElementsByDataElements( dataElements );
-        assertEquals( 1, cdes.size() );
-        assertEquals("DataElementX", cdes.iterator().next().getName());
-        
-        dataElements.add(deC);
-        cdes = dataElementService.getCalculatedDataElementsByDataElements( dataElements );
-        assertEquals( 2, cdes.size() );
-
-        Iterator<CalculatedDataElement> iterator = cdes.iterator();
-        assertEquals( iterator.next().getName(), "DataElementX" );
-        assertEquals( iterator.next().getName(), "DataElementY" );
-        
-        //Make sure the results are unique
-        dataElements.add(deB);
-        cdes = dataElementService.getCalculatedDataElementsByDataElements( dataElements );
-        assertEquals( 2, cdes.size() );
-
-        iterator = cdes.iterator();
-        assertEquals( iterator.next().getName(), "DataElementX" );
-        assertEquals( iterator.next().getName(), "DataElementY" );
-
-        //Check that no other data elements are returned
-        dataElements.add(deE);
-        cdes = dataElementService.getCalculatedDataElementsByDataElements( dataElements );
-        assertEquals( 2, cdes.size() );
-        
-        Map<DataElement,Double> factorMap = dataElementService.getDataElementFactors(cdeX);
-        assertEquals( 2, factorMap.size() );
-        assertTrue(factorMap.keySet().contains(deA));
-        assertEquals( new Integer(2), factorMap.get(deA));
-        assertTrue(factorMap.keySet().contains(deB));
-        assertEquals( new Integer(3), factorMap.get(deB));
-    }
-    
-    // -------------------------------------------------------------------------
     // DataElementGroup
     // -------------------------------------------------------------------------
 

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataelement/DataElementStoreTest.java'
--- dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataelement/DataElementStoreTest.java	2011-02-15 20:14:22 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataelement/DataElementStoreTest.java	2011-04-24 15:50:02 +0000
@@ -36,17 +36,13 @@
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
-import java.util.Set;
 
 import org.hisp.dhis.DhisSpringTest;
 import org.hisp.dhis.dataset.DataSet;
 import org.hisp.dhis.dataset.DataSetService;
-import org.hisp.dhis.expression.Expression;
 import org.hisp.dhis.period.MonthlyPeriodType;
 import org.hisp.dhis.system.util.UUIdUtils;
-import org.junit.Ignore;
 import org.junit.Test;
 
 /**
@@ -74,25 +70,6 @@
         
         dataSetService = (DataSetService) getBean( DataSetService.ID );
     }
-
-    // -------------------------------------------------------------------------
-    // Support methods
-    // -------------------------------------------------------------------------
-
-    private DataElement setDataElementFields( DataElement dataElement, char uniqueCharacter )
-    {
-        dataElement.setUuid( UUIdUtils.getUUId() );
-        dataElement.setName( "DataElement" + uniqueCharacter );
-        dataElement.setAlternativeName( "DataElementAlternative" + uniqueCharacter );
-        dataElement.setShortName( "DataElementShort" + uniqueCharacter );
-        dataElement.setCode( "DataElementCode" + uniqueCharacter );
-        dataElement.setDescription( "DataElementDescription" + uniqueCharacter );
-        dataElement.setAggregationOperator( DataElement.AGGREGATION_OPERATOR_SUM );
-        dataElement.setType( DataElement.VALUE_TYPE_INT );
-        dataElement.setDomainType( DataElement.DOMAIN_TYPE_AGGREGATE );
-        
-        return dataElement;
-    }
     
     // -------------------------------------------------------------------------
     // Tests
@@ -527,83 +504,4 @@
         assertTrue( dataElements.contains( dataElementD ) );
         assertTrue( dataElements.contains( dataElementF ) );
     }
-
-    // -------------------------------------------------------------------------
-    // CalculatedDataElements
-    // -------------------------------------------------------------------------
-
-    @Ignore //TODO
-    @Test
-    public void testCalculatedDataElements()
-    {
-        DataElement deA = createDataElement('A');
-        DataElement deB = createDataElement('B');
-        DataElement deC = createDataElement('C');
-        DataElement deD = createDataElement('D');
-        DataElement deE = createDataElement('E');
-
-        int deIdA = dataElementStore.addDataElement(deA);
-        int deIdB = dataElementStore.addDataElement(deB);
-        int deIdC = dataElementStore.addDataElement(deC);
-        int deIdD = dataElementStore.addDataElement(deD);
-        dataElementStore.addDataElement(deE);
-        
-        CalculatedDataElement cdeX = (CalculatedDataElement) setDataElementFields( new CalculatedDataElement (), 'X' );
-        CalculatedDataElement cdeY = (CalculatedDataElement) setDataElementFields( new CalculatedDataElement (), 'Y' );
-
-        Set<DataElement> dataElementsX = new HashSet<DataElement> ();
-        dataElementsX.add(deA);
-        dataElementsX.add(deB);
-        Expression expressionX = new Expression ( "["+deIdA+"] * 2 + ["+deIdB+"] * 3", "foo", dataElementsX );
-        cdeX.setExpression(expressionX);
-        cdeX.setSaved(true);
-        dataElementStore.addDataElement(cdeX);
-        
-        Set<DataElement> dataElementsY = new HashSet<DataElement> ();
-        dataElementsY.add(deC);
-        dataElementsY.add(deD);
-        Expression expressionY = new Expression ( "["+deIdC+"] * 2 + ["+deIdD+"] * 3", "foo", dataElementsY );
-        cdeY.setExpression(expressionY);
-        cdeY.setSaved(true);
-        dataElementStore.addDataElement(cdeY);
-        
-        Collection<CalculatedDataElement> cdes = dataElementStore.getAllCalculatedDataElements();
-        assertEquals( 2, cdes.size() );
-        
-        //CalculatedDataElement cde;
-        CalculatedDataElement cde = dataElementStore.getCalculatedDataElementByDataElement( deA );
-        assertNotNull(cde);
-        assertEquals("DataElementX", cde.getName() );
-        
-        cde = dataElementStore.getCalculatedDataElementByDataElement( deE );
-        assertNull(cde);
-        
-        Set<DataElement> dataElements = new HashSet<DataElement> ();
-        dataElements.add(deA);
-        cdes = dataElementStore.getCalculatedDataElementsByDataElements( dataElements );
-        assertEquals( 1, cdes.size() );
-        assertEquals("DataElementX", cdes.iterator().next().getName());
-        
-        dataElements.add(deC);
-        cdes = dataElementStore.getCalculatedDataElementsByDataElements( dataElements );
-        assertEquals( 2, cdes.size() );
-
-        Iterator<CalculatedDataElement> iterator = cdes.iterator();
-        assertEquals( iterator.next().getName(), "DataElementX" );
-        assertEquals( iterator.next().getName(), "DataElementY" );
-        
-        //Make sure the results are unique
-        dataElements.add(deB);
-        cdes = dataElementStore.getCalculatedDataElementsByDataElements( dataElements );
-        assertEquals( 2, cdes.size() );
-
-        iterator = cdes.iterator();
-        assertEquals( iterator.next().getName(), "DataElementX" );
-        assertEquals( iterator.next().getName(), "DataElementY" );
-
-        //Check that no other data elements are returned
-        dataElements.add(deE);
-        cdes = dataElementStore.getCalculatedDataElementsByDataElements( dataElements );
-        assertEquals( 2, cdes.size() );
-    }
 }

=== removed directory 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/calculateddataelement'
=== removed file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/calculateddataelement/CalculatedDataElementDataMart.java'
--- dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/calculateddataelement/CalculatedDataElementDataMart.java	2011-04-15 15:02:55 +0000
+++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/calculateddataelement/CalculatedDataElementDataMart.java	1970-01-01 00:00:00 +0000
@@ -1,45 +0,0 @@
-package org.hisp.dhis.datamart.calculateddataelement;
-
-/*
- * Copyright (c) 2004-2010, 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.CalculatedDataElement;
-import org.hisp.dhis.dataelement.DataElementOperand;
-import org.hisp.dhis.organisationunit.OrganisationUnit;
-import org.hisp.dhis.period.Period;
-
-/**
- * @author Lars Helge Overland
- * @version $Id$
- */
-public interface CalculatedDataElementDataMart
-{
-    int exportCalculatedDataElements( Collection<CalculatedDataElement> calculatedDataElements, 
-        Collection<Period> periods, Collection<OrganisationUnit> organisationUnits, Collection<DataElementOperand> operands, String key );
-}

=== removed file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/calculateddataelement/DefaultCalculatedDataElementDataMart.java'
--- dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/calculateddataelement/DefaultCalculatedDataElementDataMart.java	2011-04-15 15:02:55 +0000
+++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/calculateddataelement/DefaultCalculatedDataElementDataMart.java	1970-01-01 00:00:00 +0000
@@ -1,185 +0,0 @@
-package org.hisp.dhis.datamart.calculateddataelement;
-
-/*
- * Copyright (c) 2004-2010, 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 static org.hisp.dhis.datamart.util.ParserUtil.generateExpression;
-import static org.hisp.dhis.system.util.MathUtils.calculateExpression;
-import static org.hisp.dhis.system.util.MathUtils.getRounded;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.amplecode.quick.BatchHandler;
-import org.amplecode.quick.BatchHandlerFactory;
-import org.hisp.dhis.aggregation.AggregatedDataValue;
-import org.hisp.dhis.dataelement.CalculatedDataElement;
-import org.hisp.dhis.dataelement.DataElement;
-import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo;
-import org.hisp.dhis.dataelement.DataElementCategoryService;
-import org.hisp.dhis.dataelement.DataElementOperand;
-import org.hisp.dhis.datamart.aggregation.cache.AggregationCache;
-import org.hisp.dhis.datamart.aggregation.dataelement.DataElementAggregator;
-import org.hisp.dhis.jdbc.batchhandler.AggregatedDataValueBatchHandler;
-import org.hisp.dhis.organisationunit.OrganisationUnit;
-import org.hisp.dhis.organisationunit.OrganisationUnitHierarchy;
-import org.hisp.dhis.organisationunit.OrganisationUnitService;
-import org.hisp.dhis.period.Period;
-import org.hisp.dhis.period.PeriodType;
-
-/**
- * @author Lars Helge Overland
- * @version $Id$
- */
-public class DefaultCalculatedDataElementDataMart
-    implements CalculatedDataElementDataMart
-{
-    private static final int DECIMALS = 1;
-    
-    // -------------------------------------------------------------------------
-    // Dependencies
-    // -------------------------------------------------------------------------
-    
-    private OrganisationUnitService organisationUnitService;
-
-    public void setOrganisationUnitService( OrganisationUnitService organisationUnitService )
-    {
-        this.organisationUnitService = organisationUnitService;
-    }
-
-    private DataElementAggregator sumIntAggregator;
-
-    public void setSumIntAggregator( DataElementAggregator sumIntAggregator )
-    {
-        this.sumIntAggregator = sumIntAggregator;
-    }
-
-    private DataElementAggregator averageIntAggregator;
-
-    public void setAverageIntAggregator( DataElementAggregator averageIntDataElementAggregator )
-    {
-        this.averageIntAggregator = averageIntDataElementAggregator;
-    }
-
-    private DataElementAggregator averageIntSingleValueAggregator;
-
-    public void setAverageIntSingleValueAggregator( DataElementAggregator averageIntSingleValueAggregator )
-    {
-        this.averageIntSingleValueAggregator = averageIntSingleValueAggregator;
-    }
-    
-    private DataElementCategoryService categoryService;
-
-    public void setCategoryService( DataElementCategoryService categoryService )
-    {
-        this.categoryService = categoryService;
-    }
-
-    private AggregationCache aggregationCache;
-
-    public void setAggregationCache( AggregationCache aggregationCache )
-    {
-        this.aggregationCache = aggregationCache;
-    }    
-
-    private BatchHandlerFactory batchHandlerFactory;
-
-    public void setBatchHandlerFactory( BatchHandlerFactory batchHandlerFactory )
-    {
-        this.batchHandlerFactory = batchHandlerFactory;
-    }
-
-    // -------------------------------------------------------------------------
-    // CalculatedDataElementDataMart implementation
-    // -------------------------------------------------------------------------
-
-    public int exportCalculatedDataElements( final Collection<CalculatedDataElement> calculatedDataElements, final Collection<Period> periods,
-        final Collection<OrganisationUnit> organisationUnits, final Collection<DataElementOperand> operands, String key )
-    {
-        final DataElementCategoryOptionCombo categoryOptionCombo = categoryService.getDefaultDataElementCategoryOptionCombo();
-        
-        final BatchHandler<AggregatedDataValue> batchHandler = batchHandlerFactory.createBatchHandler( AggregatedDataValueBatchHandler.class ).init();
-
-        final OrganisationUnitHierarchy hierarchy = organisationUnitService.getOrganisationUnitHierarchy().prepareChildren( organisationUnits );
-        
-        int count = 0;
-
-        CalculatedDataElement calculatedDataElement = null;
-
-        double aggregatedValue = 0.0;
-        
-        final AggregatedDataValue dataValue = new AggregatedDataValue();
-
-        for ( final Period period : periods )
-        {
-            final PeriodType periodType = period.getPeriodType();
-
-            final Collection<DataElementOperand> sumOperands = sumIntAggregator.filterOperands( operands, periodType );
-            final Collection<DataElementOperand> averageOperands = averageIntAggregator.filterOperands( operands, periodType );
-            final Collection<DataElementOperand> averageSingleValueOperands = averageIntSingleValueAggregator.filterOperands( operands, periodType );
-
-            for ( final OrganisationUnit unit : organisationUnits )
-            {
-                final int level = aggregationCache.getLevelOfOrganisationUnit( unit.getId() );
-                
-                final Map<DataElementOperand, Double> sumIntValueMap = sumIntAggregator.getAggregatedValues( sumOperands, period, unit, level, hierarchy, key );                
-                final Map<DataElementOperand, Double> averageIntValueMap = averageIntAggregator.getAggregatedValues( averageOperands, period, unit, level, hierarchy, key );
-                final Map<DataElementOperand, Double> averageIntSingleValueMap = averageIntSingleValueAggregator.getAggregatedValues( averageSingleValueOperands, period, unit, level, hierarchy, key );
-                
-                final Map<DataElementOperand, Double> valueMap = new HashMap<DataElementOperand, Double>( sumIntValueMap );
-                valueMap.putAll( averageIntValueMap );
-                valueMap.putAll( averageIntSingleValueMap );
-                
-                for ( final DataElement element : calculatedDataElements )
-                {
-                    calculatedDataElement = (CalculatedDataElement) element;
-                    
-                    aggregatedValue = calculateExpression( generateExpression( calculatedDataElement.getExpression().getExpression(), valueMap ) );
-                    
-                    dataValue.clear();
-                    
-                    dataValue.setDataElementId( calculatedDataElement.getId() );
-                    dataValue.setCategoryOptionComboId( categoryOptionCombo.getId() );
-                    dataValue.setPeriodId( period.getId() );
-                    dataValue.setPeriodTypeId( periodType.getId() );
-                    dataValue.setOrganisationUnitId( unit.getId() );
-                    dataValue.setLevel( level );
-                    dataValue.setValue( getRounded( aggregatedValue, DECIMALS ) );
-
-                    batchHandler.addObject( dataValue );
-                    
-                    count++;                    
-                }
-            }
-        }
-
-        batchHandler.flush();
-        
-        return count;
-    }
-}

=== modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/engine/DefaultDataMartEngine.java'
--- dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/engine/DefaultDataMartEngine.java	2011-04-15 15:02:55 +0000
+++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/engine/DefaultDataMartEngine.java	2011-04-24 15:50:02 +0000
@@ -35,14 +35,12 @@
 import org.apache.commons.logging.LogFactory;
 import org.hisp.dhis.aggregation.AggregatedDataValueService;
 import org.hisp.dhis.common.ProcessState;
-import org.hisp.dhis.dataelement.CalculatedDataElement;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementCategoryService;
 import org.hisp.dhis.dataelement.DataElementOperand;
 import org.hisp.dhis.dataelement.DataElementService;
 import org.hisp.dhis.datamart.aggregation.cache.AggregationCache;
 import org.hisp.dhis.datamart.aggregation.dataelement.DataElementAggregator;
-import org.hisp.dhis.datamart.calculateddataelement.CalculatedDataElementDataMart;
 import org.hisp.dhis.datamart.crosstab.CrossTabService;
 import org.hisp.dhis.datamart.dataelement.DataElementDataMart;
 import org.hisp.dhis.datamart.indicator.IndicatorDataMart;
@@ -105,13 +103,6 @@
         this.indicatorDataMart = indicatorDataMart;
     }
 
-    private CalculatedDataElementDataMart calculatedDataElementDataMart;
-
-    public void setCalculatedDataElementDataMart( CalculatedDataElementDataMart calculatedDataElementDataMart )
-    {
-        this.calculatedDataElementDataMart = calculatedDataElementDataMart;
-    }
-
     private DataElementAggregator sumIntAggregator;
 
     public void setSumIntAggregator( DataElementAggregator sumIntDataElementAggregator )
@@ -208,9 +199,7 @@
         Collection<Indicator> indicators = indicatorService.getIndicators( indicatorIds );
         Collection<Period> periods = periodService.getPeriods( periodIds );
         Collection<OrganisationUnit> organisationUnits = organisationUnitService.getOrganisationUnits( organisationUnitIds );
-        Collection<CalculatedDataElement> calculatedDataElements = dataElementService.getCalculatedDataElements( dataElementIds );
-        Collection<DataElement> nonCalculatedDataElements = dataElementService.getDataElements( dataElementIds );
-        nonCalculatedDataElements.removeAll( calculatedDataElements );
+        Collection<DataElement> dataElements = dataElementService.getDataElements( dataElementIds );
 
         // ---------------------------------------------------------------------
         // Explode indicator expressions
@@ -226,14 +215,12 @@
         // Get operands
         // ---------------------------------------------------------------------
         
-        Collection<DataElementOperand> nonCalculatedOperands = categoryService.getOperands( nonCalculatedDataElements );
+        Collection<DataElementOperand> dataElementOperands = categoryService.getOperands( dataElements );
         Collection<DataElementOperand> indicatorOperands = categoryService.populateOperands( getOperandsInIndicators( indicators ) );
-        Collection<DataElementOperand> calculatedOperands = categoryService.populateOperands( getOperandsInCalculatedDataElements( calculatedDataElements ) );
         
         Set<DataElementOperand> allOperands = new HashSet<DataElementOperand>();
-        allOperands.addAll( nonCalculatedOperands );
+        allOperands.addAll( dataElementOperands );
         allOperands.addAll( indicatorOperands );
-        allOperands.addAll( calculatedOperands );
 
         log.info( "Filtered data elements, number of operands: " + allOperands.size() + ", " + TimeUtils.getHMS() );
 
@@ -243,9 +230,8 @@
 
         allOperands = new HashSet<DataElementOperand>( crossTabService.getOperandsWithData( allOperands ) );
 
-        nonCalculatedOperands.retainAll( allOperands );
+        dataElementOperands.retainAll( allOperands );
         indicatorOperands.retainAll( allOperands );
-        calculatedOperands.retainAll( allOperands );
         
         log.info( "Number of operands with data: " + allOperands.size() + ", "+ TimeUtils.getHMS() );
 
@@ -272,7 +258,6 @@
         // ---------------------------------------------------------------------
 
         boolean isIndicators = indicators != null && indicators.size() > 0;
-        boolean isCalculatedDataElements = calculatedDataElements != null && calculatedDataElements.size() > 0;
         
         aggregatedDataValueService.dropIndex( true, isIndicators );
         
@@ -296,25 +281,25 @@
 
         state.setMessage( "exporting_data_for_data_elements" );
 
-        if ( nonCalculatedOperands.size() > 0 )
+        if ( dataElementOperands.size() > 0 )
         {
-            count += dataElementDataMart.exportDataValues( nonCalculatedOperands, periods, organisationUnits, sumIntAggregator, key );
+            count += dataElementDataMart.exportDataValues( dataElementOperands, periods, organisationUnits, sumIntAggregator, key );
 
             log.info( "Exported values for data element operands with sum aggregation operator of type number: " + TimeUtils.getHMS() );
             
-            count += dataElementDataMart.exportDataValues( nonCalculatedOperands, periods, organisationUnits, averageIntAggregator, key );
+            count += dataElementDataMart.exportDataValues( dataElementOperands, periods, organisationUnits, averageIntAggregator, key );
 
             log.info( "Exported values for data element operands with average aggregation operator of type number: " + TimeUtils.getHMS() );
             
-            count += dataElementDataMart.exportDataValues( nonCalculatedOperands, periods, organisationUnits, averageIntSingleValueAggregator, key );
+            count += dataElementDataMart.exportDataValues( dataElementOperands, periods, organisationUnits, averageIntSingleValueAggregator, key );
 
             log.info( "Exported values for data element operands with average aggregation operator with single value of type number: " + TimeUtils.getHMS() );
             
-            count += dataElementDataMart.exportDataValues( nonCalculatedOperands, periods, organisationUnits, sumBoolAggregator, key );
+            count += dataElementDataMart.exportDataValues( dataElementOperands, periods, organisationUnits, sumBoolAggregator, key );
 
             log.info( "Exported values for data element operands with sum aggregation operator of type yes/no: " + TimeUtils.getHMS() );
             
-            count += dataElementDataMart.exportDataValues( nonCalculatedOperands, periods, organisationUnits, averageBoolAggregator, key );
+            count += dataElementDataMart.exportDataValues( dataElementOperands, periods, organisationUnits, averageBoolAggregator, key );
 
             log.info( "Exported values for data element operands with average aggregation operator of type yes/no: " + TimeUtils.getHMS() );
         }
@@ -333,19 +318,6 @@
         }
 
         // ---------------------------------------------------------------------
-        // Calculated data element export
-        // ---------------------------------------------------------------------
-
-        state.setMessage( "exporting_data_for_calculated_data_elements" );
-
-        if ( isCalculatedDataElements )
-        {
-            count += calculatedDataElementDataMart.exportCalculatedDataElements( calculatedDataElements, periods, organisationUnits, calculatedOperands, key );
-
-            log.info( "Exported values for calculated data elements (" + calculatedDataElements.size() + "): " + TimeUtils.getHMS() );
-        }
-
-        // ---------------------------------------------------------------------
         // Drop crosstab tables
         // ---------------------------------------------------------------------
 
@@ -392,20 +364,4 @@
         
         return operands;
     }
-    
-    private Set<DataElementOperand> getOperandsInCalculatedDataElements( final Collection<CalculatedDataElement> calculatedDataElements )
-    {
-        final Set<DataElementOperand> operands = new HashSet<DataElementOperand>();
-        
-        for ( final CalculatedDataElement calculatedDataElement : calculatedDataElements )
-        {
-            if ( calculatedDataElement != null && calculatedDataElement.getExpression() != null )
-            {
-                Set<DataElementOperand> temp = expressionService.getOperandsInExpression( calculatedDataElement.getExpression().getExpression() );
-                operands.addAll( temp != null ? temp : new HashSet<DataElementOperand>() );
-            }
-        }
-        
-        return operands;
-    }
 }

=== modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-services/dhis-service-datamart-default/src/main/resources/META-INF/dhis/beans.xml	2011-04-16 16:18:58 +0000
+++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/resources/META-INF/dhis/beans.xml	2011-04-24 15:50:02 +0000
@@ -40,8 +40,6 @@
       ref="org.hisp.dhis.datamart.dataelement.DataElementDataMart"/>
     <property name="indicatorDataMart"
       ref="org.hisp.dhis.datamart.indicator.IndicatorDataMart"/>
-    <property name="calculatedDataElementDataMart"
-      ref="org.hisp.dhis.datamart.calculateddataelement.CalculatedDataElementDataMart"/>
     <property name="sumIntAggregator"
       ref="org.hisp.dhis.datamart.aggregation.dataelement.SumIntAggregator"/>
     <property name="averageIntAggregator"
@@ -174,26 +172,7 @@
       ref="org.hisp.dhis.options.SystemSettingManager"/>
 	<property name="batchHandlerFactory" ref="batchHandlerFactory"/>
   </bean>
-  
-  <!-- CalculatedDataElementDataMart -->
-
-  <bean id="org.hisp.dhis.datamart.calculateddataelement.CalculatedDataElementDataMart"
-    class="org.hisp.dhis.datamart.calculateddataelement.DefaultCalculatedDataElementDataMart">
-    <property name="organisationUnitService"
-      ref="org.hisp.dhis.organisationunit.OrganisationUnitService"/>
-    <property name="sumIntAggregator"
-      ref="org.hisp.dhis.datamart.aggregation.dataelement.SumIntAggregator"/>
-    <property name="averageIntAggregator"
-      ref="org.hisp.dhis.datamart.aggregation.dataelement.AverageIntAggregator"/>
-	<property name="averageIntSingleValueAggregator"
-      ref="org.hisp.dhis.datamart.aggregation.dataelement.AverageIntSingleValueAggregator"/>
-    <property name="categoryService"
-      ref="org.hisp.dhis.dataelement.DataElementCategoryService"/>
-    <property name="aggregationCache"
-      ref="org.hisp.dhis.datamart.aggregation.cache.AggregationCache"/>
-	<property name="batchHandlerFactory" ref="batchHandlerFactory"/>
-  </bean>
-  
+    
   <!-- DeletionHandler -->
   
   <bean id="org.hisp.dhis.datamart.DataMartExportDeletionHandler"

=== modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/test/java/org/hisp/dhis/datamart/DataMartServiceTest.java'
--- dhis-2/dhis-services/dhis-service-datamart-default/src/test/java/org/hisp/dhis/datamart/DataMartServiceTest.java	2010-08-31 05:47:11 +0000
+++ dhis-2/dhis-services/dhis-service-datamart-default/src/test/java/org/hisp/dhis/datamart/DataMartServiceTest.java	2011-04-24 15:50:02 +0000
@@ -35,7 +35,6 @@
 
 import org.hisp.dhis.DhisTest;
 import org.hisp.dhis.aggregation.AggregatedDataValueService;
-import org.hisp.dhis.dataelement.CalculatedDataElement;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementCategoryCombo;
 import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo;
@@ -566,75 +565,4 @@
         assertEquals( aggregatedDataValueService.getAggregatedValue( indicatorA, periodC, unitG ), 16.1, 0.5 );
         assertEquals( aggregatedDataValueService.getAggregatedValue( indicatorA, periodC, unitH ), 412.1, 0.5 );
     }
-
-    @Test
-    public void testCalculatedDataElementDataMart()
-    {
-        // ---------------------------------------------------------------------
-        // Setup DataElements
-        // ---------------------------------------------------------------------
-
-        DataElement dataElementC = createDataElement( 'C', DataElement.VALUE_TYPE_INT, DataElement.AGGREGATION_OPERATOR_SUM, categoryCombo );
-        DataElement dataElementD = createDataElement( 'D', DataElement.VALUE_TYPE_INT, DataElement.AGGREGATION_OPERATOR_SUM, categoryCombo );
-        
-        int idC = dataElementService.addDataElement( dataElementC );
-        int idD = dataElementService.addDataElement( dataElementD );
-        
-        dataSet.getDataElements().add( dataElementC );
-        dataSet.getDataElements().add( dataElementD );
-        dataSetService.updateDataSet( dataSet );
-        dataElementC.getDataSets().add( dataSet );
-        dataElementD.getDataSets().add( dataSet );
-        dataElementService.updateDataElement( dataElementC );
-        dataElementService.updateDataElement( dataElementD );
-
-        // ---------------------------------------------------------------------
-        // Setup DataValues
-        // ---------------------------------------------------------------------
-
-        dataValueService.addDataValue( createDataValue( dataElementC, periodA, unitF, "40", categoryOptionCombo ) );
-        dataValueService.addDataValue( createDataValue( dataElementC, periodA, unitG, "10", categoryOptionCombo ) );
-        dataValueService.addDataValue( createDataValue( dataElementC, periodA, unitH, "75", categoryOptionCombo ) );        
-        dataValueService.addDataValue( createDataValue( dataElementC, periodB, unitF, "45", categoryOptionCombo ) );
-        dataValueService.addDataValue( createDataValue( dataElementC, periodB, unitG, "10", categoryOptionCombo ) );
-        dataValueService.addDataValue( createDataValue( dataElementC, periodB, unitH, "75", categoryOptionCombo ) );        
-        dataValueService.addDataValue( createDataValue( dataElementC, periodC, unitF, "40", categoryOptionCombo ) );
-        dataValueService.addDataValue( createDataValue( dataElementC, periodC, unitG, "10", categoryOptionCombo ) );
-        dataValueService.addDataValue( createDataValue( dataElementC, periodC, unitH, "70", categoryOptionCombo ) );
-
-        dataValueService.addDataValue( createDataValue( dataElementD, periodA, unitF, "65", categoryOptionCombo ) );
-        dataValueService.addDataValue( createDataValue( dataElementD, periodA, unitG, "90", categoryOptionCombo ) );
-        dataValueService.addDataValue( createDataValue( dataElementD, periodA, unitH, "25", categoryOptionCombo ) );        
-        dataValueService.addDataValue( createDataValue( dataElementD, periodB, unitF, "10", categoryOptionCombo ) );
-        dataValueService.addDataValue( createDataValue( dataElementD, periodB, unitG, "55", categoryOptionCombo ) );
-        dataValueService.addDataValue( createDataValue( dataElementD, periodB, unitH, "85", categoryOptionCombo ) );        
-        dataValueService.addDataValue( createDataValue( dataElementD, periodC, unitF, "45", categoryOptionCombo ) );
-        dataValueService.addDataValue( createDataValue( dataElementD, periodC, unitG, "15", categoryOptionCombo ) );
-        dataValueService.addDataValue( createDataValue( dataElementD, periodC, unitH, "25", categoryOptionCombo ) );
-
-        // ---------------------------------------------------------------------
-        // Setup CalculatedDataElement
-        // ---------------------------------------------------------------------
-
-        String suffix = Expression.SEPARATOR + categoryOptionCombo.getId();
-        
-        Expression expression = createExpression( 'A', "(2*[" + idC + suffix + "])+(1*[" + idD + suffix + "])", null );
-        
-        expressionService.addExpression( expression );
-        
-        CalculatedDataElement calculated = createCalculatedDataElement( 'E', DataElement.VALUE_TYPE_INT, DataElement.AGGREGATION_OPERATOR_SUM, categoryCombo, expression );
-        
-        dataElementIds.clear();
-        dataElementIds.add( dataElementService.addDataElement( calculated ) );
-        
-        dataMartService.export( dataElementIds, indicatorIds, periodIds, organisationUnitIds );
-
-        // ---------------------------------------------------------------------
-        // Assert
-        // ---------------------------------------------------------------------
-        
-        assertEquals( 430.0, aggregatedDataValueService.getAggregatedValue( calculated, categoryOptionCombo, periodA, unitF ) );
-        assertEquals( 110.0, aggregatedDataValueService.getAggregatedValue( calculated, categoryOptionCombo, periodA, unitG ) );
-        assertEquals( 175.0, aggregatedDataValueService.getAggregatedValue( calculated, categoryOptionCombo, periodA, unitH ) );
-    }
 }

=== modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/ExportParams.java'
--- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/ExportParams.java	2011-02-02 17:56:01 +0000
+++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/ExportParams.java	2011-04-24 15:50:02 +0000
@@ -61,8 +61,6 @@
 
     private Collection<Integer> dataElements = new ArrayList<Integer>();
     
-    private Collection<Integer> calculatedDataElements = new ArrayList<Integer>();
-    
     private Collection<Integer> dataElementGroups = new ArrayList<Integer>();
     
     private Collection<Integer> dataElementGroupSets = new ArrayList<Integer>();
@@ -115,35 +113,6 @@
     // Getters & setters
     // -------------------------------------------------------------------------
 
-    public Collection<Integer> getAllDataElements()
-    {
-        if ( dataElements == null && calculatedDataElements == null )
-        {
-            return null;
-        }
-        else if ( dataElements == null && calculatedDataElements != null )
-        {
-            return calculatedDataElements;
-        }
-        else if ( dataElements != null && calculatedDataElements == null )
-        {
-            return dataElements;
-        }
-        else
-        {
-            final Collection<Integer> elements = getDataElements();
-            
-            elements.addAll( getCalculatedDataElements() );
-            
-            return elements;
-        }
-        
-    }
-    
-    // -------------------------------------------------------------------------
-    // Getters & setters
-    // -------------------------------------------------------------------------
-
     public boolean isIncludeDataValues()
     {
         return includeDataValues;
@@ -264,16 +233,6 @@
         this.dataElements = dataElements;
     }
 
-    public Collection<Integer> getCalculatedDataElements()
-    {
-        return calculatedDataElements;
-    }
-
-    public void setCalculatedDataElements( Collection<Integer> calculatedDataElements )
-    {
-        this.calculatedDataElements = calculatedDataElements;
-    }
-
     public Collection<Integer> getDataElementGroups()
     {
         return dataElementGroups;

=== modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/ImportObjectManager.java'
--- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/ImportObjectManager.java	2011-04-24 12:47:31 +0000
+++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/ImportObjectManager.java	2011-04-24 15:50:02 +0000
@@ -47,8 +47,6 @@
     
     void importDataElements();
     
-    void importCalculatedDataElements();
-    
     void importDataElementGroups();
     
     void importDataElementGroupMembers();

=== modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/util/Dhis14ParsingUtils.java'
--- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/util/Dhis14ParsingUtils.java	2010-04-12 21:23:33 +0000
+++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/util/Dhis14ParsingUtils.java	2011-04-24 15:50:02 +0000
@@ -27,15 +27,6 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-import static org.hisp.dhis.expression.Expression.SEPARATOR;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.hisp.dhis.dataelement.CalculatedDataElement;
-import org.hisp.dhis.dataelement.DataElementOperand;
 
 /**
  * @author Lars Helge Overland
@@ -58,35 +49,5 @@
         }
         
         return string;
-    }    
-
-    /**
-     * Gets the operands and corresponding factor from the calculated data element
-     * expression.
-     * 
-     * @param calculatedDataElement the calculated data element.
-     * @return a map with operands and factors.
-     */
-    public static Map<DataElementOperand, Double> getOperandFactors( CalculatedDataElement calculatedDataElement )
-    {
-        Map<DataElementOperand, Double> factorMap = new HashMap<DataElementOperand, Double>();
-
-        Pattern pattern = Pattern.compile( "\\[(\\d+\\.\\d+)\\]\\s*\\*\\s*(-?\\d+)" ); // "[id] * factor"
-
-        Matcher matcher = pattern.matcher( calculatedDataElement.getExpression().getExpression() );
-
-        while ( matcher.find() )
-        {
-            final DataElementOperand operand = new DataElementOperand();
-            
-            String operandString = matcher.group( 1 );
-            
-            operand.setDataElementId( Integer.valueOf( operandString.substring( 0, operandString.indexOf( SEPARATOR ) ) ) );
-            operand.setOptionComboId( Integer.valueOf( operandString.substring( operandString.indexOf( SEPARATOR ) + 1, operandString.length() ) ) );
-            
-            factorMap.put( operand, Double.parseDouble( matcher.group( 2 ) ) );
-        }
-
-        return factorMap;
     }
 }

=== modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/xml/converter/DataElementConverter.java'
--- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/xml/converter/DataElementConverter.java	2011-04-22 13:43:13 +0000
+++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/xml/converter/DataElementConverter.java	2011-04-24 15:50:02 +0000
@@ -130,7 +130,7 @@
     
     public void write( XMLWriter writer, ExportParams params )
     {
-        Collection<DataElement> elements = dataElementService.getDataElements( params.getAllDataElements() ); // Calculated elements handled together
+        Collection<DataElement> elements = dataElementService.getDataElements( params.getDataElements() ); // Calculated elements handled together
         
         if ( elements != null && elements.size() > 0 )
         {

=== modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/xml/converter/DataElementGroupMemberConverter.java'
--- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/xml/converter/DataElementGroupMemberConverter.java	2010-04-12 21:23:33 +0000
+++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/xml/converter/DataElementGroupMemberConverter.java	2011-04-24 15:50:02 +0000
@@ -72,7 +72,7 @@
     {
         Collection<DataElementGroup> groups = dataElementService.getDataElementGroups( params.getDataElementGroups() );
         
-        Collection<DataElement> elements = dataElementService.getDataElements( params.getAllDataElements() );
+        Collection<DataElement> elements = dataElementService.getDataElements( params.getDataElements() );
         
         if ( groups != null && groups.size() >  0 && elements != null && elements.size() > 0 )
         {

=== removed file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/CalculatedDataElementConverter.java'
--- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/CalculatedDataElementConverter.java	2010-05-29 16:06:56 +0000
+++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/CalculatedDataElementConverter.java	1970-01-01 00:00:00 +0000
@@ -1,180 +0,0 @@
-package org.hisp.dhis.importexport.dxf.converter;
-
-/*
- * Copyright (c) 2004-2010, 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.Map;
-
-import org.amplecode.staxwax.reader.XMLReader;
-import org.amplecode.staxwax.writer.XMLWriter;
-import org.hisp.dhis.dataelement.CalculatedDataElement;
-import org.hisp.dhis.dataelement.DataElement;
-import org.hisp.dhis.dataelement.DataElementCategoryCombo;
-import org.hisp.dhis.dataelement.DataElementService;
-import org.hisp.dhis.expression.Expression;
-import org.hisp.dhis.expression.ExpressionService;
-import org.hisp.dhis.importexport.ExportParams;
-import org.hisp.dhis.importexport.ImportObjectService;
-import org.hisp.dhis.importexport.ImportParams;
-import org.hisp.dhis.importexport.XMLConverter;
-import org.hisp.dhis.importexport.importer.CalculatedDataElementImporter;
-
-/**
- * @author Lars Helge Overland
- * @version $Id$
- */
-public class CalculatedDataElementConverter
-    extends CalculatedDataElementImporter implements XMLConverter
-{
-    public static final String COLLECTION_NAME = "calculatedDataElements";
-    public static final String ELEMENT_NAME = "calculatedDataElement";
-
-    private static final String FIELD_ID = "id";
-    private static final String FIELD_UUID = "uuid";
-    private static final String FIELD_NAME = "name";
-    private static final String FIELD_ALTERNATIVE_NAME = "alternativeName";
-    private static final String FIELD_SHORT_NAME = "shortName";
-    private static final String FIELD_CODE = "code";
-    private static final String FIELD_DESCRIPTION = "description";
-    private static final String FIELD_ACTIVE = "active";
-    private static final String FIELD_TYPE = "type";
-    private static final String FIELD_AGGREGATION_OPERATOR = "aggregationOperator";
-    private static final String FIELD_CATEGORY_COMBO = "categoryCombo";
-    private static final String FIELD_SAVED = "saved";
-    private static final String FIELD_EXPRESSION = "expression";
-
-    private ExpressionService expressionService;
-    
-    private Map<Object, Integer> dataElementMapping;
-    private Map<Object, Integer> categoryComboMapping;
-    private Map<Object, Integer> categoryOptionComboMapping;
-    
-    // -------------------------------------------------------------------------
-    // Constructor
-    // -------------------------------------------------------------------------
-
-    /**
-     * Constructor for write operations.
-     */
-    public CalculatedDataElementConverter( DataElementService dataElementService )
-    {
-        this.dataElementService = dataElementService;
-    }
-    
-    /**
-     * Constructor for read operations.
-     * 
-     * @param importObjectService the importObjectService to use.
-     * @param dataElementService the dataElementService to use.
-     * @param expressionService the expressionService to use.
-     * @param categoryComboMapping the categoryComboMapping to use.
-     * @param categoryOptionComboMapping the categoryOptionComboMapping to use.
-     */
-    public CalculatedDataElementConverter( ImportObjectService importObjectService,
-        DataElementService dataElementService,
-        ExpressionService expressionService,
-        Map<Object, Integer> dataElementMapping,
-        Map<Object, Integer> categoryComboMapping,
-        Map<Object, Integer> categoryOptionComboMapping )
-    {
-        this.importObjectService = importObjectService;
-        this.dataElementService = dataElementService;
-        this.expressionService = expressionService;
-        this.dataElementMapping = dataElementMapping;
-        this.categoryComboMapping = categoryComboMapping;
-        this.categoryOptionComboMapping = categoryOptionComboMapping;
-    }
-
-    // -------------------------------------------------------------------------
-    // XMLConverter implementation
-    // -------------------------------------------------------------------------
-
-    public void write( XMLWriter writer, ExportParams params )
-    {
-        Collection<CalculatedDataElement> elements = dataElementService.getCalculatedDataElements( params.getCalculatedDataElements() );
-        
-        if ( elements != null && elements.size() > 0 )
-        {
-            writer.openElement( COLLECTION_NAME );
-            
-            for ( CalculatedDataElement element : elements )
-            {
-                writer.openElement( ELEMENT_NAME );
-                
-                writer.writeElement( FIELD_ID, String.valueOf( element.getId() ) );
-                writer.writeElement( FIELD_UUID, element.getUuid() );
-                writer.writeElement( FIELD_NAME, element.getName() );
-                writer.writeElement( FIELD_ALTERNATIVE_NAME, element.getAlternativeName() );
-                writer.writeElement( FIELD_SHORT_NAME, element.getShortName() );
-                writer.writeElement( FIELD_CODE, element.getCode() );
-                writer.writeElement( FIELD_DESCRIPTION, element.getDescription() );
-                writer.writeElement( FIELD_ACTIVE, String.valueOf( element.isActive() ) );
-                writer.writeElement( FIELD_TYPE, element.getType() );
-                writer.writeElement( FIELD_AGGREGATION_OPERATOR, element.getAggregationOperator() );
-                writer.writeElement( FIELD_CATEGORY_COMBO, String.valueOf( element.getCategoryCombo().getId() ) );
-                writer.writeElement( FIELD_SAVED, String.valueOf( element.isSaved() ) );
-                writer.writeElement( FIELD_EXPRESSION, element.getExpression().getExpression() );
-                
-                writer.closeElement();
-            }
-            
-            writer.closeElement();
-        }
-    }
-    
-    public void read( XMLReader reader, ImportParams params )
-    {
-        while ( reader.moveToStartElement( ELEMENT_NAME, COLLECTION_NAME ) )
-        {
-            final Map<String, String> values = reader.readElements( ELEMENT_NAME );
-            
-            final CalculatedDataElement element = new CalculatedDataElement();
-            
-            final DataElementCategoryCombo categoryCombo = new DataElementCategoryCombo();
-            element.setCategoryCombo( categoryCombo );
-                        
-            element.setId( Integer.parseInt( values.get( FIELD_ID ) ) );
-            element.setUuid( values.get( FIELD_UUID ) );
-            element.setName( values.get( FIELD_NAME ) );
-            element.setAlternativeName( values.get( FIELD_ALTERNATIVE_NAME ) );
-            element.setShortName( values.get( FIELD_SHORT_NAME ) );
-            element.setCode( values.get( FIELD_CODE ) );
-            element.setDescription( values.get( FIELD_DESCRIPTION ) );
-            element.setActive( Boolean.parseBoolean( values.get( FIELD_ACTIVE ) ) );
-            element.setType( values.get( FIELD_TYPE ) );
-            element.setAggregationOperator( values.get( FIELD_AGGREGATION_OPERATOR ) );
-            element.getCategoryCombo().setId( categoryComboMapping.get( Integer.parseInt( values.get( FIELD_CATEGORY_COMBO ) ) ) );
-            element.setSaved( Boolean.parseBoolean( values.get( FIELD_SAVED ) ) );            
-            String expression = expressionService.convertExpression( values.get( FIELD_EXPRESSION ), dataElementMapping, categoryOptionComboMapping );
-            element.setExpression( new Expression( expression, null, new HashSet<DataElement>() ) );
-            
-            importObject( element, params );
-        }
-    }
-}

=== modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/DXFConverter.java'
--- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/DXFConverter.java	2011-04-24 12:47:31 +0000
+++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/DXFConverter.java	2011-04-24 15:50:02 +0000
@@ -444,19 +444,6 @@
 
                 log.info( "Imported DataElements" );
             }
-            else if ( reader.isStartElement( CalculatedDataElementConverter.COLLECTION_NAME ) )
-            {
-                state.setMessage( "importing_calculated_data_elements" );
-
-                XMLConverter converter = new CalculatedDataElementConverter( importObjectService, dataElementService,
-                    expressionService, objectMappingGenerator.getDataElementMapping( params.skipMapping() ),
-                    objectMappingGenerator.getCategoryComboMapping( params.skipMapping() ), objectMappingGenerator
-                        .getCategoryOptionComboMapping( params.skipMapping() ) );
-
-                converterInvoker.invokeRead( converter, reader, params );
-
-                log.info( "Imported CalculatedDataElements" );
-            }
             else if ( reader.isStartElement( DataElementGroupConverter.COLLECTION_NAME ) )
             {
                 state.setMessage( "importing_data_element_groups" );

=== modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/DataElementConverter.java'
--- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/DataElementConverter.java	2010-06-03 17:31:53 +0000
+++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/DataElementConverter.java	2011-04-24 15:50:02 +0000
@@ -112,7 +112,7 @@
 
     public void write( XMLWriter writer, ExportParams params )
     {
-        Collection<DataElement> elements = dataElementService.getNonCalculatedDataElements( params.getDataElements() );
+        Collection<DataElement> elements = dataElementService.getDataElements( params.getDataElements() );
         
         if ( elements != null && elements.size() > 0 )
         {

=== modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/DataElementGroupMemberConverter.java'
--- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/DataElementGroupMemberConverter.java	2010-05-29 16:06:56 +0000
+++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/DataElementGroupMemberConverter.java	2011-04-24 15:50:02 +0000
@@ -103,7 +103,7 @@
     {
         Collection<DataElementGroup> groups = dataElementService.getDataElementGroups( params.getDataElementGroups() );
         
-        Collection<DataElement> elements = dataElementService.getDataElements( params.getAllDataElements() );
+        Collection<DataElement> elements = dataElementService.getDataElements( params.getDataElements() );
         
         if ( groups != null && groups.size() > 0 && elements != null && elements.size() > 0 )
         {

=== modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/DataElementGroupSetMemberConverter.java'
--- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/DataElementGroupSetMemberConverter.java	2010-05-29 16:06:56 +0000
+++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/DataElementGroupSetMemberConverter.java	2011-04-24 15:50:02 +0000
@@ -104,7 +104,7 @@
     {
         Collection<DataElementGroupSet> groupSets = dataElementService.getDataElementGroupSets( params.getDataElementGroups() );
         
-        Collection<DataElementGroup> groups = dataElementService.getDataElementGroups( params.getAllDataElements() );
+        Collection<DataElementGroup> groups = dataElementService.getDataElementGroups( params.getDataElements() );
         
         if ( groupSets != null && groupSets.size() > 0 && groups != null && groups.size() > 0 )
         {

=== modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/DataSetMemberConverter.java'
--- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/DataSetMemberConverter.java	2010-05-29 16:06:56 +0000
+++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/converter/DataSetMemberConverter.java	2011-04-24 15:50:02 +0000
@@ -108,7 +108,7 @@
     {
         Collection<DataSet> dataSets = dataSetService.getDataSets( params.getDataSets() );
         
-        Collection<DataElement> elements = dataElementService.getDataElements( params.getAllDataElements() );
+        Collection<DataElement> elements = dataElementService.getDataElements( params.getDataElements() );
         
         if ( dataSets != null && dataSets.size() > 0 && elements != null && elements.size() > 0 )
         {

=== modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/exporter/DefaultDXFExportService.java'
--- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/exporter/DefaultDXFExportService.java	2011-04-24 12:47:31 +0000
+++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dxf/exporter/DefaultDXFExportService.java	2011-04-24 15:50:02 +0000
@@ -58,7 +58,6 @@
 import org.hisp.dhis.importexport.ExportPipeThread;
 import org.hisp.dhis.importexport.ExportService;
 import org.hisp.dhis.importexport.dxf.converter.AggregatedDataValueConverter;
-import org.hisp.dhis.importexport.dxf.converter.CalculatedDataElementConverter;
 import org.hisp.dhis.importexport.dxf.converter.CategoryCategoryOptionAssociationConverter;
 import org.hisp.dhis.importexport.dxf.converter.CategoryComboCategoryAssociationConverter;
 import org.hisp.dhis.importexport.dxf.converter.ChartConverter;
@@ -288,7 +287,6 @@
             thread.registerXMLConverter( new CategoryComboCategoryAssociationConverter( categoryService ) );
 
             thread.registerXMLConverter( new DataElementConverter( dataElementService ) );
-            thread.registerXMLConverter( new CalculatedDataElementConverter( dataElementService ) );
             thread.registerXMLConverter( new DataElementGroupConverter( dataElementService ) );
             thread.registerXMLConverter( new DataElementGroupMemberConverter( dataElementService ) );
             thread.registerXMLConverter( new DataElementGroupSetConverter( dataElementService ) );

=== removed file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/importer/CalculatedDataElementImporter.java'
--- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/importer/CalculatedDataElementImporter.java	2010-06-01 07:57:57 +0000
+++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/importer/CalculatedDataElementImporter.java	1970-01-01 00:00:00 +0000
@@ -1,169 +0,0 @@
-package org.hisp.dhis.importexport.importer;
-
-/*
- * Copyright (c) 2004-2010, 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.CalculatedDataElement;
-import org.hisp.dhis.dataelement.DataElement;
-import org.hisp.dhis.dataelement.DataElementService;
-import org.hisp.dhis.importexport.GroupMemberType;
-import org.hisp.dhis.importexport.ImportParams;
-import org.hisp.dhis.importexport.Importer;
-import org.hisp.dhis.importexport.mapping.NameMappingUtil;
-
-/**
- * @author Lars Helge Overland
- * @version $Id$
- */
-public class CalculatedDataElementImporter
-    extends AbstractImporter<CalculatedDataElement> implements Importer<CalculatedDataElement>
-{
-    protected DataElementService dataElementService;
-
-    public CalculatedDataElementImporter()
-    {
-    }
-    
-    public CalculatedDataElementImporter( DataElementService dataElementService )
-    {
-        this.dataElementService = dataElementService;
-    }
-    
-    @Override
-    public void importObject( CalculatedDataElement object, ImportParams params )
-    {
-        NameMappingUtil.addDataElementMapping( object.getId(), object.getName() );
-        NameMappingUtil.addDataElementAggregationOperatorMapping( object.getId(), object.getAggregationOperator() );
-        
-        read( object, GroupMemberType.NONE, params );
-    }
-
-    @Override
-    protected void importUnique( CalculatedDataElement object )
-    {
-        dataElementService.addDataElement( object );
-    }
-
-    @Override
-    protected void importMatching( CalculatedDataElement object, CalculatedDataElement match )
-    {
-        match.setUuid( object.getUuid() );
-        match.setName( object.getName() );
-        match.setShortName( object.getShortName() );
-        match.setAlternativeName( object.getAlternativeName() );
-        match.setCode( object.getCode() );
-        match.setDescription( object.getDescription() );
-        match.setActive( object.isActive() );
-        match.setType( object.getType() );
-        match.setAggregationOperator( object.getAggregationOperator() );
-        match.setLastUpdated( object.getLastUpdated() );
-        match.setSaved( object.isSaved() );
-        match.setExpression( object.getExpression() );
-        
-        dataElementService.updateDataElement( match );
-    }
-
-    @Override
-    protected CalculatedDataElement getMatching( CalculatedDataElement object )
-    {
-        DataElement match = dataElementService.getDataElementByName( object.getName() );
-
-        if ( match == null )
-        {
-            match = dataElementService.getDataElementByAlternativeName( object.getAlternativeName() );
-        }
-        if ( match == null )
-        {
-            match = dataElementService.getDataElementByShortName( object.getShortName() );
-        }
-        
-        CalculatedDataElement calculated = (CalculatedDataElement) match;
-        
-        if ( calculated != null )
-        {
-            calculated.getExpression().getExpression(); // Load Expression in session
-        }
-        
-        return calculated; 
-    }
-
-    @Override
-    protected boolean isIdentical( CalculatedDataElement object, CalculatedDataElement existing )
-    {
-        if ( !object.getName().equals( existing.getName() ) )
-        {
-            return false;
-        }        
-        if ( !isSimiliar( object.getAlternativeName(), existing.getAlternativeName() ) || ( isNotNull( object.getAlternativeName(), existing.getAlternativeName() ) && !object.getAlternativeName().equals( existing.getAlternativeName() ) ) )
-        {
-            return false;
-        }
-        if ( !object.getShortName().equals( existing.getShortName() ) )
-        {
-            return false;
-        }
-        if ( !isSimiliar( object.getCode(), existing.getCode() ) || ( isNotNull( object.getCode(), existing.getCode() ) && !object.getCode().equals( existing.getCode() ) ) )
-        {
-            return false;
-        }
-        if ( !isSimiliar( object.getDescription(), existing.getDescription() ) || ( isNotNull( object.getDescription(), existing.getDescription() ) && !object.getDescription().equals( existing.getDescription() ) ) )
-        {
-            return false;
-        }
-        if ( object.isActive() != existing.isActive() )
-        {
-            return false;
-        }
-        if ( !object.getType().equals( existing.getType() ) )
-        {
-            return false;
-        }
-        if ( !object.getAggregationOperator().equals( existing.getAggregationOperator() ) )
-        {
-            return false;
-        }
-        if ( object.isSaved() != existing.isSaved() )
-        {
-            return false;
-        }
-        
-        return true;
-    }   
-    
-    @Override
-    protected boolean ignore( CalculatedDataElement object, CalculatedDataElement match )
-    {
-        boolean ignore = !(object instanceof CalculatedDataElement) && match instanceof CalculatedDataElement;
-        
-        if ( ignore )
-        {
-            log.warn( "Data element ignored because it matches with a calculated data element: " + object );
-        }
-        
-        return ignore;
-    } 
-}

=== modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/importer/DataElementImporter.java'
--- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/importer/DataElementImporter.java	2011-01-17 17:03:05 +0000
+++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/importer/DataElementImporter.java	2011-04-24 15:50:02 +0000
@@ -28,7 +28,6 @@
  */
 
 import org.amplecode.quick.BatchHandler;
-import org.hisp.dhis.dataelement.CalculatedDataElement;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementService;
 import org.hisp.dhis.importexport.GroupMemberType;
@@ -142,17 +141,4 @@
 
         return true;
     }
-    
-    @Override
-    protected boolean ignore( DataElement object, DataElement match )
-    {
-        boolean ignore = object instanceof CalculatedDataElement && !( match instanceof CalculatedDataElement );
-        
-        if ( ignore )
-        {
-            log.warn( "Calculated data element ignored because it matches with a regular data element: " + object );
-        }
-        
-        return ignore;
-    }
 }

=== modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/service/DefaultImportObjectManager.java'
--- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/service/DefaultImportObjectManager.java	2011-04-24 12:47:31 +0000
+++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/service/DefaultImportObjectManager.java	2011-04-24 15:50:02 +0000
@@ -41,7 +41,6 @@
 import org.hisp.dhis.chart.ChartService;
 import org.hisp.dhis.datadictionary.DataDictionary;
 import org.hisp.dhis.datadictionary.DataDictionaryService;
-import org.hisp.dhis.dataelement.CalculatedDataElement;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementCategory;
 import org.hisp.dhis.dataelement.DataElementCategoryCombo;
@@ -68,7 +67,6 @@
 import org.hisp.dhis.importexport.ImportStrategy;
 import org.hisp.dhis.importexport.ImportType;
 import org.hisp.dhis.importexport.Importer;
-import org.hisp.dhis.importexport.importer.CalculatedDataElementImporter;
 import org.hisp.dhis.importexport.importer.ChartImporter;
 import org.hisp.dhis.importexport.importer.CompleteDataSetRegistrationImporter;
 import org.hisp.dhis.importexport.importer.DataDictionaryImporter;
@@ -466,39 +464,6 @@
     }
 
     @Transactional
-    public void importCalculatedDataElements()
-    {
-        Map<Object, Integer> categoryComboMapping = objectMappingGenerator.getCategoryComboMapping( false );
-        Map<Object, Integer> dataElementMapping = objectMappingGenerator.getDataElementMapping( false );
-        Map<Object, Integer> categoryOptionComboMapping = objectMappingGenerator.getCategoryOptionComboMapping( false );
-
-        Collection<ImportObject> importObjects = importObjectStore.getImportObjects( CalculatedDataElement.class );
-
-        Importer<CalculatedDataElement> importer = new CalculatedDataElementImporter( dataElementService );
-
-        for ( ImportObject importObject : importObjects )
-        {
-            CalculatedDataElement object = (CalculatedDataElement) importObject.getObject();
-            object.getCategoryCombo().setId( categoryComboMapping.get( object.getCategoryCombo().getId() ) );
-            object.getExpression().setExpression(
-            expressionService.convertExpression( object.getExpression().getExpression(), dataElementMapping, categoryOptionComboMapping ) );
-            
-            try
-            {
-                importer.importObject( object, params );
-            }
-            catch ( ClassCastException e )
-            {
-                log.warn( "Cannot convert a regular data element to a calculated data element", e );
-            }
-        }
-
-        importObjectStore.deleteImportObjects( CalculatedDataElement.class );
-
-        log.info( "Imported CalculatedDataElements"  );
-    }
-
-    @Transactional
     public void importDataElementGroups()
     {
         BatchHandler<DataElementGroup> batchHandler = batchHandlerFactory.createBatchHandler(

=== modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/service/DefaultImportObjectService.java'
--- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/service/DefaultImportObjectService.java	2011-04-24 12:47:31 +0000
+++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/service/DefaultImportObjectService.java	2011-04-24 15:50:02 +0000
@@ -39,7 +39,6 @@
 import org.hisp.dhis.common.ImportableObject;
 import org.hisp.dhis.datadictionary.DataDictionary;
 import org.hisp.dhis.datadictionary.DataDictionaryService;
-import org.hisp.dhis.dataelement.CalculatedDataElement;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementCategory;
 import org.hisp.dhis.dataelement.DataElementCategoryCombo;
@@ -290,8 +289,7 @@
 
         if ( importObject != null )
         {
-            if ( importObject.getClassName().equals( DataElement.class.getName() )
-                || importObject.getClassName().equals( CalculatedDataElement.class.getName() ) )
+            if ( importObject.getClassName().equals( DataElement.class.getName() ) )
             {
                 DataElement element = (DataElement) importObject.getObject();
 
@@ -394,7 +392,7 @@
     {
         importObjectStore.deleteImportObjects( clazz );
 
-        if ( clazz.equals( DataElement.class ) || clazz.equals( CalculatedDataElement.class ) )
+        if ( clazz.equals( DataElement.class ) )
         {
             importObjectStore.deleteImportObjects( DataElementCategoryOptionCombo.class );
             importObjectStore.deleteImportObjects( DataElementCategoryCombo.class );
@@ -494,7 +492,7 @@
         // object.
         // ---------------------------------------------------------------------
 
-        if ( object.getClass().equals( DataElement.class ) || object.getClass().equals( CalculatedDataElement.class ) )
+        if ( object.getClass().equals( DataElement.class ) )
         {
             DataElement element = (DataElement) object;
 
@@ -628,7 +626,6 @@
         importObjectManager.importCategoryCategoryOptionAssociations();
         importObjectManager.importCategoryComboCategoryAssociations();
         importObjectManager.importDataElements();
-        importObjectManager.importCalculatedDataElements();
         importObjectManager.importDataElementGroups();
         importObjectManager.importDataElementGroupMembers();
         importObjectManager.importDataElementGroupSets();

=== modified file 'dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/deletion/DeletionHandler.java'
--- dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/deletion/DeletionHandler.java	2011-04-24 12:47:31 +0000
+++ dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/deletion/DeletionHandler.java	2011-04-24 15:50:02 +0000
@@ -30,7 +30,6 @@
 import org.hisp.dhis.chart.Chart;
 import org.hisp.dhis.concept.Concept;
 import org.hisp.dhis.datadictionary.DataDictionary;
-import org.hisp.dhis.dataelement.CalculatedDataElement;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementCategory;
 import org.hisp.dhis.dataelement.DataElementCategoryCombo;
@@ -136,15 +135,6 @@
         return true;
     }
 
-    public void deleteCalculatedDataElement( CalculatedDataElement dataElement )
-    {
-    }
-
-    public boolean allowDeleteCalculatedDataElement( CalculatedDataElement dataElement )
-    {
-        return true;
-    }
-
     public void deleteDataElementGroup( DataElementGroup dataElementGroup )
     {
     }

=== modified file 'dhis-2/dhis-support/dhis-support-test/src/main/java/org/hisp/dhis/DhisConvenienceTest.java'
--- dhis-2/dhis-support/dhis-support-test/src/main/java/org/hisp/dhis/DhisConvenienceTest.java	2011-04-24 12:47:31 +0000
+++ dhis-2/dhis-support/dhis-support-test/src/main/java/org/hisp/dhis/DhisConvenienceTest.java	2011-04-24 15:50:02 +0000
@@ -41,7 +41,6 @@
 import org.hisp.dhis.concept.Concept;
 import org.hisp.dhis.datadictionary.DataDictionary;
 import org.hisp.dhis.datadictionary.DataDictionaryService;
-import org.hisp.dhis.dataelement.CalculatedDataElement;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementCategoryCombo;
 import org.hisp.dhis.dataelement.DataElementCategoryOption;
@@ -397,32 +396,6 @@
     }
 
     /**
-     * @param uniqueCharacter A unique character to identify the object.
-     * @param expression The Expression.
-     */
-    public static CalculatedDataElement createCalculatedDataElement( char uniqueCharacter, String type,
-        String aggregationOperator, DataElementCategoryCombo categoryCombo, Expression expression )
-    {
-        CalculatedDataElement dataElement = new CalculatedDataElement();
-
-        dataElement.setUuid( BASE_UUID + uniqueCharacter );
-        dataElement.setName( "DataElement" + uniqueCharacter );
-        dataElement.setAlternativeName( "AlternativeName" + uniqueCharacter );
-        dataElement.setShortName( "ShortName" + uniqueCharacter );
-        dataElement.setCode( "Code" + uniqueCharacter );
-        dataElement.setDescription( "Description" + uniqueCharacter );
-        dataElement.setActive( true );
-        dataElement.setType( type );
-        dataElement.setDomainType( DataElement.DOMAIN_TYPE_AGGREGATE );
-        dataElement.setAggregationOperator( aggregationOperator );
-        dataElement.setCategoryCombo( categoryCombo );
-        dataElement.setSaved( false );
-        dataElement.setExpression( expression );
-
-        return dataElement;
-    }
-
-    /**
      * @param categoryComboUniqueIdentifier A unique character to identify the
      *        category combo.
      * @param categoryOptionUniqueIdentifiers Unique characters to identify the

=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/CustomDataEntryAction.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/CustomDataEntryAction.java	2011-04-06 07:55:28 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/CustomDataEntryAction.java	2011-04-24 15:50:02 +0000
@@ -36,7 +36,6 @@
 import org.apache.commons.logging.LogFactory;
 import org.hisp.dhis.caseentry.screen.DataEntryScreenManager;
 import org.hisp.dhis.caseentry.state.SelectedStateManager;
-import org.hisp.dhis.dataelement.CalculatedDataElement;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo;
 import org.hisp.dhis.dataentryform.DataEntryForm;
@@ -359,13 +358,11 @@
         boolean cdeFormExists = (dataEntryForm != null);
 
         String disabled = "";
-        Map<CalculatedDataElement, Integer> calculatedValueMap = dataEntryScreenManager
-            .populateValuesForCalculatedDataElements( organisationUnit, programStage, programStageInstance );
 
         if ( cdeFormExists )
         {
             customDataEntryFormCode = dataEntryScreenManager.populateCustomDataEntryScreenForMultiDimensional(
-                dataEntryForm.getHtmlCode(), patientDataValues, calculatedValueMap, minMaxMap, disabled, i18n,
+                dataEntryForm.getHtmlCode(), patientDataValues, minMaxMap, disabled, i18n,
                 programStage, programStageInstance, organisationUnit );
         }
 

=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/ProgramStageCustomDataEntryAction.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/ProgramStageCustomDataEntryAction.java	2011-03-31 01:49:21 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/ProgramStageCustomDataEntryAction.java	2011-04-24 15:50:02 +0000
@@ -9,7 +9,6 @@
 import org.apache.commons.logging.LogFactory;
 import org.hisp.dhis.caseentry.screen.DataEntryScreenManager;
 import org.hisp.dhis.caseentry.state.SelectedStateManager;
-import org.hisp.dhis.dataelement.CalculatedDataElement;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo;
 import org.hisp.dhis.dataentryform.DataEntryForm;
@@ -270,15 +269,12 @@
         boolean cdeFormExists = (dataEntryForm != null);
 
         String disabled = "";
-        Map<CalculatedDataElement, Integer> calculatedValueMap = dataEntryScreenManager
-            .populateValuesForCalculatedDataElements( organisationUnit, programStage, programStageInstance );
-
         if ( cdeFormExists )
         {
             customDataEntryFormExists = true;
             
             customDataEntryFormCode = dataEntryScreenManager.populateCustomDataEntryScreenForMultiDimensional(
-                dataEntryForm.getHtmlCode(), patientDataValues, calculatedValueMap, minMaxMap, disabled,
+                dataEntryForm.getHtmlCode(), patientDataValues, minMaxMap, disabled,
                 i18n, programStage, programStageInstance, organisationUnit );
         }
         

=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/screen/DataEntryScreenManager.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/screen/DataEntryScreenManager.java	2011-03-31 01:49:21 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/screen/DataEntryScreenManager.java	2011-04-24 15:50:02 +0000
@@ -29,8 +29,6 @@
 import java.util.Collection;
 import java.util.Map;
 
-import org.hisp.dhis.dataelement.CalculatedDataElement;
-import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.i18n.I18n;
 import org.hisp.dhis.minmax.MinMaxDataElement;
 import org.hisp.dhis.organisationunit.OrganisationUnit;
@@ -51,16 +49,8 @@
 
     boolean hasMultiDimensionalDataElement( ProgramStage programStage );
 
-    Collection<Integer> getAllCalculatedDataElements( ProgramStage programStage );
-
-    Map<CalculatedDataElement, Map<DataElement, Double>> getNonSavedCalculatedDataElements( ProgramStage programStage );
-
-    Map<CalculatedDataElement, Integer> populateValuesForCalculatedDataElements( OrganisationUnit organisationUnit,
-        ProgramStage programStage, ProgramStageInstance programStageInstance );
-
     String populateCustomDataEntryScreenForMultiDimensional( String dataEntryFormCode,
-        Collection<PatientDataValue> dataValues, Map<CalculatedDataElement, Integer> calculatedValueMap,
-        Map<Integer, MinMaxDataElement> minMaxMap, String disabled, I18n i18n, ProgramStage programStage,
+        Collection<PatientDataValue> dataValues, Map<Integer, MinMaxDataElement> minMaxMap, String disabled, I18n i18n, ProgramStage programStage,
         ProgramStageInstance programStageInstance, OrganisationUnit organisationUnit );
 
     Collection<ProgramStageDataElement> getProgramStageDataElements( String htmlCode );

=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/screen/DefaultDataEntryScreenManager.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/screen/DefaultDataEntryScreenManager.java	2011-03-31 05:38:57 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/screen/DefaultDataEntryScreenManager.java	2011-04-24 15:50:02 +0000
@@ -39,7 +39,6 @@
 import org.apache.commons.lang.BooleanUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.hisp.dhis.dataelement.CalculatedDataElement;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementCategoryCombo;
 import org.hisp.dhis.dataelement.DataElementService;
@@ -159,79 +158,24 @@
         return hasMultiDimensionalDataElement( dataSet ) ? MULTI_DIMENSIONAL_FORM : DEFAULT_FORM;
     }
 
-    public Collection<Integer> getAllCalculatedDataElements( ProgramStage programStage )
-    {
-        Collection<Integer> calculatedDataElementIds = new HashSet<Integer>();
-
-        Collection<DataElement> dataElements = programStageDataElementService.getListDataElement( programStage );
-
-        CalculatedDataElement cde;
-
-        for ( DataElement dataElement : dataElements )
-        {
-            if ( dataElement instanceof CalculatedDataElement )
-            {
-                cde = (CalculatedDataElement) dataElement;
-
-                calculatedDataElementIds.add( cde.getId() );
-            }
-        }
-
-        return calculatedDataElementIds;
-    }
-
-    public Map<CalculatedDataElement, Map<DataElement, Double>> getNonSavedCalculatedDataElements(
-        ProgramStage programStage )
-    {
-        Map<CalculatedDataElement, Map<DataElement, Double>> calculatedDataElementMap = new HashMap<CalculatedDataElement, Map<DataElement, Double>>();
-
-        Collection<DataElement> dataElements = programStageDataElementService.getListDataElement( programStage );
-
-        CalculatedDataElement cde;
-
-        for ( DataElement dataElement : dataElements )
-        {
-            if ( dataElement instanceof CalculatedDataElement )
-            {
-                cde = (CalculatedDataElement) dataElement;
-
-                if ( !cde.isSaved() )
-                {
-                    calculatedDataElementMap.put( cde, dataElementService.getDataElementFactors( cde ) );
-                }
-            }
-        }
-
-        return calculatedDataElementMap;
-    }
-
-    public Map<CalculatedDataElement, Integer> populateValuesForCalculatedDataElements(
-        OrganisationUnit organisationUnit, ProgramStage programStage, ProgramStageInstance programStageInstance )
-    {
-        Map<CalculatedDataElement, Integer> calculatedValueMap = new HashMap<CalculatedDataElement, Integer>();
-
-        return calculatedValueMap;
-    }
-
     public String populateCustomDataEntryScreenForMultiDimensional( String dataEntryFormCode,
-        Collection<PatientDataValue> dataValues, Map<CalculatedDataElement, Integer> calculatedValueMap,
-        Map<Integer, MinMaxDataElement> minMaxMap, String disabled, I18n i18n, ProgramStage programStage,
+        Collection<PatientDataValue> dataValues, Map<Integer, MinMaxDataElement> minMaxMap, String disabled, I18n i18n, ProgramStage programStage,
         ProgramStageInstance programStageInstance, OrganisationUnit organisationUnit )
     {
         Map<Integer, Collection<PatientDataValue>> mapDataValue = new HashMap<Integer, Collection<PatientDataValue>>();
 
         String result = "";
 
-        result = populateCustomDataEntryForTextBox( dataEntryFormCode, dataValues, calculatedValueMap, disabled, i18n,
-            programStage, programStageInstance, organisationUnit, mapDataValue );
-
-        result = populateCustomDataEntryForBoolean( result, dataValues, calculatedValueMap, minMaxMap, disabled, i18n,
-            programStage, programStageInstance, organisationUnit, mapDataValue );
-
-        result = populateCustomDataEntryForMutiDimentionalString( result, dataValues, calculatedValueMap, minMaxMap,
+        result = populateCustomDataEntryForTextBox( dataEntryFormCode, dataValues, disabled, i18n,
+            programStage, programStageInstance, organisationUnit, mapDataValue );
+
+        result = populateCustomDataEntryForBoolean( result, dataValues, minMaxMap, disabled, i18n,
+            programStage, programStageInstance, organisationUnit, mapDataValue );
+
+        result = populateCustomDataEntryForMutiDimentionalString( result, dataValues, minMaxMap,
             disabled, i18n, programStage, programStageInstance, organisationUnit, mapDataValue );
 
-        result = populateCustomDataEntryForDate( result, dataValues, calculatedValueMap, minMaxMap, disabled, i18n,
+        result = populateCustomDataEntryForDate( result, dataValues, minMaxMap, disabled, i18n,
             programStage, programStageInstance, organisationUnit, mapDataValue );
 
         result = populateI18nStrings( result, i18n );
@@ -240,8 +184,7 @@
     }
 
     private String populateCustomDataEntryForTextBox( String dataEntryFormCode,
-        Collection<PatientDataValue> dataValues, Map<CalculatedDataElement, Integer> calculatedValueMap,
-        String disabled, I18n i18n, ProgramStage programStage, ProgramStageInstance programStageInstance,
+        Collection<PatientDataValue> dataValues, String disabled, I18n i18n, ProgramStage programStage, ProgramStageInstance programStageInstance,
         OrganisationUnit organisationUnit, Map<Integer, Collection<PatientDataValue>> mapDataValue )
     {
         // ---------------------------------------------------------------------
@@ -250,8 +193,6 @@
 
         final String jsCodeForInputs = " $DISABLED onchange=\"saveValueCustom( this )\" data=\"{compulsory:$COMPULSORY, optionComboId:$OPTIONCOMBOID, dataElementId:$DATAELEMENTID, dataElementName:'$DATAELEMENTNAME', dataElementType:'$DATAELEMENTTYPE', programStageId:$PROGRAMSTAGEID, programStageName: '$PROGRAMSTAGENAME', orgUnitName:'$ORGUNITNAME'}\"  onkeypress=\"return keyPress(event, this)\"   ";
 
-        final String calDataElementCode = " class=\"calculated\" disabled ";
-
         // ---------------------------------------------------------------------
         // Metadata code to add to HTML before outputting
         // ---------------------------------------------------------------------
@@ -368,29 +309,9 @@
                 }
                 else
                 {
-                    if ( (dataElement instanceof CalculatedDataElement) )
-                    {
-                        CalculatedDataElement cde = (CalculatedDataElement) dataElement;
-
-                        if ( cde.isSaved() )
-                        {
-                            patientDataValue = getValue( dataValues, dataElementId );
-
-                            dataElementValue = patientDataValue != null ? patientDataValue.getValue()
-                                : dataElementValue;
-                        }
-                        else
-                        {
-                            dataElementValue = String.valueOf( calculatedValueMap.get( cde ) );
-                        }
-                    }
-                    else
-                    {
-                        patientDataValue = getValue( dataValues, dataElementId );
-
-                        dataElementValue = patientDataValue != null ? patientDataValue.getValue() : dataElementValue;
-
-                    }
+                    patientDataValue = getValue( dataValues, dataElementId );
+
+                    dataElementValue = patientDataValue != null ? patientDataValue.getValue() : dataElementValue;
                 }
 
                 // -------------------------------------------------------------
@@ -422,11 +343,6 @@
 
                 appendCode += jsCodeForInputs;
 
-                if ( (dataElement instanceof CalculatedDataElement) )
-                {
-                    appendCode += calDataElementCode;
-                }
-
                 appendCode += " />";
 
                 // -----------------------------------------------------------
@@ -488,8 +404,7 @@
     }
 
     private String populateCustomDataEntryForBoolean( String dataEntryFormCode,
-        Collection<PatientDataValue> dataValues, Map<CalculatedDataElement, Integer> calculatedValueMap,
-        Map<Integer, MinMaxDataElement> minMaxMap, String disabled, I18n i18n, ProgramStage programStage,
+        Collection<PatientDataValue> dataValues, Map<Integer, MinMaxDataElement> minMaxMap, String disabled, I18n i18n, ProgramStage programStage,
         ProgramStageInstance programStageInstance, OrganisationUnit organisationUnit,
         Map<Integer, Collection<PatientDataValue>> mapDataValue )
     {
@@ -500,8 +415,6 @@
 
         final String jsCodeForBoolean = " name=\"entryselect\" data=\"{compulsory:$COMPULSORY, dataElementId:$DATAELEMENTID, dataElementName:'$DATAELEMENTNAME', dataElementType:'$DATAELEMENTTYPE', programStageId:$PROGRAMSTAGEID, programStageName: '$PROGRAMSTAGENAME', orgUnitName:'$ORGUNITNAME'}\" $DISABLED onchange=\"saveChoiceCustom( $PROGRAMSTAGEID, $DATAELEMENTID,this)\"";
 
-        final String calDataElementCode = " class=\"calculated\" disabled ";
-
         // ---------------------------------------------------------------------
         // Metadata code to add to HTML before outputting
         // ---------------------------------------------------------------------
@@ -615,27 +528,11 @@
                 else
                 {
 
-                    if ( (dataElement instanceof CalculatedDataElement) )
-                    {
-                        CalculatedDataElement cde = (CalculatedDataElement) dataElement;
-
-                        if ( cde.isSaved() )
-                        {
-                            patientDataValue = getValue( dataValues, dataElementId );
-                            if ( patientDataValue != null )
-                                dataElementValue = patientDataValue.getValue();
-                        }
-                        else
-                        {
-                            dataElementValue = String.valueOf( calculatedValueMap.get( cde ) );
-                        }
-                    }
-                    else
-                    {
-                        patientDataValue = getValue( dataValues, dataElementId );
-                        if ( patientDataValue != null )
-                            dataElementValue = patientDataValue.getValue();
-
+                    patientDataValue = getValue( dataValues, dataElementId );
+                    
+                    if ( patientDataValue != null )
+                    {
+                        dataElementValue = patientDataValue.getValue();
                     }
                 }
 
@@ -693,11 +590,6 @@
                 // fields
                 // -------------------------------------------------------------
 
-                if ( (dataElement instanceof CalculatedDataElement) )
-                {
-                    appendCode += calDataElementCode;
-                }
-
                 appendCode += metaDataCode;
 
                 // -----------------------------------------------------------
@@ -761,8 +653,7 @@
     }
 
     private String populateCustomDataEntryForMutiDimentionalString( String dataEntryFormCode,
-        Collection<PatientDataValue> dataValues, Map<CalculatedDataElement, Integer> calculatedValueMap,
-        Map<Integer, MinMaxDataElement> minMaxMap, String disabled, I18n i18n, ProgramStage programStage,
+        Collection<PatientDataValue> dataValues, Map<Integer, MinMaxDataElement> minMaxMap, String disabled, I18n i18n, ProgramStage programStage,
         ProgramStageInstance programStageInstance, OrganisationUnit organisationUnit,
         Map<Integer, Collection<PatientDataValue>> mapDataValue )
     {
@@ -773,8 +664,6 @@
 
         final String jsCodeForCombo = " name=\"entryselect\" $DISABLED data=\"{compulsory:$COMPULSORY, dataElementId:$DATAELEMENTID, dataElementName:'$DATAELEMENTNAME', dataElementType:'$DATAELEMENTTYPE', programStageId:$PROGRAMSTAGEID, programStageName: '$PROGRAMSTAGENAME', orgUnitName:'$ORGUNITNAME'}\" onchange=\"saveChoiceCustom( $PROGRAMSTAGEID, $DATAELEMENTID,this)\"";
         
-        final String calDataElementCode = " class=\"calculated\" disabled ";
-
         // ---------------------------------------------------------------------
         // Metadata code to add to HTML before outputting
         // ---------------------------------------------------------------------
@@ -888,28 +777,9 @@
                 }
                 else
                 {
-                    if ( (dataElement instanceof CalculatedDataElement) )
-                    {
-                        CalculatedDataElement cde = (CalculatedDataElement) dataElement;
-
-                        if ( cde.isSaved() )
-                        {
-                            patientDataValue = getValue( dataValues, dataElementId );
-
-                            dataElementValue = patientDataValue != null ? patientDataValue.getValue()
-                                : dataElementValue;
-                        }
-                        else
-                        {
-                            dataElementValue = String.valueOf( calculatedValueMap.get( cde ) );
-                        }
-                    }
-                    else
-                    {
-                        patientDataValue = getValue( dataValues, dataElementId );
-
-                        dataElementValue = patientDataValue != null ? patientDataValue.getValue() : dataElementValue;
-                    }
+                    patientDataValue = getValue( dataValues, dataElementId );
+
+                    dataElementValue = patientDataValue != null ? patientDataValue.getValue() : dataElementValue;
                 }
 
                 String appendCode = dataElementCode;
@@ -956,11 +826,6 @@
                 // fields
                 // -------------------------------------------------------------
 
-                if ( (dataElement instanceof CalculatedDataElement) )
-                {
-                    appendCode += calDataElementCode;
-                }
-
                 appendCode += metaDataCode;
 
                 // -----------------------------------------------------------
@@ -1022,8 +887,7 @@
     }
 
     private String populateCustomDataEntryForDate( String dataEntryFormCode, Collection<PatientDataValue> dataValues,
-        Map<CalculatedDataElement, Integer> calculatedValueMap, Map<Integer, MinMaxDataElement> minMaxMap,
-        String disabled, I18n i18n, ProgramStage programStage, ProgramStageInstance programStageInstance,
+        Map<Integer, MinMaxDataElement> minMaxMap, String disabled, I18n i18n, ProgramStage programStage, ProgramStageInstance programStageInstance,
         OrganisationUnit organisationUnit, Map<Integer, Collection<PatientDataValue>> mapDataValue )
     {
 
@@ -1149,30 +1013,9 @@
                 }
                 else
                 {
-
-                    if ( (dataElement instanceof CalculatedDataElement) )
-                    {
-                        CalculatedDataElement cde = (CalculatedDataElement) dataElement;
-
-                        if ( cde.isSaved() )
-                        {
-                            patientDataValue = getValue( dataValues, dataElementId );
-
-                            dataElementValue = patientDataValue != null ? patientDataValue.getValue()
-                                : dataElementValue;
-                        }
-                        else
-                        {
-                            dataElementValue = String.valueOf( calculatedValueMap.get( cde ) );
-                        }
-                    }
-                    else
-                    {
-                        patientDataValue = getValue( dataValues, dataElementId );
-
-                        dataElementValue = patientDataValue != null ? patientDataValue.getValue() : dataElementValue;
-
-                    }
+                    patientDataValue = getValue( dataValues, dataElementId );
+
+                    dataElementValue = patientDataValue != null ? patientDataValue.getValue() : dataElementValue;
                 }
 
                 // -------------------------------------------------------------

=== modified file 'dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/exp/DetailedMetaDataExportAction.java'
--- dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/exp/DetailedMetaDataExportAction.java	2010-04-12 21:23:33 +0000
+++ dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/exp/DetailedMetaDataExportAction.java	2011-04-24 15:50:02 +0000
@@ -37,7 +37,6 @@
 import java.util.Set;
 
 import org.hisp.dhis.common.ServiceProvider;
-import org.hisp.dhis.dataelement.CalculatedDataElement;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementService;
 import org.hisp.dhis.expression.ExpressionService;
@@ -204,14 +203,7 @@
         {
             final DataElement element = dataElementService.getDataElement( id );
             
-            if ( element instanceof CalculatedDataElement )
-            {
-                params.getCalculatedDataElements().add( element.getId() );
-            }
-            else
-            {
-                params.getDataElements().add( element.getId() );
-            }
+            params.getDataElements().add( element.getId() );
         }
         
         params.setIncludeDataValues( false );

=== modified file 'dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/exp/MetaDataExportAction.java'
--- dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/exp/MetaDataExportAction.java	2011-03-22 16:53:11 +0000
+++ dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/exp/MetaDataExportAction.java	2011-04-24 15:50:02 +0000
@@ -240,7 +240,6 @@
             params.setCategoryOptions( null );
             params.setCategoryOptionCombos( null );
             params.setDataElements( null );
-            params.setCalculatedDataElements( null );
         }
 
         if ( dataElementGroups )

=== modified file 'dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/imp/GetMatchOptionsAction.java'
--- dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/imp/GetMatchOptionsAction.java	2011-04-24 12:47:31 +0000
+++ dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/imp/GetMatchOptionsAction.java	2011-04-24 15:50:02 +0000
@@ -27,7 +27,6 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-import static org.hisp.dhis.common.Objects.CALCULATEDDATAELEMENT;
 import static org.hisp.dhis.common.Objects.CHART;
 import static org.hisp.dhis.common.Objects.DATADICTIONARY;
 import static org.hisp.dhis.common.Objects.DATAELEMENT;
@@ -207,11 +206,7 @@
         
         if ( objectType.equals( DATAELEMENT.name() ) )
         {
-            objects = dataElementService.getNonCalculatedDataElements();
-        }
-        else if ( objectType.equals( CALCULATEDDATAELEMENT.name() ) )
-        {
-            objects = dataElementService.getAllCalculatedDataElements();
+            objects = dataElementService.getAllDataElements();
         }
         else if ( objectType.equals( DATAELEMENTGROUP.name() ) )
         {

=== modified file 'dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/imp/GetPreviewOptionsAction.java'
--- dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/imp/GetPreviewOptionsAction.java	2011-04-24 12:47:31 +0000
+++ dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/imp/GetPreviewOptionsAction.java	2011-04-24 15:50:02 +0000
@@ -41,7 +41,6 @@
 
 import org.hisp.dhis.chart.Chart;
 import org.hisp.dhis.datadictionary.DataDictionary;
-import org.hisp.dhis.dataelement.CalculatedDataElement;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementGroup;
 import org.hisp.dhis.dataelement.DataElementGroupSet;
@@ -431,7 +430,6 @@
         throws Exception
     {
         newDataElements = importObjectService.getImportObjects( NEW, DataElement.class ).size();
-        newCalculatedDataElements = importObjectService.getImportObjects( NEW, CalculatedDataElement.class ).size();
         newDataElementGroups = importObjectService.getImportObjects( NEW, DataElementGroup.class ).size();
         newDataElementGroupSets = importObjectService.getImportObjects( NEW, DataElementGroupSet.class ).size();
         newIndicatorTypes = importObjectService.getImportObjects( NEW, IndicatorType.class ).size();
@@ -451,7 +449,6 @@
         newDataValues = importDataValueService.getNumberOfImportDataValues( NEW );
         
         updateDataElements = importObjectService.getImportObjects( UPDATE, DataElement.class ).size();
-        updateCalculatedDataElements = importObjectService.getImportObjects( UPDATE, CalculatedDataElement.class ).size();
         updateDataElementGroups = importObjectService.getImportObjects( UPDATE, DataElementGroup.class ).size();
         updateDataElementGroupSets = importObjectService.getImportObjects( UPDATE, DataElementGroupSet.class ).size();
         updateIndicatorTypes = importObjectService.getImportObjects( UPDATE, IndicatorType.class ).size();

=== modified file 'dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/util/ClassMapUtil.java'
--- dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/util/ClassMapUtil.java	2011-04-24 12:47:31 +0000
+++ dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/util/ClassMapUtil.java	2011-04-24 15:50:02 +0000
@@ -27,7 +27,6 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-import static org.hisp.dhis.common.Objects.CALCULATEDDATAELEMENT;
 import static org.hisp.dhis.common.Objects.DATADICTIONARY;
 import static org.hisp.dhis.common.Objects.DATAELEMENT;
 import static org.hisp.dhis.common.Objects.DATAELEMENTGROUP;
@@ -51,7 +50,6 @@
 
 import org.hisp.dhis.common.Objects;
 import org.hisp.dhis.datadictionary.DataDictionary;
-import org.hisp.dhis.dataelement.CalculatedDataElement;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementGroup;
 import org.hisp.dhis.dataelement.DataElementGroupSet;
@@ -81,7 +79,6 @@
         classMap = new HashMap<Objects, Class<?>>();
         
         classMap.put( DATAELEMENT, DataElement.class );
-        classMap.put( CALCULATEDDATAELEMENT, CalculatedDataElement.class );
         classMap.put( DATAELEMENTGROUP, DataElementGroup.class );
         classMap.put( DATAELEMENTGROUPSET, DataElementGroupSet.class );
         classMap.put( INDICATORTYPE, IndicatorType.class );

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/dataelement/AddDataElementAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/dataelement/AddDataElementAction.java	2011-03-22 05:49:48 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/dataelement/AddDataElementAction.java	2011-04-24 15:50:02 +0000
@@ -27,20 +27,13 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-import static org.hisp.dhis.expression.Expression.SEPARATOR;
-
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
 
-import org.hisp.dhis.dataelement.CalculatedDataElement;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementCategoryCombo;
 import org.hisp.dhis.dataelement.DataElementCategoryService;
 import org.hisp.dhis.dataelement.DataElementService;
-import org.hisp.dhis.expression.Expression;
 import org.hisp.dhis.system.util.ConversionUtils;
 
 import com.opensymphony.xwork2.ActionSupport;
@@ -53,8 +46,6 @@
 public class AddDataElementAction
     extends ActionSupport
 {
-    private static final String TRUE = "on";
-
     // -------------------------------------------------------------------------
     // Dependencies
     // -------------------------------------------------------------------------
@@ -140,13 +131,6 @@
         this.aggregationOperator = aggregationOperator;
     }
 
-    private String calculated;
-
-    public void setCalculated( String calculated )
-    {
-        this.calculated = calculated;
-    }
-
     private String url;
 
     public void setUrl( String url )
@@ -161,27 +145,6 @@
         this.aggregationLevels = aggregationLevels;
     }
 
-    private String saved;
-
-    public void setSaved( String saved )
-    {
-        this.saved = saved;
-    }
-
-    private List<String> dataElementIds;
-
-    public void setDataElementIds( List<String> dataElementIds )
-    {
-        this.dataElementIds = dataElementIds;
-    }
-
-    private List<Double> factors;
-
-    public void setFactors( List<Double> factors )
-    {
-        this.factors = factors;
-    }
-
     private Integer selectedCategoryComboId;
 
     public void setSelectedCategoryComboId( Integer selectedCategoryComboId )
@@ -225,63 +188,11 @@
         // Create data element
         // ---------------------------------------------------------------------
 
-        DataElement dataElement = null;
-
-        DataElementCategoryCombo defaultCategoryCombo = dataElementCategoryService
-            .getDataElementCategoryComboByName( DataElementCategoryCombo.DEFAULT_CATEGORY_COMBO_NAME );
+        DataElement dataElement = new DataElement();
 
         DataElementCategoryCombo categoryCombo = dataElementCategoryService
             .getDataElementCategoryCombo( selectedCategoryComboId );
 
-        if ( calculated != null && calculated.equals( TRUE ) )
-        {
-            categoryCombo = defaultCategoryCombo;
-
-            dataElement = new CalculatedDataElement();
-
-            CalculatedDataElement calculatedDataElement = (CalculatedDataElement) dataElement;
-
-            Set<DataElement> expressionDataElements = new HashSet<DataElement>();
-
-            String expressionString = "";
-
-            for ( int i = 0; i < dataElementIds.size(); i++ )
-            {
-                String operandId = dataElementIds.get( i );
-
-                String dataElementIdString = operandId.substring( 0, operandId.indexOf( SEPARATOR ) );
-
-                DataElement expressionDataElement = dataElementService.getDataElement( Integer
-                    .parseInt( dataElementIdString ) );
-
-                if ( expressionDataElement == null )
-                {
-                    continue;
-                }
-
-                Double factor = factors.get( i );
-
-                expressionString += " + ([" + operandId + "] * " + factor + ")";
-
-                expressionDataElements.add( expressionDataElement );
-            }
-
-            if ( expressionString.length() > 3 )
-            {
-                expressionString = expressionString.substring( 3 );
-            }
-
-            Expression expression = new Expression( expressionString, "", expressionDataElements );
-
-            calculatedDataElement.setExpression( expression );
-
-            calculatedDataElement.setSaved( saved != null );
-        }
-        else
-        {
-            dataElement = new DataElement();
-        }
-
         dataElement.setName( name );
         dataElement.setAlternativeName( alternativeName );
         dataElement.setShortName( shortName );

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/dataelement/ShowUpdateDataElementFormAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/dataelement/ShowUpdateDataElementFormAction.java	2011-03-22 05:49:48 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/dataelement/ShowUpdateDataElementFormAction.java	2011-04-24 15:50:02 +0000
@@ -27,17 +27,13 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-import static org.hisp.dhis.expression.Expression.SEPARATOR;
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
-import org.hisp.dhis.dataelement.CalculatedDataElement;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementCategoryCombo;
-import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo;
 import org.hisp.dhis.dataelement.DataElementCategoryService;
 import org.hisp.dhis.dataelement.DataElementGroup;
 import org.hisp.dhis.dataelement.DataElementOperand;
@@ -97,13 +93,6 @@
         return dataElement;
     }
 
-    private CalculatedDataElement calculatedDataElement;
-
-    public CalculatedDataElement getCalculatedDataElement()
-    {
-        return calculatedDataElement;
-    }
-
     private Collection<DataElementGroup> dataElementGroups;
 
     public Collection<DataElementGroup> getDataElementGroups()
@@ -186,33 +175,6 @@
 
         organisationUnitLevels.removeAll( aggregationLevels );
 
-        if ( dataElement != null && dataElement instanceof CalculatedDataElement )
-        {
-            calculatedDataElement = (CalculatedDataElement) dataElement;
-            dataElementGroups = dataElementService.getAllDataElementGroups();
-
-            Collection<String> operandIds = new ArrayList<String>();
-
-            operandIds = dataElementService.getOperandIds( calculatedDataElement );
-            factorMap = dataElementService.getOperandFactors( calculatedDataElement );
-
-            for ( String operandId : operandIds )
-            {
-                String dataElementIdString = operandId.substring( 0, operandId.indexOf( SEPARATOR ) );
-                String optionComboIdString = operandId.substring( operandId.indexOf( SEPARATOR ) + 1, operandId
-                    .length() );
-
-                DataElement dataElement = dataElementService.getDataElement( Integer.parseInt( dataElementIdString ) );
-                DataElementCategoryOptionCombo optionCombo = dataElementCategoryService
-                    .getDataElementCategoryOptionCombo( Integer.parseInt( optionComboIdString ) );
-
-                DataElementOperand operand = new DataElementOperand( dataElement.getId(), optionCombo.getId(),
-                    dataElement.getName() + optionCombo.getName() );
-
-                operands.add( operand );
-            }
-        }
-
         return SUCCESS;
     }
 

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/dataelement/UpdateDataElementAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/dataelement/UpdateDataElementAction.java	2011-03-22 05:49:48 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/dataelement/UpdateDataElementAction.java	2011-04-24 15:50:02 +0000
@@ -29,18 +29,14 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
 import java.util.Set;
 
-import org.hisp.dhis.dataelement.CalculatedDataElement;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementCategoryCombo;
 import org.hisp.dhis.dataelement.DataElementCategoryService;
 import org.hisp.dhis.dataelement.DataElementService;
 import org.hisp.dhis.dataset.DataSet;
 import org.hisp.dhis.dataset.DataSetService;
-import org.hisp.dhis.expression.Expression;
 import org.hisp.dhis.system.util.ConversionUtils;
 
 import com.opensymphony.xwork2.ActionSupport;
@@ -167,27 +163,6 @@
         this.aggregationLevels = aggregationLevels;
     }
 
-    private String saved;
-
-    public void setSaved( String saved )
-    {
-        this.saved = saved;
-    }
-
-    private List<String> dataElementIds;
-
-    public void setDataElementIds( List<String> dataElementIds )
-    {
-        this.dataElementIds = dataElementIds;
-    }
-
-    private List<Double> factors;
-
-    public void setFactors( List<Double> factors )
-    {
-        this.factors = factors;
-    }
-
     private Integer selectedCategoryComboId;
 
     public void setSelectedCategoryComboId( Integer selectedCategoryComboId )
@@ -247,58 +222,9 @@
         dataElement.setAggregationOperator( aggregationOperator );
         dataElement.setUrl( url );
         dataElement.setCategoryCombo( categoryCombo );
-        dataElement.setAggregationLevels( new ArrayList<Integer>( ConversionUtils
-            .getIntegerCollection( aggregationLevels ) ) );
+        dataElement.setAggregationLevels( new ArrayList<Integer>( ConversionUtils.getIntegerCollection( aggregationLevels ) ) );
         dataElement.setZeroIsSignificant( zeroIsSignificant );
         
-
-        // ---------------------------------------------------------------------
-        // Calculated data element
-        // ---------------------------------------------------------------------
-
-        if ( dataElement instanceof CalculatedDataElement )
-        {
-            CalculatedDataElement calculatedDataElement = (CalculatedDataElement) dataElement;
-
-            Expression expression = calculatedDataElement.getExpression();
-
-            Set<DataElement> expressionDataElements = new HashSet<DataElement>();
-
-            String expressionString = "";
-
-            for ( int i = 0; i < dataElementIds.size(); i++ )
-            {
-                String operandId = dataElementIds.get( i );
-
-                String dataElementIdStr = operandId.substring( 0, operandId.indexOf( '.' ) );
-
-                DataElement expressionDataElement = dataElementService.getDataElement( Integer
-                    .parseInt( dataElementIdStr ) );
-
-                if ( expressionDataElement == null )
-                {
-                    continue;
-                }
-                
-                Double factor = factors.get( i );
-
-                expressionString += " + ([" + operandId + "] * " + factor + ")";
-
-                expressionDataElements.add( expressionDataElement );
-            }
-
-            if ( expressionString.length() > 3 )
-            {
-                expressionString = expressionString.substring( 3 );
-            }
-
-            expression.setExpression( expressionString );
-
-            expression.setDataElementsInExpression( expressionDataElements );
-
-            calculatedDataElement.setSaved( saved != null );
-        }
-
         Set<DataSet> dataSets = dataElement.getDataSets();
         for ( DataSet dataSet : dataSets )
         {

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicator/AddIndicatorAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicator/AddIndicatorAction.java	2010-04-12 21:23:33 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicator/AddIndicatorAction.java	2011-04-24 15:50:02 +0000
@@ -27,7 +27,6 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-import org.hisp.dhis.expression.ExpressionService;
 import org.hisp.dhis.indicator.Indicator;
 import org.hisp.dhis.indicator.IndicatorService;
 import org.hisp.dhis.indicator.IndicatorType;
@@ -51,14 +50,7 @@
     {
         this.indicatorService = indicatorService;
     }
-    
-    private ExpressionService expressionService;
-
-    public void setExpressionService( ExpressionService expressionService )
-    {
-        this.expressionService = expressionService;
-    }    
-    
+        
     // -------------------------------------------------------------------------
     // Input
     // -------------------------------------------------------------------------
@@ -184,10 +176,6 @@
             description = null;
         }
         
-        numerator = expressionService.replaceCDEsWithTheirExpression( numerator );
-        
-        denominator = expressionService.replaceCDEsWithTheirExpression( denominator );        
-        
         Indicator indicator = new Indicator();
         
         indicator.setName( name );

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicator/UpdateIndicatorAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicator/UpdateIndicatorAction.java	2010-04-12 21:23:33 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicator/UpdateIndicatorAction.java	2011-04-24 15:50:02 +0000
@@ -27,7 +27,6 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-import org.hisp.dhis.expression.ExpressionService;
 import org.hisp.dhis.indicator.Indicator;
 import org.hisp.dhis.indicator.IndicatorService;
 import org.hisp.dhis.indicator.IndicatorType;
@@ -51,14 +50,7 @@
     {
         this.indicatorService = indicatorService;
     }
-    
-    private ExpressionService expressionService;
-
-    public void setExpressionService( ExpressionService expressionService )
-    {
-        this.expressionService = expressionService;
-    }
-    
+        
     // -------------------------------------------------------------------------
     // Input
     // -------------------------------------------------------------------------
@@ -193,10 +185,6 @@
             description = null;
         }
         
-        numerator = expressionService.replaceCDEsWithTheirExpression( numerator );
-        
-        denominator = expressionService.replaceCDEsWithTheirExpression( denominator );
-
         indicator.setName( name );
         indicator.setAlternativeName( alternativeName );
         indicator.setShortName( shortName );

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/resources/META-INF/dhis/beans.xml	2011-01-17 17:03:05 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/resources/META-INF/dhis/beans.xml	2011-04-24 15:50:02 +0000
@@ -545,9 +545,6 @@
 		<property name="indicatorService">
 			<ref bean="org.hisp.dhis.indicator.IndicatorService" />
 		</property>
-		<property name="expressionService">
-			<ref bean="org.hisp.dhis.expression.ExpressionService" />
-		</property>
 	</bean>
 
 	<bean id="org.hisp.dhis.dd.action.indicator.UpdateIndicatorAction"
@@ -555,9 +552,6 @@
 		<property name="indicatorService">
 			<ref bean="org.hisp.dhis.indicator.IndicatorService" />
 		</property>
-		<property name="expressionService">
-			<ref bean="org.hisp.dhis.expression.ExpressionService" />
-		</property>
 	</bean>
 
 	<bean id="org.hisp.dhis.dd.action.indicator.ValidateIndicatorAction"

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/addDataElementForm.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/addDataElementForm.vm	2011-03-30 11:04:12 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/addDataElementForm.vm	2011-04-24 15:50:02 +0000
@@ -89,7 +89,7 @@
 	<tr>	
 		<td><label for="selectedCategoryComboId">$i18n.getString( "category_combo" ) <em title="$i18n.getString( 'required' )" class="required">*</em></label></td>
 		<td>
-			<select id="selectedCategoryComboId" style="min-width:20em" onchange="changeCategory(this.value)">				
+			<select id="selectedCategoryComboId" style="min-width:20em">				
 			#foreach( $dataElementCategoryCombo in $dataElementCategoryCombos )
 				<option value="$dataElementCategoryCombo.id" #if( $dataElementCategoryCombo.id == $defaultCategoryCombo.id ) selected="selected" #end>$encoder.htmlEncode( $dataElementCategoryCombo.name )</option>
 			#end
@@ -97,76 +97,6 @@
 			<input type="hidden" id="submitCategoryComboId" name="selectedCategoryComboId"/>
 		</td>
 	</tr>
-    <tr>
-        <td style="height:10px"></td>
-    </tr>
-	<tr>
-		<td><label for="calculated" id="lblCalculated">$i18n.getString( "calculated" )</label></td>
-		<td><input type="checkbox" id="calculated" name="calculated" onchange="toggleCDEForm()"/></td>
-    </tr>
-</table>
-
-<div id="calculatedContainer" style="border:1px solid #808080; padding:10px; display:none;">
-
-<table>
-    <tr>
-        <td><label for="saved">$i18n.getString( "saved" )</label>&nbsp;
-            <input type="checkbox" id="saved" name="saved" #if( $calculatedDataElement.saved ) checked="checked" #end/>
-        </td>
-    </tr>
-    <tr>
-        <td style="height:10px"></td>
-    </tr>
-    <tr>
-    	<th>$i18n.getString( "available_dataelements" )</td>
-    </tr>
-    <tr>
-    	<td>
-	    	<select id="dataElementGroupId" name="dataElementGroupId" onchange="getDataElements( this.options[this.selectedIndex].value, 'int', true )" style="width:450px">
-				<option value="[select]" selected="selected">[ $i18n.getString( "select_dataelementgroup" ) ]</option>
-				<option value="$ALL">[ $i18n.getString( "all_dataelements" ) ]</option>
-				#foreach ( $group in $dataElementGroups )
-					<option value="$group.id">$group.name</option>
-				#end
-			</select><br/>
-			<select id="availableDataElements" size="5" multiple="multiple" style="width:450px">
-	            #foreach( $operand in $operands )
-					<option value="[$operand.operandId]">$encoder.htmlEncode( $operand.operandName )</option>
-				#end             
-	        </select>		
-		</td>
-    </tr>
-    <tr>
-		<td>
-			<input id="selectOneButton" type="button" value="$i18n.getString('add_selected')" title="$i18n.getString('add_selected')" onclick="addCDEDataElements()" style="width:120px"/><input 
-			       id="deselectAllButton" type="button" value="$i18n.getString('remove_all')" title="$i18n.getString('remove_all')" onclick="removeCDEDataElements()" style="width:120px"/>
-		</td>
-    </tr>    
-    <tr>
-        <th>$i18n.getString( "selected_dataelements" )</th>
-		<td><select id="selectedDEValidator" multiple="multiple" name="selectedDEValidator" style="display:none"></select></td>
-    </tr>
-    <tr>
-		<td>
-			<table id="selectedDataElements" style="min-width:450px">
-				<tr>
-					<td style="font-weight:bold;">$i18n.getString( "data_element" )</td>
-					<td style="font-weight:bold;">$i18n.getString( "factor" )</td>
-					<td style="font-weight:bold;">$i18n.getString( "remove" )</td>					
-				</tr>
-				<tbody>
-	          		<tr class="placeholder">
-	          			<td colspan="2">None selected</td>
-	          		</tr>
-				</tbody>
-        	</table>
-		</td>
-	</tr>
-</table>
-
-</div>
-
-<table>
 	<tr>
 		<td style="height:10px" colspan="2"></td>
 	</tr>

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/javascript/addDataElementForm.js'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/javascript/addDataElementForm.js	2011-04-11 13:46:07 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/javascript/addDataElementForm.js	2011-04-24 15:50:02 +0000
@@ -1,8 +1,6 @@
 jQuery(document).ready(	function() {
 	validation2( 'addDataElementForm', function( form ){ form.submit(); }, {
 		'beforeValidateHandler': function() {
-			getDataElementIdsForValidate();
-			getFactors();
 			setFieldValue( 'submitCategoryComboId', getFieldValue( 'selectedCategoryComboId' ) );
 			setFieldValue( 'submitValueType', getFieldValue( 'valueType' ) );
 		},
@@ -12,6 +10,4 @@
 	checkValueIsExist( "name", "validateDataElement.action");
 	checkValueIsExist( "shortName", "validateDataElement.action");
 	checkValueIsExist( "alternativeName", "validateDataElement.action");
-
-	toggleCDEForm();
 });

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/javascript/dataElement.js'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/javascript/dataElement.js	2011-03-22 05:49:48 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/javascript/dataElement.js	2011-04-24 15:50:02 +0000
@@ -1,10 +1,8 @@
 function changeValueType( value )
 {
 	if( value == 'int' ){
-		enable( 'calculated' );
 		enable( 'zeroIsSignificant' );
-	}else{
-		disable( 'calculated' );		
+	}else{		
 		disable( 'zeroIsSignificant' );		
 	}	
 	
@@ -21,14 +19,6 @@
 	}
 }
 
-function changeCategory( value )
-{	
-	if( value == getFieldValue( 'defaultCategoryCombo') ){
-		enable( 'calculated' );
-	}else{
-		disable( 'calculated' );
-	}
-}
 // -----------------------------------------------------------------------------
 // Change data element group and data dictionary
 // -----------------------------------------------------------------------------
@@ -164,161 +154,3 @@
 {
     removeItem( dataElementId, dataElementName, i18n_confirm_delete, 'removeDataElement.action' );
 }
-// -----------------------------------------------------------------------------
-// Calculated Data Elements
-// -----------------------------------------------------------------------------
-
-/**
- * Adds a set of data elements to the CDE table.
- * Either add the selected ones, or add all.
- * @param requireSelect Whether to only add the selected data elements
- */
-function addCDEDataElements()
-{
-	var availableList = jQuery("#availableDataElements option");
-	
-	jQuery("#selectedDataElements tr.placeholder").remove();
-	
-	var selectedList = jQuery("#selectedDataElements")
-	
-	jQuery.each( availableList, function(i, item){
-		if( item.selected ){
-			var id = item.value;
-			var name = item.firstChild.nodeValue;
-			jQuery( item ).remove();
-			addCDEDataElement( id, name, i);			
-		}
-	});
-	
-	updateValidatorRulesForFactors();
-}
-
-function addCDEDataElement( id, name, index )
-{
-    var tr = document.createElement('tr');
-
-    var nameTd = tr.appendChild(document.createElement('td'));
-    nameTd.appendChild(document.createTextNode(name));
-    var idInput = nameTd.appendChild(document.createElement('input'));
-    idInput.type = 'hidden';
-    idInput.name = 'dataElementIds';
-    idInput.value = id;
-
-    var factorTd = tr.appendChild(document.createElement('td'));
-    var factorInput = factorTd.appendChild(document.createElement('input'));
-    factorInput.type = 'text';
-    factorInput.name = 'factors' + index;
-    factorInput.value = 1;
-
-    var opTd = tr.appendChild(document.createElement('td'));
-    var button = opTd.appendChild(document.createElement('button')); //TODO: i18n
-    button.setAttribute('title', 'Remove from list');
-    button.setAttribute('type', 'button');
-    button.onclick = removeCDEDataElement;
-    var delIcon = button.appendChild(document.createElement('img'));
-    delIcon.setAttribute( 'src', '../images/delete.png' );
-    delIcon.setAttribute( 'alt', 'Delete icon' );
-    
-    var selectedTable = byId('selectedDataElements');
-    selectedTable.appendChild(tr);
-}
-
-/**
- * Remove all elements from the CDE table.
- */
-function removeCDEDataElements( e )
-{	
-	var trs = jQuery( "#selectedDataElements tr[class!=placeholder]:gt(0)");
-	
-	jQuery.each( trs, function(i, item){		
-		var deId = jQuery( "input[name=dataElementIds]", item )[0].value;
-		var deName = jQuery( "td", item )[0].firstChild.nodeValue
-		jQuery(item).remove();
-		jQuery("#availableDataElements").append( '<option value="' + deId + '" selected="true">' + deName + '</option>' );
-		
-	});	   
-}
-
-/**
- * Remove one data element row from the CDE form.
- */
-function removeCDEDataElement( e )
-{    
-	var tr = jQuery( this ).parent().parent();	
-	var deId = tr.find( "input[name=dataElementIds]").val();
-	var deName = tr.find( "td:first" ).text();
-	tr.remove();
-	jQuery("#availableDataElements").append( '<option value="' + deId + '" selected="true">' + deName + '</option>' );
-	
-}
-
-function updateValidatorRulesForFactors()
-{
-	var inputs = jQuery("#selectedDataElements input[name*=factors]");
-	
-	jQuery.each(inputs, function(i, item ){
-		removeValidatorRules( item );
-		addValidatorRules( item, {required:true, number:true});			
-	});
-}
-
-function removeValidatorRulesForFactors()
-{
-	var inputs = jQuery("#selectedDataElements input[name*=factors]");
-	
-	jQuery.each(inputs, function(i, item ){			
-		removeValidatorRules( item );		
-	});
-}
-
-/**
- * Display or hide an element
- * @param id Id of the element to toggle
- * @param display Whether or not to display the element
- */
-function toggleCDEForm()
-{    
-	id = 'calculatedContainer';
-	display = isChecked( 'calculated' );
-	
-    if( display )
-    {
-		disable( 'valueType' );
-		disable( 'selectedCategoryComboId' );
-		showById( id );	
-		addValidatorRulesById("selectedDEValidator", {
-			required: true			
-		});
-		updateValidatorRulesForFactors();
-    }
-    else
-    {
-        enable( 'valueType' );
-        enable( 'selectedCategoryComboId' );
-		hideById( id );
-		removeValidatorRulesById("selectedDEValidator");
-		removeValidatorRulesForFactors();
-    }
-}
-
-function getFactors()
-{
-	var factorsSubmit = jQuery("#factorsSubmit");
-	var inputs = jQuery("#selectedDataElements input[name*=factors]");
-
-	jQuery.each(inputs, function(i, item ){		
-		factorsSubmit.append('<option value="' + item.value + '" selected="selected">' + item.value + '</option>');	
-	});
-}
-
-function getDataElementIdsForValidate()
-{
-	var dataElementValidators = jQuery("#selectedDEValidator");
-	var inputs = jQuery( "#selectedDataElements input[type=hidden]" );
-	
-	dataElementValidators.children().remove();
-	
-	jQuery.each(inputs, function(i, item ){				
-		dataElementValidators.append('<option value="' + item.value + '" selected="selected">' + item.value + '</option>');	
-	});
-}

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/javascript/updateDataElementForm.js'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/javascript/updateDataElementForm.js	2011-04-11 13:46:07 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/javascript/updateDataElementForm.js	2011-04-24 15:50:02 +0000
@@ -1,8 +1,6 @@
 jQuery(document).ready(	function() {
 	validation2( 'updateDataElementForm', function( form ) { form.submit(); }, {
 		'beforeValidateHandler': function() {
-			getDataElementIdsForValidate();
-			getFactors();	
 			setFieldValue( 'submitCategoryComboId', getFieldValue( 'selectedCategoryComboId' ) );
 			setFieldValue( 'submitValueType', getFieldValue( 'valueType' ) );
 		},

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/updateDataElementForm.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/updateDataElementForm.vm	2011-03-30 11:04:12 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/updateDataElementForm.vm	2011-04-24 15:50:02 +0000
@@ -5,11 +5,7 @@
 		checkValueIsExist( "shortName", "validateDataElement.action", {id:getFieldValue('id')});
 		checkValueIsExist( "alternativeName", "validateDataElement.action", {id:getFieldValue('id')});
 
-		#if ( $calculatedDataElement )
-			toggleCDEForm();
-		#else
-			updateAggreationOperation( getFieldValue('valueType') );
-		#end
+		updateAggreationOperation( getFieldValue('valueType') );
 	});
 
 	var previousName = '$encoder.jsEscape( $dataElement.name, "'" )';
@@ -124,7 +120,7 @@
 	<tr #if( $calculatedDataElement ) style="display:none" #end >	
 		<td><label for="selectedCategoryComboId">$i18n.getString( "category_combo" ) <em title="$i18n.getString( 'required' )" class="required">*</em></label></td>
 		<td>
-			<select id="selectedCategoryComboId" style="min-width:20em" onchange="changeCategory(this.value)">				
+			<select id="selectedCategoryComboId" style="min-width:20em">				
 			#foreach( $dataElementCategoryCombo in $dataElementCategoryCombos )
 				<option value="$dataElementCategoryCombo.id" #if( $dataElementCategoryCombo.id == $dataElement.categoryCombo.id ) selected="selected" #end>$encoder.htmlEncode( $dataElementCategoryCombo.name )</option>
 			#end
@@ -132,82 +128,6 @@
 			<input type="hidden" id="submitCategoryComboId" name="selectedCategoryComboId"/>
 		</td>
 	</tr>
-	#if ( $calculatedDataElement )
-    <tr>
-        <td style="height:10px"></td>
-    </tr>
-	<tr>
-		<td><label for="calculated">$i18n.getString( "calculated" )</label></td>
- 		<td><input type="checkbox" id="calculated" name="calculated" checked="checked" disabled="disabled"/></td>
-	</tr>
-	#end
-</table>
-
-#if ( $calculatedDataElement )
-<div id="calculatedContainer" style="border:1px solid #808080; padding:10px;">
-	<table>
-		<tr>
-			<td><label for="saved">$i18n.getString('saved')</label>&nbsp;
-			    <input type="checkbox" id="saved" name="saved" value="true" #if( $calculatedDataElement.saved ) checked="checked" #end/>
-			</td>
-		</tr>
-	    <tr>
-	        <td style="height:10px"></td>
-	    </tr>
-	    <tr>
-	        <th>$i18n.getString( "available_dataelements" )</td>
-	    </tr>
-		<tr>
-			<td>
-				<select id="dataElementGroupId" name="dataElementGroupId" onchange="getDataElements( this.options[this.selectedIndex].value, 'int', true )" style="width:30em">
-					<option value="[select]" selected="selected">[ $i18n.getString( "select_dataelementgroup" ) ]</option>
-					<option value="$ALL">[ $i18n.getString( "all_dataelements" ) ]</option>
-					#foreach ( $group in $dataElementGroups )
-						<option value="$group.id">$group.name</option>
-					#end
-				</select><br/>
-				<select id="availableDataElements" size="5" multiple="multiple" style="width:30em">
-					#foreach( $dataElement in $dataElements )
-					<option value="$dataElement.id" title="$dataElement.name">$dataElement.name</option>
-					#end
-				</select>
-			</td>
-	    </tr>    
-	    <tr>
-	        <td>
-	            <input id="selectOneButton" type="button" value="$i18n.getString('add_selected')" title="$i18n.getString('add_selected')" onclick="addCDEDataElements()" style="width:120px"/><input 
-	                   id="deselectAllButton" type="button" value="$i18n.getString('remove_all')" title="$i18n.getString('remove_all')" onclick="removeCDEDataElements()" style="width:120px"/>
-	        </td>
-	    </tr>
-	    <tr>
-	        <th style="width:450px">$i18n.getString( "selected_dataelements" )</th>
-			<td><select id="selectedDEValidator" multiple="multiple"  name="selectedDEValidator" style="display:none"></select></td>
-	    </tr>
-	    <tr>
-			<td>
-				<table id="selectedDataElements" style="min-width:450px">
-					<tr>
-	                    <td style="font-weight:bold;">$i18n.getString( "data_element" )</td>
-	                    <td style="font-weight:bold;">$i18n.getString( "factor" )</td>
-	                    <td style="font-weight:bold;">$i18n.getString( "remove" )</td>                  
-	                </tr>
-					#set($i = 0)
-					#foreach ( $operand in $operands )
-					<tr>
-						<td>$operand.operandName<input type="hidden" name="dataElementIds" value="$operand.operandId"></td>
-						<td><input type="text" name="factors$i" value="$factorMap.get($operand.operandId)"/></td>
-						<td><button type="button" title="$i18n.getString('remove_all')" onclick="removeCDEDataElement( this )"><img src="../images/delete.png" alt="$i18n.getString('delete_icon')"/></button></td>
-					</tr>
-					#set($i = $i + 1)
-					#end
-				</table>
-			</td>
-		</tr>
-	</table>
-</div>
-#end
-
-<table>
     <tr>
         <td style="height:10px" colspan="2"></td>
     </tr>

=== modified file 'dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/exp/MetaDataExportAction.java'
--- dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/exp/MetaDataExportAction.java	2011-03-23 02:40:08 +0000
+++ dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/exp/MetaDataExportAction.java	2011-04-24 15:50:02 +0000
@@ -107,7 +107,6 @@
         params.setCategoryOptions( null );
         params.setCategoryOptionCombos( null );
         params.setDataElements( null );
-        params.setCalculatedDataElements( null );
         params.setDataElementGroups( null );
         params.setDataElementGroupSets( null );
         params.setIndicators( null );


Follow ups