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.kew.exception;
017
018 import java.io.Serializable;
019 import java.util.ArrayList;
020 import java.util.Collection;
021 import java.util.Iterator;
022 import java.util.List;
023
024 import org.kuali.rice.krad.util.MessageMap;
025
026
027
028 /**
029 * <p>Title: DocElementError </p>
030 * <p>Description: A simple object holding any error(s) generated by
031 * an IDocElement and it's children IDocElements. See IDocElement
032 * documentation for further explanation.</p>
033 * <p>Copyright: Copyright (c) 2002</p>
034 * <p>Company: Indiana University</p>
035 * @author Kuali Rice Team (rice.collab@kuali.org)
036 */
037 public class WorkflowServiceErrorImpl implements Serializable, WorkflowServiceError {
038
039 private static final String CHILDREN_IN_ERROR = "-1";
040
041 static final long serialVersionUID = 6900090941686297017L;
042 private Collection children;
043 private String type;
044 private String message;
045 private String arg1;
046 private String arg2;
047
048 /**
049 * Passing the actual message map around so we don't lose doc search messages in standalone.
050 */
051 private MessageMap messageMap;
052
053
054
055 private WorkflowServiceErrorImpl() {
056 }
057
058 public WorkflowServiceErrorImpl(String message, String type) {
059 children = new ArrayList();
060 this.message = message;
061 this.type = type;
062 }
063
064 public WorkflowServiceErrorImpl(String message, String type, String arg1) {
065 children = new ArrayList();
066 this.message = message;
067 this.type = type;
068 this.arg1 = arg1;
069 }
070
071 public WorkflowServiceErrorImpl(String message, String type, String arg1, String arg2) {
072 children = new ArrayList();
073 this.message = message;
074 this.type = type;
075 this.arg1 = arg1;
076 this.arg2 = arg2;
077 }
078 public WorkflowServiceErrorImpl(String message, String type, String arg1, String arg2, MessageMap messageMap) {
079 children = new ArrayList();
080 this.message = message;
081 this.type = type;
082 this.arg1 = arg1;
083 this.arg2 = arg2;
084 this.messageMap = messageMap;
085 }
086
087 public Collection getChildren() {
088 return this.children;
089 }
090
091 public String getMessage() {
092 return this.message;
093 }
094
095 public String getKey() {
096 return this.type;
097 }
098
099 public String getArg1() {
100 return arg1;
101 }
102
103 public String getArg2() {
104 return arg2;
105 }
106
107 public void addChild(WorkflowServiceError busError) {
108 if (busError != null) {
109 children.add(busError);
110 }
111 }
112
113 public void addChildren(Collection children) {
114 this.children.addAll(children);
115 }
116
117 public Collection getFlatChildrenList() {
118 return buildFlatChildrenList(this, null);
119 }
120
121 private static Collection buildFlatChildrenList(WorkflowServiceError error, List flatList) {
122 if (flatList == null) {
123 flatList = new ArrayList();
124 }
125
126 if (error.getKey() != CHILDREN_IN_ERROR) {
127 flatList.add(error);
128 }
129
130 Iterator iter = error.getChildren().iterator();
131
132 while (iter.hasNext()) {
133 WorkflowServiceError childError = (WorkflowServiceError) iter.next();
134 buildFlatChildrenList(childError, flatList);
135 }
136
137 return flatList;
138 }
139
140 public String toString() {
141 String s = "[WorkflowServiceErrorImpl: type=" + type + ", message=" + message + ", arg1=" + arg1 + ", arg2=" + arg2 + ", children=";
142 if (children == null) {
143 s += "null";
144 } else {
145 s += children;
146 }
147 s += "]";
148 return s;
149 }
150
151 /**
152 * @return the messageMap
153 */
154 @Override
155 public MessageMap getMessageMap() {
156 return this.messageMap;
157 }
158
159 /**
160 * @param messageMap the messageMap to set
161 */
162 public void setMessageMap(MessageMap messageMap) {
163 this.messageMap = messageMap;
164 }
165 }