comparison artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadUnknownFacet.java @ 6388:3eff8efb4354

New Facet for sediment load fraction 'unknown'.
author Raimund Renkert <rrenkert@intevation.de>
date Fri, 21 Jun 2013 15:29:41 +0200
parents
children 4ae1fbaaacdd
comparison
equal deleted inserted replaced
6385:ef08c4f57ede 6388:3eff8efb4354
1 package org.dive4elements.river.artifacts.model.minfo;
2
3 import org.apache.log4j.Logger;
4 import org.dive4elements.artifactdatabase.state.Facet;
5 import org.dive4elements.artifacts.Artifact;
6 import org.dive4elements.artifacts.CallContext;
7 import org.dive4elements.river.artifacts.D4EArtifact;
8 import org.dive4elements.river.artifacts.access.SedimentLoadAccess;
9 import org.dive4elements.river.artifacts.model.DataFacet;
10 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
11
12
13 public class SedimentLoadUnknownFacet
14 extends DataFacet
15 {
16 /** Very own logger. */
17 private static Logger logger = Logger.getLogger(SedimentLoadFacet.class);
18
19 public SedimentLoadUnknownFacet() {
20 }
21
22 public SedimentLoadUnknownFacet(int idx, String name, String description,
23 ComputeType type, String stateId, String hash) {
24 super(idx, name, description, type, hash, stateId);
25 }
26
27 @Override
28 public Object getData(Artifact artifact, CallContext context) {
29 logger.debug("Get data for sediment load at index: " + index);
30
31 D4EArtifact flys = (D4EArtifact) artifact;
32
33 SedimentLoadAccess access = new SedimentLoadAccess(flys);
34 String river = access.getRiver();
35 SedimentLoad[] unknown =
36 SedimentLoadFactory.getSedimentLoadUnknown(river);
37
38 SedimentLoad load = SedimentLoadFactory.getLoadUnknown(
39 river, unknown[index].getDescription());
40 if (access.getUnit().equals("t/a") && load.getUnit().equals("m3/a")) {
41 for (Double km: load.getKms()) {
42 SedimentLoadFraction fraction = load.getFraction(km);
43 fraction.setUnknown(fraction.getUnknown() / 1.8);
44 load.addKm(km, fraction);
45 }
46 }
47 else if (access.getUnit().equals("m3/a") && load.getUnit().equals("t/a")) {
48 for (Double km: load.getKms()) {
49 SedimentLoadFraction fraction = load.getFraction(km);
50 fraction.setUnknown(fraction.getUnknown() * 1.8);
51 load.addKm(km, fraction);
52 }
53 }
54 return load;
55 }
56
57 /** Copy deeply. */
58 @Override
59 public Facet deepCopy() {
60 SedimentLoadUnknownFacet copy = new SedimentLoadUnknownFacet();
61 copy.set(this);
62 copy.hash = hash;
63 copy.stateId = stateId;
64 return copy;
65 }
66 }

http://dive4elements.wald.intevation.org