blob: c72f5232361eba4056def82a21cb2245edbda099 [file] [log] [blame]
/*
* 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);
}
}