/* Copyright (c) 2001 - 2013 OpenPlans - www.openplans.org. All rights reserved.
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.wps;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.geoserver.catalog.MetadataMap;
import org.geotools.process.ProcessFactory;
import org.opengis.feature.type.Name;
public class ProcessGroupInfoImpl implements ProcessGroupInfo {
private static final long serialVersionUID = 4850653421657310854L;
Class<? extends ProcessFactory> factoryClass;
boolean enabled;
List<Name> filteredProcesses = new ArrayList<Name>();
MetadataMap metadataMap = new MetadataMap();
@Override
public String getId() {
return "wpsProcessFactory-" + factoryClass.getName();
}
public Class<? extends ProcessFactory> getFactoryClass() {
return factoryClass;
}
public void setFactoryClass(Class<? extends ProcessFactory> factoryClass) {
this.factoryClass = factoryClass;
}
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public List<Name> getFilteredProcesses() {
return filteredProcesses;
}
public void setFilteredProcesses(List<Name> filteredProcesses) {
this.filteredProcesses = filteredProcesses;
}
@Override
public MetadataMap getMetadata() {
return metadataMap;
}
@Override
public ProcessGroupInfo clone() {
ProcessGroupInfoImpl clone = new ProcessGroupInfoImpl();
clone.setEnabled(enabled);
clone.setFactoryClass(factoryClass);
if(filteredProcesses != null) {
clone.setFilteredProcesses(new ArrayList<Name>(filteredProcesses));
}
if(metadataMap != null) {
clone.metadataMap = new MetadataMap(new HashMap<String, Serializable>(metadataMap));
}
return clone;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (enabled ? 1231 : 1237);
result = prime * result + ((factoryClass == null) ? 0 : factoryClass.hashCode());
result = prime * result + ((filteredProcesses == null) ? 0 : filteredProcesses.hashCode());
result = prime * result + ((metadataMap == null) ? 0 : metadataMap.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
ProcessGroupInfoImpl other = (ProcessGroupInfoImpl) obj;
if (enabled != other.enabled)
return false;
if (factoryClass == null) {
if (other.factoryClass != null)
return false;
} else if (!factoryClass.equals(other.factoryClass))
return false;
if (filteredProcesses == null) {
if (other.filteredProcesses != null)
return false;
} else if (!filteredProcesses.equals(other.filteredProcesses))
return false;
if (metadataMap == null) {
if (other.metadataMap != null)
return false;
} else if (!metadataMap.equals(other.metadataMap))
return false;
return true;
}
@Override
public String toString() {
return "ProcessFactoryInfoImpl [factoryClass=" + factoryClass + ", enabled=" + enabled
+ ", filteredProcesses=" + filteredProcesses + ", metadataMap=" + metadataMap + "]";
}
}