comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/AreaFacet.java @ 2104:bb0dede9294f

Implementation towards areas at other than first axis (flys/issue441). flys-artifacts/trunk@3661 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Thu, 12 Jan 2012 12:29:56 +0000
parents 76cedac30d35
children 5642a83420f2
comparison
equal deleted inserted replaced
2103:b9f7ec9bda18 2104:bb0dede9294f
55 // All compatible facets should provide their data 55 // All compatible facets should provide their data
56 // under the key (Artifact-UUID + Facet-Index). 56 // under the key (Artifact-UUID + Facet-Index).
57 AreaArtifact artifact = (AreaArtifact) art; 57 AreaArtifact artifact = (AreaArtifact) art;
58 Object lowerData = null; 58 Object lowerData = null;
59 Object upperData = null; 59 Object upperData = null;
60 String stemFacetName = null;
60 61
61 List<DataProvider> providers = context. 62 List<DataProvider> providers = context.
62 getDataProvider(artifact.getLowerDPKey()); 63 getDataProvider(artifact.getLowerDPKey());
63 if (providers.size() < 1) { 64 if (providers.size() < 1) {
64 logger.warn("No 'lower' provider given for area [" + 65 logger.warn("No 'lower' provider given for area [" +
65 artifact.getLowerDPKey() + "]"); 66 artifact.getLowerDPKey() + "]");
66 } 67 }
67 else { 68 else {
68 lowerData = providers.get(0).provideData( 69 lowerData = providers.get(0).provideData(
69 artifact.getLowerDPKey(), null, context); 70 artifact.getLowerDPKey(), null, context);
71 logger.debug("'Lower' data provider key for area [" +
72 artifact.getLowerDPKey() + "]");
73 stemFacetName = artifact.getLowerDPKey().split(":")[1];
70 } 74 }
71 75
72 providers = context.getDataProvider(artifact.getUpperDPKey()); 76 providers = context.getDataProvider(artifact.getUpperDPKey());
73 if (providers.size() < 1) { 77 if (providers.size() < 1) {
74 logger.warn("No 'upper' provider given for area [" + 78 logger.warn("No 'upper' provider given for area [" +
75 artifact.getUpperDPKey() + "]"); 79 artifact.getUpperDPKey() + "]");
76 } 80 }
77 else { 81 else {
78 upperData = providers.get(0).provideData( 82 upperData = providers.get(0).provideData(
79 artifact.getUpperDPKey(), null, context); 83 artifact.getUpperDPKey(), null, context);
84 logger.debug("'Upper' data provider key for area [" +
85 artifact.getUpperDPKey() + "]");
86 if (stemFacetName == null) {
87 stemFacetName = artifact.getUpperDPKey().split(":")[1];
88 }
80 } 89 }
81 90
82 if (upperData == null && lowerData == null) { 91 if (upperData == null && lowerData == null) {
83 logger.warn("Not given 'upper' and 'lower' for area"); 92 logger.warn("Not given 'upper' and 'lower' for area");
84 } 93 }
85 94
86 return new Object[] {lowerData, 95 return new Data(stemFacetName, lowerData, upperData,
87 upperData, 96 Boolean.valueOf(artifact.getPaintBetween()));
88 Boolean.valueOf(artifact.getPaintBetween())};
89 } 97 }
90 98
91 99
92 /** Do a deep copy. */ 100 /** Do a deep copy. */
93 @Override 101 @Override
94 public Facet deepCopy() { 102 public Facet deepCopy() {
95 AreaFacet copy = new AreaFacet(this.index, this.name, this.description); 103 AreaFacet copy = new AreaFacet(this.index, this.name, this.description);
96 copy.set(this); 104 copy.set(this);
97 return copy; 105 return copy;
98 } 106 }
107
108 /** Result data bundle. */
109 public class Data {
110 protected String rootFacetName;
111 protected Object upperData;
112 protected Object lowerData;
113 protected boolean doPaintBetween;
114
115 /** Create a new result data bundle. */
116 public Data(String rootName, Object low, Object up, boolean between) {
117 this.rootFacetName = rootName;
118 this.lowerData = low;
119 this.upperData = up;
120 this.doPaintBetween = between;
121 }
122
123 /** Get name of a facet that is involved in area generation
124 * to induce type (e.g. longitudinal_section.w -> "W over km"). */
125 public String getRootFacetName() {
126 return this.rootFacetName;
127 }
128
129 /** Get data for 'upper' curve of area. */
130 public Object getUpperData() {
131 return this.upperData;
132 }
133
134 /** Get data for 'lower' curve of area. */
135 public Object getLowerData() {
136 return this.lowerData;
137 }
138
139 /** Whether to fill whole area between (in contrast to 'under'
140 * or 'over'). */
141 public boolean doPaintBetween() {
142 return this.doPaintBetween;
143 }
144 }
99 } 145 }
100 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : 146 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org