annotate artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/CalculationSelectSinfo.java @ 9191:f692f5a0536a

sinfo.collisions review
author gernotbelger
date Thu, 28 Jun 2018 15:57:40 +0200
parents e3519c3e7a0a
children
rev   line source
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
1 /* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
8914
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents: 8860
diff changeset
2 * Software engineering by
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents: 8860
diff changeset
3 * Björnsen Beratende Ingenieure GmbH
8860
28df64078f27 Merge with 0862ea5d66baf60e7eee496d130a35157cc9ec12
gernotbelger
parents: 8854
diff changeset
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
5 *
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
6 * This file is Free Software under the GNU AGPL (>=v3)
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
8 * documentation coming with Dive4Elements River for details.
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
9 */
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
10 package org.dive4elements.river.artifacts.sinfo;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
11
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
12 import java.util.ArrayList;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
13 import java.util.Collection;
9191
f692f5a0536a sinfo.collisions review
gernotbelger
parents: 8914
diff changeset
14 import java.util.List;
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
15
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
16 import org.apache.log4j.Logger;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
17 import org.dive4elements.artifacts.Artifact;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
18 import org.dive4elements.artifacts.CallContext;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
19 import org.dive4elements.artifacts.CallMeta;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
20 import org.dive4elements.artifacts.common.utils.XMLUtils;
9191
f692f5a0536a sinfo.collisions review
gernotbelger
parents: 8914
diff changeset
21 import org.dive4elements.river.artifacts.model.CollisionHibernateFactory;
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
22 import org.dive4elements.river.artifacts.resources.Resources;
9191
f692f5a0536a sinfo.collisions review
gernotbelger
parents: 8914
diff changeset
23 import org.dive4elements.river.artifacts.sinfo.collision.CollisionAccess;
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
24 import org.dive4elements.river.artifacts.states.DefaultState;
9191
f692f5a0536a sinfo.collisions review
gernotbelger
parents: 8914
diff changeset
25 import org.dive4elements.river.model.sinfo.Collision;
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
26 import org.w3c.dom.Element;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
27
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
28 /**
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
29 * @author Gernot Belger
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
30 */
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
31 public class CalculationSelectSinfo extends DefaultState {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
32
8914
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents: 8860
diff changeset
33 private static final long serialVersionUID = 1L;
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
34
8914
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents: 8860
diff changeset
35 /** The log that is used in this class. */
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
36 private static Logger log = Logger.getLogger(CalculationSelectSinfo.class);
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
37
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
38 @Override
8914
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents: 8860
diff changeset
39 protected Element[] createItems(final XMLUtils.ElementCreator cr, final Artifact artifact, final String name, final CallContext context) {
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents: 8860
diff changeset
40 final CallMeta meta = context.getMeta();
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents: 8860
diff changeset
41
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
42 final Collection<Element> calcs = new ArrayList<>(SinfoCalcMode.values().length);
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
43
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
44 for (final SinfoCalcMode calcMode : SinfoCalcMode.values()) {
8914
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents: 8860
diff changeset
45 final String calc = calcMode.name();
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents: 8860
diff changeset
46
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents: 8860
diff changeset
47 final String label = Resources.getMsg(meta, calc, calc);
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents: 8860
diff changeset
48
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents: 8860
diff changeset
49 final Element element = createItem(cr, new String[] { label, calc });
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents: 8860
diff changeset
50 calcs.add(element);
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents: 8860
diff changeset
51 }
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents: 8860
diff changeset
52
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
53 return calcs.toArray(new Element[calcs.size()]);
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
54 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
55
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
56 @Override
8914
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents: 8860
diff changeset
57 public boolean validate(final Artifact artifact) throws IllegalArgumentException {
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
58 log.debug("CalculationSelect.validate");
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
59
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
60 final SINFOArtifact sinfo = (SINFOArtifact) artifact;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
61 /* throws an exception if calculation mode is invalid */
9191
f692f5a0536a sinfo.collisions review
gernotbelger
parents: 8914
diff changeset
62 final String calcmode = sinfo.getCalculationMode().toString(); // "toString()" is important
f692f5a0536a sinfo.collisions review
gernotbelger
parents: 8914
diff changeset
63 if (calcmode.equals("sinfo_calc_collision")) {
f692f5a0536a sinfo.collisions review
gernotbelger
parents: 8914
diff changeset
64
f692f5a0536a sinfo.collisions review
gernotbelger
parents: 8914
diff changeset
65 final CollisionAccess access = new CollisionAccess((SINFOArtifact) artifact);
f692f5a0536a sinfo.collisions review
gernotbelger
parents: 8914
diff changeset
66
f692f5a0536a sinfo.collisions review
gernotbelger
parents: 8914
diff changeset
67 final List<Collision> list = CollisionHibernateFactory.getCollisionsByRiver(access.getRiver());
f692f5a0536a sinfo.collisions review
gernotbelger
parents: 8914
diff changeset
68
f692f5a0536a sinfo.collisions review
gernotbelger
parents: 8914
diff changeset
69 if (list.size() == 0) {
f692f5a0536a sinfo.collisions review
gernotbelger
parents: 8914
diff changeset
70 throw new IllegalArgumentException("error_no_data_for_river");
f692f5a0536a sinfo.collisions review
gernotbelger
parents: 8914
diff changeset
71 }
f692f5a0536a sinfo.collisions review
gernotbelger
parents: 8914
diff changeset
72 }
f692f5a0536a sinfo.collisions review
gernotbelger
parents: 8914
diff changeset
73
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
74 return true;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
75 }
9191
f692f5a0536a sinfo.collisions review
gernotbelger
parents: 8914
diff changeset
76
8914
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents: 8860
diff changeset
77 }

http://dive4elements.wald.intevation.org