/* * Copyright 2003 Federal Chancellery Austria * MOA-SPSS has been developed in a cooperation between BRZ, the Federal * Chancellery Austria - ICT staff unit, and Graz University of Technology. * * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by * the European Commission - subsequent versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * http://www.osor.eu/eupl/ * * Unless required by applicable law or agreed to in writing, software * distributed under the Licence is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the Licence for the specific language governing permissions and * limitations under the Licence. * * This product combines work with different licenses. See the "NOTICE" text * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. */ package at.gv.egovernment.moa.spss.server.iaik.xml; import java.util.Map; import iaik.server.modules.xml.XPath2Transformation; import iaik.server.modules.xml.XPath2Transformation.XPath2Filter; /** * An object encapsulating an XPath-Filter2 expression. * * @author Patrick Peck * @version $Id$ */ public class XPath2FilterImpl implements XPath2Filter { /** The type of this filter. */ private String filterType; /** The XPath expression of this filter. */ private String xPathExpression; /** The namespace prefix to URI mapping to use for evaluating the XPath. */ private Map namespaceDeclarations; /** * Create a new XPath2FilterImpl object. * * @param filterType The type of filter. Must be one of the filter * type constants declared in * iaik.server.modules.xml.XPath2Transformation.XPath2Filter * @param xPathExpression The XPath expression belonging to this filter. * @param namespaceDeclarations The namespace declarations visible for this * XPath2Filter. */ public XPath2FilterImpl( String filterType, String xPathExpression, Map namespaceDeclarations) { setFilterType(filterType); setXPathExpression(xPathExpression); setNamespaceDeclarations(namespaceDeclarations); } /** * @see iaik.server.modules.xml.XPath2Transformation.XPath2Filter#getFilterType() */ @Override public String getFilterType() { return filterType; } /** * Set the filter type. * * @param filterType The filter type to set. */ protected void setFilterType(String filterType) { this.filterType = filterType; } /** * @see iaik.server.modules.xml.XPath2Transformation.XPath2Filter#getXPathExpression() */ @Override public String getXPathExpression() { return xPathExpression; } /** * Set the XPath expression. * * @param xPathExpression The XPath expression to set. */ protected void setXPathExpression(String xPathExpression) { this.xPathExpression = xPathExpression; } /** * @see iaik.server.modules.xml.XPath2Transformation.XPath2Filter#getNamespaceDeclarations() */ @Override public Map getNamespaceDeclarations() { return namespaceDeclarations; } /** * Set the namespace declarations. * * @param namespaceDeclarations The mapping between namespace prefixes and their * associated URI. */ protected void setNamespaceDeclarations(Map namespaceDeclarations) { this.namespaceDeclarations = namespaceDeclarations; } /** * Compare this object to another. * * @param other The object to compare this XPath2Filter to. * @return true, if other is a * XPath2Filter and the filter types match and the XPath * expressions match. Otherwise false is returned. * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object other) { if (other instanceof XPath2Transformation.XPath2Filter) { final XPath2Filter filter = (XPath2Transformation.XPath2Filter) other; return getFilterType().equals(filter.getFilterType()) && getXPathExpression().equals(filter.getXPathExpression()); } return false; } /** * @see java.lang.Object#hashCode() */ @Override public int hashCode() { return getXPathExpression().hashCode() * 31 + getFilterType().hashCode(); } }