1 16 package org.outerj.daisy.frontend; 17 18 import org.outerj.daisy.frontend.util.AbstractDaisyApple; 19 import org.outerj.daisy.frontend.components.siteconf.SiteConf; 20 import org.outerj.daisy.repository.Repository; 21 import org.outerj.daisy.repository.DocumentCollection; 22 import org.outerj.daisy.repository.query.QueryHelper; 23 import org.apache.cocoon.components.flow.apples.StatelessAppleController; 24 import org.apache.cocoon.components.flow.apples.AppleRequest; 25 import org.apache.cocoon.components.flow.apples.AppleResponse; 26 import org.apache.cocoon.environment.Request; 27 import org.apache.cocoon.ResourceNotFoundException; 28 import org.apache.avalon.framework.service.Serviceable; 29 import org.apache.avalon.framework.service.ServiceManager; 30 import org.apache.avalon.framework.service.ServiceException; 31 import org.apache.xmlbeans.XmlObject; 32 import org.outerx.daisy.x10.SearchResultDocument; 33 34 import java.util.Arrays ; 35 import java.util.Locale ; 36 import java.util.Map ; 37 import java.util.HashMap ; 38 39 40 41 public class BrowseImagesApple extends AbstractDaisyApple implements StatelessAppleController, Serviceable { 42 private ServiceManager serviceManager; 43 44 public void service(ServiceManager serviceManager) throws ServiceException { 45 this.serviceManager = serviceManager; 46 } 47 48 protected void processInternal(AppleRequest appleRequest, AppleResponse appleResponse) throws Exception { 49 Request request = appleRequest.getCocoonRequest(); 50 Locale locale = WikiHelper.getLocale(request); 51 SiteConf siteConf = WikiHelper.getSiteConf(request); 52 Repository repository = WikiHelper.getRepository(request, serviceManager); 53 54 String resource = appleRequest.getSitemapParameter("resource"); 55 if (resource == null) { 56 long branchId = RequestUtil.getBranchId(request, siteConf.getBranchId(), repository); 57 long languageId = RequestUtil.getLanguageId(request, siteConf.getLanguageId(), repository); 58 59 DocumentCollection[] collections = repository.getCollectionManager().getCollections(false).getArray(); 60 Arrays.sort(collections); 61 62 Map viewData = new HashMap (); 63 viewData.put("branchId", String.valueOf(branchId)); 64 viewData.put("languageId", String.valueOf(languageId)); 65 viewData.put("collectionId", String.valueOf(siteConf.getCollectionId())); 66 viewData.put("branches", repository.getVariantManager().getAllBranches(false).getArray()); 67 viewData.put("languages", repository.getVariantManager().getAllLanguages(false).getArray()); 68 viewData.put("versionMode", WikiHelper.getVersionMode(request)); 69 viewData.put("collections", collections); 70 viewData.put("siteConf", siteConf); 71 viewData.put("mountPoint", getMountPoint()); 72 appleResponse.sendPage("Template-imagebrowser-Pipe", viewData); 73 } else if (resource.equals("imagesByCollection")) { 74 String collectionIdParam = appleRequest.getSitemapParameter("collectionId"); 75 long collectionId = -1; 76 if (!collectionIdParam.equals("all")) { 77 try { 78 collectionId = Long.parseLong(collectionIdParam); 79 } catch (NumberFormatException e) { 80 throw new Exception ("Invalid collectionId request parameter: " + collectionIdParam); 81 } 82 } 83 84 long branchId = RequestUtil.getBranchId(request, siteConf.getBranchId(), repository); 85 long languageId = RequestUtil.getLanguageId(request, siteConf.getLanguageId(), repository); 86 WikiVersionMode versionMode = WikiVersionMode.fromString(RequestUtil.getStringParameter(request, "versionMode")); 87 88 StringBuffer query = new StringBuffer (400); 89 query.append("select name where HasPart('ImageData')"); 90 if (collectionId != -1) 91 query.append(" and InCollection(").append(collectionId).append(")"); 92 query.append(" and branchId = ").append(branchId); 93 query.append(" and languageId = ").append(languageId); 94 query.append(" order by name"); 95 96 if (versionMode == WikiVersionMode.LAST) 97 query.append(" option search_last_version = 'true'"); 98 99 XmlObject queryResult = repository.getQueryManager().performQuery(query.toString(), locale); 100 101 Map viewData = new HashMap (); 102 viewData.put("branchId", String.valueOf(branchId)); 103 viewData.put("languageId", String.valueOf(languageId)); 104 viewData.put("versionMode", versionMode); 105 viewData.put("images", ((SearchResultDocument)queryResult).getSearchResult().getRows().getRowArray()); 106 107 appleResponse.sendPage("Template-imagebrowser_images-Pipe", viewData); 108 } else { 109 throw new ResourceNotFoundException("Unsupported resource: " + resource); 110 } 111 } 112 } 113 | Popular Tags |