KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > meshcms > core > MultiSiteManager


1 /*
2  * MeshCMS - A simple CMS based on SiteMesh
3  * Copyright (C) 2004-2007 Luciano Vernaschi
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * as published by the Free Software Foundation; either version 2
8  * of the License, or (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18  *
19  * You can contact the author at http://www.cromoteca.com
20  * and at info@cromoteca.com
21  */

22
23 package org.meshcms.core;
24
25 import java.io.*;
26 import java.util.*;
27
28 public class MultiSiteManager implements Serializable {
29   private transient MainWebSite mainWebSite;
30   private transient SortedMap domainsMap;
31
32   private boolean manageTripleWs;
33   private boolean useDirsAsDomains;
34   private String JavaDoc mainWebSiteDomains;
35   private Properties domains;
36   private int siteCount;
37
38   private MultiSiteManager() {
39     domains = new Properties();
40     manageTripleWs = true;
41     useDirsAsDomains = true;
42   }
43
44   public boolean isManageTripleWs() {
45     return manageTripleWs;
46   }
47
48   public void setManageTripleWs(boolean manageTripleWs) {
49     this.manageTripleWs = manageTripleWs;
50   }
51
52   public boolean isUseDirsAsDomains() {
53     return useDirsAsDomains;
54   }
55
56   public void setUseDirsAsDomains(boolean useDirsAsDomains) {
57     this.useDirsAsDomains = useDirsAsDomains;
58   }
59
60   public void setDomains(String JavaDoc dir, String JavaDoc domainNames) {
61     if (domainNames != null) {
62       domains.setProperty(dir, domainNames);
63     }
64   }
65
66   public String JavaDoc getDomains(String JavaDoc dir) {
67     return domains.getProperty(dir.toLowerCase());
68   }
69
70   public int initDomainsMap() {
71     domainsMap = new TreeMap();
72     File[] dirs = mainWebSite.getFile(mainWebSite.getVirtualSitesPath()).listFiles();
73     siteCount = 0;
74
75     for (int i = 0; i < dirs.length; i++) {
76       if (dirs[i].isDirectory()) {
77         siteCount++;
78         String JavaDoc dirName = dirs[i].getName().toLowerCase();
79         VirtualWebSite webSite = mainWebSite.getVirtualSite(dirName);
80         parseDomains(domainsMap, webSite, getDomains(dirName));
81
82         if (useDirsAsDomains) {
83           parseDomains(domainsMap, webSite, dirName);
84         }
85       }
86     }
87
88     if (!parseDomains(domainsMap, mainWebSite, mainWebSiteDomains)) {
89       /* no valid domains in mainWebSiteDomains, so set it to null for
90          getWebSite() to work correctly */

91       mainWebSiteDomains = null;
92     }
93
94     return domainsMap.size();
95   }
96
97   private boolean parseDomains(SortedMap map, WebSite webSite, String JavaDoc domainNames) {
98     boolean result = false;
99
100     if (domainNames != null) {
101       StringTokenizer st = new StringTokenizer(domainNames, ";:, \t");
102
103       while (st.hasMoreTokens()) {
104         String JavaDoc token = st.nextToken();
105         map.put(token, webSite);
106         result = true;
107
108         if (manageTripleWs) {
109           map.put("www." + token, webSite);
110         }
111       }
112     }
113
114     return result;
115   }
116
117   public WebSite getWebSite(String JavaDoc domain) {
118     WebSite webSite = (WebSite) domainsMap.get(domain.toLowerCase());
119
120     if (webSite == null && mainWebSiteDomains == null) {
121       webSite = mainWebSite;
122     }
123
124     return webSite;
125   }
126   
127   public int getSiteCount() {
128     return siteCount;
129   }
130
131   public String JavaDoc getMainWebSiteDomains() {
132     return mainWebSiteDomains;
133   }
134
135   public void setMainWebSiteDomains(String JavaDoc mainWebSiteDomains) {
136     this.mainWebSiteDomains = mainWebSiteDomains;
137   }
138
139   public static MultiSiteManager load(MainWebSite mainWebSite) {
140     MultiSiteManager m = null;
141
142     try {
143       m = (MultiSiteManager) mainWebSite.loadFromXML
144           (mainWebSite.getSitesFilePath());
145       m.setMainWebSite(mainWebSite);
146     } catch (Exception JavaDoc ex) {}
147
148     if (m == null) {
149       m = new MultiSiteManager();
150       m.setMainWebSite(mainWebSite);
151     }
152
153     return m;
154   }
155
156   public boolean store(MainWebSite mainWebSite) {
157     return mainWebSite.storeToXML(this, mainWebSite.getSitesFilePath());
158   }
159
160   public MainWebSite getMainWebSite() {
161     return mainWebSite;
162   }
163
164   public void setMainWebSite(MainWebSite mainWebSite) {
165     this.mainWebSite = mainWebSite;
166   }
167 }
168
Popular Tags