001: /*
002: * GeoTools - OpenSource mapping toolkit
003: * http://geotools.org
004: * (C) 2002-2006, GeoTools Project Managment Committee (PMC)
005: * (C) 2002, Centre for Computational Geography
006: *
007: * This library is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU Lesser General Public
009: * License as published by the Free Software Foundation;
010: * version 2.1 of the License.
011: *
012: * This library is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: */
017: package org.geotools.styling;
018:
019: import org.geotools.event.AbstractGTComponent;
020: import org.geotools.resources.Utilities;
021: import org.opengis.util.Cloneable;
022:
023: // J2SE dependencies
024: import java.net.MalformedURLException;
025: import java.net.URL;
026: import java.util.Map;
027:
028: /**
029: * DOCUMENT ME!
030: *
031: * @author Ian Turton, CCG
032: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/library/main/src/main/java/org/geotools/styling/ExternalGraphicImpl.java $
033: * @version $Id: ExternalGraphicImpl.java 27862 2007-11-12 19:51:19Z desruisseaux $
034: */
035: public class ExternalGraphicImpl extends AbstractGTComponent implements
036: ExternalGraphic, Symbol, Cloneable {
037: /** The logger for the default core module. */
038: private static final java.util.logging.Logger LOGGER = org.geotools.util.logging.Logging
039: .getLogger("org.geotools.core");
040: private URL location = null;
041: private String format = null;
042: private String uri = null;
043: private Map customProps = null;
044:
045: public void setURI(String uri) {
046: this .uri = uri;
047: fireChanged();
048: }
049:
050: /**
051: * Provides the format of the external graphic.
052: *
053: * @return The format of the external graphic. Reported as its MIME type
054: * in a String object.
055: */
056: public String getFormat() {
057: return format;
058: }
059:
060: /**
061: * Provides the URL for where the external graphic resouce can be located.
062: *
063: * @return The URL of the ExternalGraphic
064: *
065: * @throws MalformedURLException DOCUMENT ME!
066: */
067: public java.net.URL getLocation() throws MalformedURLException {
068: if (location == null) {
069: location = new URL(uri);
070: }
071:
072: return location;
073: }
074:
075: /**
076: * Setter for property Format.
077: *
078: * @param format New value of property Format.
079: */
080: public void setFormat(java.lang.String format) {
081: this .format = format;
082: }
083:
084: /**
085: * Setter for property location.
086: *
087: * @param location New value of property location.
088: */
089: public void setLocation(java.net.URL location) {
090: this .uri = location.toString();
091: this .location = location;
092: }
093:
094: public void accept(StyleVisitor visitor) {
095: visitor.visit(this );
096: }
097:
098: /**
099: * Returns a clone of the ExternalGraphic
100: *
101: * @see org.geotools.styling.ExternalGraphic#clone()
102: */
103: public Object clone() {
104: try {
105: return super .clone();
106: } catch (CloneNotSupportedException e) {
107: // This will never happen
108: throw new AssertionError(e);
109: }
110: }
111:
112: /**
113: * Generates a hashcode for the ExternalGraphic
114: *
115: * @return The hash code.
116: */
117: public int hashCode() {
118: final int PRIME = 1000003;
119: int result = 0;
120:
121: if (format != null) {
122: result = (PRIME * result) + format.hashCode();
123: }
124:
125: if (uri != null) {
126: result = (PRIME * result) + uri.hashCode();
127: }
128:
129: return result;
130: }
131:
132: /**
133: * Compares this ExternalGraphi with another.
134: *
135: * <p>
136: * Two external graphics are equal if they have the same uri and format.
137: * </p>
138: *
139: * @param oth The other External graphic.
140: *
141: * @return True if this and the other external graphic are equal.
142: */
143: public boolean equals(Object oth) {
144: if (this == oth) {
145: return true;
146: }
147:
148: if (oth instanceof ExternalGraphicImpl) {
149: ExternalGraphicImpl other = (ExternalGraphicImpl) oth;
150:
151: return Utilities.equals(uri, other.uri)
152: && Utilities.equals(format, other.format);
153: }
154:
155: return false;
156: }
157:
158: public java.util.Map getCustomProperties() {
159: return customProps;
160: }
161:
162: public void setCustomProperties(java.util.Map list) {
163: customProps = list;
164: }
165: }
|