Example usage for org.apache.commons.net.io CopyStreamAdapter addCopyStreamListener

List of usage examples for org.apache.commons.net.io CopyStreamAdapter addCopyStreamListener

Introduction

In this page you can find the example usage for org.apache.commons.net.io CopyStreamAdapter addCopyStreamListener.

Prototype

public void addCopyStreamListener(CopyStreamListener listener) 

Source Link

Document

Registers a CopyStreamListener to receive CopyStreamEvents.

Usage

From source file:fr.gael.dhus.olingo.v1.entity.Node.java

@Override
public ODataResponse getEntityMedia(ODataSingleProcessor processor) throws ODataException {
    initNode();/*  w  w w  . j a v  a2s  .  co  m*/
    if (hasStream()) {
        try {
            User u = V1Util.getCurrentUser();
            String user_name = (u == null ? null : u.getUsername());

            InputStream is = new BufferedInputStream(getStream());

            RegulatedInputStream.Builder builder = new RegulatedInputStream.Builder(is,
                    TrafficDirection.OUTBOUND);
            builder.userName(user_name);

            CopyStreamAdapter adapter = new CopyStreamAdapter();
            CopyStreamListener recorder = new DownloadActionRecordListener(this.getId(), this.getName(), u);
            CopyStreamListener closer = new DownloadStreamCloserListener(is);
            adapter.addCopyStreamListener(recorder);
            adapter.addCopyStreamListener(closer);
            builder.copyStreamListener(adapter);
            is = builder.build();

            String etag = getName() + "-" + getContentLength();

            // A priori Node never change, so the lastModified should be as
            // far as possible than today.
            long last_modified = System.currentTimeMillis() - ONE_YEAR_MS;

            // If node is not a data file, it cannot be downloaded and set to -1
            // As a stream exists, this control is probably obsolete.
            long content_length = getContentLength() == 0 ? -1 : getContentLength();

            return V1Util.prepareMediaResponse(etag, getName(), getContentType(), last_modified, content_length,
                    processor.getContext(), is);
        } catch (Exception e) {
            throw new ODataException("An exception occured while creating the stream for node " + getName(), e);
        }
    } else {
        throw new ODataException("No stream for node " + getName());
    }
}

From source file:fr.gael.dhus.olingo.v1.entity.Product.java

@Override
public ODataResponse getEntityMedia(ODataSingleProcessor processor) throws ODataException {
    ODataResponse rsp = null;// www  . j  a  v  a2  s . com
    try {
        InputStream is = new BufferedInputStream(getInputStream());
        if (requiresControl()) {
            User u = V1Util.getCurrentUser();
            String user_name = (u == null ? null : u.getUsername());

            CopyStreamAdapter adapter = new CopyStreamAdapter();
            CopyStreamListener recorder = new DownloadActionRecordListener(product.getUuid(),
                    product.getIdentifier(), u);
            CopyStreamListener closer = new DownloadStreamCloserListener(is);
            adapter.addCopyStreamListener(recorder);
            adapter.addCopyStreamListener(closer);

            RegulatedInputStream.Builder builder = new RegulatedInputStream.Builder(is,
                    TrafficDirection.OUTBOUND);
            builder.userName(user_name);
            builder.copyStreamListener(adapter);

            is = builder.build();
        }

        // Computes ETag
        String etag = getChecksumValue();
        if (etag == null)
            etag = getId();
        String filename = new File(getDownloadablePath()).getName();
        // Prepare the HTTP header for stream transfer.
        rsp = V1Util.prepareMediaResponse(etag, filename, getContentType(), getCreationDate().getTime(),
                getContentLength(), processor.getContext(), is);
    } catch (Exception e) {
        String inner_message = ".";
        if (e.getMessage() != null)
            inner_message = " : " + e.getMessage();
        throw new ODataException("An exception occured while creating a stream" + inner_message, e);
    }
    return rsp;
}

From source file:com.atomicleopard.thundr.ftp.commons.FTPClient.java

/**
 * Merge two copystream listeners, either or both of which may be null.
 *
 * @param local the listener used by this class, may be null
 * @return a merged listener or a single listener or null
 * @since 3.0//w  ww  .j av a2  s  .co  m
 */
private CopyStreamListener __mergeListeners(CopyStreamListener local) {
    if (local == null) {
        return __copyStreamListener;
    }
    if (__copyStreamListener == null) {
        return local;
    }
    // Both are non-null
    CopyStreamAdapter merged = new CopyStreamAdapter();
    merged.addCopyStreamListener(local);
    merged.addCopyStreamListener(__copyStreamListener);
    return merged;
}