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
