KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tc > servers > ServerSelection


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package com.tc.servers;
5
6 import com.tc.SessionIntegrator;
7 import com.tc.SessionIntegratorContext;
8 import com.tc.SessionIntegratorFrame;
9
10 import java.io.File JavaDoc;
11 import java.io.FileInputStream JavaDoc;
12 import java.io.IOException JavaDoc;
13 import java.util.Arrays JavaDoc;
14 import java.util.Properties JavaDoc;
15 import java.util.prefs.Preferences JavaDoc;
16
17 public class ServerSelection {
18   private ServerInfo[] m_serverInfos;
19   private int m_selectedServerIndex;
20   
21   private static final String JavaDoc[] WEB_SERVERS = {"tomcat5.5", "tomcat5.0", "tomcat6.0", "wls8.1"};
22   private static final String JavaDoc SERVER_SELECTION_PREF_KEY = "SessionIntegrator.ServerSelection";
23   private static final String JavaDoc SELECTED_SERVER_PREF_KEY = "SelectedServer";
24   private static final String JavaDoc SERVERS_PREF_KEY = "Servers";
25   private static final String JavaDoc SERVER_PROPS_FILENAME = "server.properties";
26   private static final String JavaDoc SERVER_ENV_FILENAME = "server.environment";
27   private static final String JavaDoc WEBAPP_PROPS_FILENAME = "webapps.properties";
28   private static final String JavaDoc DEFAULT_SERVER_NAME = WEB_SERVERS[0];
29   
30   private static ServerSelection m_instance;
31   
32   private ServerSelection() {
33     String JavaDoc sandBoxRoot = SessionIntegratorFrame.getSandBoxRoot();
34     int serverCount = WEB_SERVERS.length;
35     Preferences JavaDoc prefs = getPreferences();
36     Preferences JavaDoc serversPrefs = prefs.node(SERVERS_PREF_KEY);
37     Preferences JavaDoc serverPrefs;
38     
39     m_serverInfos = new ServerInfo[serverCount];
40     
41     for(int i = 0; i < serverCount; i++) {
42       File JavaDoc serverDir = new File JavaDoc(sandBoxRoot, WEB_SERVERS[i]);
43       File JavaDoc propsFile = new File JavaDoc(serverDir, SERVER_PROPS_FILENAME);
44       File JavaDoc envFile = new File JavaDoc(serverDir, SERVER_ENV_FILENAME);
45       Properties JavaDoc props = new Properties JavaDoc();
46       Properties JavaDoc env = new Properties JavaDoc();
47       
48       try {
49         props.load(new FileInputStream JavaDoc(propsFile));
50         env.load(new FileInputStream JavaDoc(envFile));
51         
52         m_serverInfos[i] = new ServerInfo(props, env);
53         serverPrefs = serversPrefs.node(m_serverInfos[i].getName());
54         
55         m_serverInfos[i].loadEnvironment(serverPrefs);
56       } catch(IOException JavaDoc ioe) {/**/}
57     }
58     
59     String JavaDoc selectedServerName = prefs.get(SELECTED_SERVER_PREF_KEY, DEFAULT_SERVER_NAME);
60     if((m_selectedServerIndex = Arrays.asList(WEB_SERVERS).indexOf(selectedServerName)) == -1) {
61       m_selectedServerIndex = 0;
62     }
63   }
64   
65   public Properties JavaDoc getDefaultProperties(int i) {
66     String JavaDoc sandBoxRoot = SessionIntegratorFrame.getSandBoxRoot();
67     File JavaDoc serverDir = new File JavaDoc(sandBoxRoot, WEB_SERVERS[i]);
68     File JavaDoc envFile = new File JavaDoc(serverDir, SERVER_ENV_FILENAME);
69     Properties JavaDoc env = new Properties JavaDoc();
70     
71     try {
72       env.load(new FileInputStream JavaDoc(envFile));
73     } catch(IOException JavaDoc ioe) {/**/}
74     
75     return env;
76   }
77   
78   public static ServerSelection getInstance() {
79     if(m_instance == null) {
80       m_instance = new ServerSelection();
81     }
82     return m_instance;
83   }
84   
85   public ServerInfo[] getServers() {
86     return m_serverInfos;
87   }
88   
89   public void setServers(ServerInfo[] servers) {
90     m_serverInfos = servers;
91   }
92   
93   public ServerInfo[] cloneServers() {
94     ServerInfo[] servers = getServers();
95     ServerInfo[] result = new ServerInfo[servers.length];
96     
97     for(int i = 0; i < servers.length; i++) {
98       result[i] = new ServerInfo(servers[i]);
99     }
100     
101     return result;
102   }
103   
104   public int getSelectedServerIndex() {
105     return m_selectedServerIndex;
106   }
107   
108   public ServerInfo getSelectedServer() {
109     return m_serverInfos[m_selectedServerIndex];
110   }
111   
112   public File JavaDoc getSelectedServerWebAppProperties() {
113     String JavaDoc sandBoxRoot = SessionIntegratorFrame.getSandBoxRoot();
114     File JavaDoc serverDir = new File JavaDoc(sandBoxRoot, getSelectedServer().getName());
115     File JavaDoc propsFile = new File JavaDoc(serverDir, WEBAPP_PROPS_FILENAME);
116     
117     return propsFile;
118   }
119   
120   public void setSelectedServerIndex(int selectedServerIndex) {
121     m_selectedServerIndex = selectedServerIndex;
122     storeServerEnvironments();
123   }
124   
125   public ServerInfo getServer(int index) {
126     return m_serverInfos[index];
127   }
128   
129   public void storeServerEnvironments() {
130     int serverCount = WEB_SERVERS.length;
131     Preferences JavaDoc prefs = getPreferences();
132     Preferences JavaDoc serversPrefs = prefs.node(SERVERS_PREF_KEY);
133     Preferences JavaDoc serverPrefs;
134     
135     for(int i = 0; i < serverCount; i++) {
136       serverPrefs = serversPrefs.node(m_serverInfos[i].getName());
137       m_serverInfos[i].storeEnvironment(serverPrefs);
138     }
139
140     prefs.put(SELECTED_SERVER_PREF_KEY, getSelectedServer().getName());
141     storePreferences();
142   }
143   
144   private Preferences JavaDoc getPreferences() {
145     SessionIntegratorContext cntx = SessionIntegrator.getContext();
146     return cntx.prefs.node(SERVER_SELECTION_PREF_KEY);
147   }
148   
149   private void storePreferences() {
150     SessionIntegratorContext cntx = SessionIntegrator.getContext();
151     cntx.client.storePrefs();
152   }
153 }
154
Popular Tags