/* (c) 2014 - 2016 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.web.data.layer; import java.io.Serializable; import java.util.logging.Level; import org.geotools.jdbc.RegexpValidator; import org.geotools.jdbc.VirtualTableParameter; import org.geotools.jdbc.VirtualTableParameter.Validator; class Parameter implements Serializable { /** serialVersionUID */ private static final long serialVersionUID = -5028680760307467030L; String name; String defaultValue; String regexp; public Parameter(String name, String defaultValue, String regexp) { this.name = name; this.defaultValue = defaultValue; this.regexp = regexp; } public Parameter(VirtualTableParameter param) { this.name = param.getName(); this.defaultValue = param.getDefaultValue(); Validator validator = param.getValidator(); if (validator != null) { if (validator instanceof RegexpValidator) { this.regexp = ((RegexpValidator) validator).getPattern().pattern(); } else { SQLViewParamProvider.LOGGER.log(Level.WARNING, "Skipping unknown validator type " + validator.getClass()); } } } public VirtualTableParameter toVirtualTableParameter() { VirtualTableParameter result = new VirtualTableParameter(name, defaultValue); if(regexp != null) { result.setValidator(new RegexpValidator(regexp)); } return result; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDefaultValue() { return defaultValue; } public void setDefaultValue(String defaultValue) { this.defaultValue = defaultValue; } public String getRegexp() { return regexp; } public void setRegexp(String regexp) { this.regexp = regexp; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((defaultValue == null) ? 0 : defaultValue.hashCode()); result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + ((regexp == null) ? 0 : regexp.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; Parameter other = (Parameter) obj; if (defaultValue == null) { if (other.defaultValue != null) return false; } else if (!defaultValue.equals(other.defaultValue)) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; if (regexp == null) { if (other.regexp != null) return false; } else if (!regexp.equals(other.regexp)) return false; return true; } @Override public String toString() { return "Parameter [defaultValue=" + defaultValue + ", name=" + name + ", regexp=" + regexp + "]"; } }