001 /** 002 * Copyright 2005-2014 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.rice.krad.datadictionary.validation.result; 017 018 import org.kuali.rice.krad.datadictionary.validation.ErrorLevel; 019 import org.kuali.rice.krad.datadictionary.validation.constraint.Constraint; 020 import org.kuali.rice.krad.datadictionary.validation.processor.ConstraintProcessor; 021 022 import java.util.LinkedList; 023 import java.util.List; 024 025 /** 026 * ConstraintValidationResult is a composite class for all the different members that need to be returned when a {@link 027 * ConstraintProcessor} 028 * processes a {@link Constraint}. 029 * 030 * @author Kuali Rice Team (rice.collab@kuali.org) 031 */ 032 public class ConstraintValidationResult { 033 034 private String entryName; 035 private String attributeName; 036 private String attributePath; 037 private String constraintName; 038 private ErrorLevel level; 039 040 private String errorKey; 041 private String[] errorParameters = {}; 042 private String constraintLabelKey; 043 044 private List<ConstraintValidationResult> children; 045 046 /** 047 * creates a constraint validation result with the given constraint name 048 * 049 * @param constraintName - a descriptive name of the current constraint processor 050 */ 051 public ConstraintValidationResult(String constraintName) { 052 this.constraintName = constraintName; 053 this.children = new LinkedList<ConstraintValidationResult>(); 054 this.level = ErrorLevel.OK; 055 } 056 057 /** 058 * creates a constraint validation result with the given constraint name and error level 059 * 060 * @param constraintName - a descriptive name of the current constraint processor 061 * @param level - the applicable error level - selected from {@link ErrorLevel} 062 */ 063 public ConstraintValidationResult(String constraintName, ErrorLevel level) { 064 this.constraintName = constraintName; 065 this.children = new LinkedList<ConstraintValidationResult>(); 066 this.level = level; 067 } 068 069 /** 070 * allows a constraint validation result to be added as a child of the current one 071 * 072 * @param child - the 'child' constraint validation result 073 */ 074 public void addChild(ConstraintValidationResult child) { 075 this.children.add(child); 076 } 077 078 /** 079 * provides information used to display error messages to the user concerning a constraint validation 080 * 081 * @param errorKey - a key used to fetch an error message to show the user 082 * @param errorParameters - parameters to substitute into the error message 083 */ 084 public void setError(String errorKey, String... errorParameters) { 085 this.level = ErrorLevel.ERROR; 086 this.errorKey = errorKey; 087 this.errorParameters = errorParameters; 088 } 089 090 /** 091 * provides information used to display warning messages to the user concerning a constraint validation 092 * 093 * @param errorKey - a key used to fetch an warning message to show the user 094 * @param errorParameters - parameters to substitute into the warning message 095 */ 096 public void setWarning(String errorKey, String... errorParameters) { 097 this.level = ErrorLevel.WARN; 098 this.errorKey = errorKey; 099 this.errorParameters = errorParameters; 100 } 101 102 /** 103 * @return the level 104 */ 105 public ErrorLevel getStatus() { 106 return this.level; 107 } 108 109 /** 110 * @param level the level to set 111 */ 112 public void setStatus(ErrorLevel level) { 113 this.level = level; 114 } 115 116 /** 117 * the error key is used to retrieve a message to display to the user 118 * 119 * @return the errorKey 120 * @see org.kuali.rice.core.api.util.RiceKeyConstants 121 */ 122 public String getErrorKey() { 123 return this.errorKey; 124 } 125 126 /** 127 * @param errorKey the errorKey to set 128 */ 129 public void setErrorKey(String errorKey) { 130 this.errorKey = errorKey; 131 } 132 133 /** 134 * @return the errorParameters 135 */ 136 public String[] getErrorParameters() { 137 return this.errorParameters; 138 } 139 140 /** 141 * @param errorParameters the errorParameters to set 142 */ 143 public void setErrorParameters(String[] errorParameters) { 144 this.errorParameters = errorParameters; 145 } 146 147 /** 148 * @return the entryName 149 */ 150 public String getEntryName() { 151 return this.entryName; 152 } 153 154 /** 155 * @param entryName the entryName to set 156 */ 157 public void setEntryName(String entryName) { 158 this.entryName = entryName; 159 } 160 161 /** 162 * @return the attributeName 163 */ 164 public String getAttributeName() { 165 return this.attributeName; 166 } 167 168 /** 169 * @param attributeName the attributeName to set 170 */ 171 public void setAttributeName(String attributeName) { 172 this.attributeName = attributeName; 173 } 174 175 /** 176 * @return the constraintName 177 */ 178 public String getConstraintName() { 179 return this.constraintName; 180 } 181 182 /** 183 * @param constraintName the constraintName to set 184 */ 185 public void setConstraintName(String constraintName) { 186 this.constraintName = constraintName; 187 } 188 189 /** 190 * @return the children 191 */ 192 public List<ConstraintValidationResult> getChildren() { 193 return this.children; 194 } 195 196 /** 197 * @return the constraintLabelKey 198 */ 199 public String getConstraintLabelKey() { 200 return this.constraintLabelKey; 201 } 202 203 /** 204 * @param constraintLabelKey the constraintLabelKey to set 205 */ 206 public void setConstraintLabelKey(String constraintLabelKey) { 207 this.constraintLabelKey = constraintLabelKey; 208 } 209 210 /** 211 * @return the attributePath 212 */ 213 public String getAttributePath() { 214 return this.attributePath; 215 } 216 217 /** 218 * @param attributePath the attributePath to set 219 */ 220 public void setAttributePath(String attributePath) { 221 this.attributePath = attributePath; 222 } 223 224 }