Search in sources :

Example 1 with ObjectPath

use of com.emc.atmos.api.ObjectPath in project camel by apache.

the class AtmosAPIFacade method downloadSingleFile.

private void downloadSingleFile(String path, Map<String, ByteArrayOutputStream> resultEntries) throws AtmosException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    byte[] content = null;
    try {
        content = AtmosAPIFacade.client.readObject(new ObjectPath(path), byte[].class);
        baos.write(content);
    } catch (IOException e) {
        throw new AtmosException(path + " cannot obtain a stream", e);
    }
    if (content != null) {
        resultEntries.put(path, baos);
        LOG.debug("Downloaded path: {} size:", path, baos.size());
    }
}
Also used : ObjectPath(com.emc.atmos.api.ObjectPath) AtmosException(org.apache.camel.component.atmos.util.AtmosException) ByteArrayOutputStream(java.io.ByteArrayOutputStream) IOException(java.io.IOException)

Example 2 with ObjectPath

use of com.emc.atmos.api.ObjectPath in project camel by apache.

the class AtmosAPIFacade method del.

/**
     * Delete every files and subdirectories inside the remote directory. In
     * case the remotePath is a file, delete the file.
     *
     * @param remotePath the remote location to delete
     * @return a AtmosResult object with the result of the delete operation.
     * @throws AtmosException
     */
public AtmosResult del(String remotePath) throws AtmosException {
    AtmosResult result = null;
    ObjectPath op = new ObjectPath(remotePath);
    AtmosAPIFacade.client.delete(op);
    result = new AtmosDelResult();
    result.setResultEntries(remotePath);
    return result;
}
Also used : ObjectPath(com.emc.atmos.api.ObjectPath) AtmosResult(org.apache.camel.component.atmos.dto.AtmosResult) AtmosDelResult(org.apache.camel.component.atmos.dto.AtmosDelResult)

Example 3 with ObjectPath

use of com.emc.atmos.api.ObjectPath in project camel by apache.

the class AtmosAPIFacade method downloadFilesInFolder.

private void downloadFilesInFolder(String atmosPath, Map<String, ByteArrayOutputStream> resultEntries) throws AtmosException {
    ObjectPath atmosEntry = new ObjectPath(atmosPath);
    if (AtmosAPIFacade.client.getSystemMetadata(atmosEntry) == null) {
        throw new AtmosException(atmosPath + " does not exist or cannot obtain metadata");
    }
    if (!atmosEntry.isDirectory()) {
        LOG.debug("downloading a single file...");
        downloadSingleFile(atmosPath, resultEntries);
        return;
    }
    ListDirectoryRequest listRequest = new ListDirectoryRequest().path(atmosEntry);
    AtmosAPIFacade.client.listDirectory(listRequest);
    for (DirectoryEntry entry : AtmosAPIFacade.client.listDirectory(listRequest).getEntries()) {
        if (!entry.isDirectory()) {
            try {
                //get the baos of the file
                downloadSingleFile(atmosEntry.getPath().concat(entry.getFilename()), resultEntries);
            } catch (AtmosException e) {
                LOG.warn("Cannot download from " + entry.getFilename());
            }
        } else {
            //iterate on folder
            downloadFilesInFolder(atmosEntry.getPath().concat(entry.getFilename()), resultEntries);
        }
    }
}
Also used : ObjectPath(com.emc.atmos.api.ObjectPath) AtmosException(org.apache.camel.component.atmos.util.AtmosException) ListDirectoryRequest(com.emc.atmos.api.request.ListDirectoryRequest) DirectoryEntry(com.emc.atmos.api.bean.DirectoryEntry)

Example 4 with ObjectPath

use of com.emc.atmos.api.ObjectPath in project camel by apache.

the class AtmosAPIFacade method put.

/**
     * Put or upload a new file or an entire directory to atmos
     *
     * @param localPath the file path or the dir path on the local filesystem
     * @param remotePath the remote path destination on atmos
     * the file already existing with the same name
     * will be overridden.
     * @return a AtmosResult object reporting for each remote path the result of
     * the operation.
     * @throws AtmosException
     */
