/[schmitzm]/branches/2.2.x/src/skrueger/AttributeMetadataInterface.java
ViewVC logotype

Contents of /branches/2.2.x/src/skrueger/AttributeMetadataInterface.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 464 - (show annotations)
Tue Oct 13 13:22:31 2009 UTC (15 years, 4 months ago) by alfonx
Original Path: branches/1.0-gt2-2.6/src/skrueger/AttributeMetadata.java
File size: 6575 byte(s)
* Changed AttributeMetadata and AttributeMetadataMap. It's not based on the attributes colIdx any more, but on the geotools.feature.type.Name. All the XML read/write methods have been adapted. 
This change was needed, as some users tend to change the DBF structure after the shapefile has been imported. Now columns can be moved, inserted and deleted. Just click "reload atlas" in Geopublisher after you changed the table schema. Geopublisher doesn't have to be closed.
1 /*******************************************************************************
2 * Copyright (c) 2009 Martin O. J. Schmitz.
3 *
4 * This file is part of the SCHMITZM library - a collection of utility
5 * classes based on Java 1.6, focusing (not only) on Java Swing
6 * and the Geotools library.
7 *
8 * The SCHMITZM project is hosted at:
9 * http://wald.intevation.org/projects/schmitzm/
10 *
11 * This program is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU Lesser General Public License
13 * as published by the Free Software Foundation; either version 3
14 * of the License, or (at your option) any later version.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU Lesser General Public License (license.txt)
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24 * or try this link: http://www.gnu.org/licenses/lgpl.html
25 *
26 * Contributors:
27 * Martin O. J. Schmitz - initial API and implementation
28 * Stefan A. Krüger - additional utility classes
29 ******************************************************************************/
30 package skrueger;
31
32 import org.apache.log4j.Logger;
33 import org.geotools.feature.NameImpl;
34 import org.opengis.feature.type.AttributeDescriptor;
35 import org.opengis.feature.type.Name;
36
37 import skrueger.geotools.Copyable;
38 import skrueger.geotools.StyledLayerInterface;
39 import skrueger.i8n.Translation;
40
41 /**
42 * This class holds meta information about an attribute/column. This information
43 * is used by {@link StyledLayerInterface}.
44 *
45 * @author <a href="mailto:[email protected]">Stefan Alfons Kr&uuml;ger</a>
46 */
47 public class AttributeMetadata implements Copyable<AttributeMetadata> {
48 static private final Logger LOGGER = Logger
49 .getLogger(AttributeMetadata.class);
50
51 protected Translation title = new Translation();
52 protected Translation desc = new Translation();
53 protected boolean visible = true;
54 protected String unit = "";
55 protected int colIdx;
56 private org.opengis.feature.type.Name name;
57
58 /**
59 * Creates an {@link AttributeMetadata} object with the following
60 * information
61 *
62 * @param colIdx
63 * The column index of this attribute in the underlying
64 * table/dbf/etc...
65 * @param visible
66 * Shall this attribute be displayed or hidden from the user?
67 * @param title
68 * {@link Translation} for Name
69 * @param desc
70 * {@link Translation} for an attribute description
71 * @param unit
72 * {@link String} of the unit that the information is in
73 */
74 public AttributeMetadata(final Name name, final Boolean visible,
75 final Translation title, final Translation desc, final String unit) {
76
77 this.setName(name);
78 this.title = title;
79 this.desc = desc;
80
81 // The THE_GEOM and shall never be visible!
82 if (name.getLocalPart().equalsIgnoreCase("the_geom")) this.visible = false;
83
84 this.unit = unit;
85 }
86
87 /**
88 * Creates an {@link AttributeMetadata} object with the following
89 * information
90 *
91 * @param visible
92 * Shall this attribute be displayed or hidden from the user?
93 * @param title
94 * {@link Translation} for Name
95 * @param desc
96 * {@link Translation} for an attribute description
97 * @param unit
98 * {@link String} of the unit that the information is in
99 */
100 public AttributeMetadata(final String localName, final Boolean visible,
101 final Translation title, final Translation desc, final String unit) {
102 this(new NameImpl(localName), true, title, desc, "");
103 }
104
105 /**
106 * Creates a new visible {@link AttributeMetadata} with default (no) values.
107 */
108 public AttributeMetadata(final String localName, final String defaultTitle) {
109 this(localName, true, new Translation(defaultTitle), new Translation(),
110 "");
111 }
112
113 /**
114 * Creates a new visible {@link AttributeMetadata} with default (no) values.
115 */
116 public AttributeMetadata(final Name name, final String defaultTitle) {
117 this(name, true, new Translation(defaultTitle), new Translation(), "");
118 }
119
120 /**
121 * Creates a new visible {@link AttributeMetadata} with default (no) values.
122 */
123 public AttributeMetadata(final Name name) {
124 this(name, true, new Translation(name.getLocalPart()),
125 new Translation(), "");
126 }
127
128 /**
129 * Creates a new visible {@link AttributeMetadata} with default (no) values.
130 */
131 public AttributeMetadata(final String localName) {
132 this(localName, true, new Translation(localName), new Translation(), "");
133 }
134
135 /** Only used for {@link Copyable<AttributeMetaData>#copy()} **/
136 private AttributeMetadata() {
137 }
138
139 public AttributeMetadata(AttributeDescriptor attDesc) {
140 this(attDesc.getName());
141 }
142
143 public boolean isVisible() {
144 return visible;
145 }
146
147 public void setVisible(final Boolean visible) {
148 this.visible = visible;
149 }
150 //
151 // /** @return the index of this attribute in the underlying table/dbf **/
152 // public int getColIdx() {
153 // return colIdx;
154 // }
155
156 public Translation getTitle() {
157 return title;
158 }
159
160 public void setTitle(final Translation title) {
161 this.title = title;
162 }
163
164 public Translation getDesc() {
165 return desc;
166 }
167
168 public void setDesc(final Translation desc) {
169 this.desc = desc;
170 }
171
172 public String getUnit() {
173 return unit;
174 }
175
176 public void setUnit(final String unit) {
177 this.unit = unit;
178 }
179
180 @Override
181 public AttributeMetadata copyTo(AttributeMetadata amd) {
182 getTitle().copyTo(amd.getTitle());
183 getDesc().copyTo(amd.getDesc());
184 amd.setUnit(getUnit());
185 amd.setVisible(isVisible());
186 amd.setName(new NameImpl(getName().getNamespaceURI(), getName().getLocalPart()));
187
188 return amd;
189 }
190
191 @Override
192 public AttributeMetadata copy() {
193 return copyTo( new AttributeMetadata());
194 }
195
196 /**
197 * The local Name. E.g. the name of the DBF column as a String
198 */
199 public String getLocalName() {
200 return getName().getLocalPart();
201 }
202
203 /**
204 * The fully qualified Name of the attribute, e.g. org.bla.plo:blub
205 */
206 public Name getName() {
207 return name;
208 }
209
210 /**
211 * The fully qualified Name of the attribute, e.g. org.bla.plo:blub
212 */
213 public void setName(org.opengis.feature.type.Name name) {
214 this.name = name;
215 }
216
217 /**
218 * The fully qualified Name of the attribute, e.g. org.bla.plo:blub
219 */
220 public void setLocalName(String localName) {
221 this.name = new NameImpl(localName);
222 }
223 }

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26