1 21 package com.jaspersoft.jasperserver.war.action; 22 23 import java.util.ArrayList ; 24 import java.util.List ; 25 import java.util.Map ; 26 import java.util.StringTokenizer ; 27 28 import org.apache.commons.logging.Log; 29 import org.apache.commons.logging.LogFactory; 30 import org.springframework.webflow.Event; 31 import org.springframework.webflow.RequestContext; 32 import org.springframework.webflow.action.FormAction; 33 34 import com.jaspersoft.jasperserver.api.metadata.common.domain.Folder; 35 import com.jaspersoft.jasperserver.api.metadata.common.domain.client.FolderImpl; 36 import com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService; 37 import com.jaspersoft.jasperserver.api.metadata.view.domain.FilterCriteria; 38 39 public class RepoAdminAction extends FormAction { 40 41 protected final Log log = LogFactory.getLog(this.getClass()); 42 43 private Map resourceTypes; 44 45 private RepositoryService repository; 46 private String flowAttributeFolder; 47 48 52 public RepositoryService getRepository() { 53 return repository; 54 } 55 56 60 public void setRepository(RepositoryService repository) { 61 this.repository = repository; 62 } 63 64 67 public Map getResourceTypes() { 68 return resourceTypes; 69 } 70 71 74 public void setResourceTypes(Map resourceTypes) { 75 this.resourceTypes = resourceTypes; 76 } 77 78 public RepoAdminAction() 79 { 80 } 86 87 public Event initAction(RequestContext context) 88 { 89 String folderURI = context.getRequestParameters().get("folder"); 90 91 if (folderURI == null) 92 { 93 folderURI = context.getFlowScope().getString(getFlowAttributeFolder()); 94 if (folderURI == null) 95 { 96 folderURI = "/"; 97 } 98 } 99 else 100 { 101 context.getFlowScope().put(getFlowAttributeFolder(), folderURI); 102 } 103 104 List pathFolders = getPathFolders(folderURI); 105 context.getRequestScope().put("pathFolders", pathFolders); 106 107 FilterCriteria criteria = FilterCriteria.createFilter(); 108 criteria.addFilterElement(FilterCriteria.createParentFolderFilter(folderURI)); 109 110 List folders = repository.getSubFolders(null, folderURI); 111 context.getRequestScope().put("folders", folders); 112 116 context.getRequestScope().put("resources", repository.loadResourcesList(criteria)); 117 118 context.getRequestScope().put("resourceTypes", getResourceTypes()); 119 120 return success(); 121 } 122 123 public Event remove(RequestContext context) 124 { 125 128 String [] selectedFolders = null; 129 String [] selectedResources = null; 130 131 if (context.getRequestParameters().contains("selectedResources")) 132 { 133 Object parameter = context.getRequestParameters().getMap().get("selectedResources"); 134 if (parameter instanceof String ) 135 selectedResources = new String []{(String )parameter}; 136 else 137 selectedResources = (String [])parameter; 138 } 139 140 if (context.getRequestParameters().contains("selectedFolders")) 141 { 142 Object parameter = context.getRequestParameters().getMap().get("selectedFolders"); 143 if (parameter instanceof String ) 144 selectedFolders = new String []{(String )parameter}; 145 else 146 selectedFolders = (String [])parameter; 147 } 148 149 try { 150 repository.delete(null, selectedResources, selectedFolders); 151 } 152 catch (Exception e) { 153 log.error("Failed to remove resource.", e); 154 return error(); 155 } 156 157 return success(); 158 } 159 160 protected List getPathFolders(String uri) 161 { 162 List pathFolders = new ArrayList (); 163 164 Folder parentFolder = null; 165 166 StringTokenizer tkzer = new StringTokenizer (uri, Folder.SEPARATOR, false); 167 while(tkzer.hasMoreTokens()) 168 { 169 String token = tkzer.nextToken(); 170 171 Folder folder = new FolderImpl(); 172 folder.setName(token); 173 folder.setParentFolder(parentFolder); 174 175 pathFolders.add(folder); 176 177 parentFolder = folder; 178 } 179 180 return pathFolders; 181 } 182 183 public String getFlowAttributeFolder() { 184 return flowAttributeFolder; 185 } 186 187 public void setFlowAttributeFolder(String flowAttributeFolder) { 188 this.flowAttributeFolder = flowAttributeFolder; 189 } 190 } 191 | Popular Tags |