Example usage for org.apache.commons.collections CollectionUtils removeAll

List of usage examples for org.apache.commons.collections CollectionUtils removeAll

Introduction

In this page you can find the example usage for org.apache.commons.collections CollectionUtils removeAll.

Prototype

public static Collection removeAll(Collection collection, Collection remove) 

Source Link

Document

Removes the elements in remove from collection.

Usage

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();
}