package org.openedit.entermedia.modules; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.openedit.entermedia.util.UrlRepository; import org.openedit.repository.Repository; import org.openedit.repository.filesystem.FileRepository; import org.openedit.repository.filesystem.XmlVersionRepository; import com.openedit.OpenEditRuntimeException; import com.openedit.WebPageRequest; import com.openedit.WebServer; import com.openedit.modules.BaseModule; public class MountModule extends BaseModule { protected WebServer fieldWebServer; public List loadMounts(WebPageRequest inReq) { List configs = getPageManager().getRepositoryManager() .getRepositories(); inReq.putPageValue("mounts", configs); return configs; } public Repository loadDefaultMountForPath(WebPageRequest inReq) { String path = inReq.getRequestParameter("path"); List configs = getPageManager().getRepositoryManager() .getRepositories(); for (Iterator iterator = configs.iterator(); iterator.hasNext();) { Repository config = (Repository) iterator.next(); if (config.getPath().equals(path)) { if (config.getFilterOut() == null) { inReq.putPageValue("mount", config); return config; } } } return null; } public List loadMountsForPath(WebPageRequest inReq) { String path = inReq.getRequestParameter("path"); List configs = getPageManager().getRepositoryManager() .getRepositories(); List matching = new ArrayList(); for (Iterator iterator = configs.iterator(); iterator.hasNext();) { Repository config = (Repository) iterator.next(); if (config.getPath().equals(path)) { matching.add(config); } } inReq.putPageValue("mounts", matching); return matching; } public Repository loadMount(WebPageRequest inReq) { String matches = inReq.findValue("mountid"); List configs = loadMounts(inReq); for (Iterator iterator = configs.iterator(); iterator.hasNext();) { Repository config = (Repository) iterator.next(); if (config.getPath().equals(matches)) { inReq.putPageValue("mount", config); return config; } } return null; } public void removeMount(WebPageRequest inReq) { List mounts = loadMounts(inReq); // Save all the mounts but some of them might not load on startup? Repository existing = loadMount(inReq); for (Iterator iterator = mounts.iterator(); iterator.hasNext();) { Repository config = (Repository) iterator.next(); if (config.equals(existing)) { mounts.remove(config); break; } } saveMounts(mounts); } public void saveMount(WebPageRequest inReq) { List mounts = loadMounts(inReq); // Save all the mounts but some of them might not load on startup? // update data and save all String path = inReq.getRequestParameter("path"); if (path == null) { path = "/"; } if (path.length() > 1 && path.endsWith("/")) { path = path.substring(0, path.length() - 1); } Repository repo = loadMount(inReq); String repotype = inReq.getRequestParameter("repositorytype"); if (repo == null) { if (repotype == null || repotype.trim().equals("")) // file { repo = new FileRepository(); } else if ("versionRepository".equals(repotype)) { repo = new XmlVersionRepository(); } else if ("urlRepository".equals(repotype)) { repo = new UrlRepository(); } else if ("sftpRepository".equals(repotype)) { repo = new UrlRepository(); } else { throw new OpenEditRuntimeException("Invalid repository type."); } mounts.add(repo); } repo.setPath(path); repo.setExternalPath(inReq.getRequestParameter("externalpath")); String[] fields = inReq.getRequestParameters("field"); if (fields != null) { for (int i = 0; i < fields.length; i++) { String field = fields[i]; String value = inReq.getRequestParameter(field + ".value"); if (value != null) { repo.setProperty(field, value); } } } String filterin = inReq.getRequestParameter("filterin"); repo.setFilterIn(filterin); repo.setFilterOut(inReq.getRequestParameter("filterout")); repo.setRepositoryType(repotype); // save out the file saveMounts(mounts); } protected void saveMounts(List mounts) { getWebServer().saveMounts(mounts); } public void reloadMounts(WebPageRequest inReq) { getWebServer().reloadMounts(); } public WebServer getWebServer() { return fieldWebServer; } public void setWebServer(WebServer inWebServer) { fieldWebServer = inWebServer; } }