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    }