diff options
Diffstat (limited to 'verigraph/src/it/polito/verigraph/validation')
6 files changed, 214 insertions, 0 deletions
diff --git a/verigraph/src/it/polito/verigraph/validation/DpiValidator.java b/verigraph/src/it/polito/verigraph/validation/DpiValidator.java new file mode 100644 index 0000000..f3c1dfc --- /dev/null +++ b/verigraph/src/it/polito/verigraph/validation/DpiValidator.java @@ -0,0 +1,44 @@ +/******************************************************************************* + * Copyright (c) 2017 Politecnico di Torino and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Apache License, Version 2.0 + * which accompanies this distribution, and is available at + * http://www.apache.org/licenses/LICENSE-2.0 + *******************************************************************************/ +package it.polito.verigraph.validation; + +import com.fasterxml.jackson.databind.JsonNode; + +import it.polito.verigraph.model.Configuration; +import it.polito.verigraph.model.Graph; +import it.polito.verigraph.model.Node; +import it.polito.verigraph.validation.exception.ValidationException; + +public class DpiValidator implements ValidationInterface { + + public DpiValidator(){ + + } + + private void validateKey(String key) throws ValidationException { + if (!key.matches("\\w+")) + throw new ValidationException("'" + key + "' is not a valid configuration string for a 'dpi'"); + } + + @Override + public void validate(Graph graph, Node node, Configuration configuration) throws ValidationException { + + JsonNode conf = configuration.getConfiguration(); + + if (!conf.isArray()) { + throw new ValidationException("Configuration of a 'dpi' must be an array"); + } + for (JsonNode key : conf) { + if (!key.isTextual()) + throw new ValidationException("Configuration of a 'dpi' must be an array of strings"); + validateKey(key.asText()); + } + } + +}
\ No newline at end of file diff --git a/verigraph/src/it/polito/verigraph/validation/EndhostValidator.java b/verigraph/src/it/polito/verigraph/validation/EndhostValidator.java new file mode 100644 index 0000000..218e2cc --- /dev/null +++ b/verigraph/src/it/polito/verigraph/validation/EndhostValidator.java @@ -0,0 +1,23 @@ +/******************************************************************************* + * Copyright (c) 2017 Politecnico di Torino and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Apache License, Version 2.0 + * which accompanies this distribution, and is available at + * http://www.apache.org/licenses/LICENSE-2.0 + *******************************************************************************/ +package it.polito.verigraph.validation; + +import it.polito.verigraph.model.Configuration; +import it.polito.verigraph.model.Graph; +import it.polito.verigraph.model.Node; +import it.polito.verigraph.validation.exception.ValidationException; + + +public class EndhostValidator implements ValidationInterface { + + @Override + public void validate(Graph graph, Node node, Configuration configuration) throws ValidationException { + + } +}
\ No newline at end of file diff --git a/verigraph/src/it/polito/verigraph/validation/ValidationInterface.java b/verigraph/src/it/polito/verigraph/validation/ValidationInterface.java new file mode 100644 index 0000000..f5af892 --- /dev/null +++ b/verigraph/src/it/polito/verigraph/validation/ValidationInterface.java @@ -0,0 +1,20 @@ +/******************************************************************************* + * Copyright (c) 2017 Politecnico di Torino and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Apache License, Version 2.0 + * which accompanies this distribution, and is available at + * http://www.apache.org/licenses/LICENSE-2.0 + *******************************************************************************/ +package it.polito.verigraph.validation; + +import it.polito.verigraph.model.Configuration; +import it.polito.verigraph.model.Graph; +import it.polito.verigraph.model.Node; +import it.polito.verigraph.validation.exception.ValidationException; + +public interface ValidationInterface { + + void validate(Graph graph, Node node, Configuration configuration) throws ValidationException; + +}
\ No newline at end of file diff --git a/verigraph/src/it/polito/verigraph/validation/VpnaccessValidator.java b/verigraph/src/it/polito/verigraph/validation/VpnaccessValidator.java new file mode 100644 index 0000000..f7faa10 --- /dev/null +++ b/verigraph/src/it/polito/verigraph/validation/VpnaccessValidator.java @@ -0,0 +1,49 @@ +/******************************************************************************* + * Copyright (c) 2017 Politecnico di Torino and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Apache License, Version 2.0 + * which accompanies this distribution, and is available at + * http://www.apache.org/licenses/LICENSE-2.0 + *******************************************************************************/ +package it.polito.verigraph.validation; + +import com.fasterxml.jackson.databind.JsonNode; + +import it.polito.verigraph.model.Configuration; +import it.polito.verigraph.model.Graph; +import it.polito.verigraph.model.Node; +import it.polito.verigraph.validation.exception.ValidationException; + +public class VpnaccessValidator implements ValidationInterface { + + @Override + public void validate(Graph graph, Node node, Configuration configuration) throws ValidationException { + JsonNode configurationNode = configuration.getConfiguration(); + + if (!configurationNode.isArray()) + throw new ValidationException("configuration must be an array"); + + for (JsonNode object : configurationNode) { + JsonNode vpnexit = object.get("vpnexit"); + if (!vpnexit.isTextual()) + throw new ValidationException("value corresponding to the key 'vpnexit' must be a string"); + validateObject(graph, node, vpnexit.asText()); + } + + } + + private void validateObject(Graph g, Node node, String field) throws ValidationException { + boolean isValid = false; + for (Node n : g.getNodes().values()) { + if ((n.getFunctional_type().equals("vpnexit")) && (n.getName().equals(field))) + isValid = true; + } + + if (!isValid) + throw new ValidationException("'"+ field + "' is not a valid value for the configuration of a type '" + + node.getFunctional_type() + + "'. Please use the name of an existing node of type 'vpnexit'."); + + } +}
\ No newline at end of file diff --git a/verigraph/src/it/polito/verigraph/validation/VpnexitValidator.java b/verigraph/src/it/polito/verigraph/validation/VpnexitValidator.java new file mode 100644 index 0000000..4bb249d --- /dev/null +++ b/verigraph/src/it/polito/verigraph/validation/VpnexitValidator.java @@ -0,0 +1,49 @@ +/******************************************************************************* + * Copyright (c) 2017 Politecnico di Torino and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Apache License, Version 2.0 + * which accompanies this distribution, and is available at + * http://www.apache.org/licenses/LICENSE-2.0 + *******************************************************************************/ +package it.polito.verigraph.validation; + +import com.fasterxml.jackson.databind.JsonNode; + +import it.polito.verigraph.model.Configuration; +import it.polito.verigraph.model.Graph; +import it.polito.verigraph.model.Node; +import it.polito.verigraph.validation.exception.ValidationException; + +public class VpnexitValidator implements ValidationInterface { + + @Override + public void validate(Graph graph, Node node, Configuration configuration) throws ValidationException { + JsonNode configurationNode = configuration.getConfiguration(); + + if (!configurationNode.isArray()) + throw new ValidationException("configuration must be an array"); + + for (JsonNode object : configurationNode) { + JsonNode vpnexit = object.get("vpnaccess"); + if (!vpnexit.isTextual()) + throw new ValidationException("value corresponding to the key 'vpnaccess' must be a string"); + validateObject(graph, node, vpnexit.asText()); + } + + } + + private void validateObject(Graph g, Node node, String field) throws ValidationException { + boolean isValid = false; + for (Node n : g.getNodes().values()) { + if ((n.getFunctional_type().equals("vpnaccess")) && (n.getName().equals(field))) + isValid = true; + } + + if (!isValid) + throw new ValidationException("'"+ field + "' is not a valid value for the configuration of a type '" + + node.getFunctional_type() + + "'. Please use the name of an existing node of type 'vpnaccess'."); + + } +}
\ No newline at end of file diff --git a/verigraph/src/it/polito/verigraph/validation/exception/ValidationException.java b/verigraph/src/it/polito/verigraph/validation/exception/ValidationException.java new file mode 100644 index 0000000..5ad3406 --- /dev/null +++ b/verigraph/src/it/polito/verigraph/validation/exception/ValidationException.java @@ -0,0 +1,29 @@ +/******************************************************************************* + * Copyright (c) 2017 Politecnico di Torino and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Apache License, Version 2.0 + * which accompanies this distribution, and is available at + * http://www.apache.org/licenses/LICENSE-2.0 + *******************************************************************************/ +package it.polito.verigraph.validation.exception; + +public class ValidationException extends Exception { + + /** + * + */ + private static final long serialVersionUID = -8251271078519549101L; + + private String message; + + public ValidationException(String message){ + //super(message); + this.message = message; + } + + @Override + public String getMessage() { + return this.message; + } +}
\ No newline at end of file |