1 /*
2 * The Kuali Financial System, a comprehensive financial management system for higher education.
3 *
4 * Copyright 2005-2014 The Kuali Foundation
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Affero General Public License as
8 * published by the Free Software Foundation, either version 3 of the
9 * License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Affero General Public License for more details.
15 *
16 * You should have received a copy of the GNU Affero General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.kuali.kfs.sys.batch;
20
21 import java.util.ArrayList;
22 import java.util.List;
23
24 /**
25 * An encapsulator for validation information associated with a logical file/top level header
26 */
27 public final class FlatFileTransactionInformation {
28 public enum ResultCode { SUCCESS, FAILURE, ERROR, INCOMPLETE }
29 public enum EntryType { INFO,WARN, ERROR }
30
31 private String flatFileDataIdentifier;
32 private ResultCode result;
33 private List<String[]> messages;
34
35 /**
36 * Constructs a FlatFileTransactionInformation
37 */
38 public FlatFileTransactionInformation() {
39 this.messages = new ArrayList<String[]>();
40 }
41
42 /**
43 * Constructs a FlatFileTransactionInformation
44 * @param flatFileDataIdentifier the identifier for the file the business object this object holds messages for was parsed from
45 */
46 public FlatFileTransactionInformation(String flatFileDataIdentifier) {
47 this.flatFileDataIdentifier = flatFileDataIdentifier;
48 this.result = ResultCode.INCOMPLETE;
49 this.messages = new ArrayList<String[]>();
50 }
51
52 /**
53 * Creates a String representation for the given entry type
54 * @param type the entry type to get a String representation for
55 * @return the String representation
56 */
57 public static String getEntryTypeString(EntryType type) {
58 if (type == null) {
59 return "UNKNOWN";
60 }
61 return type.name();
62 }
63
64 /**
65 * Creates a String representation for the given result code
66 * @param type the resultCode to get a String representation for
67 * @return the String representation
68 */
69 public static String getResultCodeString(ResultCode resultCode) {
70 if (resultCode == null) {
71 return "UNKNOWN";
72 }
73 return resultCode.name();
74 }
75
76 /**
77 * @return returns the resultCode for this transaction information object
78 */
79 public ResultCode getResult() {
80 return result;
81 }
82
83 /**
84 * @return returns a String representation of the resultCode for this transaction information object
85 */
86 public String getResultString() {
87 return getResultCodeString(result);
88 }
89
90 /**
91 * Sets the resultCode for this transaction information object
92 * @param result the result code to set
93 */
94 private void setResult(ResultCode result) {
95 this.result = result;
96 }
97
98 /**
99 * Declares the logical file a success!
100 */
101 public void setSuccessResult() {
102 this.result = ResultCode.SUCCESS;
103 }
104
105 /**
106 * Sets the result code to failure for the transaction
107 */
108 public void setFailureResult() {
109 this.result = ResultCode.FAILURE;
110 }
111
112 /**
113 * Sets the result code to error for the transaction
114 */
115 public void setErrorResult() {
116 this.result = ResultCode.ERROR;
117 }
118
119 /**
120 * @return the identifier for the flat file this is associated with
121 */
122 public String getFlatFileDataIdentifier() {
123 return flatFileDataIdentifier;
124 }
125
126 /**
127 * Sets the identifier for the flat file this is associated with
128 * @param flatFileDataIdentifier the identifier for the flat file this is associated with
129 */
130 public void setFlatFileDataIdentifier(String flatFileDataIdentifier) {
131 this.flatFileDataIdentifier = flatFileDataIdentifier;
132 }
133
134 /**
135 * @return the full List of messages associated with the transaction this is associated with
136 */
137 public List<String[]> getMessages() {
138 return messages;
139 }
140
141 /**
142 * Adds a message to the List of messages for this transaction
143 * @param entryType the kind of message being held
144 * @param message the message to hold
145 */
146 private void addMessage(EntryType entryType, String message) {
147 this.messages.add(new String[] { getEntryTypeString(entryType), message });
148 }
149
150 /**
151 * Adds an error message for this transaction
152 * @param message the message to explain the error
153 */
154 public void addErrorMessage(String message) {
155 addMessage(EntryType.ERROR, message);
156 }
157
158 /**
159 * Adds an informative message for this transaction
160 * @param message the informative message, hopefully something more explanatory than this javadoc
161 */
162 public void addInfoMessage(String message) {
163 addMessage(EntryType.INFO, message);
164 }
165
166 /**
167 * Adds a warning message for this transaction
168 * @param message the warning message
169 */
170 public void addWarnMessage(String message) {
171 addMessage(EntryType.WARN, message);
172 }
173 }