/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* 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;
public class ProcessGroupInfoImpl implements ProcessGroupInfo {
private static final long serialVersionUID = 4850653421657310854L;
Class<? extends ProcessFactory> factoryClass;
boolean enabled;
List<String> roles = new ArrayList<>();
List<ProcessInfo> filteredProcesses = new ArrayList<ProcessInfo>();
MetadataMap metadata = 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<ProcessInfo> getFilteredProcesses() {
return filteredProcesses;
}
public void setFilteredProcesses(List<ProcessInfo> filteredProcesses) {
this.filteredProcesses = filteredProcesses;
}
@Override
public MetadataMap getMetadata() {
return metadata;
}
public void setMetadata(MetadataMap metadataMap) {
this.metadata = metadataMap;
}
@Override
public ProcessGroupInfo clone() {
ProcessGroupInfoImpl clone = new ProcessGroupInfoImpl();
clone.setEnabled(enabled);
clone.setFactoryClass(factoryClass);
clone.setRoles(roles);
if(filteredProcesses != null) {
clone.setFilteredProcesses(new ArrayList<ProcessInfo>(filteredProcesses));
}
if(metadata != null) {
clone.metadata = new MetadataMap(new HashMap<String, Serializable>(metadata));
}
return clone;
}
@Override
public List<String> getRoles() {
return roles;
}
@Override
public void setRoles(List<String> roles) {
this.roles = roles;
}
@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 + ((metadata == null) ? 0 : metadata.hashCode());
result = prime * result + ((roles == null) ? 0 : roles.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 (metadata == null) {
if (other.metadata != null)
return false;
} else if (!metadata.equals(other.metadata))
return false;
if (roles == null) {
if (other.roles != null)
return false;
} else if (!roles.equals(other.roles))
return false;
return true;
}
}