comparison 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
comparison
equal deleted inserted replaced
6251:68071f205c0e 6252:38d6ce2c7164
22 import org.dive4elements.river.artifacts.model.CalculationResult; 22 import org.dive4elements.river.artifacts.model.CalculationResult;
23 import org.dive4elements.river.artifacts.model.DataFacet; 23 import org.dive4elements.river.artifacts.model.DataFacet;
24 import org.dive4elements.river.artifacts.model.DateRange; 24 import org.dive4elements.river.artifacts.model.DateRange;
25 import org.dive4elements.river.artifacts.model.FacetTypes; 25 import org.dive4elements.river.artifacts.model.FacetTypes;
26 import org.dive4elements.river.artifacts.model.minfo.BedDensityFacet; 26 import org.dive4elements.river.artifacts.model.minfo.BedDensityFacet;
27 import org.dive4elements.river.artifacts.model.minfo.BedDiameterDataFacet;
27 import org.dive4elements.river.artifacts.model.minfo.BedDiameterFacet; 28 import org.dive4elements.river.artifacts.model.minfo.BedDiameterFacet;
28 import org.dive4elements.river.artifacts.model.minfo.BedDiameterResult; 29 import org.dive4elements.river.artifacts.model.minfo.BedDiameterResult;
29 import org.dive4elements.river.artifacts.model.minfo.BedParametersResult; 30 import org.dive4elements.river.artifacts.model.minfo.BedParametersResult;
30 import org.dive4elements.river.artifacts.model.minfo.BedPorosityFacet; 31 import org.dive4elements.river.artifacts.model.minfo.BedPorosityFacet;
31 import org.dive4elements.river.artifacts.model.minfo.BedQualityCalculation; 32 import org.dive4elements.river.artifacts.model.minfo.BedQualityCalculation;
51 public static final String I18N_FACET_BED_POROSITY_SUBLAYER = "facet.bedquality.bed.porosity.sublayer"; 52 public static final String I18N_FACET_BED_POROSITY_SUBLAYER = "facet.bedquality.bed.porosity.sublayer";
52 public static final String I18N_FACET_BED_DENSITY_TOPLAYER = "facet.bedquality.bed.density.toplayer"; 53 public static final String I18N_FACET_BED_DENSITY_TOPLAYER = "facet.bedquality.bed.density.toplayer";
53 public static final String I18N_FACET_BED_DENSITY_SUBLAYER = "facet.bedquality.bed.density.sublayer"; 54 public static final String I18N_FACET_BED_DENSITY_SUBLAYER = "facet.bedquality.bed.density.sublayer";
54 public static final String I18N_FACET_BED_DIAMETER_TOPLAYER = "facet.bedquality.bed.diameter.toplayer"; 55 public static final String I18N_FACET_BED_DIAMETER_TOPLAYER = "facet.bedquality.bed.diameter.toplayer";
55 public static final String I18N_FACET_BED_DIAMETER_SUBLAYER = "facet.bedquality.bed.diameter.sublayer"; 56 public static final String I18N_FACET_BED_DIAMETER_SUBLAYER = "facet.bedquality.bed.diameter.sublayer";
57 public static final String I18N_FACET_BED_DIAMETER_DATA_TOPLAYER = "facet.bedquality.bed.diameter.data.toplayer";
58 public static final String I18N_FACET_BED_DIAMETER_DATA_SUBLAYER = "facet.bedquality.bed.diameter.data.sublayer";
59 public static final String I18N_FACET_BEDLOAD_DIAMETER_DATA = "facet.bedquality.bedload.diameter.data";
56 public static final String I18N_FACET_BEDLOAD_DIAMETER = "facet.bedquality.bedload.diameter"; 60 public static final String I18N_FACET_BEDLOAD_DIAMETER = "facet.bedquality.bedload.diameter";
57 61
58 @Override 62 @Override
59 public Object computeAdvance(D4EArtifact artifact, String hash, 63 public Object computeAdvance(D4EArtifact artifact, String hash,
60 CallContext context, List<Facet> facets, Object old) { 64 CallContext context, List<Facet> facets, Object old) {
78 return res; 82 return res;
79 } 83 }
80 84
81 generateFacets(context, newFacets, results, getID(), hash); 85 generateFacets(context, newFacets, results, getID(), hash);
82 logger.debug("Created " + newFacets.size() + " new Facets."); 86 logger.debug("Created " + newFacets.size() + " new Facets.");
83 87 generateDataFacets(context, newFacets, access, getID(), hash);
84 facets.addAll(newFacets); 88 facets.addAll(newFacets);
85 89
86 return res; 90 return res;
91 }
92
93 private void generateDataFacets(
94 CallContext context,
95 List<Facet> newFacets,
96 BedQualityAccess access,
97 String stateId,
98 String hash) {
99 List<String> diameters = access.getBedDiameter();
100 List<DateRange> ranges = access.getDateRanges();
101 for (int i = 0; i < ranges.size(); i++) {
102 DateRange range = ranges.get(i);
103 for (String diameter: diameters) {
104 int ndxTop = generateIndex(diameter, true);
105 int ndxSub = generateIndex(diameter, false);
106 String toplayer =
107 Resources.getMsg(
108 context.getMeta(), I18N_TOPLAYER, I18N_TOPLAYER);
109 String sublayer =
110 Resources.getMsg(
111 context.getMeta(), I18N_SUBLAYER, I18N_SUBLAYER);
112 //toplayer
113 newFacets.add(new BedDiameterDataFacet(
114 ndxTop,
115 BED_DIAMETER_DATA_TOP,
116 Resources.getMsg(
117 context.getMeta(),
118 I18N_FACET_BED_DIAMETER_DATA_TOPLAYER,
119 I18N_FACET_BED_DIAMETER_DATA_TOPLAYER,
120 new Object[] { diameter.toUpperCase(),
121 range.getFrom(), range.getTo(), toplayer}),
122 ComputeType.ADVANCE,
123 stateId,
124 hash));
125 //sublayer
126 newFacets.add(new BedDiameterDataFacet(
127 ndxSub,
128 BED_DIAMETER_DATA_SUB,
129 Resources.getMsg(
130 context.getMeta(),
131 I18N_FACET_BED_DIAMETER_DATA_TOPLAYER,
132 I18N_FACET_BED_DIAMETER_DATA_TOPLAYER,
133 new Object[] { diameter.toUpperCase(),
134 range.getFrom(), range.getTo(), sublayer}),
135 ComputeType.ADVANCE,
136 stateId,
137 hash));
138 }
139 }
140 }
141
142 private int generateIndex(String diameter, boolean b) {
143 int d = 0;
144 if(diameter.equals("d10")) {
145 d = 1;
146 }
147 else if (diameter.equals("d16")) {
148 d = 2;
149 }
150 else if (diameter.equals("d20")) {
151 d = 3;
152 }
153 else if (diameter.equals("d25")) {
154 d = 4;
155 }
156 else if (diameter.equals("d30")) {
157 d = 5;
158 }
159 else if (diameter.equals("d40")) {
160 d = 6;
161 }
162 else if (diameter.equals("d50")) {
163 d = 7;
164 }
165 else if (diameter.equals("d60")) {
166 d = 8;
167 }
168 else if (diameter.equals("d70")) {
169 d = 9;
170 }
171 else if (diameter.equals("d75")) {
172 d = 10;
173 }
174 else if (diameter.equals("d80")) {
175 d = 11;
176 }
177 else if (diameter.equals("d84")) {
178 d = 12;
179 }
180 else if (diameter.equals("d90")) {
181 d = 13;
182 }
183 else if (diameter.equals("dmin")) {
184 d = 14;
185 }
186 else if (diameter.equals("dmax")) {
187 d = 15;
188 }
189 else if (diameter.equals("dm")) {
190 d = 16;
191 }
192 int ndx = d;
193 ndx = ndx << 1;
194 if (b) {
195 ndx += 1;
196 }
197 ndx = ndx << 3;
198 return ndx;
87 } 199 }
88 200
89 protected void generateFacets(CallContext context, List<Facet> newFacets, 201 protected void generateFacets(CallContext context, List<Facet> newFacets,
90 BedQualityResult[] results, String stateId, String hash) { 202 BedQualityResult[] results, String stateId, String hash) {
91 logger.debug("BedQualityState.generateFacets"); 203 logger.debug("BedQualityState.generateFacets");

http://dive4elements.wald.intevation.org