package com.idega.content.repository.bean; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import org.apache.webdav.lib.WebdavResource; import org.apache.webdav.lib.WebdavResources; import com.idega.repository.bean.RepositoryItem; import com.idega.util.CoreConstants; import com.idega.util.StringUtil; public class WebDAVItem implements RepositoryItem { private String name, folder; private WebdavResource resource; public WebDAVItem(WebdavResource resource) { this(resource, null); } public WebDAVItem(WebdavResource resource, String folder) { this.resource = resource; this.folder = folder; } @Override public InputStream getInputStream() throws IOException { return resource.getMethodData(); } @Override public String getName() { if (StringUtil.isEmpty(name)) { String name = resource.getName(); if (name == null) { name = "unknown"; } if (name.endsWith(CoreConstants.SLASH)) { name = name.substring(0, name.lastIndexOf(CoreConstants.SLASH)); } if (name.startsWith(CoreConstants.WEBDAV_SERVLET_URI)) { name = name.replace(CoreConstants.WEBDAV_SERVLET_URI, CoreConstants.EMPTY); } if (!StringUtil.isEmpty(folder) && name.startsWith(folder)) { name = name.replace(folder, CoreConstants.EMPTY); } this.name = name; } return this.name; } @Override public long getLength() { return resource.getGetContentLength(); } @Override public boolean delete() throws IOException { return resource.deleteMethod(); } @Override public String toString() { return getClass().getSimpleName().concat(": ").concat(getName()); } @Override public boolean isDirectory() { return resource.getIsCollection(); } private List<WebDAVItem> children = null; @Override public List<WebDAVItem> getChildren() { if (children != null) { return children; } children = new ArrayList<WebDAVItem>(); try { WebdavResources resources = resource.getChildResources(); if (resources != null) { @SuppressWarnings("unchecked") Enumeration<WebdavResource> webDAVChildren = resources.getResources(); if (webDAVChildren != null) { while (webDAVChildren.hasMoreElements()) { WebdavResource child = webDAVChildren.nextElement(); if (child != null) { children.add(new WebDAVItem(child)); } } } } } catch (Exception e) { e.printStackTrace(); } return children; } }