KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > tigris > scarab > tools > ScarabToolManager


1 package org.tigris.scarab.tools;
2
3 /* ================================================================
4  * Copyright (c) 2000-2003 CollabNet. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions are
8  * met:
9  *
10  * 1. Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in the
15  * documentation and/or other materials provided with the distribution.
16  *
17  * 3. The end-user documentation included with the redistribution, if
18  * any, must include the following acknowlegement: "This product includes
19  * software developed by Collab.Net <http://www.Collab.Net/>."
20  * Alternately, this acknowlegement may appear in the software itself, if
21  * and wherever such third-party acknowlegements normally appear.
22  *
23  * 4. The hosted project names must not be used to endorse or promote
24  * products derived from this software without prior written
25  * permission. For written permission, please contact info@collab.net.
26  *
27  * 5. Products derived from this software may not use the "Tigris" or
28  * "Scarab" names nor may "Tigris" or "Scarab" appear in their names without
29  * prior written permission of Collab.Net.
30  *
31  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
32  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
33  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
34  * IN NO EVENT SHALL COLLAB.NET OR ITS CONTRIBUTORS BE LIABLE FOR ANY
35  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
37  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
38  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
39  * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
40  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
41  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
42  *
43  * ====================================================================
44  *
45  * This software consists of voluntary contributions made by many
46  * individuals on behalf of Collab.Net.
47  */

48
49 import java.util.Collections JavaDoc;
50 import java.util.List JavaDoc;
51
52 import org.tigris.scarab.om.Activity;
53 import org.tigris.scarab.om.ActivitySet;
54 import org.tigris.scarab.om.ActivitySetTypePeer;
55 import org.tigris.scarab.om.Attachment;
56 import org.tigris.scarab.om.IssueType;
57 import org.tigris.scarab.om.MITList;
58 import org.tigris.scarab.om.Module;
59 import org.tigris.scarab.om.ScarabUser;
60 import org.tigris.scarab.tools.localization.L10NKeySet;
61 import org.tigris.scarab.util.Log;
62
63 /**
64  * Currently significant amounts of business logic is stored in the
65  * ScarabRequestTool and ScarabGlobalTool. This isn't very accesible b/c the
66  * tools make assumptions about having a rundata object and running in them..
67  *
68  * This class will slowly take out the business logic from the tools so it can
69  * be unit tested and reused in more situations.
70  */

71 public class ScarabToolManager {
72     private ScarabLocalizationTool l10n;
73
74     public ScarabToolManager(ScarabLocalizationTool l10n) {
75         this.l10n = l10n;
76     }
77
78     /**
79      * Get reason for modification.
80      */

81     public String JavaDoc getActivityReason(ActivitySet activitySet, Activity activity)
82             throws Exception JavaDoc {
83         String JavaDoc reason = null;
84         Attachment attachment = activitySet.getAttachment();
85         if (attachment != null) {
86             String JavaDoc data = attachment.getData();
87             // Reason is the attachment entered for this transaction
88
if (data != null && data.length() > 0) {
89                 reason = data;
90             } else {
91                 reason = l10n.get(L10NKeySet.NotProvided);
92             }
93         }
94         // No reasons given for initial issue entry
95
else if (activitySet.getTypeId().equals(
96                 ActivitySetTypePeer.CREATE_ISSUE__PK)) {
97             reason = l10n.get(L10NKeySet.InitialEntry);
98         } else {
99             reason = l10n.get(L10NKeySet.NotProvided);
100         }
101         return reason;
102     }
103
104     /**
105      * First attempts to get the RModuleUserAttributes from the user. If it is
106      * empty, then it will try to get the defaults from the module. If anything
107      * fails, it will return an empty list.
108      */

109     public List JavaDoc getRModuleUserAttributes(ScarabUser user, Module module, IssueType issueType) {
110         List JavaDoc issueListColumns = null;
111         try {
112             //
113
// First check whether an MIT list is currently
114
// active and if so, whether it has attributes
115
// associated with it.
116
//
117
MITList currentList = user.getCurrentMITList();
118             if (currentList != null) {
119                 //
120
// Here we fetch the collection of attributes
121
// associated with the current MIT list.
122
//
123
issueListColumns = currentList.getCommonRModuleUserAttributes();
124
125                 //
126
// If there are no attributes associated with
127
// the list, and the list only contains a single
128
// module and a single issue type, get the default
129
// attributes for that combination of module and
130
// issue type.
131
//
132
if (issueListColumns.isEmpty()
133                         && currentList.isSingleModuleIssueType()) {
134                     issueListColumns = currentList.getModule()
135                             .getDefaultRModuleUserAttributes(
136                                     currentList.getIssueType());
137                 }
138             }
139
140             if (issueListColumns == null) {
141                 issueListColumns = user.getRModuleUserAttributes(module,
142                         issueType);
143                 if (issueListColumns.isEmpty()) {
144                     issueListColumns = module
145                             .getDefaultRModuleUserAttributes(issueType);
146                 }
147             }
148             if (issueListColumns == null)
149             {
150                 issueListColumns = Collections.EMPTY_LIST;
151             }
152
153         } catch (Exception JavaDoc e) {
154             Log.get().error("Could not get list attributes", e);
155         }
156
157         return issueListColumns;
158     }
159
160 }
161
162
Popular Tags