# HG changeset patch # User "Tom Gottfried " # Date 1409559357 -7200 # Node ID bb770daccd1d6e2e02fbe536cebcac0575fd3452 # Parent 363b82ecf29fda1aca0f4d2f6f8b58c0c45ab70f Broken -> broke away. diff -r 363b82ecf29f -r bb770daccd1d artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadCalculation.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadCalculation.java Mon Sep 01 10:09:53 2014 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,551 +0,0 @@ -/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde - * Software engineering by Intevation GmbH - * - * This file is Free Software under the GNU AGPL (>=v3) - * and comes with ABSOLUTELY NO WARRANTY! Check out the - * documentation coming with Dive4Elements River for details. - */ - -package org.dive4elements.river.artifacts.model.minfo; - -import gnu.trove.TDoubleArrayList; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.log4j.Logger; - -import org.dive4elements.river.artifacts.access.SedimentLoadAccess; -import org.dive4elements.river.artifacts.model.Calculation; -import org.dive4elements.river.artifacts.model.CalculationResult; -import org.dive4elements.river.artifacts.model.Range; - - -/** Calculate sediment load. */ -public class SedimentLoadCalculation -extends Calculation -{ - - /** Private logger. */ - private static final Logger logger = Logger - .getLogger(SedimentLoadCalculation.class); - - protected String river; - protected String yearEpoch; - protected double kmUp; - protected double kmLow; - protected int[] period; - /** Years of chosen epochs. - * epoch[0][0] is the start year of first entered epoch, e[0][1] the end-year. */ - protected int[][] epoch; - protected String unit; - - public SedimentLoadCalculation() { - } - - /** Returns CalculationResult with array of SedimentLoadResults. */ - public CalculationResult calculate(SedimentLoadAccess access) { - logger.info("SedimentLoadCalculation.calculate"); - - String river = access.getRiverName(); - String yearEpoch = access.getYearEpoch(); - String unit = access.getUnit(); - int[] period = null; - int[][] epoch = null; - double kmUp = access.getUpperKM(); - double kmLow = access.getLowerKM(); - if (yearEpoch.equals("year")) { - period = access.getPeriod(); - epoch = null; - } - else if (yearEpoch.equals("epoch") || yearEpoch.equals("off_epoch")) { - epoch = access.getEpochs(); - period = null; - } - else { - addProblem("minfo.missing.year_epoch"); - } - - if (river == null) { - // TODO: i18n - addProblem("minfo.missing.river"); - } - - if (period == null && epoch == null) { - addProblem("minfo.missing.time"); - } - - if (!hasProblems()) { - this.river = river; - this.yearEpoch = yearEpoch; - this.unit = unit; - this.period = period; - this.epoch = epoch; - this.kmUp = kmUp; - this.kmLow = kmLow; - return internalCalculate(); - } - - return new CalculationResult(); - } - - /** Returns CalculationResult with array of SedimentLoadResults. */ - private CalculationResult internalCalculate() { - logger.debug("internalCalulate; mode:" + yearEpoch); - if (yearEpoch.equals("year")) { - List results = - new ArrayList(); - for (int i = period[0]; i <= period[1]; i++) { - SedimentLoadResult res = calculateYear(i); - results.add(res); - } - return new CalculationResult( - results.toArray(new SedimentLoadResult[results.size()]), this); - } - else if (yearEpoch.equals("epoch")) { - List results = - new ArrayList(); - for (int i = 0; i < epoch.length; i++) { - SedimentLoadResult res = calculateEpoch(i); - results.add(res); - } - return new CalculationResult( - results.toArray(new SedimentLoadResult[results.size()]), this); - } - else if (yearEpoch.equals("off_epoch")) { - List results = - new ArrayList(); - for (int i = 0; i < epoch.length; i++) { - SedimentLoadResult res = calculateOffEpoch(i); - results.add(res); - } - return new CalculationResult( - results.toArray(new SedimentLoadResult[results.size()]), this); - } - else { - logger.error("Unknown mode " + yearEpoch); - } - return null; - } - - - /** Returns val if not NaN, 0d otherwise. */ - private static double makeNaN0(double val) { - return Double.isNaN(val) - ? 0d - : val; - } - - /** - * Take Loads and build average of all fractions at given km. - * The average fractions value is set in resLoad. - * - * @param km km at which to build fractions average. - * @param epochLoads the loads to build average over. - * @param[out] resLoad resulting SedimentLoad. - */ - private void calculateEpochKm( - List epochLoads, - SedimentLoadLSData resLoad, - double km - ) { - int cSum = 0; - int fmSum = 0; - int sSum = 0; - int ssSum = 0; - int ssbSum = 0; - int sseSum = 0; - for (SedimentLoadLSData load : epochLoads) { - SedimentLoadFraction f = load.getFraction(km); - if (f.getCoarse() > 0d) { - double c = makeNaN0(resLoad.getFraction(km).getCoarse()); - resLoad.setCoarse(km, c + f.getCoarse(), f.getCoarseRange()); - cSum++; - } - if (f.getFineMiddle() > 0d) { - double fm = makeNaN0(resLoad.getFraction(km).getFineMiddle()); - resLoad.setFineMiddle(km, fm + f.getFineMiddle(), f.getFineMiddleRange()); - fmSum++; - } - if (f.getSand() > 0d) { - double s = makeNaN0(resLoad.getFraction(km).getSand()); - resLoad.setSand(km, s + f.getSand(), f.getSandRange()); - sSum++; - } - if (f.getSuspSand() > 0d) { - double s = makeNaN0(resLoad.getFraction(km).getSuspSand()); - resLoad.setSuspSand(km, s + f.getSuspSand(), f.getSuspSandRange()); - ssSum++; - } - if (f.getSuspSandBed() > 0d) { - double s = makeNaN0(resLoad.getFraction(km).getSuspSandBed()); - resLoad.setSuspSandBed(km, s + f.getSuspSandBed(), f.getSuspSandBedRange()); - ssbSum++; - } - if (f.getSuspSediment() > 0d) { - double s = makeNaN0(resLoad.getFraction(km).getSuspSediment()); - resLoad.setSuspSediment(km, s + f.getSuspSediment(), f.getSuspSedimentRange()); - sseSum++; - } - } - - SedimentLoadFraction fr = resLoad.getFraction(km); - // Prevent divisions by zero. - if (cSum != 0) { - resLoad.setCoarse(km, fr.getCoarse()/cSum, fr.getCoarseRange()); - } - if (fmSum != 0) { - resLoad.setFineMiddle(km, fr.getFineMiddle()/fmSum, - fr.getFineMiddleRange()); - } - if (sSum != 0) { - resLoad.setSand(km, fr.getSand()/sSum, fr.getSandRange()); - } - if (ssSum != 0) { - resLoad.setSuspSand(km, fr.getSuspSand()/ssSum, - fr.getSuspSandRange()); - } - if (ssbSum != 0) { - resLoad.setSuspSandBed(km, fr.getSuspSandBed()/ssbSum, - fr.getSuspSandBedRange()); - } - if (sseSum != 0) { - resLoad.setSuspSediment(km, fr.getSuspSediment()/sseSum, fr.getSuspSedimentRange()); - } - } - - /** - * Calculate result for the ith given epoch. - * @param i index of epoch (if multiple given). - */ - private SedimentLoadResult calculateEpoch(int i) { - List epochLoads = new ArrayList(); - for (int j = epoch[i][0]; j <= epoch[i][1]; j++) { - epochLoads.add(SedimentLoadFactory.getLoadWithData( - this.river, - this.yearEpoch, - this.kmLow, - this.kmUp, - j, //syear - j)); //eyear - } - - SedimentLoadLSData resLoad = new SedimentLoadLSData(); - TDoubleArrayList kms = new TDoubleArrayList(); - - for (SedimentLoadLSData load : epochLoads) { - for (double km : load.getKms()) { - if (!kms.contains(km)) { - kms.add(km); - } - } - } - - for (int j = 0, J = kms.size(); j < J; j++) { - calculateEpochKm(epochLoads, resLoad, kms.get(j)); - } - resLoad.setDescription(""); - resLoad.setEpoch(true); - - SedimentLoadLSData sl = calculateTotalLoad(resLoad, this.epoch[i][0]); - - if (this.unit.equals("m3_per_a")) { - sl = calculateUnit(sl, this.epoch[i][0]); - } - - return new SedimentLoadResult( - this.epoch[i][0], - this.epoch[i][1], - sl); - } - - /** - * Calculate/Fetch values at off. epochs. - * @param i index in epochs. - */ - private SedimentLoadResult calculateOffEpoch(int i) { - SedimentLoadLSData load = SedimentLoadFactory.getLoadWithData( - this.river, - this.yearEpoch, - kmLow, - kmUp, - this.epoch[i][0], - this.epoch[i][1]); - SedimentLoadResult result; - SedimentLoadLSData sl = calculateTotalLoad(load, this.epoch[i][0]); - if (unit.equals("m3_per_a")) { - SedimentLoadLSData slu = calculateUnit(sl, epoch[i][0]); - result = new SedimentLoadResult( - this.epoch[i][0], - this.epoch[i][1], - slu); - } - else { - result = new SedimentLoadResult( - this.epoch[i][0], - this.epoch[i][1], - sl); - } - - return result; - } - - /** - * Fetch loads for a single year, calculate total and - * return the result containing both. - * @param y year, e.g. 1980 - */ - private SedimentLoadResult calculateYear(int y) { - SedimentLoadLSData load = SedimentLoadFactory.getLoadWithData( - this.river, - this.yearEpoch, - this.kmLow, - this.kmUp, - y, - y); - - SedimentLoadResult result; - SedimentLoadLSData sl = calculateTotalLoad(load, y); - if (unit.equals("m3_per_a")) { - SedimentLoadLSData slu = calculateUnit(sl, y); - result = new SedimentLoadResult(y, 0, slu); - } - else { - result = new SedimentLoadResult(y, 0, sl); - } - return result; - } - - /** Add up the loads of a year. */ - private SedimentLoadLSData calculateTotalLoad(SedimentLoadLSData load, int year) { - logger.debug("calculateTotalLoad"); - boolean problemThisYear = false; - if (!load.hasCoarse()) { - addProblem("missing.fraction.coarse", Integer.toString(year)); - problemThisYear = true; - } - if (!load.hasFineMiddle()) { - addProblem("missing.fraction.fine_middle", Integer.toString(year)); - problemThisYear = true; - } - if (!load.hasSand()) { - addProblem("missing.fraction.sand", Integer.toString(year)); - problemThisYear = true; - } - if (!load.hasSuspSand()) { - addProblem("missing.fraction.susp_sand", Integer.toString(year)); - problemThisYear = true; - } - if (!load.hasSuspSediment()) { - addProblem("missing.fraction.susp_sediment", Integer.toString(year)); - problemThisYear = true; - } - if (problemThisYear) { - logger.warn("Some problem, not calculating total load."); - return load; - } - return partialTotal(load); - } - - - - /** - * Set total values in load. - * - * Therefore, run over the sorted kms and find ranges where either all - * or all Geschiebe or just the Schwebstoff fractions are set. - * Merge these ranges and add (maybe new) respective fractions to - * load. In the process, remember any 'unfished' ends from measurements - * where the km-ranges did not completely match. - * - * @param load SedimentLoad to add total values (and ranges) to. - * @return input param load, with total values set. - */ - private SedimentLoadLSData partialTotal(SedimentLoadLSData load) { - // The load with balanced ranges, will be returned. - SedimentLoadLSData fairLoad = load; - - Range lastOtherRange = null; - double lastOtherValue = 0d; - - Range lastSuspRange = null; - double lastSuspValue = 0d; - - for (double km: load.getKms()) { // kms are already sorted! - logger.debug ("Trying to add at km " + km); - SedimentLoadFraction fraction = load.getFraction(km); - if (fraction.isComplete()) { - double total = fraction.getCoarse() + - fraction.getFineMiddle() + - fraction.getSand() + - fraction.getSuspSand() + - fraction.getSuspSediment(); - // Easiest case. Add values up and set'em. - if (fraction.getCoarseRange().equals( - fraction.getSuspSedimentRange())) { - lastOtherRange = null; - lastSuspRange = null; - fairLoad.setTotal(km, total, fraction.getCoarseRange()); - } - else { - // Need to split a range. - if (fraction.getCoarseRange().getEnd() - < fraction.getSuspSedimentRange().getEnd()) { - // Schwebstoff is longer. - // Adjust and remember schwebstoffs range and value. - lastSuspRange = (Range) fraction.getSuspSedimentRange().clone(); - lastSuspRange.setStart(fraction.getCoarseRange().getEnd()); - lastSuspValue = fraction.getSuspSediment(); - lastOtherRange = null; - fairLoad.setTotal(km, total, fraction.getCoarseRange()); - } - else { - // Geschiebe is longer. - // Adjust and remember other values. - lastOtherRange = (Range) fraction.getCoarseRange().clone(); - lastOtherRange.setStart(fraction.getSuspSedimentRange().getEnd()); - lastOtherValue = (total - fraction.getSuspSediment()); - lastSuspRange = null; - fairLoad.setTotal(km, total, fraction.getSuspSedimentRange()); - } - } - } - else if (fraction.hasOnlySuspValues() && lastOtherRange != null) { - // Split stuff. - Range suspSedimentRange = fraction.getSuspSedimentRange(); - // if intersects with last other range, cool! merge and add! - if (lastOtherRange.contains(km)) { - double maxStart = 0d; - double minEnd = 0d; - maxStart = Math.max(suspSedimentRange.getStart(), - lastOtherRange.getStart()); - - minEnd = Math.min(suspSedimentRange.getEnd(), - lastOtherRange.getEnd()); - double total = lastOtherValue + fraction.getSuspSediment(); - Range totalRange = new Range(maxStart, minEnd); - if (suspSedimentRange.getEnd() > lastOtherRange.getEnd()) { - lastSuspRange = (Range) suspSedimentRange.clone(); - lastSuspRange.setStart(lastOtherRange.getEnd()); - lastSuspValue = fraction.getSuspSediment(); - lastOtherRange = null; - } - else { - // Other is "longer". - lastOtherRange.setStart(suspSedimentRange.getEnd()); - lastSuspRange = null; - } - if (lastOtherRange != null - && Math.abs(suspSedimentRange.getEnd() - lastOtherRange.getEnd()) < 0.1d) { - lastOtherRange = null; - lastSuspRange = null; - } - fairLoad.setTotal(km, total, totalRange); - } - else { - lastSuspRange = suspSedimentRange; - lastSuspValue = fraction.getSuspSediment(); - lastOtherRange = null; - } - } - else if (fraction.hasButSuspValues() && lastSuspRange != null) { - // If intersects with last suspsed range, merge and add - double total = fraction.getCoarse() + - fraction.getFineMiddle() + - fraction.getSand() + - fraction.getSuspSand() + - lastSuspValue; - double maxStart = Math.max(fraction.getCoarseRange().getStart(), - lastSuspRange.getStart()); - if (lastSuspRange.contains(km)) { - double minEnd = Math.min(fraction.getCoarseRange().getEnd(), - lastSuspRange.getEnd()); - Range totalRange = new Range(maxStart, minEnd); - if (lastSuspRange.getEnd() > fraction.getCoarseRange().getEnd()) { - // SuspSed longer. - lastSuspRange.setStart(fraction.getCoarseRange().getEnd()); - lastOtherRange = null; - } - else { - // Other longer - lastOtherRange = (Range) fraction.getCoarseRange().clone(); - lastOtherRange.setStart(lastSuspRange.getEnd()); - lastSuspRange = null; - lastOtherValue = total - lastSuspValue; - } - if (lastSuspRange != null - && lastOtherRange != null - && Math.abs(lastSuspRange.getEnd() - lastOtherRange.getEnd()) < 0.1d) { - lastOtherRange = null; - lastSuspRange = null; - } - fairLoad.setTotal(km, total, totalRange); - } - else { - // Ranges are disjoint. - lastOtherRange = fraction.getCoarseRange(); - lastOtherValue = total - fraction.getSuspSediment(); - lastSuspRange = null; - } - } - else { - // Some values are missing or no intersection with former values. - // Stay as we are. - if (fraction.hasButSuspValues()) { - double total = fraction.getCoarse() + - fraction.getFineMiddle() + - fraction.getSand() + - fraction.getSuspSand(); - lastOtherRange = fraction.getCoarseRange(); - lastOtherValue = total; - lastSuspRange = null; - } - else if (fraction.hasOnlySuspValues()) { - lastSuspRange = fraction.getSuspSedimentRange(); - lastSuspValue = fraction.getSuspSediment(); - lastOtherRange = null; - } - } - } - return fairLoad; - } - - - /** - * Transform values in load. - * Background is to transform values measured in - * t/a to m^3/a using the specific measured densities. - * - * @param load The load of which values should be transformed. - * @param year The year at which to look at density (e.g. 2003). - * - * @return parameter load with transformed values. - */ - private SedimentLoadLSData calculateUnit(SedimentLoadLSData load, int year) { - SedimentDensity density = - SedimentDensityFactory.getSedimentDensity(river, kmLow, kmUp); - - for (double km: load.getKms()) { - double dens = 1d/density.getDensity(km, year); - SedimentLoadFraction fraction = load.getFraction(km); - double coarse = fraction.getCoarse(); - double fineMiddle = fraction.getFineMiddle(); - double sand = fraction.getSand(); - double suspSand = fraction.getSuspSand(); - double bedSand = fraction.getSuspSandBed(); - double sediment = fraction.getSuspSediment(); - double total = fraction.getTotal(); - double loadTotal = fraction.getLoadTotal(); - load.setCoarse(km, (coarse * dens), fraction.getCoarseRange()); - load.setFineMiddle(km, (fineMiddle * dens), fraction.getFineMiddleRange()); - load.setSand(km, (sand * dens), fraction.getSandRange()); - load.setSuspSand(km, (suspSand * dens), fraction.getSuspSandRange()); - load.setSuspSandBed(km, (bedSand * dens), fraction.getSuspSandBedRange()); - load.setSuspSediment(km, (sediment * dens), fraction.getSuspSedimentRange()); - load.setTotal(km, (total * dens), fraction.getTotalRange()); - load.setLoadTotal(km, (loadTotal * dens), fraction.getLoadTotalRange()); - } - return load; - } -} -// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : diff -r 363b82ecf29f -r bb770daccd1d artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/SedimentLoadDataCalculate.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/SedimentLoadDataCalculate.java Mon Sep 01 10:09:53 2014 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/SedimentLoadDataCalculate.java Mon Sep 01 10:15:57 2014 +0200 @@ -60,64 +60,6 @@ String output ) { return null; - //XXX: This is all broken. - /* - String name = facet.getName(); - if (name.equals(SEDIMENT_LOAD_TA_COARSE) || - name.equals(SEDIMENT_LOAD_TA_FINEMIDDLE) || - name.equals(SEDIMENT_LOAD_TA_SAND) || - name.equals(SEDIMENT_LOAD_TA_SUSP_SAND) || - name.equals(SEDIMENT_LOAD_TA_SUSP_SEDIMENT) || - name.equals(SEDIMENT_LOAD_TA_SUSP_SAND_BED) || - name.equals(SEDIMENT_LOAD_M3A_COARSE) || - name.equals(SEDIMENT_LOAD_M3A_FINEMIDDLE) || - name.equals(SEDIMENT_LOAD_M3A_SAND) || - name.equals(SEDIMENT_LOAD_M3A_SUSP_SAND) || - name.equals(SEDIMENT_LOAD_M3A_SUSP_SEDIMENT) || - name.equals(SEDIMENT_LOAD_M3A_SUSP_SAND_BED)){ - return Boolean.FALSE; - } - else if (name.equals(SEDIMENT_LOAD_TA_UNKNOWN) - || name.equals(SEDIMENT_LOAD_M3A_UNKNOWN)) { - D4EArtifact d4e = (D4EArtifact)artifact; - SedimentLoadUnknownFacet f = - (SedimentLoadUnknownFacet) - d4e.getNativeFacet(facet, null); - SedimentLoadLSData load = - (SedimentLoadLSData)f.getData(artifact, null); - SedimentLoadAccess access = - new SedimentLoadAccess(d4e); - List dates = new ArrayList(); - 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 = - DateUtil.getStartDateFromYear(date[0]); - Date e = - DateUtil.getEndDateFromYear(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; - } - */ } }); } @@ -180,475 +122,8 @@ facets.add( new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id)); - /* XXX: THIS IS ALL BROKEN - - 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, access); - } - else if (type.equals("epoch")) { - generateEpochFacets(context, newFacets, results, getID(), hash, access); - } - else if (type.equals("off_epoch")) { - generateOffEpochFacets(context, newFacets, results, getID(), hash, access); - } - logger.debug("Created " + newFacets.size() + " new Facets."); - - String river = access.getRiverName(); - SedimentLoadLSData[] unknown = - SedimentLoadFactory.getSedimentLoadUnknown(river, - access.getUnit().replace("_per_","/"), type); - - boolean isUnitTA = access.getUnit().startsWith("t"); - - 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, - (isUnitTA)? SEDIMENT_LOAD_TA_UNKNOWN:SEDIMENT_LOAD_M3A_UNKNOWN, - unknown[i].getDescription(), - ComputeType.ADVANCE, - getID(), - hash)); - } - - - */ - return res; } - /* - private String facetNameInfo(SedimentLoadResult result, String unit) { - return " - " + result.getStartYear() + " " + unit; - } - - protected void generateYearFacets(CallContext context, - List newFacets, - SedimentLoadResult[] results, - String stateId, - String hash, - SedimentLoadAccess access - ) { - logger.debug("SedimentLoadCalculate.generateFacets " + access.getUnit()); - - CallMeta meta = context.getMeta(); - boolean isUnitTA = access.getUnit().startsWith("t"); - String unit = (isUnitTA) - ? Resources.getMsg(context.getMeta(), "state.minfo.sediment.load.t_per_a", "(t/a)") - : Resources.getMsg(context.getMeta(), "state.minfo.sediment.load.m3_per_a", "(m^3/a)"); - -// 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, - (isUnitTA) - ?SEDIMENT_LOAD_TA_COARSE - :SEDIMENT_LOAD_M3A_COARSE, - Resources.getMsg( - meta, - I18N_FACET_SEDIMENTLOAD_COARSE, - I18N_FACET_SEDIMENTLOAD_COARSE) + - facetNameInfo(res, unit), - ComputeType.ADVANCE, - stateId, - hash)); - } - if (res.hasSandData()) { - newFacets.add(new SedimentLoadFacet( - idx, - (isUnitTA) - ?SEDIMENT_LOAD_TA_SAND - :SEDIMENT_LOAD_M3A_SAND, - Resources.getMsg( - meta, - I18N_FACET_SEDIMENTLOAD_SAND, - I18N_FACET_SEDIMENTLOAD_SAND) + - facetNameInfo(res, unit), - ComputeType.ADVANCE, - stateId, - hash)); - } - if (res.hasFineMiddleData()) { - newFacets.add(new SedimentLoadFacet( - idx, - (isUnitTA) - ?SEDIMENT_LOAD_TA_FINEMIDDLE - :SEDIMENT_LOAD_M3A_FINEMIDDLE, - Resources.getMsg( - meta, - I18N_FACET_SEDIMENTLOAD_FINE_MIDDLE, - I18N_FACET_SEDIMENTLOAD_FINE_MIDDLE) + - facetNameInfo(res, unit), - ComputeType.ADVANCE, - stateId, - hash)); - } - if (res.hasSuspSandData()) { - newFacets.add(new SedimentLoadFacet( - idx, - (isUnitTA) - ?SEDIMENT_LOAD_TA_SUSP_SAND - :SEDIMENT_LOAD_M3A_SUSP_SAND, - Resources.getMsg( - meta, - I18N_FACET_SEDIMENTLOAD_SUSPSAND, - I18N_FACET_SEDIMENTLOAD_SUSPSAND) + - facetNameInfo(res, unit), - ComputeType.ADVANCE, - stateId, - hash)); - } - if (res.hasSuspSandBedData()) { - newFacets.add(new SedimentLoadFacet( - idx, - (isUnitTA) - ?SEDIMENT_LOAD_TA_SUSP_SAND_BED - :SEDIMENT_LOAD_M3A_SUSP_SAND_BED, - Resources.getMsg( - meta, - I18N_FACET_SEDIMENTLOAD_SUSPSANDBED, - I18N_FACET_SEDIMENTLOAD_SUSPSANDBED) + - facetNameInfo(res, unit), - ComputeType.ADVANCE, - stateId, - hash)); - } - if (res.hasSuspSedimentData()) { - newFacets.add(new SedimentLoadFacet( - idx, - (isUnitTA) - ?SEDIMENT_LOAD_TA_SUSP_SEDIMENT - :SEDIMENT_LOAD_M3A_SUSP_SEDIMENT, - Resources.getMsg( - meta, - I18N_FACET_SEDIMENTLOAD_SUSPSEDIMENT, - I18N_FACET_SEDIMENTLOAD_SUSPSEDIMENT) + - facetNameInfo(res, unit), - ComputeType.ADVANCE, - stateId, - hash)); - - } - if (res.hasTotalData()) { - newFacets.add(new SedimentLoadFacet( - idx, - (isUnitTA) - ?SEDIMENT_LOAD_TA_TOTAL - :SEDIMENT_LOAD_M3A_TOTAL, - Resources.getMsg( - meta, - I18N_FACET_SEDIMENTLOAD_TOTAL, - I18N_FACET_SEDIMENTLOAD_TOTAL) + - facetNameInfo(res, unit), - ComputeType.ADVANCE, - stateId, - hash)); - } - } - } - - private String epochFacetNameInfo(SedimentLoadResult result, String unit) { - return " - " + result.getStartYear() + "-" + result.getEndYear() + " " + unit; - } - - protected void generateEpochFacets( - CallContext context, - List newFacets, - SedimentLoadResult[] results, - String stateId, - String hash, - SedimentLoadAccess access - ) { - logger.debug("SedimentLoadCalculate.generateEpochFacets "); - - CallMeta meta = context.getMeta(); - boolean isUnitTA = access.getUnit().startsWith("t"); - String unit = (isUnitTA) - ? Resources.getMsg(context.getMeta(), "state.minfo.sediment.load.t_per_a", "(t/a)") - : Resources.getMsg(context.getMeta(), "state.minfo.sediment.load.m3_per_a", "(m^3/a)"); - -// 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, - (isUnitTA) - ?SEDIMENT_LOAD_TA_COARSE - :SEDIMENT_LOAD_M3A_COARSE, - Resources.getMsg( - meta, - I18N_FACET_SEDIMENTLOAD_COARSE, - I18N_FACET_SEDIMENTLOAD_COARSE) + - epochFacetNameInfo(res,unit), - ComputeType.ADVANCE, - stateId, - hash)); - } - if (res.hasSandData()) { - newFacets.add(new SedimentLoadFacet( - idx, - (isUnitTA) - ?SEDIMENT_LOAD_TA_SAND - :SEDIMENT_LOAD_M3A_SAND, - Resources.getMsg( - meta, - I18N_FACET_SEDIMENTLOAD_SAND, - I18N_FACET_SEDIMENTLOAD_SAND) + - epochFacetNameInfo(res,unit), - ComputeType.ADVANCE, - stateId, - hash)); - } - if (res.hasFineMiddleData()) { - newFacets.add(new SedimentLoadFacet( - idx, - (isUnitTA) - ?SEDIMENT_LOAD_TA_FINEMIDDLE - :SEDIMENT_LOAD_M3A_FINEMIDDLE, - Resources.getMsg( - meta, - I18N_FACET_SEDIMENTLOAD_FINE_MIDDLE, - I18N_FACET_SEDIMENTLOAD_FINE_MIDDLE) + - epochFacetNameInfo(res,unit), - ComputeType.ADVANCE, - stateId, - hash)); - } - if (res.hasSuspSandData()) { - newFacets.add(new SedimentLoadFacet( - idx, - (isUnitTA) - ?SEDIMENT_LOAD_TA_SUSP_SAND - :SEDIMENT_LOAD_M3A_SUSP_SAND, - Resources.getMsg( - meta, - I18N_FACET_SEDIMENTLOAD_SUSPSAND, - I18N_FACET_SEDIMENTLOAD_SUSPSAND) + - epochFacetNameInfo(res,unit), - ComputeType.ADVANCE, - stateId, - hash)); - } - if (res.hasSuspSandBedData()) { - newFacets.add(new SedimentLoadFacet( - idx, - (isUnitTA) - ?SEDIMENT_LOAD_TA_SUSP_SAND_BED - :SEDIMENT_LOAD_M3A_SUSP_SAND, - Resources.getMsg( - meta, - I18N_FACET_SEDIMENTLOAD_SUSPSANDBED, - I18N_FACET_SEDIMENTLOAD_SUSPSANDBED) + - epochFacetNameInfo(res,unit), - ComputeType.ADVANCE, - stateId, - hash)); - } - if (res.hasSuspSedimentData()) { - newFacets.add(new SedimentLoadFacet( - idx, - (isUnitTA) - ?SEDIMENT_LOAD_TA_SUSP_SEDIMENT - :SEDIMENT_LOAD_M3A_SUSP_SEDIMENT, - Resources.getMsg( - meta, - I18N_FACET_SEDIMENTLOAD_SUSPSEDIMENT, - I18N_FACET_SEDIMENTLOAD_SUSPSEDIMENT) + - epochFacetNameInfo(res,unit), - ComputeType.ADVANCE, - stateId, - hash)); - - } - if (res.hasTotalLoadData()) { - newFacets.add(new SedimentLoadFacet( - idx, - (isUnitTA) - ?SEDIMENT_LOAD_TA_TOTAL_LOAD - :SEDIMENT_LOAD_M3A_TOTAL_LOAD, - Resources.getMsg( - meta, - I18N_FACET_SEDIMENTLOAD_TOTAL_LOAD, - I18N_FACET_SEDIMENTLOAD_TOTAL_LOAD) + - epochFacetNameInfo(res,unit), - ComputeType.ADVANCE, - stateId, - hash)); - } - if (res.hasTotalData()) { - newFacets.add(new SedimentLoadFacet( - idx, - (isUnitTA) - ?SEDIMENT_LOAD_TA_TOTAL - :SEDIMENT_LOAD_M3A_TOTAL, - Resources.getMsg( - meta, - I18N_FACET_SEDIMENTLOAD_TOTAL, - I18N_FACET_SEDIMENTLOAD_TOTAL) + - epochFacetNameInfo(res,unit), - ComputeType.ADVANCE, - stateId, - hash)); - } - } - } - - protected void generateOffEpochFacets( - CallContext context, - List newFacets, - SedimentLoadResult[] results, - String stateId, - String hash, - SedimentLoadAccess access - ) { - logger.debug("SedimentLoadCalculate.generateOffEpochFacets"); - - CallMeta meta = context.getMeta(); - boolean isUnitTA = access.getUnit().startsWith("t"); - String unit = (isUnitTA) - ? Resources.getMsg(context.getMeta(), "state.minfo.sediment.load.t_per_a", "(t/a)") - : Resources.getMsg(context.getMeta(), "state.minfo.sediment.load.m3_per_a", "(m^3/a)"); - -// 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, - (isUnitTA) - ?SEDIMENT_LOAD_TA_COARSE - :SEDIMENT_LOAD_M3A_COARSE, - Resources.getMsg( - meta, - I18N_FACET_SEDIMENTLOAD_COARSE, - I18N_FACET_SEDIMENTLOAD_COARSE) + - epochFacetNameInfo(res,unit), - ComputeType.ADVANCE, - stateId, - hash)); - } - if (res.hasSandData()) { - newFacets.add(new SedimentLoadFacet( - idx, - (isUnitTA) - ?SEDIMENT_LOAD_TA_SAND - :SEDIMENT_LOAD_M3A_SAND, - Resources.getMsg( - meta, - I18N_FACET_SEDIMENTLOAD_SAND, - I18N_FACET_SEDIMENTLOAD_SAND) + - epochFacetNameInfo(res,unit), - ComputeType.ADVANCE, - stateId, - hash)); - } - if (res.hasFineMiddleData()) { - newFacets.add(new SedimentLoadFacet( - idx, - (isUnitTA) - ?SEDIMENT_LOAD_TA_FINEMIDDLE - :SEDIMENT_LOAD_M3A_FINEMIDDLE, - Resources.getMsg( - meta, - I18N_FACET_SEDIMENTLOAD_FINE_MIDDLE, - I18N_FACET_SEDIMENTLOAD_FINE_MIDDLE) + - epochFacetNameInfo(res,unit), - ComputeType.ADVANCE, - stateId, - hash)); - } - if (res.hasSuspSandData()) { - newFacets.add(new SedimentLoadFacet( - idx, - (isUnitTA) - ?SEDIMENT_LOAD_TA_SUSP_SAND - :SEDIMENT_LOAD_M3A_SUSP_SAND, - Resources.getMsg( - meta, - I18N_FACET_SEDIMENTLOAD_SUSPSAND, - I18N_FACET_SEDIMENTLOAD_SUSPSAND) + - epochFacetNameInfo(res,unit), - ComputeType.ADVANCE, - stateId, - hash)); - } - if (res.hasSuspSandBedData()) { - newFacets.add(new SedimentLoadFacet( - idx, - (isUnitTA) - ?SEDIMENT_LOAD_TA_SUSP_SAND_BED - :SEDIMENT_LOAD_M3A_SUSP_SAND_BED, - Resources.getMsg( - meta, - I18N_FACET_SEDIMENTLOAD_SUSPSANDBED, - I18N_FACET_SEDIMENTLOAD_SUSPSANDBED) + - epochFacetNameInfo(res,unit), - ComputeType.ADVANCE, - stateId, - hash)); - } - if (res.hasSuspSedimentData()) { - newFacets.add(new SedimentLoadFacet( - idx, - (isUnitTA) - ?SEDIMENT_LOAD_TA_SUSP_SEDIMENT - :SEDIMENT_LOAD_M3A_SUSP_SEDIMENT, - Resources.getMsg( - meta, - I18N_FACET_SEDIMENTLOAD_SUSPSEDIMENT, - I18N_FACET_SEDIMENTLOAD_SUSPSEDIMENT) + - epochFacetNameInfo(res,unit), - ComputeType.ADVANCE, - stateId, - hash)); - - } - if (res.hasTotalLoadData()) { - newFacets.add(new SedimentLoadFacet( - idx, - (isUnitTA) - ?SEDIMENT_LOAD_TA_TOTAL_LOAD - :SEDIMENT_LOAD_M3A_TOTAL_LOAD, - Resources.getMsg( - meta, - I18N_FACET_SEDIMENTLOAD_TOTAL_LOAD, - I18N_FACET_SEDIMENTLOAD_TOTAL_LOAD) + - epochFacetNameInfo(res,unit), - ComputeType.ADVANCE, - stateId, - hash)); - } - if (res.hasTotalData()) { - newFacets.add(new SedimentLoadFacet( - idx, - (isUnitTA) - ?SEDIMENT_LOAD_TA_TOTAL - :SEDIMENT_LOAD_M3A_TOTAL, - Resources.getMsg( - meta, - I18N_FACET_SEDIMENTLOAD_TOTAL, - I18N_FACET_SEDIMENTLOAD_TOTAL) + - epochFacetNameInfo(res,unit), - ComputeType.ADVANCE, - stateId, - hash)); - } - } - } -*/ } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :