2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2019 Nordix Foundation.
4 * ================================================================================
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.onap.policy.models.base;
23 import java.util.LinkedList;
24 import java.util.List;
29 * This class records the result of a validation and holds all validation observation messages.
32 public class PfValidationResult {
34 * The ValidationResult enumeration describes the severity of a validation result.
36 public enum ValidationResult {
37 /** No problems or observations were detected during validation. */
40 * Observations were made on a concept (such as blank descriptions) of a nature that will not
41 * affect the use of the concept.
45 * Warnings were made on a concept (such as defined but unused concepts) of a nature that may
46 * affect the use of the concept.
50 * Errors were detected on a concept (such as referenced but undefined concepts) of a nature
51 * that will affect the use of the concept.
56 // The actual verification result
57 private ValidationResult validationResult = ValidationResult.VALID;
59 // Messages collected during the verification process
60 private final List<PfValidationMessage> messageList = new LinkedList<>();
63 * Check if a validation reported a valid concept, returns true if the model is usable (that is,
64 * even if the model has warnings or observations).
66 * @return true, if the concept is reported as valid and can be used
68 public boolean isValid() {
69 return validationResult != ValidationResult.INVALID;
73 * Check if a validation reported a concept with no errors or warnings, returns true if the
76 * @return true, if the concept has no warnings or errors
78 public boolean isOk() {
79 return validationResult == ValidationResult.VALID || validationResult == ValidationResult.OBSERVATION;
83 * Adds a validation message to the validation result, used by validate() implementations on
84 * {@link PfConcept} subclasses to report validaiton observations.
86 * @param validationMessage the validation message
88 public void addValidationMessage(final PfValidationMessage validationMessage) {
89 messageList.add(validationMessage);
91 // Check if the incoming message has a more sever status than the
92 // current one on the overall validation result,
93 // if so, the overall result goes to that level
94 if (validationMessage.getValidationResult().ordinal() > validationResult.ordinal()) {
95 validationResult = validationMessage.getValidationResult();
102 * @see java.lang.Object#toString()
105 public String toString() {
106 final StringBuilder builder = new StringBuilder();
108 switch (validationResult) {
111 builder.append("***validation of model successful***");
112 return builder.toString();
115 builder.append("\n***observations noted during validation of model***\n");
119 builder.append("\n***warnings issued during validation of model***\n");
122 builder.append("\n***validation of model failed***\n");
128 for (final PfValidationMessage message : messageList) {
129 builder.append(message);
130 builder.append("\n");
133 builder.append("********************************");
134 return builder.toString();