Author: chatellier Date: 2011-06-08 10:21:58 +0000 (Wed, 08 Jun 2011) New Revision: 3362 Log: Add constructor with percentage type Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/mexico/xml/DomXMLParser.java isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/DesignPlan.java isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorGroup.java isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/ContinuousDomain.java isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/DiscreteDomain.java isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/EquationContinuousDomain.java isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/MatrixContinuousDomain.java Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/mexico/xml/DomXMLParser.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/mexico/xml/DomXMLParser.java 2011-06-08 09:59:48 UTC (rev 3361) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/mexico/xml/DomXMLParser.java 2011-06-08 10:21:58 UTC (rev 3362) @@ -158,7 +158,7 @@ if(property.equals(MATRIXCONTINUOUS)) { // matrix specific // <coefficient operator="-" value="0.799"/> - MatrixContinuousDomain mdomain = new MatrixContinuousDomain(); + MatrixContinuousDomain mdomain = new MatrixContinuousDomain(true); Element coefficientElement = fixedElement.element(COEFFICIENT); mdomain.setCoefficient(Double.valueOf(coefficientElement.attributeValue(VALUE))); @@ -166,20 +166,18 @@ Element matrixElement = fixedElement.element(MX); MatrixND matrix = MexicoHelper.getMatrixFromXml(matrixElement, topiaContext); mdomain.setReferenceValue(matrix); - mdomain.setPercentageType(true); domain = mdomain; } else if (property.equals(EQUATIONCONTINUOUS)) { // equation specific - EquationContinuousDomain edomain = new EquationContinuousDomain(); + EquationContinuousDomain edomain = new EquationContinuousDomain(true); Element coefficientElement = fixedElement.element(COEFFICIENT); edomain.setCoefficient(Double.valueOf(coefficientElement.attributeValue(VALUE))); Element equationElement = fixedElement.element(EQUATION); edomain.setReferenceValue(Double.valueOf(equationElement.attributeValue(REFERENCE))); edomain.setVariableName(equationElement.attributeValue(VARIABLE)); - edomain.setPercentageType(true); domain = edomain; } @@ -226,7 +224,7 @@ if(property.equals(MATRIXCONTINUOUS)) { // matrix specific - MatrixContinuousDomain mdomain = new MatrixContinuousDomain(); + MatrixContinuousDomain mdomain = new MatrixContinuousDomain(true); Element coefficientElement = fixedElement.element(COEFFICIENT); mdomain.setCoefficient(Double.valueOf(coefficientElement.attributeValue(VALUE))); @@ -235,14 +233,13 @@ Element matrixElement = fixedElement.element(MX); MatrixND matrix = MexicoHelper.getMatrixFromXml(matrixElement, topiaContext); mdomain.setReferenceValue(matrix); - mdomain.setPercentageType(true); domain = mdomain; } else if (property.equals(EQUATIONCONTINUOUS)) { // equation specific - EquationContinuousDomain edomain = new EquationContinuousDomain(); + EquationContinuousDomain edomain = new EquationContinuousDomain(true); Element coefficientElement = fixedElement.element(COEFFICIENT); edomain.setCoefficient(Double.valueOf(coefficientElement.attributeValue(VALUE))); @@ -250,7 +247,6 @@ Element equationElement = fixedElement.element(EQUATION); edomain.setReferenceValue(Double.valueOf(equationElement.attributeValue(REFERENCE))); edomain.setVariableName(equationElement.attributeValue(VARIABLE)); - edomain.setPercentageType(true); domain = edomain; } @@ -354,7 +350,7 @@ ContinuousDomain domain; if(property.equals(MATRIXCONTINUOUS)) { - MatrixContinuousDomain mdomain = new MatrixContinuousDomain(); + MatrixContinuousDomain mdomain = new MatrixContinuousDomain(true); Element referenceElement = fixedElement.element(REFERENCE); if (referenceElement != null) { // matrix specific Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/DesignPlan.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/DesignPlan.java 2011-06-08 09:59:48 UTC (rev 3361) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/DesignPlan.java 2011-06-08 10:21:58 UTC (rev 3362) @@ -65,6 +65,15 @@ } /** + * Return design plan main factor group. + * + * @return design plan factor group + */ + public FactorGroup getFactorGroup() { + return factorGroup; + } + + /** * Add factor. * * @param f factor to add Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorGroup.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorGroup.java 2011-06-08 09:59:48 UTC (rev 3361) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorGroup.java 2011-06-08 10:21:58 UTC (rev 3362) @@ -173,6 +173,13 @@ } /** + * Clear all factor group sub factors. + */ + public void clearFactors() { + factors.clear(); + } + + /** * Convenient method to access specific factor. * * @param index index Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/ContinuousDomain.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/ContinuousDomain.java 2011-06-08 09:59:48 UTC (rev 3361) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/ContinuousDomain.java 2011-06-08 10:21:58 UTC (rev 3362) @@ -25,10 +25,9 @@ package fr.ifremer.isisfish.simulator.sensitivity.domain; +import fr.ifremer.isisfish.IsisFishRuntimeException; import fr.ifremer.isisfish.simulator.sensitivity.Domain; import fr.ifremer.isisfish.simulator.sensitivity.visitor.DomainVisitor; -import org.nuiton.math.matrix.MapFunction; -import org.nuiton.math.matrix.MatrixND; /** * @@ -76,10 +75,10 @@ protected boolean percentageType; /** - * Empty constructor. + * Min/max type constructor. */ public ContinuousDomain() { - + this(false); } /** @@ -94,10 +93,29 @@ this.maxBound = maxBound; } + /** + * Constructor with type. + * + * @param percentageType if {@code true} percentage type + */ + public ContinuousDomain(boolean percentageType) { + this.percentageType = percentageType; + } + + /** + * Return factor type (min/max or percentage). + * + * @return {@code true} if percentage type + */ public boolean isPercentageType() { return percentageType; } + /** + * Set domain type (min/max or percentage). + * + * @param percentageType new type value + */ public void setPercentageType(boolean percentageType) { this.percentageType = percentageType; } @@ -109,13 +127,13 @@ * @return the minimum bound */ public Object getMinBound() { + Object result; if (isPercentageType()) { - - return ((Double)referenceValue + (((Double)referenceValue * coefficient) * ((2 * getCalculatorMinBound() - 1)))); - + result = ((Double)referenceValue + (((Double)referenceValue * coefficient) * ((2 * getCalculatorMinBound() - 1)))); } else { - return minBound; + result = minBound; } + return result; } /** @@ -143,13 +161,15 @@ * @return the maximum bound */ public Object getMaxBound() { + Object result; if (isPercentageType()) { - return ((Double) referenceValue + + result = ((Double) referenceValue + (((Double) referenceValue * coefficient) * ((2 * getCalculatorMaxBound() - 1)))); } else { - return maxBound; + result = maxBound; } + return result; } /** @@ -215,8 +235,8 @@ Double result; if (isPercentageType()) { - // since 3.4.0.0, operator is always * - result = ((Double)referenceValue + (((Double)referenceValue * coefficient) + // since 3.4.0.0, operator is always * + result = ((Double)referenceValue + (((Double)referenceValue * coefficient) * ((2 * (Double)identifier - 1)))); } else { result = ((Double)identifier * ((Double)maxBound - (Double)minBound)) @@ -259,7 +279,7 @@ try { cloned = (ContinuousDomain)super.clone(); } catch (CloneNotSupportedException e) { - throw new RuntimeException("Error on clone()", e); + throw new IsisFishRuntimeException("Can't clone domain", e); } return cloned; } Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/DiscreteDomain.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/DiscreteDomain.java 2011-06-08 09:59:48 UTC (rev 3361) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/DiscreteDomain.java 2011-06-08 10:21:58 UTC (rev 3362) @@ -29,6 +29,7 @@ import java.util.SortedMap; import java.util.TreeMap; +import fr.ifremer.isisfish.IsisFishRuntimeException; import fr.ifremer.isisfish.simulator.sensitivity.Domain; import fr.ifremer.isisfish.simulator.sensitivity.visitor.DomainVisitor; @@ -115,7 +116,7 @@ // special copy for values cloned.setValues(new TreeMap<Object, Object>(this.values)); } catch (CloneNotSupportedException e) { - throw new RuntimeException("Error on clone()", e); + throw new IsisFishRuntimeException("Can't clone domain", e); } return cloned; } Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/EquationContinuousDomain.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/EquationContinuousDomain.java 2011-06-08 09:59:48 UTC (rev 3361) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/EquationContinuousDomain.java 2011-06-08 10:21:58 UTC (rev 3362) @@ -45,6 +45,22 @@ protected String variableName; /** + * Min/max type constructor. + */ + public EquationContinuousDomain() { + super(); + } + + /** + * Constructor with type. + * + * @param percentageType if {@code true} percentage type + */ + public EquationContinuousDomain(boolean percentageType) { + super(percentageType); + } + + /** * Get variable name. * * @return the variableName Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/MatrixContinuousDomain.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/MatrixContinuousDomain.java 2011-06-08 09:59:48 UTC (rev 3361) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/MatrixContinuousDomain.java 2011-06-08 10:21:58 UTC (rev 3362) @@ -41,6 +41,22 @@ /** serialVersionUID. */ private static final long serialVersionUID = -2037768174807839046L; + /** + * Min/max type constructor. + */ + public MatrixContinuousDomain() { + super(); + } + + /** + * Constructor with type. + * + * @param percentageType if {@code true} percentage type + */ + public MatrixContinuousDomain(boolean percentageType) { + super(percentageType); + } + @Override public Object getValueForIdentifier(Object identifier) { return getValueForIdentifier((Double)identifier);