X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Fschema%2Fvalidation%2FMultiplicityValidator.java;fp=src%2Fmain%2Fjava%2Forg%2Fonap%2Fschema%2Fvalidation%2FMultiplicityValidator.java;h=0000000000000000000000000000000000000000;hb=0c40bcde9facc109ceb8dabb91156df2b4fb4129;hp=1c1075c1bb2d3cedc4feda891e461d62514e7b59;hpb=df7904cca9c67ed7ce99e1d1d1c3a2c961a61445;p=aai%2Fgizmo.git diff --git a/src/main/java/org/onap/schema/validation/MultiplicityValidator.java b/src/main/java/org/onap/schema/validation/MultiplicityValidator.java deleted file mode 100644 index 1c1075c..0000000 --- a/src/main/java/org/onap/schema/validation/MultiplicityValidator.java +++ /dev/null @@ -1,119 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 Amdocs - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.schema.validation; - -import java.util.List; -import javax.ws.rs.core.Response.Status; -import org.onap.crud.entity.Edge; -import org.onap.crud.exception.CrudException; -import org.onap.crud.parser.EdgePayload; -import org.onap.crud.parser.util.EdgePayloadUtil; -import org.onap.schema.EdgeRulesLoader; -import org.onap.schema.RelationshipSchema; - -/** - * Validator to enforce multiplicity rules on the creation of a new Edge - * - */ -public class MultiplicityValidator { - - public enum MultiplicityType { - MANY2ONE("Many2One"), MANY2MANY("Many2Many"), ONE2MANY("One2Many"), ONE2ONE("One2One"); - - private final String value; - - MultiplicityType(String value) { - this.value = value; - } - - public String getValue() { - return value; - } - } - - /** - * Validates the Edge payload's source and target vertices against multiplicity rule - * - * @param payload - * @param edgesForSourceVertex - * @param edgesForTargetVertex - * @param type - * @param version - * @throws CrudException - */ - public static void validatePayloadMultiplicity(EdgePayload payload, List edgesForSourceVertex, - List edgesForTargetVertex, String type, String version) - throws CrudException { - RelationshipSchema schema = EdgeRulesLoader.getSchemaForVersion(version); - // find the validate the key from the schema - String key = EdgePayloadUtil.generateEdgeKey(payload.getSource(), payload.getTarget(), type); - - // get the multiplicity rule for the relationships - String multiplicityTypeValue = schema.lookupRelationMultiplicity(key); - if (multiplicityTypeValue != null) { - MultiplicityType multiplicityType = MultiplicityType.valueOf(multiplicityTypeValue.toUpperCase()); - - boolean isVertexValidForMultiplicityType = - isVertexValidForMultiplicityType(edgesForSourceVertex, edgesForTargetVertex, multiplicityType); - - if (!isVertexValidForMultiplicityType) { - throw new CrudException( - multiplicityType.toString() + " multiplicity rule broken for Edge:" + key, - Status.BAD_REQUEST); - } - } - } - - /** - * Compare vertex existing relationships to ensure its not in breach of multiplicity rules - * - * @param edgesForVertex - * @param multiplicityType - * @return - */ - public static Boolean isVertexValidForMultiplicityType(List edgesForSourceVertex, - List edgesForTargetVertex, - MultiplicityType multiplicityType) { - - switch (multiplicityType) { - case MANY2MANY: - return true; - case MANY2ONE: - if (edgesForSourceVertex != null && !edgesForSourceVertex.isEmpty()) { - return false; - } - break; - case ONE2MANY: - if (edgesForTargetVertex != null && !edgesForTargetVertex.isEmpty()) { - return false; - } - break; - case ONE2ONE: - if ((edgesForSourceVertex != null && !edgesForSourceVertex.isEmpty()) - || (edgesForTargetVertex != null && !edgesForTargetVertex.isEmpty())) { - return false; - } - break; - } - return true; - } - -} \ No newline at end of file