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