1 21 package com.jaspersoft.jasperserver.war.action; 22 23 import java.util.ArrayList ; 24 import java.util.List ; 25 import java.util.StringTokenizer ; 26 27 import org.apache.commons.logging.Log; 28 import org.apache.commons.logging.LogFactory; 29 import org.springframework.webflow.Event; 30 import org.springframework.webflow.RequestContext; 31 import org.springframework.webflow.action.FormAction; 32 33 import com.jaspersoft.jasperserver.api.metadata.common.domain.ContentResource; 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.jasperreports.domain.ReportUnit; 38 import com.jaspersoft.jasperserver.api.metadata.olap.domain.OlapUnit; 39 import com.jaspersoft.jasperserver.api.metadata.view.domain.FilterCriteria; 40 41 public class RepositoryAction extends FormAction { 42 43 protected final Log log = LogFactory.getLog(this.getClass()); 44 45 50 private RepositoryService repository; 51 private String flowAttributeFolder; 52 53 57 public RepositoryService getRepository() { 58 return repository; 59 } 60 61 65 public void setRepository(RepositoryService repository) { 66 this.repository = repository; 67 } 68 69 public RepositoryAction() 70 { 71 } 77 78 public Event initAction(RequestContext context) 79 { 80 String folderURI = context.getRequestParameters().get("folder"); 81 82 if (folderURI == null) 83 { 84 folderURI = context.getFlowScope().getString(getFlowAttributeFolder()); 85 if (folderURI == null) 86 { 87 folderURI = "/"; 88 } 89 } 90 else 91 { 92 context.getFlowScope().put(getFlowAttributeFolder(), folderURI); 93 } 94 95 List pathFolders = getPathFolders(folderURI); 96 context.getRequestScope().put("pathFolders", pathFolders); 97 98 List folders = repository.getSubFolders(null, folderURI); 99 context.getRequestScope().put("folders", folders); 100 101 FilterCriteria reportUnitCriteria = FilterCriteria.createFilter(ReportUnit.class); 102 reportUnitCriteria.addFilterElement(FilterCriteria.createParentFolderFilter(folderURI)); 103 List reportUnits = repository.loadResourcesList(reportUnitCriteria); 105 106 FilterCriteria olapUnitCriteria = FilterCriteria.createFilter(OlapUnit.class); 107 olapUnitCriteria.addFilterElement(FilterCriteria.createParentFolderFilter(folderURI)); 108 List olapUnits = repository.loadResourcesList(olapUnitCriteria); 110 111 FilterCriteria contentResourceCriteria = FilterCriteria.createFilter(ContentResource.class); 112 contentResourceCriteria.addFilterElement(FilterCriteria.createParentFolderFilter(folderURI)); 113 List contentResources = repository.loadResourcesList(contentResourceCriteria); 115 116 List resources = new ArrayList (); 117 resources.addAll(reportUnits); 118 resources.addAll(olapUnits); 119 resources.addAll(contentResources); 120 121 context.getRequestScope().put("resources", resources); 122 123 return success(); 124 } 125 126 public Event remove(RequestContext context) 127 { 128 131 String [] selectedFolders = null; 132 String [] selectedResources = null; 133 134 if (context.getRequestParameters().contains("selectedResources")) 135 { 136 Object parameter = context.getRequestParameters().getMap().get("selectedResources"); 137 if (parameter instanceof String ) 138 selectedResources = new String []{(String )parameter}; 139 else 140 selectedResources = (String [])parameter; 141 } 142 143 if (context.getRequestParameters().contains("selectedFolders")) 144 { 145 Object parameter = context.getRequestParameters().getMap().get("selectedFolders"); 146 if (parameter instanceof String ) 147 selectedFolders = new String []{(String )parameter}; 148 else 149 selectedFolders = (String [])parameter; 150 } 151 152 try { 153 repository.delete(null, selectedResources, selectedFolders); 154 } 155 catch (Exception e) { 156 log.error("Failed to remove resource.", e); 157 return error(); 158 } 159 160 return success(); 161 } 162 163 protected List getPathFolders(String uri) 164 { 165 List pathFolders = new ArrayList (); 166 167 Folder parentFolder = null; 168 169 StringTokenizer tkzer = new StringTokenizer (uri, Folder.SEPARATOR, false); 170 while(tkzer.hasMoreTokens()) 171 { 172 String token = tkzer.nextToken(); 173 174 Folder folder = new FolderImpl(); 175 folder.setName(token); 176 folder.setParentFolder(parentFolder); 177 178 pathFolders.add(folder); 179 180 parentFolder = folder; 181 } 182 183 return pathFolders; 184 } 185 186 public String getFlowAttributeFolder() { 187 return flowAttributeFolder; 188 } 189 190 public void setFlowAttributeFolder(String flowAttributeFolder) { 191 this.flowAttributeFolder = flowAttributeFolder; 192 } 193 } 194 | Popular Tags |