package be.re.app.davbox; import be.re.webdav.Client; import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.w3c.dom.Document; import org.w3c.dom.Node; /** * Performs a search on Pincette. * @author Werner Donn\u00e9 */ public class PincettePlugin implements Plugin { private Set notSupported = new HashSet(); private static Document createQuery(long time) { Document document = be.re.webdav.Util.createReDocument("simple-search"); document.getDocumentElement().appendChild ( document.createElementNS(be.re.webdav.Constants.URI, "field") ).appendChild(document.createTextNode("getlastmodified")); document.getDocumentElement().appendChild ( document.createElementNS(be.re.webdav.Constants.URI, "op") ).appendChild(document.createTextNode(">")); document.getDocumentElement().appendChild ( document.createElementNS(be.re.webdav.Constants.URI, "value") ).appendChild ( document.createTextNode(be.re.util.Util.createTimestamp(time)) ); return document; } public long getInterval() { return 0; } public URL[] getModified(URL url, long lastSynchronization) throws IOException { if (notSupported.contains(url)) { return null; } Client client = new Client(); Client.Response response = client.report(url, createQuery(lastSynchronization), null, null); try { if ( response.getStatusCode() == 405 || response.getStatusCode() == 409 || response.getStatusCode() == 501 ) { notSupported.add(url); return null; } if (response.getStatusCode() == 207) { final List result = new ArrayList(); be.re.webdav.Util.readUrlList ( url, response, new be.re.webdav.Util.UrlHandler() { public boolean handle(URL href) { result.add(href); return true; } }, true ); return result.toArray(new URL[0]); } return null; } finally { response.close(); } } public static void main(String[] args) throws Exception { Plugins.register(new PincettePlugin()); } } // PincettePlugin