# HG changeset patch # User Raimund Renkert # Date 1347544260 0 # Node ID 312870fded7eaae287f1dab92d3725ceaf9199d3 # Parent e54f8dc222cf0f9275ee5fc2bb9fdfb80507f634 Added result objects for minfo bed quality calculation. flys-artifacts/trunk@5459 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r e54f8dc222cf -r 312870fded7e flys-artifacts/ChangeLog --- a/flys-artifacts/ChangeLog Thu Sep 13 13:47:02 2012 +0000 +++ b/flys-artifacts/ChangeLog Thu Sep 13 13:51:00 2012 +0000 @@ -1,3 +1,17 @@ +2012-09-13 Raimund Renkert + + * src/main/java/de/intevation/flys/artifacts/access/BedQualityAccess.java: + Added getter for calculation parameters. + + * src/main/java/de/intevation/flys/artifacts/model/BedQualityCalculation.java: + Removed. Moved to package de.intevation.flys.artifacts.model.minfo. + + * src/main/java/de/intevation/flys/artifacts/model/minfo/BedQualityResult.java, + src/main/java/de/intevation/flys/artifacts/model/minfo/BedLoadBedQualityResult.java, + src/main/java/de/intevation/flys/artifacts/model/minfo/BedBedQualityResult.java, + src/main/java/de/intevation/flys/artifacts/model/minfo/BedQualityCalculation.java: + New. Calculation results and some more calculation stub. + 2012-09-13 Ingo Weinzierl * doc/conf/artifacts/minfo.xml, diff -r e54f8dc222cf -r 312870fded7e flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/BedQualityAccess.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/BedQualityAccess.java Thu Sep 13 13:47:02 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/BedQualityAccess.java Thu Sep 13 13:51:00 2012 +0000 @@ -1,11 +1,70 @@ package de.intevation.flys.artifacts.access; +import java.util.Date; +import java.util.LinkedList; +import java.util.List; + import de.intevation.flys.artifacts.FLYSArtifact; +import de.intevation.flys.artifacts.model.DateRange; + public class BedQualityAccess extends Access { + private Double from; + private Double to; + private String river; + private List ranges; + public BedQualityAccess(FLYSArtifact artifact) { super(artifact); } + + public double getFrom() { + if (from == null) { + from = getDouble("ld_from"); + } + return from.doubleValue(); + } + + public double getTo() { + if (to == null) { + to = getDouble("ld_to"); + } + return to.doubleValue(); + } + + public String getRiver() { + if (river == null) { + river = getString("river"); + } + return river; + } + + public List getDateRanges() { + if (ranges == null) { + ranges = extractRanges(getString("periods")); + } + return ranges; + } + + private List extractRanges(String dateString) { + List list = new LinkedList(); + String[] dates = dateString.split(";"); + for (String s : dates) { + String[] pair = s.split(","); + try { + long l1 = Long.parseLong(pair[0]); + long l2 = Long.parseLong(pair[1]); + Date first = new Date(l1); + Date second = new Date(l2); + DateRange dr = new DateRange(first, second); + list.add(dr); + } + catch (NumberFormatException nfe) { + continue; + } + } + return list; + } } -// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : \ No newline at end of file diff -r e54f8dc222cf -r 312870fded7e flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/BedQualityCalculation.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/BedQualityCalculation.java Thu Sep 13 13:47:02 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -package de.intevation.flys.artifacts.model; - -import org.apache.log4j.Logger; - -import de.intevation.flys.artifacts.access.BedQualityAccess; - -public class BedQualityCalculation extends Calculation { - - private static final Logger logger = Logger.getLogger(BedQualityCalculation.class); - - public CalculationResult calculate(BedQualityAccess access) { - logger.info("BedQualityCalculation.calculate"); - - // TODO calculate - Object result = null; - - return new CalculationResult(result, this); - } -} diff -r e54f8dc222cf -r 312870fded7e flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/BedBedQualityResult.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/BedBedQualityResult.java Thu Sep 13 13:51:00 2012 +0000 @@ -0,0 +1,69 @@ +package de.intevation.flys.artifacts.model.minfo; + +import de.intevation.flys.artifacts.model.DateRange; + + +public class BedBedQualityResult +extends BedQualityResult { + + protected double depth1; + protected double depth2; + protected double porosityCap; + protected double porositySub; + protected double loadDensityCap; + protected double loadDensitySub; + + public BedBedQualityResult( + DIAMETER_TYPE type, + double diameter, + double km, + DateRange range, + double depth1, + double depth2, + double porosityCap, + double porositySub, + double loadDensityCap, + double loadDensitySub + ) { + super(type, diameter, km, range); + this.depth1 = depth1; + this.depth2 = depth2; + this.porosityCap = porosityCap; + this.loadDensitySub = porositySub; + this.loadDensityCap = loadDensityCap; + this.loadDensitySub = loadDensitySub; + } + + public double getPorosityCap() { + return porosityCap; + } + + public void setPorosityCap(double porosityCap) { + this.porosityCap = porosityCap; + } + + public double getPorositySub() { + return porositySub; + } + + public void setPorositySub(double porositySub) { + this.porositySub = porositySub; + } + + public double getLoadDensityCap() { + return loadDensityCap; + } + + public void setLoadDensityCap(double loadDensityCap) { + this.loadDensityCap = loadDensityCap; + } + + public double getLoadDensitySub() { + return loadDensitySub; + } + + public void setLoadDensitySub(double loadDensitySub) { + this.loadDensitySub = loadDensitySub; + } + +} diff -r e54f8dc222cf -r 312870fded7e flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/BedLoadBedQualityResult.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/BedLoadBedQualityResult.java Thu Sep 13 13:51:00 2012 +0000 @@ -0,0 +1,7 @@ +package de.intevation.flys.artifacts.model.minfo; + +public class BedLoadBedQualityResult +extends BedQualityResult +{ + +} diff -r e54f8dc222cf -r 312870fded7e flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/BedQualityCalculation.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/BedQualityCalculation.java Thu Sep 13 13:51:00 2012 +0000 @@ -0,0 +1,103 @@ +package de.intevation.flys.artifacts.model.minfo; + +import java.util.LinkedList; +import java.util.List; + +import org.apache.log4j.Logger; + +import de.intevation.flys.artifacts.access.BedQualityAccess; +import de.intevation.flys.artifacts.model.Calculation; +import de.intevation.flys.artifacts.model.CalculationResult; +import de.intevation.flys.artifacts.model.DateRange; +import de.intevation.flys.backend.SedDBSessionHolder; + + +public class BedQualityCalculation extends Calculation { + + private static final Logger logger = Logger + .getLogger(BedQualityCalculation.class); + + protected String river; + protected double from; + protected double to; + protected List ranges; + + public BedQualityCalculation() { + } + + public CalculationResult calculate(BedQualityAccess access) { + logger.info("BedQualityCalculation.calculate"); + + String river = access.getRiver(); + Double from = access.getFrom(); + Double to = access.getTo(); + List ranges = access.getDateRanges(); + + if (river == null) { + // TODO: i18n + addProblem("minfo.missing.river"); + } + + if (from == null) { + // TODO: i18n + addProblem("minfo.missing.from"); + } + + if (to == null) { + // TODO: i18n + addProblem("minfo.missing.to"); + } + + if (ranges == null) { + // TODO: i18n + addProblem("minfo.missing.periods"); + } + + if (!hasProblems()) { + this.river = river; + this.from = from; + this.to = to; + this.ranges = ranges; + + SedDBSessionHolder.acquire(); + try { + return internalCalculate(); + } + finally { + SedDBSessionHolder.release(); + } + } + + return new CalculationResult(); + } + + protected CalculationResult internalCalculate() { + + List results = new LinkedList(); + // Calculate for all time periods. + for (DateRange dr : ranges) { + QualityMeasurements bedMeasurements = QualityMeasurementFactory + .getBedMeasurements(river, from, to, dr.getFrom(), dr.getTo()); + QualityMeasurements loadMeasurements = QualityMeasurementFactory + .getBedMeasurements(river, from, to, dr.getFrom(), dr.getTo()); + + BedQualityResult bedResult = calculateBed(bedMeasurements); + BedQualityResult loadResult = calculateBedload(loadMeasurements); + results.add(bedResult); + results.add(loadResult); + } + + return new CalculationResult( + results.toArray(new BedQualityResult[results.size()]), this); + } + + protected BedQualityResult calculateBed(QualityMeasurements qm) { + // TODO + return new BedQualityResult(); + } + + protected BedQualityResult calculateBedload(QualityMeasurements qm) { + // TODO + return new BedQualityResult(); + } +} diff -r e54f8dc222cf -r 312870fded7e flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/BedQualityResult.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/BedQualityResult.java Thu Sep 13 13:51:00 2012 +0000 @@ -0,0 +1,78 @@ +package de.intevation.flys.artifacts.model.minfo; + +import java.io.Serializable; + +import de.intevation.flys.artifacts.model.DateRange; + +public class BedQualityResult implements Serializable { + + public static enum DIAMETER_TYPE { + D90, + D84, + D80, + D75, + D70, + D60, + D50, + D40, + D30, + D25, + D20, + D16, + D10, + DMIN, + DMAX + } + + protected DIAMETER_TYPE type; + protected double diameter; + protected double km; + protected DateRange dateRange; + + public BedQualityResult () { + } + + public BedQualityResult ( + DIAMETER_TYPE type, + double diameter, + double km, + DateRange range + ) { + this.type = type; + this.diameter = diameter; + this.km = km; + this.dateRange = range; + } + + public DIAMETER_TYPE getType() { + return this.type; + } + + public double getKm() { + return this.km; + } + + public double getDiameter() { + return this.diameter; + } + + public DateRange getDateRange() { + return this.dateRange; + } + public void setType(DIAMETER_TYPE type) { + this.type = type; + } + + public void setDiameter(double diameter) { + this.diameter = diameter; + } + + public void setKm(double km) { + this.km = km; + } + + public void setDateRange(DateRange dateRange) { + this.dateRange = dateRange; + } + +}