1 package com.dotmarketing.factories; 2 3 import java.util.ArrayList ; 4 import java.util.Iterator ; 5 import java.util.List ; 6 import java.util.StringTokenizer ; 7 8 import javax.portlet.ActionRequest; 9 import javax.portlet.RenderRequest; 10 import javax.servlet.ServletRequest ; 11 import javax.servlet.http.HttpServletRequest ; 12 import javax.servlet.http.HttpSession ; 13 14 import com.dotmarketing.beans.Host; 15 import com.dotmarketing.beans.Permission; 16 import com.dotmarketing.beans.WebAsset; 17 import com.dotmarketing.cache.HostCache; 18 import com.dotmarketing.cms.factories.PublicRoleFactory; 19 import com.dotmarketing.portlets.folders.model.Folder; 20 import com.dotmarketing.util.Config; 21 import com.dotmarketing.util.UtilMethods; 22 import com.dotmarketing.util.WebKeys; 23 import com.liferay.portal.model.Role; 24 import com.liferay.portal.model.User; 25 import com.liferay.portlet.ActionRequestImpl; 26 import com.liferay.portlet.RenderRequestImpl; 27 28 32 public class HostFactory { 33 34 public static Host getHost(long hostId) { 35 return (Host) InodeFactory.getInode(hostId, Host.class); 36 } 37 38 public static Host getHost(String hostId) { 39 return (Host) InodeFactory.getInode(hostId, Host.class); 40 } 41 42 public static Host getParentHost(WebAsset asset) { 43 if (WebAssetFactory.isAbstractAsset(asset)) { 44 return (Host) InodeFactory.getParentOfClass(asset, 45 Host.class); 46 } 47 Folder parentFolder = (Folder) InodeFactory.getParentOfClass(asset, 48 Folder.class); 49 return getParentHost(parentFolder); 50 } 51 52 public static Host getParentHost(Folder folder) { 53 return HostFactory.getHost(folder.getHostInode()); 54 } 55 56 60 public static Host getHostByHostName(String hostname) { 61 Host host = (Host) InodeFactory.getInodeOfClassByCondition(Host.class, 62 "hostname = '" + hostname + "'"); 63 return host; 64 } 65 66 69 public static Host getDefaultHost() { 70 return (Host) InodeFactory.getInodeOfClassByCondition(Host.class, 71 "is_default = " + com.dotmarketing.db.DbConnectionFactory.getDBTrue()); 72 } 73 74 @SuppressWarnings ("unchecked") 75 public static List <Host> getAllHosts() { 76 return InodeFactory.getInodesOfClass(Host.class, "hostname"); 77 } 78 79 @SuppressWarnings ("unchecked") 80 public static List <Host> getAllHostsByUser(User user) { 81 List <Host> hostListFinal = new ArrayList <Host>(); 82 List <Host> hostList = InodeFactory.getInodesOfClass(Host.class, "hostname"); 83 for(Host host :hostList){ 84 if(PermissionFactory.doesUserHavePermission(host, Config.getIntProperty("PERMISSION_READ"),user)){ 85 hostListFinal.add(host); 86 } 87 } 88 return hostListFinal; 89 } 90 91 94 public static Host createDefaultHost() { 95 Host host = new Host(); 96 host.setDefault(true); 97 host.setHostname("localhost"); 98 InodeFactory.saveInode(host); 99 100 Role cmsAdminRole = PublicRoleFactory.findRoleByName(Config 101 .getStringProperty("CMS_ADMINISTRATOR_ROLE")); 102 103 Permission cmsAdminPermission = new Permission(); 104 cmsAdminPermission.setRoleId(Long.parseLong(cmsAdminRole.getRoleId())); 105 cmsAdminPermission.setPermission(Config 106 .getIntProperty("PERMISSION_READ")); 107 cmsAdminPermission.setInode(host.getInode()); 108 PermissionFactory.savePermission(cmsAdminPermission); 109 110 cmsAdminPermission = new Permission(); 111 cmsAdminPermission.setRoleId(Long.parseLong(cmsAdminRole.getRoleId())); 112 cmsAdminPermission.setPermission(Config 113 .getIntProperty("PERMISSION_WRITE")); 114 cmsAdminPermission.setInode(host.getInode()); 115 PermissionFactory.savePermission(cmsAdminPermission); 116 117 cmsAdminPermission = new Permission(); 118 cmsAdminPermission.setRoleId(Long.parseLong(cmsAdminRole.getRoleId())); 119 cmsAdminPermission.setPermission(Config 120 .getIntProperty("PERMISSION_PUBLISH")); 121 cmsAdminPermission.setInode(host.getInode()); 122 PermissionFactory.savePermission(cmsAdminPermission); 123 124 125 126 Role cmsUserRole = PublicRoleFactory.findRoleByName(Config 127 .getStringProperty("CMS_USER_ROLE")); 128 129 130 Permission cmsUserPermission = new Permission(); 131 cmsUserPermission.setRoleId(Long.parseLong(cmsUserRole.getRoleId())); 132 cmsUserPermission.setPermission(Config 133 .getIntProperty("PERMISSION_READ")); 134 cmsUserPermission.setInode(host.getInode()); 135 PermissionFactory.savePermission(cmsUserPermission); 136 137 cmsUserPermission = new Permission(); 138 cmsUserPermission.setRoleId(Long.parseLong(cmsUserRole.getRoleId())); 139 cmsUserPermission.setPermission(Config 140 .getIntProperty("PERMISSION_WRITE")); 141 cmsUserPermission.setInode(host.getInode()); 142 PermissionFactory.savePermission(cmsUserPermission); 143 return host; 144 } 145 146 150 public static Host findHostByAliases(String serverName) { 151 List hosts = getAllHosts(); 152 Iterator it = hosts.iterator(); 153 Host retValue = new Host(); 154 boolean found = false; 155 while (it.hasNext() && !found) { 156 Host host = (Host) it.next(); 157 String aliases = host.getAliases(); 158 if (UtilMethods.isSet(aliases)) { 159 StringTokenizer tok = new StringTokenizer (aliases, ", \n\r\t"); 160 while (tok.hasMoreTokens()) { 161 String alias = tok.nextToken(); 162 if (alias.equals(serverName)) { 163 retValue = host; 164 found = true; 165 break; 166 } 167 } 168 } 169 } 170 return retValue; 171 } 172 173 public static Host getCurrentHost(RenderRequest req) { 174 RenderRequestImpl imp = (RenderRequestImpl) req; 175 return HostFactory.getCurrentHost(imp.getHttpServletRequest()); 176 } 177 178 public static Host getCurrentHost(ActionRequest req) { 179 ActionRequestImpl imp = (ActionRequestImpl) req; 180 return HostFactory.getCurrentHost(imp.getHttpServletRequest()); 181 } 182 183 184 public static Host getCurrentHost(ServletRequest req) { 185 return getCurrentHost(req, false); 186 } 187 188 public static Host getCurrentHost(ServletRequest req, boolean isEditMode) { 189 Host host = null; 190 HttpServletRequest request = (HttpServletRequest ) req; 191 HttpSession session = request.getSession(false); 192 193 if (req.getAttribute(WebKeys.CURRENT_HOST) != null) { 194 host = (Host) req.getAttribute(WebKeys.CURRENT_HOST); 195 } else if(isEditMode && session != null && session.getAttribute(WebKeys.CURRENT_HOST) != null){ 196 host = (Host) session.getAttribute(WebKeys.CURRENT_HOST); 197 }else { 198 String serverName = req.getServerName(); 199 host = HostCache.getFromCache(serverName); 200 } 201 return host; 202 } 203 204 public static void setHostInRequest(ServletRequest req, Host host) { 205 HttpServletRequest request = (HttpServletRequest ) req; 206 request.setAttribute(WebKeys.CURRENT_HOST, host); 207 } 208 209 public static void setHostInRequest(ActionRequest req, Host host) { 210 ActionRequestImpl imp = (ActionRequestImpl) req; 211 setHostInRequest(imp.getHttpServletRequest(), host); 212 } 213 214 public static void setHostInRequest(RenderRequest req, Host host) { 215 RenderRequestImpl imp = (RenderRequestImpl) req; 216 setHostInRequest(imp.getHttpServletRequest(), host); 217 } 218 219 @SuppressWarnings ("unchecked") 220 public static boolean hostContains(String name, Host destination) { 221 List <Folder> children = InodeFactory.getChildrenClass(destination, 222 Folder.class); 223 for (Folder folder : children) { 224 if (folder.getName().equals(name)) 225 return true; 226 } 227 return false; 228 } 229 230 } 231 | Popular Tags |