Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/BedQualityState.java @ 6252:38d6ce2c7164
Generate facets for bed diameter measurements and draw them into the generated chart.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Mon, 10 Jun 2013 16:28:57 +0200 |
parents | af13ceeba52a |
children | ea6225010871 |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/BedQualityState.java Mon Jun 10 16:23:39 2013 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/BedQualityState.java Mon Jun 10 16:28:57 2013 +0200 @@ -24,6 +24,7 @@ import org.dive4elements.river.artifacts.model.DateRange; import org.dive4elements.river.artifacts.model.FacetTypes; import org.dive4elements.river.artifacts.model.minfo.BedDensityFacet; +import org.dive4elements.river.artifacts.model.minfo.BedDiameterDataFacet; import org.dive4elements.river.artifacts.model.minfo.BedDiameterFacet; import org.dive4elements.river.artifacts.model.minfo.BedDiameterResult; import org.dive4elements.river.artifacts.model.minfo.BedParametersResult; @@ -53,6 +54,9 @@ public static final String I18N_FACET_BED_DENSITY_SUBLAYER = "facet.bedquality.bed.density.sublayer"; public static final String I18N_FACET_BED_DIAMETER_TOPLAYER = "facet.bedquality.bed.diameter.toplayer"; public static final String I18N_FACET_BED_DIAMETER_SUBLAYER = "facet.bedquality.bed.diameter.sublayer"; + public static final String I18N_FACET_BED_DIAMETER_DATA_TOPLAYER = "facet.bedquality.bed.diameter.data.toplayer"; + public static final String I18N_FACET_BED_DIAMETER_DATA_SUBLAYER = "facet.bedquality.bed.diameter.data.sublayer"; + public static final String I18N_FACET_BEDLOAD_DIAMETER_DATA = "facet.bedquality.bedload.diameter.data"; public static final String I18N_FACET_BEDLOAD_DIAMETER = "facet.bedquality.bedload.diameter"; @Override @@ -80,12 +84,120 @@ generateFacets(context, newFacets, results, getID(), hash); logger.debug("Created " + newFacets.size() + " new Facets."); - + generateDataFacets(context, newFacets, access, getID(), hash); facets.addAll(newFacets); return res; } + private void generateDataFacets( + CallContext context, + List<Facet> newFacets, + BedQualityAccess access, + String stateId, + String hash) { + List<String> diameters = access.getBedDiameter(); + List<DateRange> ranges = access.getDateRanges(); + for (int i = 0; i < ranges.size(); i++) { + DateRange range = ranges.get(i); + for (String diameter: diameters) { + int ndxTop = generateIndex(diameter, true); + int ndxSub = generateIndex(diameter, false); + String toplayer = + Resources.getMsg( + context.getMeta(), I18N_TOPLAYER, I18N_TOPLAYER); + String sublayer = + Resources.getMsg( + context.getMeta(), I18N_SUBLAYER, I18N_SUBLAYER); + //toplayer + newFacets.add(new BedDiameterDataFacet( + ndxTop, + BED_DIAMETER_DATA_TOP, + Resources.getMsg( + context.getMeta(), + I18N_FACET_BED_DIAMETER_DATA_TOPLAYER, + I18N_FACET_BED_DIAMETER_DATA_TOPLAYER, + new Object[] { diameter.toUpperCase(), + range.getFrom(), range.getTo(), toplayer}), + ComputeType.ADVANCE, + stateId, + hash)); + //sublayer + newFacets.add(new BedDiameterDataFacet( + ndxSub, + BED_DIAMETER_DATA_SUB, + Resources.getMsg( + context.getMeta(), + I18N_FACET_BED_DIAMETER_DATA_TOPLAYER, + I18N_FACET_BED_DIAMETER_DATA_TOPLAYER, + new Object[] { diameter.toUpperCase(), + range.getFrom(), range.getTo(), sublayer}), + ComputeType.ADVANCE, + stateId, + hash)); + } + } + } + + private int generateIndex(String diameter, boolean b) { + int d = 0; + if(diameter.equals("d10")) { + d = 1; + } + else if (diameter.equals("d16")) { + d = 2; + } + else if (diameter.equals("d20")) { + d = 3; + } + else if (diameter.equals("d25")) { + d = 4; + } + else if (diameter.equals("d30")) { + d = 5; + } + else if (diameter.equals("d40")) { + d = 6; + } + else if (diameter.equals("d50")) { + d = 7; + } + else if (diameter.equals("d60")) { + d = 8; + } + else if (diameter.equals("d70")) { + d = 9; + } + else if (diameter.equals("d75")) { + d = 10; + } + else if (diameter.equals("d80")) { + d = 11; + } + else if (diameter.equals("d84")) { + d = 12; + } + else if (diameter.equals("d90")) { + d = 13; + } + else if (diameter.equals("dmin")) { + d = 14; + } + else if (diameter.equals("dmax")) { + d = 15; + } + else if (diameter.equals("dm")) { + d = 16; + } + int ndx = d; + ndx = ndx << 1; + if (b) { + ndx += 1; + } + ndx = ndx << 3; + return ndx; + } + protected void generateFacets(CallContext context, List<Facet> newFacets, BedQualityResult[] results, String stateId, String hash) { logger.debug("BedQualityState.generateFacets");