KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > tigris > scarab > actions > admin > AppConfigurationSettings


1 package org.tigris.scarab.actions.admin;
2
3 /* ================================================================
4  * Copyright (c) 2000-2002 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 // Turbine Stuff
50
import java.util.Iterator JavaDoc;
51
52 import org.apache.commons.collections.IteratorUtils;
53 import org.apache.commons.collections.iterators.EnumerationIterator;
54 import org.apache.commons.configuration.CompositeConfiguration;
55 import org.apache.commons.configuration.PropertiesConfiguration;
56 import org.apache.fulcrum.parser.ParameterParser;
57 import org.apache.turbine.RunData;
58 import org.apache.turbine.TemplateContext;
59 import org.apache.turbine.Turbine;
60 import org.tigris.scarab.actions.base.RequireLoginFirstAction;
61 import org.tigris.scarab.tools.localization.L10NKeySet;
62 import org.tigris.scarab.util.comparators.StartsWithPredicate;
63
64 /**
65  * Action for the AppConfigurationSettings form
66  *
67  * @author <a HREF="mailto:epugh@opensourceconnections.com">Eric Pugh</a>
68  * @version $Id: AppConfigurationSettings.java 9345 2004-12-29 23:45:25Z dabbous $
69  */

70 public class AppConfigurationSettings
71     extends RequireLoginFirstAction
72 {
73
74     public void doSave(RunData data, TemplateContext context)
75         throws Exception JavaDoc
76     {
77         boolean customSettingsChanged = false;
78         ParameterParser pp = data.getParameters();
79         CompositeConfiguration c = (CompositeConfiguration)Turbine.getConfiguration();
80         PropertiesConfiguration customSettings =null;
81         for (int i = 0;i<c.getNumberOfConfigurations();i++){
82             if(c.getConfiguration(i) instanceof PropertiesConfiguration){
83                 PropertiesConfiguration pc = (PropertiesConfiguration)c.getConfiguration(i);
84                 if(pc.getFileName().endsWith("custom.properties")){
85                     customSettings = pc;
86                     break;
87                 }
88             }
89         }
90  
91         if (customSettings==null){
92             throw new Exception JavaDoc("custom.properties file was not defined in TurbineConfiguration.xml");
93         }
94                 
95         for (Iterator JavaDoc i =
96             IteratorUtils.filteredIterator(
97                 new EnumerationIterator(pp.keys()),
98                 new StartsWithPredicate("configuration.key."));
99             i.hasNext();
100             )
101         {
102             String JavaDoc key = (String JavaDoc) i.next();
103             String JavaDoc realKey = pp.getString(key);
104             String JavaDoc value = pp.getString("configuration.value." + realKey);
105             
106             if (!Turbine.getConfiguration().getString(realKey).equals(value)){
107                 Turbine.getConfiguration().setProperty(realKey,value);
108                 customSettings.setProperty(realKey,value);
109                 customSettingsChanged=true;
110             }
111             
112         }
113         if (customSettingsChanged){
114             customSettings.save();
115         }
116         
117         
118         getScarabRequestTool(context).setConfirmMessage(L10NKeySet.AppConfigurationChangesSaved);
119     }
120 }
121
Popular Tags