teichmann@5863: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5863: * Software engineering by Intevation GmbH teichmann@5863: * teichmann@5994: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5863: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5994: * documentation coming with Dive4Elements River for details. teichmann@5863: */ teichmann@5863: teichmann@5831: package org.dive4elements.river.artifacts.states.minfo; rrenkert@4220: rrenkert@4372: import java.util.ArrayList; rrenkert@6392: import java.util.Date; rrenkert@4372: import java.util.List; rrenkert@4372: rrenkert@4372: import org.apache.log4j.Logger; teichmann@5831: import org.dive4elements.artifactdatabase.state.Facet; rrenkert@6361: import org.dive4elements.artifactdatabase.state.FacetActivity; rrenkert@6361: import org.dive4elements.artifacts.Artifact; teichmann@5831: import org.dive4elements.artifacts.CallContext; teichmann@5831: import org.dive4elements.artifacts.CallMeta; teichmann@5867: import org.dive4elements.river.artifacts.D4EArtifact; teichmann@5831: import org.dive4elements.river.artifacts.access.SedimentLoadAccess; teichmann@5831: import org.dive4elements.river.artifacts.model.CalculationResult; felix@6668: import org.dive4elements.river.artifacts.model.DataFacet; teichmann@5831: import org.dive4elements.river.artifacts.model.FacetTypes; teichmann@5831: import org.dive4elements.river.artifacts.model.ReportFacet; rrenkert@6392: import org.dive4elements.river.artifacts.model.minfo.SedimentLoad; teichmann@5831: import org.dive4elements.river.artifacts.model.minfo.SedimentLoadCalculation; teichmann@5831: import org.dive4elements.river.artifacts.model.minfo.SedimentLoadFacet; rrenkert@6392: import org.dive4elements.river.artifacts.model.minfo.SedimentLoadFactory; teichmann@5831: import org.dive4elements.river.artifacts.model.minfo.SedimentLoadResult; rrenkert@6392: import org.dive4elements.river.artifacts.model.minfo.SedimentLoadUnknownFacet; teichmann@5831: import org.dive4elements.river.artifacts.resources.Resources; teichmann@5831: import org.dive4elements.river.artifacts.states.DefaultState; rrenkert@6392: import org.dive4elements.river.utils.DateGuesser; rrenkert@4220: felix@6680: /** State in which Sediment Load(s) are calculated/retrieved. */ rrenkert@4220: public class SedimentLoadCalculate rrenkert@4220: extends DefaultState teichmann@4736: implements FacetTypes rrenkert@4220: { rrenkert@4220: rrenkert@4372: private static final long serialVersionUID = 1L; rrenkert@4372: rrenkert@4372: private static final Logger logger = Logger rrenkert@4372: .getLogger(SedimentLoadCalculate.class); rrenkert@4372: rrenkert@4372: public static final String I18N_FACET_SEDIMENTLOAD_COARSE = "facet.sedimentload.coarse"; rrenkert@4372: public static final String I18N_FACET_SEDIMENTLOAD_SAND = "facet.sedimentload.sand"; rrenkert@4372: public static final String I18N_FACET_SEDIMENTLOAD_FINE_MIDDLE = "facet.sedimentload.fine_middle"; rrenkert@4372: public static final String I18N_FACET_SEDIMENTLOAD_SUSPSAND = "facet.sedimentload.susp_sand"; rrenkert@4372: public static final String I18N_FACET_SEDIMENTLOAD_SUSPSANDBED = "facet.sediemntload.susp_sand_bed"; rrenkert@4372: public static final String I18N_FACET_SEDIMENTLOAD_SUSPSEDIMENT = "facet.sedimentload.susp_sediment"; rrenkert@4546: public static final String I18N_FACET_SEDIMENTLOAD_TOTAL_LOAD = "facet.sedimentload.total_load"; rrenkert@4372: public static final String I18N_FACET_SEDIMENTLOAD_TOTAL = "facet.sedimentload.total"; rrenkert@4372: rrenkert@6361: static { rrenkert@6361: // Active/deactivate facets. rrenkert@6361: FacetActivity.Registry.getInstance().register( rrenkert@6361: "minfo", rrenkert@6361: new FacetActivity() { rrenkert@6361: @Override rrenkert@6361: public Boolean isInitialActive( rrenkert@6361: Artifact artifact, rrenkert@6361: Facet facet, rrenkert@6361: String output rrenkert@6361: ) { rrenkert@6361: String name = facet.getName(); felix@7502: if (name.equals(SEDIMENT_LOAD_TA_COARSE) || felix@7502: name.equals(SEDIMENT_LOAD_TA_FINEMIDDLE) || felix@7502: name.equals(SEDIMENT_LOAD_TA_SAND) || felix@7502: name.equals(SEDIMENT_LOAD_TA_SUSP_SAND) || felix@7502: name.equals(SEDIMENT_LOAD_TA_SUSP_SEDIMENT) || felix@7502: name.equals(SEDIMENT_LOAD_TA_SUSP_SAND_BED) || felix@7502: name.equals(SEDIMENT_LOAD_M3A_COARSE) || felix@7502: name.equals(SEDIMENT_LOAD_M3A_FINEMIDDLE) || felix@7502: name.equals(SEDIMENT_LOAD_M3A_SAND) || felix@7502: name.equals(SEDIMENT_LOAD_M3A_SUSP_SAND) || felix@7502: name.equals(SEDIMENT_LOAD_M3A_SUSP_SEDIMENT) || felix@7502: name.equals(SEDIMENT_LOAD_M3A_SUSP_SAND_BED)){ rrenkert@6361: return Boolean.FALSE; rrenkert@6361: } felix@7502: else if (name.equals(SEDIMENT_LOAD_TA_UNKNOWN) felix@7502: || name.equals(SEDIMENT_LOAD_M3A_UNKNOWN)) { rrenkert@6392: D4EArtifact d4e = (D4EArtifact)artifact; rrenkert@6392: SedimentLoadUnknownFacet f = rrenkert@6392: (SedimentLoadUnknownFacet) rrenkert@6392: d4e.getNativeFacet(facet, null); rrenkert@6392: SedimentLoad load = rrenkert@6392: (SedimentLoad)f.getData(artifact, null); rrenkert@6392: SedimentLoadAccess access = rrenkert@6392: new SedimentLoadAccess(d4e); rrenkert@6392: List dates = new ArrayList(); rrenkert@6392: if (access.getYearEpoch().equals("year")) { rrenkert@6392: dates.add(access.getPeriod()); rrenkert@6392: } rrenkert@6392: else { rrenkert@6392: int[][] epochs = access.getEpochs(); rrenkert@6392: for (int i = 0; i < epochs.length; i++) { rrenkert@6392: dates.add(epochs[i]); rrenkert@6392: } rrenkert@6392: } rrenkert@6392: for (int[] date: dates) { rrenkert@6392: try { rrenkert@6392: Date s = rrenkert@6392: DateGuesser.guessDate(String.valueOf(date[0])); rrenkert@6392: Date e = rrenkert@6392: DateGuesser.guessDate(String.valueOf(date[1])); rrenkert@6392: if (!(s.after(load.getEnd()) || rrenkert@6392: e.before(load.getStart()))) { rrenkert@6392: return Boolean.TRUE; rrenkert@6392: } rrenkert@6392: } rrenkert@6392: catch (IllegalArgumentException iae) { rrenkert@6392: return Boolean.FALSE; rrenkert@6392: } rrenkert@6392: } rrenkert@6392: return Boolean.FALSE; rrenkert@6392: } rrenkert@6361: else { rrenkert@6361: return null; rrenkert@6361: } rrenkert@6361: } rrenkert@6361: }); rrenkert@6361: } rrenkert@6361: rrenkert@4372: @Override teichmann@5867: public Object computeAdvance(D4EArtifact artifact, String hash, rrenkert@4372: CallContext context, List facets, Object old) { rrenkert@4372: logger.debug("SedimentLoadCalculate.computeAdvance"); rrenkert@4372: rrenkert@4372: List newFacets = new ArrayList(); rrenkert@4372: felix@7529: SedimentLoadAccess access = new SedimentLoadAccess(artifact); rrenkert@4372: rrenkert@4372: CalculationResult res = old instanceof CalculationResult ? (CalculationResult) old rrenkert@4372: : new SedimentLoadCalculation().calculate(access); rrenkert@4372: rrenkert@4372: if (facets == null || res == null) { rrenkert@4372: return res; rrenkert@4372: } rrenkert@4372: rrenkert@4372: SedimentLoadResult[] results = (SedimentLoadResult[]) res.getData(); rrenkert@4372: rrenkert@4372: if (results == null || results.length == 0) { rrenkert@4372: logger.warn("Calculation computed no results!"); rrenkert@4372: return res; rrenkert@4372: } rrenkert@4372: rrenkert@4372: String type = access.getYearEpoch(); rrenkert@4372: if (type.equals("year")) { felix@7529: generateYearFacets(context, newFacets, results, getID(), hash, access); rrenkert@4372: } rrenkert@4372: else if (type.equals("epoch")) { felix@7529: generateEpochFacets(context, newFacets, results, getID(), hash, access); rrenkert@4372: } rrenkert@4372: else if (type.equals("off_epoch")) { felix@7529: generateOffEpochFacets(context, newFacets, results, getID(), hash, access); rrenkert@4372: } rrenkert@4372: logger.debug("Created " + newFacets.size() + " new Facets."); felix@6756: felix@7261: String river = access.getRiverName(); felix@6756: SedimentLoad[] unknown = felix@6756: SedimentLoadFactory.getSedimentLoadUnknown(river, felix@6756: access.getUnit().replace("_per_","/"), type); felix@6756: felix@7502: boolean isUnitTA = access.getUnit().startsWith("t"); felix@7502: rrenkert@4519: if (res.getReport().hasProblems()) { rrenkert@4519: newFacets.add(new ReportFacet(ComputeType.ADVANCE, hash, id)); rrenkert@4519: } rrenkert@6392: rrenkert@6392: for (int i = 0; i < unknown.length; i++) { rrenkert@6392: newFacets.add(new SedimentLoadUnknownFacet( rrenkert@6392: i, felix@7502: (isUnitTA)? SEDIMENT_LOAD_TA_UNKNOWN:SEDIMENT_LOAD_M3A_UNKNOWN, rrenkert@6392: unknown[i].getDescription(), rrenkert@6392: ComputeType.ADVANCE, rrenkert@6392: getID(), rrenkert@6392: hash)); rrenkert@6392: } felix@6668: felix@6668: newFacets.add( felix@6668: new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id)); felix@6668: rrenkert@4372: facets.addAll(newFacets); rrenkert@4372: rrenkert@4372: return res; rrenkert@4372: } rrenkert@4372: felix@7520: private String facetNameInfo(SedimentLoadResult result, String unit) { felix@7520: return " - " + result.getStartYear() + " " + unit; felix@7520: } felix@7520: felix@7520: felix@7520: protected void generateYearFacets(CallContext context, felix@7520: List newFacets, felix@7529: SedimentLoadResult[] results, felix@7529: String stateId, felix@7529: String hash, felix@7529: SedimentLoadAccess access felix@7520: ) { felix@7520: logger.debug("SedimentLoadCalculate.generateFacets " + access.getUnit()); rrenkert@4372: rrenkert@4372: CallMeta meta = context.getMeta(); felix@7502: boolean isUnitTA = access.getUnit().startsWith("t"); felix@7520: String unit = (isUnitTA) felix@7520: ? Resources.getMsg(context.getMeta(), "state.minfo.sediment.load.t_per_a", "(t/a)") felix@7520: : Resources.getMsg(context.getMeta(), "state.minfo.sediment.load.m3_per_a", "(m^3/a)"); rrenkert@4372: rrenkert@4372: // newFacets.add(new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id)); rrenkert@4372: for (int idx = 0; idx < results.length; idx++) { rrenkert@4372: SedimentLoadResult res = results[idx]; rrenkert@4372: if (res.hasCoarseData()) { rrenkert@4372: newFacets.add(new SedimentLoadFacet( rrenkert@4372: idx, felix@7502: (isUnitTA) felix@7502: ?SEDIMENT_LOAD_TA_COARSE felix@7502: :SEDIMENT_LOAD_M3A_COARSE, rrenkert@4372: Resources.getMsg( rrenkert@4372: meta, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_COARSE, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_COARSE) + felix@7520: facetNameInfo(res, unit), rrenkert@4372: ComputeType.ADVANCE, rrenkert@4372: stateId, rrenkert@4372: hash)); rrenkert@4372: } rrenkert@4372: if (res.hasSandData()) { rrenkert@4372: newFacets.add(new SedimentLoadFacet( rrenkert@4372: idx, felix@7502: (isUnitTA) felix@7502: ?SEDIMENT_LOAD_TA_SAND felix@7502: :SEDIMENT_LOAD_M3A_SAND, rrenkert@4372: Resources.getMsg( rrenkert@4372: meta, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_SAND, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_SAND) + felix@7520: facetNameInfo(res, unit), rrenkert@4372: ComputeType.ADVANCE, rrenkert@4372: stateId, rrenkert@4372: hash)); rrenkert@4372: } rrenkert@4372: if (res.hasFineMiddleData()) { rrenkert@4372: newFacets.add(new SedimentLoadFacet( rrenkert@4372: idx, felix@7502: (isUnitTA) felix@7502: ?SEDIMENT_LOAD_TA_FINEMIDDLE felix@7502: :SEDIMENT_LOAD_M3A_FINEMIDDLE, rrenkert@4372: Resources.getMsg( rrenkert@4372: meta, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_FINE_MIDDLE, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_FINE_MIDDLE) + felix@7520: facetNameInfo(res, unit), rrenkert@4372: ComputeType.ADVANCE, rrenkert@4372: stateId, rrenkert@4372: hash)); rrenkert@4372: } rrenkert@4372: if (res.hasSuspSandData()) { rrenkert@4372: newFacets.add(new SedimentLoadFacet( rrenkert@4372: idx, felix@7502: (isUnitTA) felix@7502: ?SEDIMENT_LOAD_TA_SUSP_SAND felix@7502: :SEDIMENT_LOAD_M3A_SUSP_SAND, rrenkert@4372: Resources.getMsg( rrenkert@4372: meta, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_SUSPSAND, felix@7520: I18N_FACET_SEDIMENTLOAD_SUSPSAND) + felix@7520: facetNameInfo(res, unit), rrenkert@4372: ComputeType.ADVANCE, rrenkert@4372: stateId, rrenkert@4372: hash)); rrenkert@4372: } rrenkert@4372: if (res.hasSuspSandBedData()) { rrenkert@4372: newFacets.add(new SedimentLoadFacet( rrenkert@4372: idx, felix@7502: (isUnitTA) felix@7502: ?SEDIMENT_LOAD_TA_SUSP_SAND_BED felix@7502: :SEDIMENT_LOAD_M3A_SUSP_SAND_BED, rrenkert@4372: Resources.getMsg( rrenkert@4372: meta, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_SUSPSANDBED, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_SUSPSANDBED) + felix@7520: facetNameInfo(res, unit), rrenkert@4372: ComputeType.ADVANCE, rrenkert@4372: stateId, rrenkert@4372: hash)); rrenkert@4372: } rrenkert@4372: if (res.hasSuspSedimentData()) { rrenkert@4372: newFacets.add(new SedimentLoadFacet( rrenkert@4372: idx, felix@7502: (isUnitTA) felix@7502: ?SEDIMENT_LOAD_TA_SUSP_SEDIMENT felix@7502: :SEDIMENT_LOAD_M3A_SUSP_SEDIMENT, rrenkert@4372: Resources.getMsg( rrenkert@4372: meta, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_SUSPSEDIMENT, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_SUSPSEDIMENT) + felix@7520: facetNameInfo(res, unit), rrenkert@4372: ComputeType.ADVANCE, rrenkert@4372: stateId, rrenkert@4372: hash)); rrenkert@4372: rrenkert@4372: } rrenkert@4372: if (res.hasTotalData()) { rrenkert@4372: newFacets.add(new SedimentLoadFacet( rrenkert@4372: idx, felix@7502: (isUnitTA) felix@7502: ?SEDIMENT_LOAD_TA_TOTAL felix@7502: :SEDIMENT_LOAD_M3A_TOTAL, rrenkert@4372: Resources.getMsg( rrenkert@4372: meta, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_TOTAL, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_TOTAL) + felix@7520: facetNameInfo(res, unit), rrenkert@4372: ComputeType.ADVANCE, rrenkert@4372: stateId, rrenkert@4372: hash)); rrenkert@4372: } rrenkert@4372: } rrenkert@4372: } rrenkert@4372: felix@7520: private String epochFacetNameInfo(SedimentLoadResult result, String unit) { felix@7520: return " - " + result.getStartYear() + "-" + result.getEndYear() + " " + unit; felix@7520: } felix@7520: rrenkert@4372: protected void generateEpochFacets( rrenkert@4372: CallContext context, rrenkert@4372: List newFacets, rrenkert@4372: SedimentLoadResult[] results, rrenkert@4372: String stateId, felix@7529: String hash, felix@7529: SedimentLoadAccess access rrenkert@4372: ) { felix@7520: logger.debug("SedimentLoadCalculate.generateEpochFacets "); rrenkert@4372: rrenkert@4372: CallMeta meta = context.getMeta(); felix@7502: boolean isUnitTA = access.getUnit().startsWith("t"); felix@7520: String unit = (isUnitTA) felix@7520: ? Resources.getMsg(context.getMeta(), "state.minfo.sediment.load.t_per_a", "(t/a)") felix@7520: : Resources.getMsg(context.getMeta(), "state.minfo.sediment.load.m3_per_a", "(m^3/a)"); rrenkert@4372: rrenkert@4372: // newFacets.add(new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id)); felix@7520: for (int idx = 0; idx < results.length; idx++) { SedimentLoadResult res = results[idx]; rrenkert@4372: if (res.hasCoarseData()) { rrenkert@4372: newFacets.add(new SedimentLoadFacet( rrenkert@4372: idx, felix@7502: (isUnitTA) felix@7502: ?SEDIMENT_LOAD_TA_COARSE felix@7502: :SEDIMENT_LOAD_M3A_COARSE, rrenkert@4372: Resources.getMsg( rrenkert@4372: meta, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_COARSE, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_COARSE) + felix@7520: epochFacetNameInfo(res,unit), rrenkert@4372: ComputeType.ADVANCE, rrenkert@4372: stateId, rrenkert@4372: hash)); rrenkert@4372: } rrenkert@4372: if (res.hasSandData()) { rrenkert@4372: newFacets.add(new SedimentLoadFacet( rrenkert@4372: idx, felix@7502: (isUnitTA) felix@7502: ?SEDIMENT_LOAD_TA_SAND felix@7502: :SEDIMENT_LOAD_M3A_SAND, rrenkert@4372: Resources.getMsg( rrenkert@4372: meta, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_SAND, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_SAND) + felix@7520: epochFacetNameInfo(res,unit), rrenkert@4372: ComputeType.ADVANCE, rrenkert@4372: stateId, rrenkert@4372: hash)); rrenkert@4372: } rrenkert@4372: if (res.hasFineMiddleData()) { rrenkert@4372: newFacets.add(new SedimentLoadFacet( rrenkert@4372: idx, felix@7502: (isUnitTA) felix@7502: ?SEDIMENT_LOAD_TA_FINEMIDDLE felix@7502: :SEDIMENT_LOAD_M3A_FINEMIDDLE, rrenkert@4372: Resources.getMsg( rrenkert@4372: meta, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_FINE_MIDDLE, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_FINE_MIDDLE) + felix@7521: epochFacetNameInfo(res,unit), rrenkert@4372: ComputeType.ADVANCE, rrenkert@4372: stateId, rrenkert@4372: hash)); rrenkert@4372: } rrenkert@4372: if (res.hasSuspSandData()) { rrenkert@4372: newFacets.add(new SedimentLoadFacet( rrenkert@4372: idx, felix@7502: (isUnitTA) felix@7502: ?SEDIMENT_LOAD_TA_SUSP_SAND felix@7502: :SEDIMENT_LOAD_M3A_SUSP_SAND, rrenkert@4372: Resources.getMsg( rrenkert@4372: meta, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_SUSPSAND, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_SUSPSAND) felix@7520: + epochFacetNameInfo(res,unit), rrenkert@4372: ComputeType.ADVANCE, rrenkert@4372: stateId, rrenkert@4372: hash)); rrenkert@4372: } rrenkert@4372: if (res.hasSuspSandBedData()) { rrenkert@4372: newFacets.add(new SedimentLoadFacet( rrenkert@4372: idx, felix@7502: (isUnitTA) felix@7502: ?SEDIMENT_LOAD_TA_SUSP_SAND_BED felix@7502: :SEDIMENT_LOAD_M3A_SUSP_SAND, rrenkert@4372: Resources.getMsg( rrenkert@4372: meta, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_SUSPSANDBED, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_SUSPSANDBED) + felix@7520: epochFacetNameInfo(res,unit), rrenkert@4372: ComputeType.ADVANCE, rrenkert@4372: stateId, rrenkert@4372: hash)); rrenkert@4372: } rrenkert@4372: if (res.hasSuspSedimentData()) { rrenkert@4372: newFacets.add(new SedimentLoadFacet( rrenkert@4372: idx, felix@7502: (isUnitTA) felix@7502: ?SEDIMENT_LOAD_TA_SUSP_SEDIMENT felix@7502: :SEDIMENT_LOAD_M3A_SUSP_SEDIMENT, rrenkert@4372: Resources.getMsg( rrenkert@4372: meta, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_SUSPSEDIMENT, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_SUSPSEDIMENT) + felix@7520: epochFacetNameInfo(res,unit), rrenkert@4372: ComputeType.ADVANCE, rrenkert@4372: stateId, rrenkert@4372: hash)); rrenkert@4372: rrenkert@4372: } rrenkert@4546: if (res.hasTotalLoadData()) { rrenkert@4546: newFacets.add(new SedimentLoadFacet( rrenkert@4546: idx, felix@7502: (isUnitTA) felix@7502: ?SEDIMENT_LOAD_TA_TOTAL_LOAD felix@7502: :SEDIMENT_LOAD_M3A_TOTAL_LOAD, rrenkert@4546: Resources.getMsg( rrenkert@4546: meta, rrenkert@4546: I18N_FACET_SEDIMENTLOAD_TOTAL_LOAD, rrenkert@4546: I18N_FACET_SEDIMENTLOAD_TOTAL_LOAD) + felix@7520: epochFacetNameInfo(res,unit), rrenkert@4546: ComputeType.ADVANCE, rrenkert@4546: stateId, rrenkert@4546: hash)); rrenkert@4546: } rrenkert@4372: if (res.hasTotalData()) { rrenkert@4372: newFacets.add(new SedimentLoadFacet( rrenkert@4372: idx, felix@7502: (isUnitTA) felix@7502: ?SEDIMENT_LOAD_TA_TOTAL felix@7502: :SEDIMENT_LOAD_M3A_TOTAL, rrenkert@4372: Resources.getMsg( rrenkert@4372: meta, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_TOTAL, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_TOTAL) + felix@7520: epochFacetNameInfo(res,unit), rrenkert@4372: ComputeType.ADVANCE, rrenkert@4372: stateId, rrenkert@4372: hash)); rrenkert@4372: } rrenkert@4372: } rrenkert@4372: } rrenkert@4372: rrenkert@4372: protected void generateOffEpochFacets( rrenkert@4372: CallContext context, rrenkert@4372: List newFacets, rrenkert@4372: SedimentLoadResult[] results, rrenkert@4372: String stateId, felix@7529: String hash, felix@7529: SedimentLoadAccess access rrenkert@4372: ) { rrenkert@4372: logger.debug("SedimentLoadCalculate.generateOffEpochFacets"); rrenkert@4372: rrenkert@4372: CallMeta meta = context.getMeta(); felix@7502: boolean isUnitTA = access.getUnit().startsWith("t"); felix@7520: String unit = (isUnitTA) felix@7520: ? Resources.getMsg(context.getMeta(), "state.minfo.sediment.load.t_per_a", "(t/a)") felix@7520: : Resources.getMsg(context.getMeta(), "state.minfo.sediment.load.m3_per_a", "(m^3/a)"); rrenkert@4372: rrenkert@4372: // newFacets.add(new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id)); rrenkert@4372: for (int idx = 0; idx < results.length; idx++) { rrenkert@4372: SedimentLoadResult res = results[idx]; rrenkert@4372: if (res.hasCoarseData()) { rrenkert@4372: newFacets.add(new SedimentLoadFacet( rrenkert@4372: idx, felix@7502: (isUnitTA) felix@7502: ?SEDIMENT_LOAD_TA_COARSE felix@7502: :SEDIMENT_LOAD_M3A_COARSE, rrenkert@4372: Resources.getMsg( rrenkert@4372: meta, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_COARSE, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_COARSE) + felix@7520: epochFacetNameInfo(res,unit), rrenkert@4372: ComputeType.ADVANCE, rrenkert@4372: stateId, rrenkert@4372: hash)); rrenkert@4372: } rrenkert@4372: if (res.hasSandData()) { rrenkert@4372: newFacets.add(new SedimentLoadFacet( rrenkert@4372: idx, felix@7502: (isUnitTA) felix@7502: ?SEDIMENT_LOAD_TA_SAND felix@7502: :SEDIMENT_LOAD_M3A_SAND, rrenkert@4372: Resources.getMsg( rrenkert@4372: meta, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_SAND, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_SAND) + felix@7520: epochFacetNameInfo(res,unit), rrenkert@4372: ComputeType.ADVANCE, rrenkert@4372: stateId, rrenkert@4372: hash)); rrenkert@4372: } rrenkert@4372: if (res.hasFineMiddleData()) { rrenkert@4372: newFacets.add(new SedimentLoadFacet( rrenkert@4372: idx, felix@7502: (isUnitTA) felix@7502: ?SEDIMENT_LOAD_TA_FINEMIDDLE felix@7502: :SEDIMENT_LOAD_M3A_FINEMIDDLE, rrenkert@4372: Resources.getMsg( rrenkert@4372: meta, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_FINE_MIDDLE, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_FINE_MIDDLE) + felix@7520: epochFacetNameInfo(res,unit), rrenkert@4372: ComputeType.ADVANCE, rrenkert@4372: stateId, rrenkert@4372: hash)); rrenkert@4372: } rrenkert@4372: if (res.hasSuspSandData()) { rrenkert@4372: newFacets.add(new SedimentLoadFacet( rrenkert@4372: idx, felix@7502: (isUnitTA) felix@7502: ?SEDIMENT_LOAD_TA_SUSP_SAND felix@7502: :SEDIMENT_LOAD_M3A_SUSP_SAND, rrenkert@4372: Resources.getMsg( rrenkert@4372: meta, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_SUSPSAND, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_SUSPSAND) + felix@7520: epochFacetNameInfo(res,unit), rrenkert@4372: ComputeType.ADVANCE, rrenkert@4372: stateId, rrenkert@4372: hash)); rrenkert@4372: } rrenkert@4372: if (res.hasSuspSandBedData()) { rrenkert@4372: newFacets.add(new SedimentLoadFacet( rrenkert@4372: idx, felix@7502: (isUnitTA) felix@7502: ?SEDIMENT_LOAD_TA_SUSP_SAND_BED felix@7502: :SEDIMENT_LOAD_M3A_SUSP_SAND_BED, rrenkert@4372: Resources.getMsg( rrenkert@4372: meta, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_SUSPSANDBED, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_SUSPSANDBED) + felix@7520: epochFacetNameInfo(res,unit), rrenkert@4372: ComputeType.ADVANCE, rrenkert@4372: stateId, rrenkert@4372: hash)); rrenkert@4372: } rrenkert@4372: if (res.hasSuspSedimentData()) { rrenkert@4372: newFacets.add(new SedimentLoadFacet( rrenkert@4372: idx, felix@7502: (isUnitTA) felix@7502: ?SEDIMENT_LOAD_TA_SUSP_SEDIMENT felix@7502: :SEDIMENT_LOAD_M3A_SUSP_SEDIMENT, rrenkert@4372: Resources.getMsg( rrenkert@4372: meta, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_SUSPSEDIMENT, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_SUSPSEDIMENT) + felix@7520: epochFacetNameInfo(res,unit), rrenkert@4372: ComputeType.ADVANCE, rrenkert@4372: stateId, rrenkert@4372: hash)); rrenkert@4372: rrenkert@4372: } rrenkert@4546: if (res.hasTotalLoadData()) { rrenkert@4546: newFacets.add(new SedimentLoadFacet( rrenkert@4546: idx, felix@7502: (isUnitTA) felix@7502: ?SEDIMENT_LOAD_TA_TOTAL_LOAD felix@7502: :SEDIMENT_LOAD_M3A_TOTAL_LOAD, rrenkert@4546: Resources.getMsg( rrenkert@4546: meta, rrenkert@4546: I18N_FACET_SEDIMENTLOAD_TOTAL_LOAD, rrenkert@4546: I18N_FACET_SEDIMENTLOAD_TOTAL_LOAD) + felix@7520: epochFacetNameInfo(res,unit), rrenkert@4546: ComputeType.ADVANCE, rrenkert@4546: stateId, rrenkert@4546: hash)); rrenkert@4546: } rrenkert@4372: if (res.hasTotalData()) { rrenkert@4372: newFacets.add(new SedimentLoadFacet( rrenkert@4372: idx, felix@7502: (isUnitTA) felix@7502: ?SEDIMENT_LOAD_TA_TOTAL felix@7502: :SEDIMENT_LOAD_M3A_TOTAL, rrenkert@4372: Resources.getMsg( rrenkert@4372: meta, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_TOTAL, rrenkert@4372: I18N_FACET_SEDIMENTLOAD_TOTAL) + felix@7520: epochFacetNameInfo(res,unit), rrenkert@4372: ComputeType.ADVANCE, rrenkert@4372: stateId, rrenkert@4372: hash)); rrenkert@4372: } rrenkert@4372: } rrenkert@4372: } rrenkert@4220: } felix@6680: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :