001 /* 002 * Copyright 2011 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the 005 * "License"); you may not use this file except in compliance with the 006 * License. You may obtain a copy of the License at 007 * 008 * http://www.osedu.org/licenses/ECL-2.0 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 013 * implied. See the License for the specific language governing 014 * permissions and limitations under the License. 015 */ 016 package org.kuali.student.r2.common.infc; 017 018 import javax.xml.bind.annotation.XmlEnum; 019 020 public interface ValidationResult { 021 022 @XmlEnum 023 public enum ErrorLevel { 024 025 OK(0), WARN(1), ERROR(2); 026 int level; 027 028 private ErrorLevel(int level) { 029 this.level = level; 030 } 031 032 public int getLevel() { 033 return level; 034 } 035 036 public static ErrorLevel fromInt(int level) { 037 switch (level) { 038 case 0: 039 return OK; 040 case 1: 041 return WARN; 042 case 2: 043 return ERROR; 044 default: 045 throw new IllegalArgumentException(level + ""); 046 } 047 } 048 049 public static ErrorLevel min(ErrorLevel e1, ErrorLevel e2) { 050 return e1.ordinal() < e2.ordinal() ? e1 : e2; 051 } 052 053 public static ErrorLevel max(ErrorLevel e1, ErrorLevel e2) { 054 return e1.ordinal() > e2.ordinal() ? e1 : e2; 055 } 056 } 057 058 /** 059 * Message explaining this validation result 060 * 061 * If an error it is an an error message. 062 * 063 * TODO: decide if this is a key that then gets resolved into a 064 * real localized message using the message service or the final 065 * localized message itself 066 * 067 * @name Message 068 * @readOnly 069 */ 070 public String getMessage(); 071 072 /** 073 * Identifies the element (field) that is the focus of the 074 * validation. Uses xpath (dot) notation to navigate to the 075 * field, for example: officialIdentifier.code 076 * 077 * TODO: find out how repeating substructures are handled in this 078 * notation, with [n] occurrence brackets? 079 * 080 * @name Element 081 * @readOnly 082 * @required 083 */ 084 public String getElement(); 085 086 /** 087 * Indicates the severity of the validation result. 088 * 089 * 0=OK 090 * 1=WARN 091 * 2=ERROR 092 * 093 * @name Level 094 * @readOnly 095 * @required 096 */ 097 public ErrorLevel getLevel(); 098 }