/** * Reset the resource to an "new" status. The {@link #s3URL} is not reset, because it defines a * S3Resource */ @Override protected void reset() { super.reset(); this.s3Object = null; this.modifiedHeader = null; }
public void copy(Resource sourceDirectory, Resource targetDirectory, int level) throws ResourceException, IOException, URISyntaxException { // if (level > maxLevel) // return; // limit the crawler to a certain depth if (level >= countMaxLevel) countMaxLevel++; // count the deepest directory level System.out.println(sourceDirectory); // System.out.println(targetDirectory + File.separator); List<Resource> list = sourceDirectory.listResources(); // get the files of the resource directory if (!targetDirectory.isDirectory()) { if (!targetDirectory.isFile()) { targetDirectory = targetDirectory.createDirectoryResource(); } else throw new IIOException("Can't create target directory: " + targetDirectory); } // else everything is fine if (list != null) { for (Resource source : list) { // create the target Resource for later use Resource target = targetDirectory.getChildResource(source.getName()); if (source.isDirectory()) { /** Copy the Directory */ countDir++; copy(source, target, level + 1); } else { /** Copy the Resource */ if (!target.isFile()) { countResource++; countResourceTransfered++; System.out.println(source + " - copy"); InputStream in = source.getInputStream(); // if target supports metadata, write some if (target.supportsMetadata()) { target.setContentType(source.getContentType()); target.setMetadata(source.getMetadata()); } // extract the last modified timestamp from source long lm; final String key = "last-modified"; if (source.supportsSetLastModified()) lm = source.lastModified(); else if (source.containsKey(key)) lm = Long.valueOf(source.get(key)); else lm = source.lastModified(); // if target doesn't support to set last modified // store original timestamp in metadata if (target.supportsSetLastModified()) target.setLastModificationTime(lm); else if (target.supportsMetadata()) target.addMetadata(key, String.valueOf(lm)); // now write the metadata target.write(source.length(), in); } } } } }