CVS: TapestryBook/examples/src/examples/upload Upload.java,NONE,1.1 UploadResults.java,NONE,1.1

Howard Lewis Ship <[email protected]> Mon, 03 Mar 2003 17:13:12 -0800
Newsgroups gmane.comp.java.tapestry.cvs
Message-ID <[email protected]>
Update of /cvsroot/tapestry/TapestryBook/examples/src/examples/upload
In directory sc8-pr-cvs1:/tmp/cvs-serv3222/examples/src/examples/upload

Added Files:
	Upload.java UploadResults.java 
Log Message:
Add new examples for Upload and DatePicker.

--- NEW FILE: Upload.java ---
package examples.upload;

import net.sf.tapestry.IRequestCycle;
import net.sf.tapestry.IUploadFile;
import net.sf.tapestry.html.BasePage;

public abstract class Upload extends BasePage
{
    public abstract IUploadFile getFile();

    public void formSubmit(IRequestCycle cycle)
    {
        IUploadFile file = getFile();

        if (file == null)
            return;

        UploadResults next = (UploadResults) cycle.getPage("UploadResults");
        next.setFile(file);
        cycle.setPage(next);
    }
}

--- NEW FILE: UploadResults.java ---
package examples.upload;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.StringWriter;

import net.sf.tapestry.IMarkupWriter;
import net.sf.tapestry.IRender;
import net.sf.tapestry.IRequestCycle;
import net.sf.tapestry.IUploadFile;
import net.sf.tapestry.RequestCycleException;
import net.sf.tapestry.html.BasePage;
import net.sf.tapestry.util.io.BinaryDumpOutputStream;

public abstract class UploadResults extends BasePage
{
    public abstract void setFile(IUploadFile file);
    public abstract IUploadFile getFile();

    private static class ContentRenderer implements IRender
    {
        private IUploadFile _file;

        ContentRenderer(IUploadFile file)
        {
            _file = file;
        }

        public void render(IMarkupWriter writer, IRequestCycle cycle) throws RequestCycleException
        {
            try
            {
                StringWriter buffer = new StringWriter();
                BinaryDumpOutputStream out = new BinaryDumpOutputStream(buffer);

                out.setBytesPerLine(32);
                out.setShowAscii(true);

                InputStream in = _file.getStream();

                copy(in, out);

                in.close();
                out.close();

                writer.print(buffer.getBuffer().toString());

            }
            catch (IOException ex)
            {
                throw new RequestCycleException("Unable to generate binary dump.", null, ex);
            }
        }

        private void copy(InputStream in, OutputStream out) throws IOException
        {
            byte[] buffer = new byte[1000];

            while (true)
            {
                int length = in.read(buffer);

                if (length < 0)
                    return;

                out.write(buffer, 0, length);
            }
        }

    }

    public IRender getContentRenderer()
    {
        return new ContentRenderer(getFile());
    }
}



-------------------------------------------------------
This SF.net email is sponsored by: Etnus, makers of TotalView, The debugger 
for complex code. Debugging C/C++ programs can leave you feeling lost and 
disoriented. TotalView can help you find your way. Available on major UNIX 
and Linux platforms. Try it free. www.etnus.com