comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/CollisionCalcProcessor.java @ 9205:3dae6b78e1da

inundationDuration/floodDuration multiple columns+chartLines refactoring
author gernotbelger
date Mon, 02 Jul 2018 19:01:09 +0200
parents 4f411c6ee3ae
children
comparison
equal deleted inserted replaced
9204:4f411c6ee3ae 9205:3dae6b78e1da
16 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; 16 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
17 import org.dive4elements.artifactdatabase.state.Facet; 17 import org.dive4elements.artifactdatabase.state.Facet;
18 import org.dive4elements.artifacts.CallContext; 18 import org.dive4elements.artifacts.CallContext;
19 import org.dive4elements.river.artifacts.common.AbstractCalculationResult; 19 import org.dive4elements.river.artifacts.common.AbstractCalculationResult;
20 import org.dive4elements.river.artifacts.resources.Resources; 20 import org.dive4elements.river.artifacts.resources.Resources;
21 import org.dive4elements.river.artifacts.sinfo.collision.CollisionCalcFacet;
22 import org.dive4elements.river.artifacts.sinfo.collision.CollisionCalcOverviewResult; 21 import org.dive4elements.river.artifacts.sinfo.collision.CollisionCalcOverviewResult;
23 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; 22 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
24 import org.dive4elements.river.exports.DiagramGenerator; 23 import org.dive4elements.river.exports.DiagramGenerator;
25 import org.dive4elements.river.themes.ThemeDocument; 24 import org.dive4elements.river.themes.ThemeDocument;
26 25
35 public static final String FACET_COLLISION_CALC_COUNT = "sinfo_facet_collision_calc_count"; 34 public static final String FACET_COLLISION_CALC_COUNT = "sinfo_facet_collision_calc_count";
36 35
37 public static final String FACET_COLLISION_CALC_COUNT_2 = "sinfo_facet_collision_calc_count.2"; 36 public static final String FACET_COLLISION_CALC_COUNT_2 = "sinfo_facet_collision_calc_count.2";
38 37
39 public static final String FACET_COLLISION_CALC_COUNT_3 = "sinfo_facet_collision_calc_count.3"; 38 public static final String FACET_COLLISION_CALC_COUNT_3 = "sinfo_facet_collision_calc_count.3";
39
40 private static final String[] COLLISION_FACETS = new String[] { FACET_COLLISION_CALC_COUNT, FACET_COLLISION_CALC_COUNT_2, FACET_COLLISION_CALC_COUNT_3 };
40 41
41 private static final String I18N_AXIS_LABEL = "chart.collision_count.section.yaxis.label"; 42 private static final String I18N_AXIS_LABEL = "chart.collision_count.section.yaxis.label";
42 43
43 private static final String I18N_SERIES_NAME_PATTERN = "collision.count.title"; 44 private static final String I18N_SERIES_NAME_PATTERN = "collision.count.title";
44 45
55 } 56 }
56 57
57 @Override 58 @Override
58 protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { 59 protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) {
59 60
60 return buildSeriesForType1(generator, bundle, theme, visible, SInfoResultType.collisionCount, null); 61 final int year = getDataIndex(bundle);
62
63 final CollisionCalcOverviewResult result = (CollisionCalcOverviewResult) getResult(generator, bundle);
64
65 final double[][] points = result.getStationPointsByYear(SInfoResultType.collisionCount, year);
66
67 return buildSeriesForType(points, generator, bundle, theme, visible, null);
61 } 68 }
62 69
63 public static final Facet createFacet(final CallContext context, final String hash, final String id, final AbstractCalculationResult result, 70 public static final Facet createFacet(final CallContext context, final String hash, final String id, final AbstractCalculationResult result,
64 final int index) { 71 final int resultIndex, final int year, final int themeCount) {
72
73 // REMARK: we are using themeCount as facet index, because we get several lines (with the same facet name) for the same
74 // result index; however name and index are used on client side as unique id.
65 75
66 final CollisionCalcOverviewResult ccoResult = (CollisionCalcOverviewResult) result; 76 final CollisionCalcOverviewResult ccoResult = (CollisionCalcOverviewResult) result;
67 String facetDescription;
68 String facetName;
69 if (ccoResult.getSingleYears() == null) { 77 if (ccoResult.getSingleYears() == null) {
70 facetDescription = Resources.getMsg(context.getMeta(), I18N_SERIES_NAME_PATTERN, I18N_SERIES_NAME_PATTERN, result.getLabel()); 78 final String facetDescription = Resources.getMsg(context.getMeta(), I18N_SERIES_NAME_PATTERN, I18N_SERIES_NAME_PATTERN, result.getLabel());
71 facetName = FACET_COLLISION_CALC_COUNT; 79 return new SInfoResultFacet(themeCount, resultIndex, -1, FACET_COLLISION_CALC_COUNT, facetDescription, I18N_AXIS_LABEL, ComputeType.ADVANCE, id,
80 hash);
81 } else {
82 final String facetDescription = Resources.getMsg(context.getMeta(), I18N_SERIES_NAME_PATTERN, I18N_SERIES_NAME_PATTERN, Integer.toString(year));
83 return new SInfoResultFacet(themeCount, resultIndex, year, COLLISION_FACETS[themeCount % 3], facetDescription, I18N_AXIS_LABEL, ComputeType.ADVANCE,
84 id, hash);
72 } 85 }
73 else {
74 facetDescription = Resources.getMsg(context.getMeta(), I18N_SERIES_NAME_PATTERN, I18N_SERIES_NAME_PATTERN,
75 Integer.toString(ccoResult.getSingleYears()[index]));
76 facetName = new String[] { FACET_COLLISION_CALC_COUNT, FACET_COLLISION_CALC_COUNT_2, FACET_COLLISION_CALC_COUNT_3 }[index % 3].toString();
77 }
78 return new CollisionCalcFacet(index, facetName, facetDescription, I18N_AXIS_LABEL, ComputeType.ADVANCE, id, hash);
79 } 86 }
80 } 87 }

http://dive4elements.wald.intevation.org