KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > tigris > scarab > actions > ConfigureIssueList


1 package org.tigris.scarab.actions;
2
3 /* ================================================================
4  * Copyright (c) 2000 Collab.Net. 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.ArrayList JavaDoc;
50 import java.util.Collections JavaDoc;
51 import java.util.Comparator JavaDoc;
52 import java.util.HashMap JavaDoc;
53 import java.util.List JavaDoc;
54 import java.util.Map JavaDoc;
55
56 import org.apache.fulcrum.parser.ParameterParser;
57 import org.apache.fulcrum.security.util.TurbineSecurityException;
58 import org.apache.turbine.RunData;
59 import org.apache.turbine.TemplateContext;
60 import org.tigris.scarab.actions.base.RequireLoginFirstAction;
61 import org.tigris.scarab.om.Attribute;
62 import org.tigris.scarab.om.AttributeManager;
63 import org.tigris.scarab.om.ScarabUser;
64 import org.tigris.scarab.tools.ScarabLocalizationTool;
65 import org.tigris.scarab.tools.ScarabRequestTool;
66 import org.tigris.scarab.util.ScarabConstants;
67
68 /**
69  * This class is responsible for the user configuration of the issue list.
70  *
71  * @author <a HREF="mailto:elicia@collab.net">Elicia David</a>
72  * @version $Id: ConfigureIssueList.java 9430 2005-02-25 21:52:40Z jorgeuriarte $
73  */

74 public class ConfigureIssueList extends RequireLoginFirstAction
75 {
76     public void doSave(RunData data, TemplateContext context)
77         throws Exception JavaDoc
78     {
79         ScarabRequestTool scarabR = getScarabRequestTool(context);
80         ScarabLocalizationTool l10n = getLocalizationTool(context);
81
82         // Add user's new selection of attributes
83
ParameterParser params = data.getParameters();
84         String JavaDoc[] ids = params.getStrings("attid");
85         String JavaDoc[] orders = params.getStrings("attorder");
86         if (ids != null)
87         {
88             List JavaDoc attributes = new ArrayList JavaDoc(ids.length);
89             final Map JavaDoc orderMap = new HashMap JavaDoc();
90             for (int i =0; i<ids.length; i++)
91             {
92                 if (!orders[i].equals("hidden"))
93                 {
94                     Attribute attribute = AttributeManager
95                         .getInstance(new Integer JavaDoc(ids[i]));
96                     attributes.add(attribute);
97                     Integer JavaDoc order = new Integer JavaDoc(orders[i]);
98                     orderMap.put(attribute, order);
99                 }
100             }
101     
102             if (attributes.isEmpty())
103             {
104                 scarabR.setAlertMessage(l10n.get("MustSelectAtLeastOneAttribute"));
105                 setTarget(data, data.getParameters()
106                                 .getString(ScarabConstants.TEMPLATE,
107                                            "ConfigureIssueList.vm"));
108                 return;
109             }
110             else if (((ScarabUser)data.getUser()).getCurrentMITList() == null)
111             {
112                 scarabR.setAlertMessage(l10n.get("NoIssueTypeList"));
113                 return;
114             }
115             else
116             {
117                 Comparator JavaDoc c = new Comparator JavaDoc()
118                     {
119                         public int compare(Object JavaDoc o1, Object JavaDoc o2)
120                         {
121                             int order1 = ((Integer JavaDoc)orderMap.get(o1)).intValue();
122                             int order2 = ((Integer JavaDoc)orderMap.get(o2)).intValue();
123                             int result = order1 - order2;
124                             if (result == 0)
125                             {
126                                 Attribute a1 = (Attribute)o1;
127                                 Attribute a2 = (Attribute)o2;
128                                 result = a1.getName().compareTo(a2.getName());
129                             }
130                             return result;
131                         }
132                     };
133                 Collections.sort(attributes, c);
134                 try
135                 {
136                     ((ScarabUser)data.getUser()).updateIssueListAttributes(attributes);
137                     scarabR.setConfirmMessage(l10n.get(DEFAULT_MSG));
138                 }
139                 catch (TurbineSecurityException tse)
140                 {
141                     scarabR.setAlertMessage(l10n.get(NO_PERMISSION_MESSAGE));
142                 }
143             }
144         }
145         doCancel(data,context);
146     }
147
148     /**
149      * Resets back to default values for module.
150      */

151     public void doUsedefaults(RunData data, TemplateContext context)
152         throws Exception JavaDoc
153     {
154         data.getParameters().add("usedefaults", "true");
155     }
156 }
157
Popular Tags