Frank, I probably should have said that the NAMES of the first three
classes should be mapped to their present counterparts.


Jack


On Thu, 10 Mar 2005 23:26:57 -0800, Dakota Jack <[EMAIL PROTECTED]> wrote:
> Hello, Frank,
> 
> If you don't mind, I would like to talk to you a bit about what you
> think is needed, so that I can be effective.  Essentially the code is
> an attempt to do two things:
> 
> 1.  Show how a slight change which can be made consistent with past
> upload code in Struts can make life good for people who want to code
> their own upload application.
> 
> 2.  Show how such an application might look, so that the idea of the
> changes makes sense.
> 
> Part One (1) involves the first three interfaces which replace the
> present code and provide interfaces the present code can live with.  I
> assume taht these interfaces are so obvious that comments are not too
> necessary with them.
> 
> public interface MultipartFile
>     extends Serializable {
>   public long        getSize();
>   public void        setSize(long fileSize);
>   public String      getName();
>   public void        setName(String fileName);
>   public String      getContentType();
>   public void        setContentType(String fileContentType);
>   public byte[]      getData();
>   public InputStream getInputStream();
>   public void        reset();
> }
> 
> public interface MultipartData {
>   public Iterator getParameterNames();
>   public String   getParameter(String name);
>   public String[] getParameterValues(String name);
>   public Map      getFiles();
> }
> 
> public interface MultipartHandler {
>   public void          handleRequest(Object [] params) throws IOException;
>   public ActionMapping getMapping();
>   public void          setMapping(ActionMapping mapping);
>   public ActionServlet getServlet();
>   public void          setServlet(ActionServlet servlet);
> }
> 
> The first part of the Second Part (2) is more complicated, but the
> only classes of any import are just implementations of the rather
> obvious interfaces.  The second part of the Second Part (2) is much
> more complicated and cannot really be understood without the rest of
> the application.  This is not too important except for showing how an
> Upload class that acts as the glue between the upload application and
> the Struts framework might look.  I want access to ActionForm so that
> I can use the ActionForm in the application that feeds the Upload
> class and so that Monitor subclasses can have a framework basis to
> return data too.
> 
> Given this, what do you think would be helpful to you?  Keep it in
> mind that my goal is not to focus on the applicatoin at present but on
> the proposed opening up of the Struts framework.  I can code this on
> my own and use it, but I would rather it were possible for others to
> also provide sample applicatoins.
> 
> Is this helpful?
> 
> Jack
> 
> 
> On Fri, 11 Mar 2005 00:25:41 -0500, Frank W. Zammetti
> <[EMAIL PROTECTED]> wrote:
> > Jack, one comment on this... I think it would be helpful to comment the
> > code you've posted.
> >
> > Frank
> >
> > dev@struts.apache.org wrote:
> > >    Date: 2005-03-10T21:20:10
> > >    Editor: DakotaJack
> > >    Wiki: Apache Struts Wiki
> > >    Page: StrutsUpload
> > >    URL: http://wiki.apache.org/struts/StrutsUpload
> > >
> > >    no comment
> > >
> > > Change Log:
> > >
> > > ------------------------------------------------------------------------------
> > > @@ -70,10 +70,13 @@
> > >   3.  !UploadFileItemFactory (extends 
> > > org.apache.commons.fileupload.!DefaultFileItemFactory)
> > >   4.  Monitor
> > >   5.  Upload
> > > + 6.  !UploadParams
> > >
> > >  == Code ==
> > >
> > > -=== MultipartFile ===
> > > +=== Framework Code ===
> > > +
> > > +==== MultipartFile ====
> > >
> > >  {{{
> > >  public interface MultipartFile
> > > @@ -90,7 +93,7 @@
> > >  }
> > >  }}}
> > >
> > > -=== MultipartData ===
> > > +==== MultipartData ====
> > >
> > >  {{{
> > >  public interface MultipartData {
> > > @@ -101,7 +104,7 @@
> > >  }
> > >  }}}
> > >
> > > -=== MultipartHandler ===
> > > +==== MultipartHandler ====
> > >
> > >  {{{
> > >  public interface MultipartHandler {
> > > @@ -113,7 +116,7 @@
> > >  }
> > >  }}}
> > >
> > > -=== MultipartUtil ===
> > > +==== MultipartUtil ====
> > >
> > >  {{{
> > >  public class MultipartUtil {
> > > @@ -138,7 +141,9 @@
> > >  }
> > >  }}}
> > >
> > > -=== UploadMultipartFile ===
> > > +=== Framework Code Sample Implementation ===
> > > +
> > > +==== UploadMultipartFile ====
> > >
> > >  {{{
> > >  public class UploadMultipartFile
> > > @@ -230,7 +235,7 @@
> > >  }
> > >  }}}
> > >
> > > -=== UploadMultipartData ===
> > > +==== UploadMultipartData ====
> > >
> > >  {{{
> > >  public class UploadMultipartData
> > > @@ -313,7 +318,7 @@
> > >  }
> > >  }}}
> > >
> > > -=== UploadMultipartHandler ===
> > > +==== UploadMultipartHandler ====
> > >
> > >  {{{
> > >  public class UploadMultipartHandler
> > > @@ -423,7 +428,10 @@
> > >  }
> > >  }}}
> > >
> > > -=== UploadOutputStream ===
> > > +
> > > +=== Sample Application Code Pieces ===
> > > +
> > > +==== UploadOutputStream ====
> > >
> > >
> > >  {{{
> > > @@ -454,7 +462,7 @@
> > >  }
> > >  }}}
> > >
> > > -=== UploadFileItem ===
> > > +==== UploadFileItem ====
> > >
> > >  {{{
> > >  public class UploadFileItem
> > > @@ -661,7 +669,7 @@
> > >  }
> > >  }}}
> > >
> > > -=== UploadFileItemFactory ===
> > > +==== UploadFileItemFactory ====
> > >
> > >  {{{
> > >  public class UploadFileItemFactory
> > > @@ -704,7 +712,7 @@
> > >  }
> > >  }}}
> > >
> > > -=== Monitor ===
> > > +==== Monitor ====
> > >
> > >  {{{
> > >  public interface Monitor {
> > > @@ -714,7 +722,7 @@
> > >  }
> > >  }}}
> > >
> > > -=== Upload ===
> > > +==== Upload ====
> > >
> > >  {{{
> > >  public class Upload {
> > > @@ -1111,6 +1119,89 @@
> > >        return excluded = false;
> > >      }
> > >      return excluded;
> > > +  }
> > > +}
> > > +}}}
> > > +
> > > +==== UploadParams ====
> > > +
> > > +{{{
> > > +public class UploadParams
> > > +    implements Serializable {
> > > +
> > > +  private String fileName;
> > > +  private String uploadStatus;
> > > +  private long   fileSize;    // file size
> > > +  private String contentType;
> > > +  private String filePath;    // store location
> > > +  private String storeType;   // store storeType
> > > +  private String overwriteFileName;
> > > +  private String fileExt;
> > > +  private String overwriteFileExt;
> > > +
> > > +  public UploadParams(String fileName,
> > > +                      String uploadStatus,
> > > +                      long   fileSize,
> > > +                      String contentType,
> > > +                      String storeType,
> > > +                      String filePath,
> > > +                      String overwriteFileName) {
> > > +    this.fileName          = fileName;
> > > +    this.uploadStatus      = uploadStatus;
> > > +    this.fileSize          = fileSize;
> > > +    this.contentType       = contentType;
> > > +    this.storeType         = storeType;
> > > +    this.filePath          = filePath;
> > > +    this.overwriteFileName = overwriteFileName;
> > > +
> > > +    if(fileName != null) {
> > > +      int j = fileName.lastIndexOf(".");
> > > +      if(j != -1)
> > > +        fileExt = fileName.substring(j + 1, fileName.length());
> > > +    }
> > > +
> > > +    if(overwriteFileName != null) {
> > > +      int k = overwriteFileName.lastIndexOf(".");
> > > +      if(k != -1) {
> > > +        overwriteFileExt = overwriteFileName.substring(k + 1, 
> > > overwriteFileName.length());
> > > +      }
> > > +    }
> > > +  }
> > > +
> > > +  public String getContentType() {
> > > +    return contentType;
> > > +  }
> > > +
> > > +  public String getFileExt() {
> > > +    return fileExt;
> > > +  }
> > > +
> > > +  public String getFileName() {
> > > +    return fileName;
> > > +  }
> > > +
> > > +  public String getFilePath() {
> > > +    return filePath;
> > > +  }
> > > +
> > > +  public long getFileSize() {
> > > +    return fileSize;
> > > +  }
> > > +
> > > +  public String getOverwriteFileExt() {
> > > +    return overwriteFileExt;
> > > +  }
> > > +
> > > +  public String getOverwriteFileName() {
> > > +    return overwriteFileName;
> > > +  }
> > > +
> > > +  public String getStoreType() {
> > > +    return storeType;
> > > +  }
> > > +
> > > +  public String getUploadStatus() {
> > > +    return uploadStatus;
> > >    }
> > >  }
> > >  }}}
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> > >
> > >
> > >
> > >
> >
> > --
> > Frank W. Zammetti
> > Founder and Chief Software Architect
> > Omnytex Technologies
> > http://www.omnytex.com
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> 
> --
> "You can lead a horse to water but you cannot make it float on its back."
> ~Dakota Jack~
> 


-- 
"You can lead a horse to water but you cannot make it float on its back."
~Dakota Jack~

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to