/[schmitzm]/branches/2.0-RC1/src/skrueger/AttributeMetadata.java
ViewVC logotype

Annotation of /branches/2.0-RC1/src/skrueger/AttributeMetadata.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 464 - (hide 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 alfonx 244 /*******************************************************************************
2     * Copyright (c) 2009 Martin O. J. Schmitz.
3     *
4     * This file is part of the SCHMITZM library - a collection of utility
5 alfonx 256 * classes based on Java 1.6, focusing (not only) on Java Swing
6 alfonx 244 * 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 alfonx 464 import org.geotools.feature.NameImpl;
34     import org.opengis.feature.type.AttributeDescriptor;
35     import org.opengis.feature.type.Name;
36 alfonx 244
37 alfonx 420 import skrueger.geotools.Copyable;
38 mojays 325 import skrueger.geotools.StyledLayerInterface;
39 alfonx 244 import skrueger.i8n.Translation;
40    
41     /**
42 alfonx 464 * This class holds meta information about an attribute/column. This information
43     * is used by {@link StyledLayerInterface}.
44     *
45 alfonx 244 * @author <a href="mailto:[email protected]">Stefan Alfons Kr&uuml;ger</a>
46     */
47 alfonx 464 public class AttributeMetadata implements Copyable<AttributeMetadata> {
48 alfonx 244 static private final Logger LOGGER = Logger
49 alfonx 463 .getLogger(AttributeMetadata.class);
50 alfonx 464
51 alfonx 244 protected Translation title = new Translation();
52     protected Translation desc = new Translation();
53 alfonx 464 protected boolean visible = true;
54 alfonx 244 protected String unit = "";
55     protected int colIdx;
56 alfonx 464 private org.opengis.feature.type.Name name;
57    
58 alfonx 244 /**
59 alfonx 464 * 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 alfonx 244 */
74 alfonx 464 public AttributeMetadata(final Name name, final Boolean visible,
75 alfonx 244 final Translation title, final Translation desc, final String unit) {
76 alfonx 464
77     this.setName(name);
78 alfonx 244 this.title = title;
79     this.desc = desc;
80 alfonx 464
81     // The THE_GEOM and shall never be visible!
82     if (name.getLocalPart().equalsIgnoreCase("the_geom")) this.visible = false;
83    
84 alfonx 244 this.unit = unit;
85     }
86    
87     /**
88 alfonx 464 * 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 alfonx 244 */
100 alfonx 464 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 alfonx 244 }
104    
105 alfonx 464 /**
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 alfonx 463 private AttributeMetadata() {
137 alfonx 420 }
138    
139 alfonx 464 public AttributeMetadata(AttributeDescriptor attDesc) {
140     this(attDesc.getName());
141     }
142    
143 alfonx 420 public boolean isVisible() {
144 alfonx 244 return visible;
145     }
146    
147     public void setVisible(final Boolean visible) {
148     this.visible = visible;
149     }
150 alfonx 464 //
151     // /** @return the index of this attribute in the underlying table/dbf **/
152     // public int getColIdx() {
153     // return colIdx;
154     // }
155 alfonx 244
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 alfonx 420
180     @Override
181 alfonx 463 public AttributeMetadata copyTo(AttributeMetadata amd) {
182 alfonx 420 getTitle().copyTo(amd.getTitle());
183     getDesc().copyTo(amd.getDesc());
184     amd.setUnit(getUnit());
185     amd.setVisible(isVisible());
186 alfonx 464 amd.setName(new NameImpl(getName().getNamespaceURI(), getName().getLocalPart()));
187    
188 alfonx 420 return amd;
189     }
190    
191     @Override
192 alfonx 463 public AttributeMetadata copy() {
193 alfonx 464 return copyTo( new AttributeMetadata());
194 alfonx 420 }
195    
196 alfonx 464 /**
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 alfonx 420 }
202 alfonx 464
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 alfonx 244 }

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26