/* * Copyright 2000-2009 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.intellij.tools; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.JDOMExternalizable; import org.jdom.Element; import org.jetbrains.annotations.NonNls; import java.util.Iterator; /** * @author dyoma */ public class FilterInfo implements JDOMExternalizable { @NonNls private static final String FILTER_NAME = "NAME"; @NonNls private static final String FILTER_DESCRIPTION = "DESCRIPTION"; @NonNls private static final String FILTER_REGEXP = "REGEXP"; private String myName = ToolsBundle.message("tools.filters.name.default"); private String myDescription; private String myRegExp; @NonNls private static final String ELEMENT_OPTION = "option"; @NonNls private static final String ATTRIBUTE_VALUE = "value"; @NonNls private static final String ATTRIBUTE_NAME = "name"; public FilterInfo() { } public FilterInfo(String regExp, String name, String description) { myRegExp = regExp; myName = name; myDescription = description; } public String getDescription() { return myDescription; } public void setDescription(String description) { myDescription = description; } public String getName() { return myName; } public void setName(String name) { myName = name; } public String getRegExp() { return myRegExp; } public void setRegExp(String regExp) { myRegExp = regExp; } public int hashCode() { return Comparing.hashcode(myName) + Comparing.hashcode(myDescription) + Comparing.hashcode(myRegExp); } public boolean equals(Object object) { if (!(object instanceof FilterInfo)) return false; FilterInfo other = (FilterInfo)object; return Comparing.equal(myName, other.myName) && Comparing.equal(myDescription, other.myDescription) && Comparing.equal(myRegExp, other.myRegExp); } public FilterInfo createCopy() { return new FilterInfo(myRegExp, myName, myDescription); } @Override public void readExternal(Element element) { for (Iterator i2 = element.getChildren(ELEMENT_OPTION).iterator(); i2.hasNext(); ) { Element optionElement = (Element)i2.next(); String value = optionElement.getAttributeValue(ATTRIBUTE_VALUE); String name = optionElement.getAttributeValue(ATTRIBUTE_NAME); if (FILTER_NAME.equals(name)) { if (value != null) { myName = convertString(value); } } if (FILTER_DESCRIPTION.equals(name)) { myDescription = convertString(value); } if (FILTER_REGEXP.equals(name)) { myRegExp = convertString(value); } } } @Override public void writeExternal(Element filterElement) { Element option = new Element(ELEMENT_OPTION); filterElement.addContent(option); option.setAttribute(ATTRIBUTE_NAME, FILTER_NAME); if (myName != null) { option.setAttribute(ATTRIBUTE_VALUE, myName); } option = new Element(ELEMENT_OPTION); filterElement.addContent(option); option.setAttribute(ATTRIBUTE_NAME, FILTER_DESCRIPTION); if (myDescription != null) { option.setAttribute(ATTRIBUTE_VALUE, myDescription); } option = new Element(ELEMENT_OPTION); filterElement.addContent(option); option.setAttribute(ATTRIBUTE_NAME, FILTER_REGEXP); if (myRegExp != null) { option.setAttribute(ATTRIBUTE_VALUE, myRegExp); } } public static String convertString(String s) { return ToolManager.convertString(s); } }