Thanks Jasha!

Shall I copy/paste your code in my project and try it out?

On Mon, Dec 14, 2009 at 3:49 PM, Jasha Joachimsthal <
[email protected]> wrote:

> 2009/12/14 Maurizio Pillitu <[email protected]>
>
> > Hi everyone,
> > I was following the HST1 tutorial on how to upload content
> >
> >
> >
> http://hst.hippocms.org/technical-documentation/building-a-JSP-front-end/examples/user-generated/comments.html
> >
> > It seems fairly easy, but I'm missing the mentioned classes:
> >
> > import nl.hippo.client.api.upload.WebdavUploadable;
> >
> > import nl.hippo.client.api.upload.UploadContext;
> >
> >
> Hmm I guess we've documented this feature before even adding it to the HST
> ;-)
> I found some matching classes in a project:
>
> WebdavUploadable:
> package nl.hippo.client.api.upload;
>
> import java.io.InputStream;
> import nl.hippo.client.api.content.Property;
>
> public interface WebdavUploadable {
>  /**
>  * getInputStream() specifies how this WebdavUploadable generates an
>  * InputStream. This is needed by the WebdavUploader to
>  * put objects in the repository.
>  *
>  * @return a new InputStream
>  */
>  public InputStream getInputStream();
>  /**
>  * A WebdavUploadable document must be able to return it's document
>  * type. This is needed in the uploading process for the CMS to
>  * recognize it as a valid document.
>  *
>  * @return a document type
>  */
> public Property getDocumentType();
> }
>
>
>
> UploadContext
> package nl.hippo.client.api.upload;
>
> import javax.servlet.http.HttpServletResponse;
>
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
>
> import nl.hippo.client.api.ClientException;
> import nl.hippo.client.api.content.DocumentPath;
> import nl.hippo.client.api.service.WebdavService;
> import nl.hippo.client.webdav.WebdavConfig;
> import nl.hippo.client.webdav.service.WebdavServiceImpl;
>
> public abstract class UploadContext {
>    private final static Log log = LogFactory.getLog(UploadContext.class);
>
>    private WebdavService service;
>    private DocumentPath rootFolder;
>    private DocumentPath documentFolder;
>    private DocumentPath documentTarget;
>    private String[] folders;
>
>    public UploadContext() {
>
>    }
>
>    /**
>     * This constructor creates an UploadContext object with a configuration
>     * specified in the WebdavConfig object
>     *
>     * @param config contains the repository configuration
>     */
>    public UploadContext(WebdavConfig config, String folder, String
> documentName) {
>        service = getWebdavService(config);
>        rootFolder = service.getBasePath();
>        documentFolder = service.getBasePath().createRelativePath(folder);
>        documentTarget = service.getBasePath().createRelativePath(folder +
> documentName);
>        folders = folder.split("/");
>    }
>
>    /**
>     * This constructor creates an UploadContext object with a
>     * given webdav service
>     *
>     * @param webdav service to use for uploading
>     */
>    public UploadContext(WebdavService webdavService, String folder, String
> documentName) {
>        service = webdavService;
>        rootFolder = service.getBasePath();
>        documentFolder = service.getBasePath().createRelativePath(folder);
>        documentTarget = service.getBasePath().createRelativePath(folder +
> documentName);
>        folders = folder.split("/");
>    }
>
>    public DocumentPath getRootFolder() {
>        return rootFolder;
>    }
>
>    public DocumentPath getDocumentFolder() {
>        return documentFolder;
>    }
>
>    public DocumentPath getDocumentTarget() {
>        return documentTarget;
>    }
>
>    public WebdavService getWebdavService(WebdavConfig config) {
>        return new WebdavServiceImpl(config);
>    }
>
>    public WebdavService getWebdavService() {
>        return service;
>    }
>
>    public void createFolder(DocumentPath path) throws ClientException {
>        service.executeMkCol(path);
>    }
>
>    public void createPath() throws ClientException {
>        String path = "";
>        int i = 0;
>        int index = 0;
>        int repositoryResponseCode = 0;
>
>        while (i < folders.length) {
>
>            while (index < i) {
>                // Get the folders that come before this one
>                path += folders[index] + "/";
>                index++;
>            }
>            // Reset index
>            index = 0;
>
>            path += folders[i];
>            DocumentPath newPath = rootFolder.createRelativePath(path);
>            int headResponse = 0;
>            try {
>                headResponse = service.executeHead(newPath);
>            } catch(Exception e) {
>                log.warn("Head: " + e.getLocalizedMessage());
>            }
>            if( headResponse == HttpServletResponse.SC_NOT_FOUND ||
> headResponse == 0 ) {
>                repositoryResponseCode = service.executeMkCol(newPath);
>            } else {
>                log.info("Path " + path + " not created.");
>            }
>
>            if (repositoryResponseCode >= 400) {
>                throw new ClientException("Couldn't create folder structure
> '" + path + "'");
>            }
>            // Reset path
>            path = "";
>            i++;
>        }
>    }
>
>    /**
>     * This method creates a folder structure for a specific
>     * application. Different implementations of the class may
>     * use different folder structures.
>     *
>     * @param documentName is a documentName that the UploadContext
>     * has to create a folder structure for.
>     *
>     * @return a String representing a folder structure.
>     */
>    public abstract String createFolderStructure(String documentName);
> }
> ********************************************
> Hippocms-dev: Hippo CMS development public mailinglist
>
> Searchable archives can be found at:
> MarkMail: http://hippocms-dev.markmail.org
> Nabble: http://www.nabble.com/Hippo-CMS-f26633.html
>
>


-- 

Met vriendelijke groet,
-- 
Maurizio Pillitu - 0031 (0)615655668
Opensource Software Engineer
Scrum Certified Master - http://www.scrumalliance.org
Sourcesense - making sense of Open Source: http://www.sourcesense.com
********************************************
Hippocms-dev: Hippo CMS development public mailinglist

Searchable archives can be found at:
MarkMail: http://hippocms-dev.markmail.org
Nabble: http://www.nabble.com/Hippo-CMS-f26633.html

Reply via email to