1 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 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 dir, String domainNames) { 61 if (domainNames != null) { 62 domains.setProperty(dir, domainNames); 63 } 64 } 65 66 public String getDomains(String 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 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 91 mainWebSiteDomains = null; 92 } 93 94 return domainsMap.size(); 95 } 96 97 private boolean parseDomains(SortedMap map, WebSite webSite, String domainNames) { 98 boolean result = false; 99 100 if (domainNames != null) { 101 StringTokenizer st = new StringTokenizer(domainNames, ";:, \t"); 102 103 while (st.hasMoreTokens()) { 104 String 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 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 getMainWebSiteDomains() { 132 return mainWebSiteDomains; 133 } 134 135 public void setMainWebSiteDomains(String 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 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 |