001    /*
002     * Copyright 2001-2005 The Apache Software Foundation
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     *     http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.apache.commons.net.io;
017    
018    import java.io.IOException;
019    
020    /**
021     * The CopyStreamException class is thrown by the org.apache.commons.io.Util
022     * copyStream() methods.  It stores the number of bytes confirmed to
023     * have been transferred before an I/O error as well as the IOException
024     * responsible for the failure of a copy operation.
025     * @see Util
026     * @author <a href="mailto:savarese@apache.org">Daniel F. Savarese</a>
027     * @version $Id: CopyStreamException.java 165675 2005-05-02 20:09:55Z rwinston $
028     */
029    public class CopyStreamException extends IOException
030    {
031        private long totalBytesTransferred;
032        private IOException ioException;
033    
034        /**
035         * Creates a new CopyStreamException instance.
036         * @param message  A message describing the error.
037         * @param bytesTransferred  The total number of bytes transferred before
038         *        an exception was thrown in a copy operation.
039         * @param exception  The IOException thrown during a copy operation.
040         */
041        public CopyStreamException(String message,
042                                   long bytesTransferred,
043                                   IOException exception)
044        {
045            super(message);
046            totalBytesTransferred = bytesTransferred;
047            ioException = exception;
048        }
049    
050        /**
051         * Returns the total number of bytes confirmed to have
052         * been transferred by a failed copy operation.
053         * @return The total number of bytes confirmed to have
054         * been transferred by a failed copy operation.
055         */
056        public long getTotalBytesTransferred()
057        {
058            return totalBytesTransferred;
059        }
060    
061        /**
062         * Returns the IOException responsible for the failure of a copy operation.
063         * @return The IOException responsible for the failure of a copy operation.
064         */
065        public IOException getIOException()
066        {
067            return ioException;
068        }
069    }