Mercurial > dive4elements > river
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 } |