List of usage examples for org.apache.commons.net.io CopyStreamAdapter addCopyStreamListener
public void addCopyStreamListener(CopyStreamListener listener)
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; }