package org.openstack.atlas.util.cidr.validate;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import org.openstack.atlas.util.ip.IPUtils;
import java.util.logging.Level;
import java.util.logging.Logger;
public class IpValidator {
private ValidateType type;
private ValidateVersion version;
public IpValidator() {
}
public IpValidator(ValidateType type, ValidateVersion version) {
this.type = type;
this.version = version;
}
public String getValidateResultStringNoExcept(String ip) {
boolean valid;
String validStr;
String versionStr;
String typeStr;
String out;
ip = ip.trim();
valid = validateNoExcept(ip);
if (valid) {
validStr = "VALID ";
} else {
validStr = "INVALID";
}
switch(version) {
case IPV4:
versionStr = "IPv4";
break;
case IPV6:
versionStr = "IPv6";
break;
default:
versionStr = "UNKNOWN IPVERSION";
}
switch (type) {
case IP:
typeStr = "address";
break;
case SUBNET:
typeStr = "subnet";
break;
default:
typeStr = "UNKNOWN SUBNET OR ADDRESS";
}
out = String.format("%s %s %s %s\n",ip,validStr,versionStr,typeStr);
return out;
}
public boolean validateNoExcept(String ip) {
boolean out;
ip = ip.trim();
try {
out = validate(ip);
} catch (SecurityException ex) {
out = false;
} catch (NoSuchMethodException ex) {
out = false;
} catch (IllegalArgumentException ex) {
out = false;
} catch (IllegalAccessException ex) {
out = false;
} catch (InvocationTargetException ex) {
out = false;
}
return out;
}
public boolean validate(String ip) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
Method method;
ip = ip.trim();
Class iputils = IPUtils.class;
StringBuilder sb = new StringBuilder(24);
String methodName;
sb.append("isValid");
boolean out;
Boolean tmp;
Object obj;
switch (version) {
case IPV4:
sb.append("Ipv4");
break;
case IPV6:
sb.append("Ipv6");
break;
default:
out = false;
return false;
}
switch (type) {
case IP:
sb.append("String");
break;
case SUBNET:
sb.append("Subnet");
break;
default:
out = false;
return out;
}
methodName = sb.toString();
method = iputils.getMethod(methodName, String.class);
obj = method.invoke(null, ip);
tmp = (Boolean) obj;
out = (boolean) tmp;
return out;
}
public ValidateType getType() {
return type;
}
public void setType(ValidateType type) {
this.type = type;
}
public ValidateVersion getVersion() {
return version;
}
public void setVersion(ValidateVersion version) {
this.version = version;
}
}