List of usage examples for org.apache.commons.collections CollectionUtils removeAll
public static Collection removeAll(Collection collection, Collection remove)
remove
from collection
. From source file:edu.kit.dama.staging.services.impl.download.DownloadInformationPersistenceImpl.java
@Override public List<DownloadInformation> getEntitiesByDigitalObjectId(DigitalObjectId pDigitalObjectId, int pMinIndex, int pMaxResults, IAuthorizationContext pSecurityContext) { if (pDigitalObjectId == null) { throw new IllegalArgumentException("Argument pDigitalObjectId must not be 'null'"); }/*from ww w . ja va 2 s. co m*/ IMetaDataManager mdm = SecureMetaDataManager.factorySecureMetaDataManager(getPersistenceUnit(), pSecurityContext); List<DownloadInformation> result = new LinkedList<>(); try { result = mdm.findResultList( "SELECT x FROM DownloadInformation x WHERE x.digitalObjectUuid = ?1 AND x.ownerUuid LIKE ?2", new Object[] { pDigitalObjectId.getStringRepresentation(), getOwnerFromContext(pSecurityContext) }, DownloadInformation.class, pMinIndex, pMaxResults); //We expect for each digital object id within a context one result at maximum. For privileged access by an admin this can be different. //Otherwise, only the first element will be returned. if (result.size() > 1 && !isPrivilegedContext(pSecurityContext)) { LOGGER.warn("Query for DownloadInformation with id '" + pDigitalObjectId + "' returned multiple results. This should not happen for non-privileged queries for DownloadInformation entities. I'll return only the first element."); CollectionUtils.removeAll(result, result.subList(0, 1)); } } catch (UnauthorizedAccessAttemptException ex) { LOGGER.error("Not authorized to get download for object id " + pDigitalObjectId + " using context " + pSecurityContext, ex); } finally { mdm.close(); } return result; }
From source file:org.wso2.carbon.pc.core.assets.Package.java
/** * Create new Package/*from www .jav a 2 s. c om*/ * * @param packageName Name of the Package * @param packageVersion Version of the Package * @param username Provider of the Package * @param description Package description * @param newPackageFileName Package File name * @param imageFileStream Image file stream * @param packageFileStream Deploy-able archive file stream * @return * @throws ProcessCenterException */ public String update(String packageName, String packageVersion, String username, String description, String newPackageFileName, InputStream imageFileStream, InputStream packageFileStream) throws ProcessCenterException { JSONObject response = new JSONObject(); String packageRegistryPath = getPackageRegistryPath(packageName, packageVersion); String packageBPMNRegistryPath = getPackageBPMNRegistryPath( getPackageAssetRegistryPath(packageName, packageVersion)); String packageBPMNContentRegistryPath = getPackageBPMNContentRegistryPath(packageBPMNRegistryPath); try { RegistryService registryService = ProcessCenterServerHolder.getInstance().getRegistryService(); if (registryService != null) { UserRegistry userRegistry = registryService.getGovernanceUserRegistry(username); if (userRegistry != null) { // Check whether package exists with same name and version if (!userRegistry.resourceExists(packageRegistryPath)) { response.put(ProcessCenterConstants.ERROR, true); response.put(ProcessCenterConstants.MESSAGE, "Package does not exists with name " + packageName + " version:" + packageVersion); return response.toString(); } Resource packageAsset = userRegistry.get(packageRegistryPath); /* Update bpmn archive to the registry Extract the bpmn archive and add bpmn files to registry */ if (newPackageFileName != null && packageFileStream != null) { String packageFileName = packageAsset .getProperty(ProcessCenterConstants.PACKAGE_BPMN_ARCHIVE_FILE_NAME); String bpmnResourceCount = packageAsset .getProperty(ProcessCenterConstants.BPMN_RESOURCES_COUNT); // Store existing bpmn resource paths String[] existingBpmnResourcePaths = null; // Store new bpmn resource paths if (bpmnResourceCount != null) { // Get bpmn file registry registry collection Collection bpmnResourceCollection = userRegistry.get(packageBPMNContentRegistryPath, 0, Integer.parseInt(bpmnResourceCount)); if (bpmnResourceCollection != null) { existingBpmnResourcePaths = (String[]) bpmnResourceCollection.getContent(); } } byte[] buffer = new byte[1024]; InputStream packageInputStream, packageInputStreamCopy; try (ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream()) { int len; while ((len = packageFileStream.read(buffer)) > -1) { arrayOutputStream.write(buffer, 0, len); } arrayOutputStream.flush(); packageInputStream = new ByteArrayInputStream(arrayOutputStream.toByteArray()); packageInputStreamCopy = new ByteArrayInputStream(arrayOutputStream.toByteArray()); } List<String> bpmnResources = extractPackageAndStoreBPMNFiles(userRegistry, packageBPMNContentRegistryPath, packageInputStream, packageName, packageVersion); // If bar does not contain any bpmn files we will send invalidate message if (bpmnResources.size() == 0) { response.put(ProcessCenterConstants.ERROR, true); response.put(ProcessCenterConstants.MESSAGE, "Package file doesn't contain any bpmn files"); return response.toString(); } // Delete old bpmn files extracted using old bpmn zip. // We will not remove the same bpmn files to keep old associations to processes. if (existingBpmnResourcePaths != null) { java.util.Collection oldBpmnResourcePaths = CollectionUtils .removeAll(Arrays.asList(existingBpmnResourcePaths), bpmnResources); for (Object oldBpmnResourcePath : oldBpmnResourcePaths) { if (userRegistry.resourceExists(oldBpmnResourcePath.toString())) { userRegistry.delete(oldBpmnResourcePath.toString()); } } } // Add zip to Registry Resource packageZipContentResource = userRegistry.newResource(); packageZipContentResource.setContentStream(packageInputStreamCopy); packageZipContentResource.setMediaType(ProcessCenterConstants.ZIP_MEDIA_TYPE); userRegistry.put(packageBPMNRegistryPath + "/" + newPackageFileName, packageZipContentResource); // Add new package file to package asset String packageFileChecksum = Utils.getMD5Checksum(packageFileStream); packageAsset.setProperty(ProcessCenterConstants.PACKAGE_BPMN_ARCHIVE_FILE_NAME, newPackageFileName); packageAsset.setProperty(ProcessCenterConstants.BPMN_RESOURCES_COUNT, String.valueOf(bpmnResources.size())); packageAsset.setProperty(ProcessCenterConstants.CHECKSUM, packageFileChecksum); // Remove old package file if (!packageFileName.equals(newPackageFileName)) { userRegistry.delete(packageBPMNRegistryPath + "/" + packageFileName); } } String packageContent = new String((byte[]) packageAsset.getContent(), StandardCharsets.UTF_8); Document packageDocument = stringToXML(packageContent); XPath xPath = XPathFactory.newInstance().newXPath(); NodeList metadataElement = ((NodeList) xPath.evaluate("/metadata", packageDocument.getDocumentElement(), XPathConstants.NODESET)); if (metadataElement != null && metadataElement.getLength() > 0) { Element metadataRootElement = (Element) (metadataElement.item(0)); // Update the description if (description != null) { NodeList overviewNode = metadataRootElement .getElementsByTagName(ProcessCenterConstants.OVERVIEW); if (overviewNode != null && overviewNode.getLength() > 0) { Element overviewRootElement = (Element) (overviewNode.item(0)); NodeList descriptionNode = metadataRootElement .getElementsByTagName(ProcessCenterConstants.DESCRIPTION); if (descriptionNode != null && descriptionNode.getLength() > 0) { descriptionNode.item(0).setTextContent(description); } else { appendText(packageDocument, overviewRootElement, ProcessCenterConstants.DESCRIPTION, ProcessCenterConstants.METADATA_NAMESPACE, ProcessCenterConstants.NOT_APPLICABLE); } } } //Update image stream if (imageFileStream != null) { NodeList imagesElement = metadataRootElement .getElementsByTagName(ProcessCenterConstants.IMAGES); if (imagesElement != null && imagesElement.getLength() > 0) { Element imageRootElement = (Element) (imagesElement.item(0)); NodeList imageNode = imageRootElement .getElementsByTagName(ProcessCenterConstants.THUMBNAIL); // Update the description if (imageNode != null && imageNode.getLength() > 0) { imageNode.item(0).setTextContent(ProcessCenterConstants.IMAGE_THUMBNAIL); } else { Element imageElement = append(packageDocument, imageRootElement, ProcessCenterConstants.IMAGES, ProcessCenterConstants.METADATA_NAMESPACE); appendText(packageDocument, imageElement, ProcessCenterConstants.THUMBNAIL, ProcessCenterConstants.METADATA_NAMESPACE, ProcessCenterConstants.IMAGE_THUMBNAIL); } } } } // Update asset with new rxt content packageAsset.setContent(xmlToString(packageDocument)); packageAsset.setMediaType(ProcessCenterConstants.PACKAGE_MEDIA_TYPE); userRegistry.put(packageRegistryPath, packageAsset); Resource storedPackage = userRegistry.get(packageRegistryPath); if (storedPackage == null) { throw new ProcessCenterException( "Couldn't find the package in the registry for path " + packageRegistryPath); } String packageId = storedPackage.getUUID(); String imageRegPath = ProcessCenterConstants.IMAGE_PATH_PACKAGE + packageId + "/" + ProcessCenterConstants.IMAGE_THUMBNAIL; // Update image thumbnail file if (imageFileStream != null) { Resource imageContentResource = userRegistry.newResource(); imageContentResource.setContent(imageFileStream); userRegistry.put(imageRegPath, imageContentResource); } response.put(ProcessCenterConstants.ERROR, false); response.put(ProcessCenterConstants.ID, packageId); response.put(ProcessCenterConstants.NAME, packageName); } } } catch (ProcessCenterException e) { String errMsg = "Update package error: " + packageName + " version " + packageVersion; log.error(errMsg, e); throw new ProcessCenterException(errMsg, e); } catch (SAXException | TransformerException | ParserConfigurationException | XPathExpressionException e) { String errMsg = "Error occurred while processing xml to string to update new package " + packageName + " version " + packageVersion; log.error(errMsg, e); throw new ProcessCenterException(errMsg, e); } catch (RegistryException e) { String errMsg = "Error occurred while accessing registry for updating package " + packageName + " version " + packageVersion; log.error(errMsg, e); throw new ProcessCenterException(errMsg, e); } catch (NoSuchAlgorithmException | IOException e) { String errMsg = "Error occurred while accessing package archive file for updating package " + packageName + " file " + newPackageFileName; log.error(errMsg, e); throw new ProcessCenterException(errMsg, e); } catch (JSONException e) { String errMsg = "JSON Error occurred while updating package " + packageName + " version " + packageVersion; log.error(errMsg, e); } return response.toString(); }