Revision 43170

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.geometry/org.gvsig.fmap.geometry.api/src/main/java/org/gvsig/fmap/geom/GeometryInformationBuilder.java
1
package org.gvsig.fmap.geom;
2

  
3
import org.cresques.cts.IProjection;
4

  
5
import org.gvsig.fmap.geom.Geometry;
6
import org.gvsig.fmap.geom.primitive.Envelope;
7
import org.gvsig.tools.util.InformationBuilder;
8

  
9
public interface GeometryInformationBuilder extends InformationBuilder {
10

  
11
    public interface GeometryRawElement extends RawElement {
12

  
13
        public GeometryRawElement value(IProjection proj);
14

  
15
        public GeometryRawElement value(Envelope env);
16

  
17
        public GeometryRawElement value(Geometry geom);
18

  
19
        public GeometryRawElement asWKT(IProjection proj);
20

  
21
        public GeometryRawElement asWKT(Envelope env);
22

  
23
        public GeometryRawElement asWKT(Geometry geom);
24
    }
25

  
26
    public interface GeometryTextElement extends TextElement, GeometryRawElement {
27

  
28
        @Override
29
        public GeometryTextElement value(IProjection proj);
30

  
31
        @Override
32
        public GeometryTextElement value(Envelope env);
33

  
34
        @Override
35
        public GeometryTextElement value(Geometry geom);
36

  
37
        @Override
38
        public GeometryTextElement asWKT(IProjection proj);
39

  
40
        @Override
41
        public GeometryTextElement asWKT(Envelope env);
42

  
43
        @Override
44
        public GeometryTextElement asWKT(Geometry geom);
45
    }
46

  
47
    public interface GeometryPropertyElement extends PropertyElement, GeometryTextElement {
48

  
49
        @Override
50
        public GeometryPropertyElement value(IProjection proj);
51

  
52
        @Override
53
        public GeometryPropertyElement value(Envelope env);
54

  
55
        @Override
56
        public GeometryPropertyElement value(Geometry geom);
57

  
58
        @Override
59
        public GeometryPropertyElement asWKT(IProjection proj);
60

  
61
        @Override
62
        public GeometryPropertyElement asWKT(Envelope env);
63

  
64
        @Override
65
        public GeometryPropertyElement asWKT(Geometry geom);
66
    }
67

  
68
    public interface EnvelopeElement extends Element {
69

  
70
        public EnvelopeElement value(Envelope value);
71
    }
72

  
73
    public GeometryInformationBuilder backgroundColor(String color);
74

  
75
    public GeometryInformationBuilder backgroundColorTitle(String color);
76

  
77
    public GeometryInformationBuilder backgroundColorPropertyLabel(String color);
78

  
79
    public GeometryInformationBuilder backgroundColorPropertyValue1(String color);
80

  
81
    public GeometryInformationBuilder backgroundColorPropertyValue2(String color);
82

  
83
    public TitleElement title();
84

  
85
    public GeometryPropertyElement property();
86

  
87
    public GeometryTextElement text();
88

  
89
    public GeometryRawElement raw();
90

  
91
    public EnvelopeElement envelope();
92

  
93
    public String build();
94

  
95
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.geometry/org.gvsig.fmap.geometry.api/pom.xml
41 41
      <type>test-jar</type>
42 42
      <scope>test</scope>
43 43
    </dependency>
44
    <dependency>
45
      <groupId>org.gvsig</groupId>
46
      <artifactId>org.gvsig.tools.util.api</artifactId>
47
      <version>3.0.105-SNAPSHOT</version>
48
    </dependency>
44 49
  </dependencies>
45 50

  
46 51
  <description>This project contains the API definition of the geometry library of gvSIG.</description>
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.geometry/org.gvsig.fmap.geometry.jts/src/main/java/org/gvsig/fmap/geom/jts/DefaultGeometryInformationBuilder.java
1
package org.gvsig.fmap.geom.jts;
2

  
3
import org.apache.commons.lang3.StringEscapeUtils;
4
import org.cresques.cts.ICRSFactory;
5
import org.cresques.cts.IProjection;
6

  
7
import org.gvsig.fmap.geom.Geometry;
8
import org.gvsig.fmap.geom.Geometry.DIMENSIONS;
9
import org.gvsig.fmap.geom.GeometryInformationBuilder;
10
import org.gvsig.fmap.geom.GeometryInformationBuilder.EnvelopeElement;
11
import org.gvsig.fmap.geom.GeometryInformationBuilder.GeometryPropertyElement;
12
import org.gvsig.fmap.geom.GeometryInformationBuilder.GeometryRawElement;
13
import org.gvsig.fmap.geom.GeometryInformationBuilder.GeometryTextElement;
14
import org.gvsig.fmap.geom.primitive.Envelope;
15
import org.gvsig.tools.ToolsLocator;
16
import org.gvsig.tools.util.InformationBuilder.PropertyElement;
17
import org.gvsig.tools.util.InformationBuilder.TextElement;
18
import org.gvsig.tools.util.impl.DefaultInformationBuilder;
19
import org.gvsig.tools.util.impl.DefaultInformationBuilder.DefaultPropertyElement;
20

  
21
/**
22
 * @author fdiaz
23
 *
24
 */
25
public class DefaultGeometryInformationBuilder extends DefaultInformationBuilder implements GeometryInformationBuilder {
26

  
27
    protected class DefaultGeometryRawElement extends DefaultRawElement implements GeometryRawElement {
28

  
29
        @Override
30
        public GeometryRawElement value(Envelope env) {
31
            return asWKT(env);
32
        }
33

  
34
        @Override
35
        public GeometryRawElement value(Geometry geom) {
36
            return asWKT(geom);
37
        }
38

  
39
        @Override
40
        public GeometryRawElement value(IProjection proj) {
41
            if( proj == null ) {
42
                return (GeometryRawElement) value("");
43
            }
44
            return (GeometryRawElement) value(proj.getAbrev());
45
        }
46

  
47
        @Override
48
        public GeometryRawElement asWKT(IProjection proj) {
49
            if( proj == null ) {
50
                return (GeometryRawElement) value("");
51
            }
52
            String s = proj.export(ICRSFactory.FORMAT_WKT);
53
            if (s == null) {
54
                s = proj.export(ICRSFactory.FORMAT_WKT_ESRI);
55
            }
56
            if (s == null) {
57
                s = proj.export(ICRSFactory.FORMAT_PROJ4);
58
            }
59
            if (s == null) {
60
                s = proj.getAbrev();
61
            }
62
            if (s != null) {
63
                s = s.replaceAll("\\[", "[\n  ");
64
                s = s.replaceAll("]", "\n]");
65
            }
66
            return (GeometryRawElement) value(s);
67
        }
68

  
69
        @Override
70
        public GeometryRawElement asWKT(Envelope env) {
71
            if( env == null ) {
72
                return (GeometryRawElement) value("");
73
            }
74
            return asWKT(env.getGeometry());
75
        }
76

  
77
        @Override
78
        public GeometryRawElement asWKT(Geometry geom) {
79
            String s = "";
80
            try {
81
                s = geom.convertToWKT();
82
            } catch (Exception ex) {
83
            }
84
            return (GeometryRawElement) value(s);
85
        }
86

  
87
    }
88

  
89
    protected class DefaultGeometryTextElement extends DefaultGeometryRawElement implements GeometryTextElement {
90

  
91
        public TextElement value(String format, Object... args) {
92
            if (args == null) {
93
                this.value = StringEscapeUtils.escapeHtml3(format);
94
            } else {
95
                this.value = StringEscapeUtils.escapeHtml3(String.format(format, args));
96
            }
97
            return this;
98
        }
99

  
100
        @Override
101
        public GeometryTextElement value(IProjection proj) {
102
            return (GeometryTextElement) super.value(proj);
103
        }
104

  
105
        @Override
106
        public GeometryTextElement value(Envelope env) {
107
            return (GeometryTextElement) super.value(env);
108
        }
109

  
110
        @Override
111
        public GeometryTextElement value(Geometry geom) {
112
            return (GeometryTextElement) super.value(geom);
113
        }
114

  
115
        @Override
116
        public GeometryTextElement asWKT(IProjection proj) {
117
            return (GeometryTextElement) super.asWKT(proj);
118
        }
119

  
120
        @Override
121
        public GeometryTextElement asWKT(Envelope env) {
122
            return (GeometryTextElement) super.asWKT(env);
123
        }
124

  
125
        @Override
126
        public GeometryTextElement asWKT(Geometry geom) {
127
            return (GeometryTextElement) super.asWKT(geom);
128
        }
129

  
130
    }
131

  
132
    private class DefaultGeometryPropertyElement extends DefaultGeometryTextElement implements GeometryPropertyElement {
133

  
134
        @Override
135
        public DefaultPropertyElement label(String label) {
136
            this.label = StringEscapeUtils.escapeHtml3(label);
137
            return this;
138
        }
139

  
140
        @Override
141
        public PropertyElement labelkey(String labelkey) {
142
            return label(ToolsLocator.getI18nManager().getTranslation(labelkey));
143
        }
144

  
145
        @Override
146
        public GeometryPropertyElement value(IProjection proj) {
147
            if (this.label == null) {
148
                this.labelkey("_CRS");
149
            }
150
            if( proj == null ) {
151
                return (GeometryPropertyElement) value("");
152
            }
153
            return (GeometryPropertyElement) value(proj.getAbrev());
154
        }
155

  
156
        @Override
157
        public GeometryPropertyElement value(Envelope env) {
158
            return (GeometryPropertyElement) super.value(env);
159
        }
160

  
161
        @Override
162
        public GeometryPropertyElement value(Geometry geom) {
163
            return (GeometryPropertyElement) super.value(geom);
164
        }
165

  
166
        @Override
167
        public GeometryPropertyElement asWKT(IProjection proj) {
168
            return (GeometryPropertyElement) super.asWKT(proj);
169
        }
170

  
171
        @Override
172
        public GeometryPropertyElement asWKT(Envelope env) {
173
            return (GeometryPropertyElement) super.asWKT(env);
174
        }
175

  
176
        @Override
177
        public GeometryPropertyElement asWKT(Geometry geom) {
178
            return (GeometryPropertyElement) super.asWKT(geom);
179
        }
180
    }
181

  
182
    private class DefaultEnvelopeElement implements EnvelopeElement {
183

  
184
        private Envelope value;
185

  
186
        @Override
187
        public DefaultEnvelopeElement value(Envelope value) {
188
            this.value = value;
189
            return this;
190
        }
191

  
192
        @Override
193
        public String build() {
194
            //FIXME:
195

  
196
            PropertyElement p1 = new DefaultGeometryPropertyElement();
197
            p1.labelkey("_upper_left_corner");
198
            p1.value("%+f, %+f", value.getMinimum(DIMENSIONS.X), value.getMaximum(DIMENSIONS.Y));
199
            p1.monospace();
200

  
201
            PropertyElement p2 = new DefaultGeometryPropertyElement();
202
            p2.labelkey("_upper_right_corner");
203
            p2.value("%+f, %+f", value.getMaximum(DIMENSIONS.X), value.getMaximum(DIMENSIONS.Y));
204
            p2.monospace();
205

  
206
            PropertyElement p3 = new DefaultGeometryPropertyElement();
207
            p3.labelkey("_lower_right_corner");
208
            p3.value("%+f, %+f", value.getMaximum(DIMENSIONS.X), value.getMinimum(DIMENSIONS.Y));
209
            p3.monospace();
210

  
211
            PropertyElement p4 = new DefaultGeometryPropertyElement();
212
            p4.labelkey("_lower_left_corner");
213
            p4.value("%+f, %+f", value.getMinimum(DIMENSIONS.X), value.getMinimum(DIMENSIONS.Y));
214
            p4.monospace();
215

  
216
            return p1.build() + p2.build() + p3.build() + p4.build();
217
        }
218

  
219
    }
220

  
221
    public DefaultGeometryInformationBuilder() {
222
        super();
223
    }
224

  
225
    @Override
226
    public GeometryPropertyElement property() {
227
        GeometryPropertyElement element = new DefaultGeometryPropertyElement();
228
        this.elements.add(element);
229
        return element;
230
    }
231

  
232
    @Override
233
    public GeometryTextElement text() {
234
        GeometryTextElement element = new DefaultGeometryTextElement();
235
        this.elements.add(element);
236
        return element;
237
    }
238

  
239
    @Override
240
    public EnvelopeElement envelope() {
241
        EnvelopeElement element = new DefaultEnvelopeElement();
242
        this.elements.add(element);
243
        return element;
244
    }
245

  
246
    @Override
247
    public GeometryRawElement raw() {
248
        GeometryRawElement element = new DefaultGeometryRawElement();
249
        this.elements.add(element);
250
        return element;
251
    }
252

  
253
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.geometry/org.gvsig.fmap.geometry.jts/pom.xml
72 72
          <groupId>org.gvsig</groupId>
73 73
          <artifactId>org.gvsig.fmap.geometry.operation.jts</artifactId>
74 74
        </dependency>
75
        <dependency>
76
          <groupId>org.gvsig</groupId>
77
          <artifactId>org.gvsig.tools.util.impl</artifactId>
78
          <version>3.0.105-SNAPSHOT</version>
79
        </dependency>
75 80
  </dependencies>
76 81

  
77 82
</project>

Also available in: Unified diff