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
> >
> > [email protected] 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]