/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2002-2008, Open Source Geospatial Foundation (OSGeo)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package org.geotools.styling;
import java.util.HashMap;
import java.util.Map;
import org.opengis.filter.expression.Expression;
import org.opengis.style.StyleVisitor;
/**
* ExtensioSymbolizer capturing a vendor specific extension.
* <p>
* This is a default placeholder to record a vendor specific extension; in case an implementation
* could not be found on the classpath.
*
* @author James Macgill, CCG
* @author Johann Sorel (Geomatys)
* @source $URL: http://svn.osgeo.org/geotools/trunk/modules/library/main/src/main/java/org/geotools/styling/PolygonSymbolizerImpl.java $
* @version $Id: PolygonSymbolizerImpl.java 33833 2009-09-04 12:26:28Z jive $
*/
public class VendorSymbolizerImpl extends AbstractSymbolizer implements ExtensionSymbolizer {
private String extensionName;
private Map<String, Expression> parameters = new HashMap<String, Expression>();
/**
* Creates a new instance of DefaultPolygonStyler
*/
protected VendorSymbolizerImpl() {
}
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((extensionName == null) ? 0 : extensionName.hashCode());
result = prime * result + ((parameters == null) ? 0 : parameters.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!super.equals(obj))
return false;
if (getClass() != obj.getClass())
return false;
VendorSymbolizerImpl other = (VendorSymbolizerImpl) obj;
if (extensionName == null) {
if (other.extensionName != null)
return false;
} else if (!extensionName.equals(other.extensionName))
return false;
if (parameters == null) {
if (other.parameters != null)
return false;
} else if (!parameters.equals(other.parameters))
return false;
return true;
}
static VendorSymbolizerImpl cast(org.opengis.style.Symbolizer symbolizer) {
if( symbolizer == null ){
return null;
}
else if (symbolizer instanceof VendorSymbolizerImpl){
return (VendorSymbolizerImpl) symbolizer;
}
else if( symbolizer instanceof org.opengis.style.ExtensionSymbolizer ){
org.opengis.style.ExtensionSymbolizer extensionSymbolizer = (org.opengis.style.ExtensionSymbolizer) symbolizer;
VendorSymbolizerImpl copy = new VendorSymbolizerImpl();
copy.setDescription( extensionSymbolizer.getDescription() );
copy.setGeometryPropertyName( extensionSymbolizer.getGeometryPropertyName());
copy.setName(extensionSymbolizer.getName());
copy.setUnitOfMeasure( extensionSymbolizer.getUnitOfMeasure());
return copy;
}
else {
return null; // not possible
}
}
public String getExtensionName() {
return extensionName;
}
public Map<String, Expression> getParameters() {
return parameters;
}
public void setExtensionName(String name) {
this.extensionName = name;
}
public Object accept(StyleVisitor visitor, Object data) {
return visitor.visit( this, data );
}
public void accept(org.geotools.styling.StyleVisitor visitor) {
visitor.visit(this);
}
}