X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fsal%2Fyang-prototype%2Fcode-generator%2Fyang-model-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fyang%2Fparser%2Futil%2FTypeConstraints.java;fp=opendaylight%2Fsal%2Fyang-prototype%2Fcode-generator%2Fyang-model-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fyang%2Fparser%2Futil%2FTypeConstraints.java;h=0000000000000000000000000000000000000000;hb=ba1a5528e27b0ae8a883fa7b768d803659bf9336;hp=08422c839242e079dcf49392b3eb049a6cd54b04;hpb=b64d31500de4d9bd81a060432c3db20feb2e7dfa;p=controller.git diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/TypeConstraints.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/TypeConstraints.java deleted file mode 100644 index 08422c8392..0000000000 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/TypeConstraints.java +++ /dev/null @@ -1,382 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.controller.yang.parser.util; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import org.opendaylight.controller.yang.model.api.type.LengthConstraint; -import org.opendaylight.controller.yang.model.api.type.PatternConstraint; -import org.opendaylight.controller.yang.model.api.type.RangeConstraint; -import org.opendaylight.controller.yang.model.util.BaseConstraints; - -/** - * Holder object for holding YANG type constraints. - */ -public final class TypeConstraints { - private final String moduleName; - private final int line; - private final List> ranges = new ArrayList>(); - private final List> lengths = new ArrayList>(); - private final List> patterns = new ArrayList>(); - private final List fractionDigits = new ArrayList(); - - public TypeConstraints(final String moduleName, final int line) { - this.moduleName = moduleName; - this.line = line; - } - - List> getAllRanges() { - return ranges; - } - - public List getRange() { - if (ranges.size() < 2) { - return Collections.emptyList(); - } - - final List resolved = ranges.get(0); - RangeConstraint firstRange = resolved.get(0); - RangeConstraint lastRange = resolved.get(resolved.size() - 1); - Number min = firstRange.getMin(); - Number max = lastRange.getMax(); - - if (!(min instanceof UnknownBoundaryNumber) && !(max instanceof UnknownBoundaryNumber)) { - if (ranges.size() > 1) { - validateRange(resolved); - } - return resolved; - } - - if (firstRange.equals(lastRange)) { - if (min instanceof UnknownBoundaryNumber) { - min = resolveMinRange(min); - } - if (max instanceof UnknownBoundaryNumber) { - max = resolveMaxRange(max); - } - firstRange = BaseConstraints.rangeConstraint(min, max, firstRange.getDescription(), - firstRange.getReference()); - resolved.set(0, firstRange); - lastRange = BaseConstraints.rangeConstraint(min, max, lastRange.getDescription(), lastRange.getReference()); - resolved.set(resolved.size() - 1, lastRange); - } else { - if (min instanceof UnknownBoundaryNumber) { - min = resolveMinRange(min); - firstRange = BaseConstraints.rangeConstraint(min, firstRange.getMax(), firstRange.getDescription(), - firstRange.getReference()); - resolved.set(0, firstRange); - } - if (max instanceof UnknownBoundaryNumber) { - max = resolveMaxRange(max); - lastRange = BaseConstraints.rangeConstraint(lastRange.getMin(), max, lastRange.getDescription(), - lastRange.getReference()); - resolved.set(resolved.size() - 1, lastRange); - } - } - if (this.ranges.size() > 1) { - validateRange(resolved); - } - return resolved; - } - - private Number resolveMinRange(Number min) { - int i = 1; - while (min instanceof UnknownBoundaryNumber) { - final List act = ranges.get(i); - min = act.get(0).getMin(); - i++; - } - return min; - } - - private Number resolveMaxRange(Number max) { - int i = 1; - while (max instanceof UnknownBoundaryNumber) { - final List act = ranges.get(i); - max = act.get(act.size() - 1).getMax(); - i++; - } - return max; - } - - public void addRanges(final List ranges) { - if (ranges != null && !(ranges.isEmpty())) { - this.ranges.add(ranges); - } - } - - public List> getAllLengths() { - return lengths; - } - - public List getLength() { - if (lengths.size() < 2) { - return Collections.emptyList(); - } - - final List resolved = lengths.get(0); - LengthConstraint firstLength = resolved.get(0); - LengthConstraint lastLength = resolved.get(resolved.size() - 1); - Number min = firstLength.getMin(); - Number max = lastLength.getMax(); - - if (!(min instanceof UnknownBoundaryNumber) && !(max instanceof UnknownBoundaryNumber)) { - if (lengths.size() > 1) { - validateLength(resolved); - } - return resolved; - } - - if (firstLength.equals(lastLength)) { - if (min instanceof UnknownBoundaryNumber) { - min = resolveMinLength(min); - } - if (max instanceof UnknownBoundaryNumber) { - max = resolveMaxLength(max); - } - firstLength = BaseConstraints.lengthConstraint(min, max, firstLength.getDescription(), - firstLength.getReference()); - resolved.set(0, firstLength); - lastLength = BaseConstraints.lengthConstraint(min, max, lastLength.getDescription(), - lastLength.getReference()); - resolved.set(resolved.size() - 1, lastLength); - } else { - if (min instanceof UnknownBoundaryNumber) { - min = resolveMinLength(min); - firstLength = BaseConstraints.lengthConstraint(min, firstLength.getMax(), firstLength.getDescription(), - firstLength.getReference()); - resolved.set(0, firstLength); - } - if (max instanceof UnknownBoundaryNumber) { - max = resolveMaxLength(max); - lastLength = BaseConstraints.lengthConstraint(lastLength.getMin(), max, lastLength.getDescription(), - lastLength.getReference()); - resolved.set(resolved.size() - 1, lastLength); - } - } - - if (lengths.size() > 1) { - validateLength(resolved); - } - return resolved; - } - - private Number resolveMinLength(Number min) { - int i = 1; - while (min instanceof UnknownBoundaryNumber) { - final List act = lengths.get(i); - min = act.get(0).getMin(); - i++; - } - return min; - } - - private Number resolveMaxLength(Number max) { - int i = 1; - while (max instanceof UnknownBoundaryNumber) { - final List act = lengths.get(i); - max = act.get(act.size() - 1).getMax(); - i++; - } - return max; - } - - public void addLengths(final List lengths) { - if (lengths != null && !(lengths.isEmpty())) { - this.lengths.add(lengths); - } - } - - public List getPatterns() { - if(patterns.isEmpty()) { - return Collections.emptyList(); - } - return patterns.get(0); - } - - public void addPatterns(final List patterns) { - this.patterns.add(patterns); - } - - public Integer getFractionDigits() { - if (fractionDigits.isEmpty()) { - return null; - } - return fractionDigits.get(0); - } - - public void addFractionDigits(final Integer fractionDigits) { - this.fractionDigits.add(fractionDigits); - } - - public void validateConstraints() { - validateLength(); - validateRange(); - } - - private void validateRange() { - if (ranges.size() < 2) { - return; - } - List typeRange = getRange(); - - for (RangeConstraint range : typeRange) { - if (range.getMin() instanceof UnknownBoundaryNumber || range.getMax() instanceof UnknownBoundaryNumber) { - throw new YangParseException(moduleName, line, "Unresolved range constraints"); - } - final long min = range.getMin().longValue(); - final long max = range.getMax().longValue(); - - List parentRanges = ranges.get(1); - boolean check = false; - for (RangeConstraint r : parentRanges) { - Number parentMinNumber = r.getMin(); - if (parentMinNumber instanceof UnknownBoundaryNumber) { - parentMinNumber = resolveMinRange(parentMinNumber); - } - long parentMin = parentMinNumber.longValue(); - - Number parentMaxNumber = r.getMax(); - if (parentMaxNumber instanceof UnknownBoundaryNumber) { - parentMaxNumber = resolveMaxRange(parentMaxNumber); - } - long parentMax = parentMaxNumber.longValue(); - - if (parentMin <= min && parentMax >= max) { - check = true; - break; - } - } - if (!check) { - throw new YangParseException(moduleName, line, "Invalid range constraint: <" + min + ", " + max - + "> (parent: " + parentRanges + ")."); - } - } - } - - private void validateRange(List typeRange) { - if (ranges.size() < 2) { - return; - } - - for (RangeConstraint range : typeRange) { - if (range.getMin() instanceof UnknownBoundaryNumber || range.getMax() instanceof UnknownBoundaryNumber) { - throw new YangParseException(moduleName, line, "Unresolved range constraints"); - } - final long min = range.getMin().longValue(); - final long max = range.getMax().longValue(); - - List parentRanges = ranges.get(1); - boolean check = false; - for (RangeConstraint r : parentRanges) { - Number parentMinNumber = r.getMin(); - if (parentMinNumber instanceof UnknownBoundaryNumber) { - parentMinNumber = resolveMinRange(parentMinNumber); - } - long parentMin = parentMinNumber.longValue(); - - Number parentMaxNumber = r.getMax(); - if (parentMaxNumber instanceof UnknownBoundaryNumber) { - parentMaxNumber = resolveMaxRange(parentMaxNumber); - } - long parentMax = parentMaxNumber.longValue(); - - if (parentMin <= min && parentMax >= max) { - check = true; - break; - } - } - if (!check) { - throw new YangParseException(moduleName, line, "Invalid range constraint: <" + min + ", " + max - + "> (parent: " + parentRanges + ")."); - } - } - } - - private void validateLength() { - if (lengths.size() < 2) { - return; - } - List typeLength = getLength(); - - for (LengthConstraint length : typeLength) { - if (length.getMin() instanceof UnknownBoundaryNumber || length.getMax() instanceof UnknownBoundaryNumber) { - throw new YangParseException(moduleName, line, "Unresolved length constraints"); - } - final long min = length.getMin().longValue(); - final long max = length.getMax().longValue(); - - List parentLengths = lengths.get(1); - boolean check = false; - for (LengthConstraint lc : parentLengths) { - Number parentMinNumber = lc.getMin(); - if (parentMinNumber instanceof UnknownBoundaryNumber) { - parentMinNumber = resolveMinLength(parentMinNumber); - } - long parentMin = parentMinNumber.longValue(); - - Number parentMaxNumber = lc.getMax(); - if (parentMaxNumber instanceof UnknownBoundaryNumber) { - parentMaxNumber = resolveMaxLength(parentMaxNumber); - } - long parentMax = parentMaxNumber.longValue(); - - if (parentMin <= min && parentMax >= max) { - check = true; - break; - } - } - if (!check) { - throw new YangParseException(moduleName, line, "Invalid length constraint: <" + min + ", " + max - + "> (parent: " + parentLengths + ")."); - } - } - } - - private void validateLength(List typeLength) { - if (lengths.size() < 2) { - return; - } - - for (LengthConstraint length : typeLength) { - if (length.getMin() instanceof UnknownBoundaryNumber || length.getMax() instanceof UnknownBoundaryNumber) { - throw new YangParseException(moduleName, line, "Unresolved length constraints"); - } - final long min = length.getMin().longValue(); - final long max = length.getMax().longValue(); - - List parentLengths = lengths.get(1); - boolean check = false; - for (LengthConstraint lc : parentLengths) { - Number parentMinNumber = lc.getMin(); - if (parentMinNumber instanceof UnknownBoundaryNumber) { - parentMinNumber = resolveMinLength(parentMinNumber); - } - long parentMin = parentMinNumber.longValue(); - - Number parentMaxNumber = lc.getMax(); - if (parentMaxNumber instanceof UnknownBoundaryNumber) { - parentMaxNumber = resolveMaxLength(parentMaxNumber); - } - long parentMax = parentMaxNumber.longValue(); - - if (parentMin <= min && parentMax >= max) { - check = true; - break; - } - } - if (!check) { - throw new YangParseException(moduleName, line, "Invalid length constraint: <" + min + ", " + max - + "> (parent: " + parentLengths + ")."); - } - } - } - -}