public AtmosResult put(String localPath, String remotePath) throws AtmosException {
    AtmosResult result = new AtmosFileUploadResult();
    //a map representing for each path the result of the put operation
    Map<String, AtmosResultCode> resultEntries = null;
    //in case the remote path is not specified, the remotePath = localPath
    String atmosPath = remotePath == null ? localPath : remotePath;
    if (!atmosPath.endsWith(ATMOS_FILE_SEPARATOR)) {
        atmosPath += ATMOS_FILE_SEPARATOR;
    }
    ObjectPath atmosEntry = new ObjectPath(atmosPath);
    if (!atmosPath.equals(ATMOS_FILE_SEPARATOR)) {
        if (AtmosAPIFacade.client.getSystemMetadata(atmosEntry) == null) {
            throw new AtmosException(atmosPath + " does not exist or cannot obtain metadata");
        }
    }
    File fileLocalPath = new File(localPath);
    //verify uploading of a single file
    if (fileLocalPath.isFile()) {
        //check if atmos file exists
        if (atmosEntry != null && !atmosEntry.isDirectory()) {
            throw new AtmosException(atmosPath + " exists on atmos and is not a folder!");
        }
        atmosPath = atmosPath + fileLocalPath.getName();
        resultEntries = new HashMap<String, AtmosResultCode>(1);
        try {
            ObjectId uploadedFile = putSingleFile(fileLocalPath, atmosPath);
            if (uploadedFile == null) {
                resultEntries.put(atmosPath, AtmosResultCode.KO);
            } else {
                resultEntries.put(atmosPath, AtmosResultCode.OK);
            }
        } catch (Exception ex) {
            resultEntries.put(atmosPath, AtmosResultCode.KO);
        } finally {
            result.setResultEntries(resultEntries);
        }
        return result;
    } else {
        //verify uploading of a list of files inside a dir
        LOG.info("uploading a dir...");
        //check if atmos folder exists
        if (atmosEntry != null && !atmosEntry.isDirectory()) {
            throw new AtmosException(atmosPath + " exists on atmos and is not a folder!");
        }
        //revert to old path
        String oldAtmosPath = atmosPath;
        //list all files in a dir
        Collection<File> listFiles = FileUtils.listFiles(fileLocalPath, null, true);
        if (listFiles == null || listFiles.isEmpty()) {
            throw new AtmosException(localPath + " does not contain any files");
        }
        resultEntries = new HashMap<String, AtmosResultCode>(listFiles.size());
        for (File file : listFiles) {
            String absPath = file.getAbsolutePath();
            int indexRemainingPath = localPath.length();
            if (!localPath.endsWith("/")) {
                indexRemainingPath += 1;
            }
            String remainingPath = absPath.substring(indexRemainingPath);
            atmosPath = atmosPath + remainingPath;
            try {
                LOG.debug("uploading: {} to {}", fileLocalPath, atmosPath);
                ObjectId uploadedFile = putSingleFile(file, atmosPath);
                if (uploadedFile == null) {
                    resultEntries.put(atmosPath, AtmosResultCode.KO);
                } else {
                    resultEntries.put(atmosPath, AtmosResultCode.OK);
                }
            } catch (Exception ex) {
                resultEntries.put(atmosPath, AtmosResultCode.KO);
            }
            atmosPath = oldAtmosPath;
        }
        result.setResultEntries(resultEntries);
        return result;
    }
}
Also used : ObjectPath(com.emc.atmos.api.ObjectPath) ObjectId(com.emc.atmos.api.ObjectId) AtmosResult(org.apache.camel.component.atmos.dto.AtmosResult) AtmosFileUploadResult(org.apache.camel.component.atmos.dto.AtmosFileUploadResult) AtmosException(org.apache.camel.component.atmos.util.AtmosException) IOException(java.io.IOException) AtmosException(org.apache.camel.component.atmos.util.AtmosException) File(java.io.File) AtmosResultCode(org.apache.camel.component.atmos.util.AtmosResultCode)

Example 5 with ObjectPath

use of com.emc.atmos.api.ObjectPath in project camel by apache.

the class AtmosAPIFacade method move.

/**
     * Rename a remote path with the new path location.
     *
     * @param remotePath the existing remote path to be renamed
     * @param newRemotePath the new remote path substituting the old one
     * @return a AtmosResult object with the result of the move operation.
     * @throws AtmosException
     */
public AtmosResult move(String remotePath, String newRemotePath) throws AtmosException {
    AtmosResult result = null;
    AtmosAPIFacade.client.move(new ObjectPath(remotePath), new ObjectPath(newRemotePath), true);
    result = new AtmosMoveResult();
    result.setResultEntries(remotePath + "-" + newRemotePath);
    return result;
}
Also used : ObjectPath(com.emc.atmos.api.ObjectPath) AtmosMoveResult(org.apache.camel.component.atmos.dto.AtmosMoveResult) AtmosResult(org.apache.camel.component.atmos.dto.AtmosResult)

Aggregations

ObjectPath (com.emc.atmos.api.ObjectPath)6 AtmosResult (org.apache.camel.component.atmos.dto.AtmosResult)3 AtmosException (org.apache.camel.component.atmos.util.AtmosException)3 ObjectId (com.emc.atmos.api.ObjectId)2 IOException (java.io.IOException)2 DirectoryEntry (com.emc.atmos.api.bean.DirectoryEntry)1 CreateObjectRequest (com.emc.atmos.api.request.CreateObjectRequest)1 ListDirectoryRequest (com.emc.atmos.api.request.ListDirectoryRequest)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 File (java.io.File)1 FileInputStream (java.io.FileInputStream)1 AtmosDelResult (org.apache.camel.component.atmos.dto.AtmosDelResult)1 AtmosFileUploadResult (org.apache.camel.component.atmos.dto.AtmosFileUploadResult)1 AtmosMoveResult (org.apache.camel.component.atmos.dto.AtmosMoveResult)1 AtmosResultCode (org.apache.camel.component.atmos.util.AtmosResultCode)1