Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/SedimentLoadCalculate.java @ 6392:9a0f8d532797
Load sedimentload fraction with sedimentload factory and add new facets to artifact.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Fri, 21 Jun 2013 15:35:44 +0200 |
parents | 01ff5cd6abfa |
children | ab11ce67854b |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/SedimentLoadCalculate.java Fri Jun 21 15:33:06 2013 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/SedimentLoadCalculate.java Fri Jun 21 15:35:44 2013 +0200 @@ -9,10 +9,10 @@ package org.dive4elements.river.artifacts.states.minfo; import java.util.ArrayList; +import java.util.Date; import java.util.List; import org.apache.log4j.Logger; - import org.dive4elements.artifactdatabase.state.Facet; import org.dive4elements.artifactdatabase.state.FacetActivity; import org.dive4elements.artifacts.Artifact; @@ -21,14 +21,17 @@ import org.dive4elements.river.artifacts.D4EArtifact; import org.dive4elements.river.artifacts.access.SedimentLoadAccess; import org.dive4elements.river.artifacts.model.CalculationResult; -import org.dive4elements.river.artifacts.model.DataFacet; import org.dive4elements.river.artifacts.model.FacetTypes; import org.dive4elements.river.artifacts.model.ReportFacet; +import org.dive4elements.river.artifacts.model.minfo.SedimentLoad; import org.dive4elements.river.artifacts.model.minfo.SedimentLoadCalculation; import org.dive4elements.river.artifacts.model.minfo.SedimentLoadFacet; +import org.dive4elements.river.artifacts.model.minfo.SedimentLoadFactory; import org.dive4elements.river.artifacts.model.minfo.SedimentLoadResult; +import org.dive4elements.river.artifacts.model.minfo.SedimentLoadUnknownFacet; import org.dive4elements.river.artifacts.resources.Resources; import org.dive4elements.river.artifacts.states.DefaultState; +import org.dive4elements.river.utils.DateGuesser; public class SedimentLoadCalculate @@ -70,6 +73,42 @@ name.equals(SEDIMENT_LOAD_SUSP_SAND_BED)){ return Boolean.FALSE; } + else if (name.equals(SEDIMENT_LOAD_UNKOWN)) { + D4EArtifact d4e = (D4EArtifact)artifact; + SedimentLoadUnknownFacet f = + (SedimentLoadUnknownFacet) + d4e.getNativeFacet(facet, null); + SedimentLoad load = + (SedimentLoad)f.getData(artifact, null); + SedimentLoadAccess access = + new SedimentLoadAccess(d4e); + List<int[]> dates = new ArrayList<int[]>(); + if (access.getYearEpoch().equals("year")) { + dates.add(access.getPeriod()); + } + else { + int[][] epochs = access.getEpochs(); + for (int i = 0; i < epochs.length; i++) { + dates.add(epochs[i]); + } + } + for (int[] date: dates) { + try { + Date s = + DateGuesser.guessDate(String.valueOf(date[0])); + Date e = + DateGuesser.guessDate(String.valueOf(date[1])); + if (!(s.after(load.getEnd()) || + e.before(load.getStart()))) { + return Boolean.TRUE; + } + } + catch (IllegalArgumentException iae) { + return Boolean.FALSE; + } + } + return Boolean.FALSE; + } else { return null; } @@ -100,6 +139,10 @@ return res; } + String river = access.getRiver(); + SedimentLoad[] unknown = + SedimentLoadFactory.getSedimentLoadUnknown(river); + String type = access.getYearEpoch(); if (type.equals("year")) { generateYearFacets(context, newFacets, results, getID(), hash); @@ -114,6 +157,16 @@ if (res.getReport().hasProblems()) { newFacets.add(new ReportFacet(ComputeType.ADVANCE, hash, id)); } + + for (int i = 0; i < unknown.length; i++) { + newFacets.add(new SedimentLoadUnknownFacet( + i, + SEDIMENT_LOAD_UNKOWN, + unknown[i].getDescription(), + ComputeType.ADVANCE, + getID(), + hash)); + } facets.addAll(newFacets); return res;