Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/minfo/SedimentLoadCalculate.java @ 4496:d8992459b408
Add method to return the facets of an artifact
This methos should be used to get the facets of an artifact instead of accessing
the facets member variable directly.
author | Björn Ricks <bjoern.ricks@intevation.de> |
---|---|
date | Wed, 14 Nov 2012 11:11:04 +0100 |
parents | 19772b414d46 |
children | 3e1810e72199 |
line wrap: on
line source
package de.intevation.flys.artifacts.states.minfo; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import de.intevation.artifactdatabase.state.Facet; import de.intevation.artifacts.CallContext; import de.intevation.artifacts.CallMeta; import de.intevation.flys.artifacts.FLYSArtifact; import de.intevation.flys.artifacts.access.SedimentLoadAccess; import de.intevation.flys.artifacts.model.CalculationResult; import de.intevation.flys.artifacts.model.DataFacet; import de.intevation.flys.artifacts.model.FacetTypes; import de.intevation.flys.artifacts.model.minfo.SedimentLoadCalculation; import de.intevation.flys.artifacts.model.minfo.SedimentLoadFacet; import de.intevation.flys.artifacts.model.minfo.SedimentLoadResult; import de.intevation.flys.artifacts.resources.Resources; import de.intevation.flys.artifacts.states.DefaultState; public class SedimentLoadCalculate extends DefaultState implements FacetTypes { private static final long serialVersionUID = 1L; private static final Logger logger = Logger .getLogger(SedimentLoadCalculate.class); public static final String I18N_FACET_SEDIMENTLOAD_COARSE = "facet.sedimentload.coarse"; public static final String I18N_FACET_SEDIMENTLOAD_SAND = "facet.sedimentload.sand"; public static final String I18N_FACET_SEDIMENTLOAD_FINE_MIDDLE = "facet.sedimentload.fine_middle"; public static final String I18N_FACET_SEDIMENTLOAD_SUSPSAND = "facet.sedimentload.susp_sand"; public static final String I18N_FACET_SEDIMENTLOAD_SUSPSANDBED = "facet.sediemntload.susp_sand_bed"; public static final String I18N_FACET_SEDIMENTLOAD_SUSPSEDIMENT = "facet.sedimentload.susp_sediment"; public static final String I18N_FACET_SEDIMENTLOAD_TOTAL = "facet.sedimentload.total"; @Override public Object computeAdvance(FLYSArtifact artifact, String hash, CallContext context, List<Facet> facets, Object old) { logger.debug("SedimentLoadCalculate.computeAdvance"); List<Facet> newFacets = new ArrayList<Facet>(); SedimentLoadAccess access = new SedimentLoadAccess(artifact); CalculationResult res = old instanceof CalculationResult ? (CalculationResult) old : new SedimentLoadCalculation().calculate(access); if (facets == null || res == null) { return res; } SedimentLoadResult[] results = (SedimentLoadResult[]) res.getData(); if (results == null || results.length == 0) { logger.warn("Calculation computed no results!"); return res; } String type = access.getYearEpoch(); if (type.equals("year")) { generateYearFacets(context, newFacets, results, getID(), hash); } else if (type.equals("epoch")) { generateEpochFacets(context, newFacets, results, getID(), hash); } else if (type.equals("off_epoch")) { generateOffEpochFacets(context, newFacets, results, getID(), hash); } logger.debug("Created " + newFacets.size() + " new Facets."); facets.addAll(newFacets); return res; } protected void generateYearFacets(CallContext context, List<Facet> newFacets, SedimentLoadResult[] results, String stateId, String hash) { logger.debug("SedimentLoadCalculate.generateFacets"); CallMeta meta = context.getMeta(); // newFacets.add(new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id)); for (int idx = 0; idx < results.length; idx++) { SedimentLoadResult res = results[idx]; if (res.hasCoarseData()) { newFacets.add(new SedimentLoadFacet( idx, SEDIMENT_LOAD_COARSE, Resources.getMsg( meta, I18N_FACET_SEDIMENTLOAD_COARSE, I18N_FACET_SEDIMENTLOAD_COARSE) + " - " + res.getStartYear(), ComputeType.ADVANCE, stateId, hash)); } if (res.hasSandData()) { newFacets.add(new SedimentLoadFacet( idx, SEDIMENT_LOAD_SAND, Resources.getMsg( meta, I18N_FACET_SEDIMENTLOAD_SAND, I18N_FACET_SEDIMENTLOAD_SAND) + " - " + res.getStartYear(), ComputeType.ADVANCE, stateId, hash)); } if (res.hasFineMiddleData()) { newFacets.add(new SedimentLoadFacet( idx, SEDIMENT_LOAD_FINEMIDDLE, Resources.getMsg( meta, I18N_FACET_SEDIMENTLOAD_FINE_MIDDLE, I18N_FACET_SEDIMENTLOAD_FINE_MIDDLE) + " - " + res.getStartYear(), ComputeType.ADVANCE, stateId, hash)); } if (res.hasSuspSandData()) { newFacets.add(new SedimentLoadFacet( idx, SEDIMENT_LOAD_SUSP_SAND, Resources.getMsg( meta, I18N_FACET_SEDIMENTLOAD_SUSPSAND, I18N_FACET_SEDIMENTLOAD_SUSPSAND) + " - " + res.getStartYear(), ComputeType.ADVANCE, stateId, hash)); } if (res.hasSuspSandBedData()) { newFacets.add(new SedimentLoadFacet( idx, SEDIMENT_LOAD_SUSP_SAND_BED, Resources.getMsg( meta, I18N_FACET_SEDIMENTLOAD_SUSPSANDBED, I18N_FACET_SEDIMENTLOAD_SUSPSANDBED) + " - " + res.getStartYear(), ComputeType.ADVANCE, stateId, hash)); } if (res.hasSuspSedimentData()) { newFacets.add(new SedimentLoadFacet( idx, SEDIMENT_LOAD_SUSP_SEDIMENT, Resources.getMsg( meta, I18N_FACET_SEDIMENTLOAD_SUSPSEDIMENT, I18N_FACET_SEDIMENTLOAD_SUSPSEDIMENT) + " - " + res.getStartYear(), ComputeType.ADVANCE, stateId, hash)); } if (res.hasTotalData()) { newFacets.add(new SedimentLoadFacet( idx, SEDIMENT_LOAD_TOTAL, Resources.getMsg( meta, I18N_FACET_SEDIMENTLOAD_TOTAL, I18N_FACET_SEDIMENTLOAD_TOTAL) + " - " + res.getStartYear(), ComputeType.ADVANCE, stateId, hash)); } } } protected void generateEpochFacets( CallContext context, List<Facet> newFacets, SedimentLoadResult[] results, String stateId, String hash ) { logger.debug("SedimentLoadCalculate.generateEpochFacets"); CallMeta meta = context.getMeta(); // newFacets.add(new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id)); for (int idx = 0; idx < results.length; idx++) { SedimentLoadResult res = results[idx]; if (res.hasCoarseData()) { newFacets.add(new SedimentLoadFacet( idx, SEDIMENT_LOAD_COARSE, Resources.getMsg( meta, I18N_FACET_SEDIMENTLOAD_COARSE, I18N_FACET_SEDIMENTLOAD_COARSE) + " - " + res.getStartYear() + "-" + res.getEndYear(), ComputeType.ADVANCE, stateId, hash)); } if (res.hasSandData()) { newFacets.add(new SedimentLoadFacet( idx, SEDIMENT_LOAD_SAND, Resources.getMsg( meta, I18N_FACET_SEDIMENTLOAD_SAND, I18N_FACET_SEDIMENTLOAD_SAND) + " - " + res.getStartYear() + "-" + res.getEndYear(), ComputeType.ADVANCE, stateId, hash)); } if (res.hasFineMiddleData()) { newFacets.add(new SedimentLoadFacet( idx, SEDIMENT_LOAD_FINEMIDDLE, Resources.getMsg( meta, I18N_FACET_SEDIMENTLOAD_FINE_MIDDLE, I18N_FACET_SEDIMENTLOAD_FINE_MIDDLE) + " - " + res.getStartYear(), ComputeType.ADVANCE, stateId, hash)); } if (res.hasSuspSandData()) { newFacets.add(new SedimentLoadFacet( idx, SEDIMENT_LOAD_SUSP_SAND, Resources.getMsg( meta, I18N_FACET_SEDIMENTLOAD_SUSPSAND, I18N_FACET_SEDIMENTLOAD_SUSPSAND) + " - " + res.getStartYear() + "-" + res.getEndYear(), ComputeType.ADVANCE, stateId, hash)); } if (res.hasSuspSandBedData()) { newFacets.add(new SedimentLoadFacet( idx, SEDIMENT_LOAD_SUSP_SAND_BED, Resources.getMsg( meta, I18N_FACET_SEDIMENTLOAD_SUSPSANDBED, I18N_FACET_SEDIMENTLOAD_SUSPSANDBED) + " - " + res.getStartYear() + "-" + res.getEndYear(), ComputeType.ADVANCE, stateId, hash)); } if (res.hasSuspSedimentData()) { newFacets.add(new SedimentLoadFacet( idx, SEDIMENT_LOAD_SUSP_SEDIMENT, Resources.getMsg( meta, I18N_FACET_SEDIMENTLOAD_SUSPSEDIMENT, I18N_FACET_SEDIMENTLOAD_SUSPSEDIMENT) + " - " + res.getStartYear() + "-" + res.getEndYear(), ComputeType.ADVANCE, stateId, hash)); } if (res.hasTotalData()) { newFacets.add(new SedimentLoadFacet( idx, SEDIMENT_LOAD_TOTAL, Resources.getMsg( meta, I18N_FACET_SEDIMENTLOAD_TOTAL, I18N_FACET_SEDIMENTLOAD_TOTAL) + " - " + res.getStartYear() + "-" + res.getEndYear(), ComputeType.ADVANCE, stateId, hash)); } } } protected void generateOffEpochFacets( CallContext context, List<Facet> newFacets, SedimentLoadResult[] results, String stateId, String hash ) { logger.debug("SedimentLoadCalculate.generateOffEpochFacets"); CallMeta meta = context.getMeta(); // newFacets.add(new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id)); for (int idx = 0; idx < results.length; idx++) { SedimentLoadResult res = results[idx]; if (res.hasCoarseData()) { newFacets.add(new SedimentLoadFacet( idx, SEDIMENT_LOAD_COARSE, Resources.getMsg( meta, I18N_FACET_SEDIMENTLOAD_COARSE, I18N_FACET_SEDIMENTLOAD_COARSE) + " - " + res.getStartYear() + "-" + res.getEndYear(), ComputeType.ADVANCE, stateId, hash)); } if (res.hasSandData()) { newFacets.add(new SedimentLoadFacet( idx, SEDIMENT_LOAD_SAND, Resources.getMsg( meta, I18N_FACET_SEDIMENTLOAD_SAND, I18N_FACET_SEDIMENTLOAD_SAND) + " - " + res.getStartYear() + "-" + res.getEndYear(), ComputeType.ADVANCE, stateId, hash)); } if (res.hasFineMiddleData()) { newFacets.add(new SedimentLoadFacet( idx, SEDIMENT_LOAD_FINEMIDDLE, Resources.getMsg( meta, I18N_FACET_SEDIMENTLOAD_FINE_MIDDLE, I18N_FACET_SEDIMENTLOAD_FINE_MIDDLE) + " - " + res.getStartYear() + "-" + res.getEndYear(), ComputeType.ADVANCE, stateId, hash)); } if (res.hasSuspSandData()) { newFacets.add(new SedimentLoadFacet( idx, SEDIMENT_LOAD_SUSP_SAND, Resources.getMsg( meta, I18N_FACET_SEDIMENTLOAD_SUSPSAND, I18N_FACET_SEDIMENTLOAD_SUSPSAND) + " - " + res.getStartYear() + "-" + res.getEndYear(), ComputeType.ADVANCE, stateId, hash)); } if (res.hasSuspSandBedData()) { newFacets.add(new SedimentLoadFacet( idx, SEDIMENT_LOAD_SUSP_SAND_BED, Resources.getMsg( meta, I18N_FACET_SEDIMENTLOAD_SUSPSANDBED, I18N_FACET_SEDIMENTLOAD_SUSPSANDBED) + " - " + res.getStartYear() + "-" + res.getEndYear(), ComputeType.ADVANCE, stateId, hash)); } if (res.hasSuspSedimentData()) { newFacets.add(new SedimentLoadFacet( idx, SEDIMENT_LOAD_SUSP_SEDIMENT, Resources.getMsg( meta, I18N_FACET_SEDIMENTLOAD_SUSPSEDIMENT, I18N_FACET_SEDIMENTLOAD_SUSPSEDIMENT) + " - " + res.getStartYear() + "-" + res.getEndYear(), ComputeType.ADVANCE, stateId, hash)); } if (res.hasTotalData()) { newFacets.add(new SedimentLoadFacet( idx, SEDIMENT_LOAD_TOTAL, Resources.getMsg( meta, I18N_FACET_SEDIMENTLOAD_TOTAL, I18N_FACET_SEDIMENTLOAD_TOTAL) + " - " + res.getStartYear() + "-" + res.getEndYear(), ComputeType.ADVANCE, stateId, hash)); } } } }