/** * Helper method to open an identification request. */ private void openIdentificationRequest(File file) { try { URI resourceUri = file.toURI(); RequestMetaData metadata = new RequestMetaData(file.length(), file.lastModified(), file.getName()); RequestIdentifier requestIdentifier = new RequestIdentifier(resourceUri); identificationRequest = new FileSystemIdentificationRequest(metadata, requestIdentifier); FileInputStream inputStream = new FileInputStream(file); identificationRequest.open(inputStream); } catch (Exception e) { log.error("Could not open identification request.", e); } }
/** * Create new identification request instance. * @param requestMetaData a * @param identifier a * @param tempDir a */ public RarIdentificationRequest(final RequestMetaData requestMetaData, final RequestIdentifier identifier, final Path tempDir) { this.fileName = requestMetaData.getName(); this.extension = ResourceUtils.getExtension(fileName); this.requestMetaData = requestMetaData; this.identifier = identifier; this.requestMetaData.getSize(); this.tempDir = tempDir; this.size = requestMetaData.getSize(); }
private void generateHash(IdentificationRequest request) throws IOException { if (generateHash) { try { InputStream in = request.getSourceInputStream(); try { String hash = hashGenerator.hash(in); request.getRequestMetaData().setHash(hash); } finally { if (in != null) { in.close(); } } //CHECKSTYLE:OFF - generating a hash can't prejudice any other results } catch (Exception e) { log.error(e.getMessage(), e); } //CHECKSTYLE:ON } }
node.setNoFormatsIdentified(); RequestMetaData requestMetaData = request.getRequestMetaData(); metaData.setName(requestMetaData.getName()); metaData.setSize(requestMetaData.getSize()); metaData.setExtension(request.getExtension()); metaData.setLastModified(request.getRequestMetaData().getTime()); metaData.setHash(requestMetaData.getHash());
metaData.setLastModified(requestMetaData.getTime()); metaData.setSize(results.getFileLength()); metaData.setName(requestMetaData.getName()); metaData.setExtension(ResourceUtils.getExtension(requestMetaData.getName())); metaData.setResourceType(results.isArchive() ? ResourceType.CONTAINER : ResourceType.FILE); metaData.setHash(requestMetaData.getHash());
/** * {@inheritDoc} */ @Override public ResourceId handleDirectory(IdentificationResult result, ResourceId parentId, boolean restricted) { final URI uri = result.getIdentifier().getUri(); //log.debug(String.format("handling directory [%s]", uri)); ProfileResourceNode node = new ProfileResourceNode(uri); RequestMetaData requestMetaData = result.getMetaData(); NodeMetaData metaData = new NodeMetaData(); metaData.setName(requestMetaData.getName()); metaData.setSize(null); metaData.setLastModified(requestMetaData.getTime()); metaData.setIdentificationMethod(IdentificationMethod.NULL); metaData.setNodeStatus(restricted ? NodeStatus.ACCESS_DENIED : NodeStatus.DONE); metaData.setResourceType(ResourceType.FOLDER); node.setMetaData(metaData); node.setFinished(new Date()); node.addFormatIdentification(Format.NULL); resultHandlerDao.save(node, parentId); progressMonitor.stopJob(node); return new ResourceId(node.getId(), node.getPrefix()); }
public InputStreamIdentificationRequest(RequestMetaData metaData, RequestIdentifier identifier, InputStream in) { this.metaData = metaData; this.fileName = metaData.getName(); this.extension = ResourceUtils.getExtension(fileName); this.identifier = identifier; try { this.size = in.available(); } catch (IOException e) { e.printStackTrace(); } // Init the reader: this.isReader = new InputStreamByteReader(new CloseShieldInputStream(in)); }
node.setNoFormatsIdentified(); RequestMetaData requestMetaData = request.getRequestMetaData(); metaData.setName(requestMetaData.getName()); metaData.setSize(requestMetaData.getSize()); metaData.setExtension(request.getExtension()); metaData.setLastModified(request.getRequestMetaData().getTime()); metaData.setHash(requestMetaData.getHash());
metaData.setLastModified(requestMetaData.getTime()); metaData.setSize(results.getFileLength()); metaData.setName(requestMetaData.getName()); metaData.setExtension(ResourceUtils.getExtension(requestMetaData.getName())); metaData.setResourceType(results.isArchive() ? ResourceType.CONTAINER : ResourceType.FILE); metaData.setHash(requestMetaData.getHash());
/** * {@inheritDoc} */ @Override public ResourceId handleDirectory(IdentificationResult result, ResourceId parentId, boolean restricted) { final URI uri = result.getIdentifier().getUri(); //log.debug(String.format("handling directory [%s]", uri)); ProfileResourceNode node = new ProfileResourceNode(uri); RequestMetaData requestMetaData = result.getMetaData(); NodeMetaData metaData = new NodeMetaData(); metaData.setName(requestMetaData.getName()); metaData.setSize(null); metaData.setLastModified(requestMetaData.getTime()); metaData.setIdentificationMethod(IdentificationMethod.NULL); metaData.setNodeStatus(restricted ? NodeStatus.ACCESS_DENIED : NodeStatus.DONE); metaData.setResourceType(ResourceType.FOLDER); node.setMetaData(metaData); node.setFinished(new Date()); node.addFormatIdentification(Format.NULL); resultHandlerDao.save(node, parentId); progressMonitor.stopJob(node); return new ResourceId(node.getId(), node.getPrefix()); }
/** * Submits a request for a single file to droid. * @param webArchiveType arc or warc * @param metaData file size, time and name * @param parentName the name of the parent file * @param payload the file input stream * @param correlationId the correlation Id for the request * @param originatorNodeId the Id of the originator node * @throws IOException if the input stream could not be read */ final void submit(String webArchiveType, RequestMetaData metaData, URI parentName, InputStream payload, ResourceId correlationId, long originatorNodeId) throws IOException { RequestIdentifier identifier = new RequestIdentifier(ArchiveFileUtils.toWebArchiveUri(webArchiveType, parentName, metaData.getName())); identifier.setAncestorId(originatorNodeId); identifier.setParentResourceId(correlationId); IdentificationRequest request = factory.newRequest(metaData, identifier); request.open(payload); // get the inputstream back from the record, and write it out to file droidCore.submit(request); }
/** * Submits a request to droid. * @param entry the arc entry to submit * @param entryName the name of the entry * @param parentName the name of the parent file * @param in the archive input stream * @param correlationId the correlation Id for the request * @param originatorNodeId the Id of the originator node * @throws IOException if the input stream could not be read */ final void submit(WarcRecord entry, String entryName, URI parentName, InputStream in, ResourceId correlationId, long originatorNodeId) throws IOException { WarcHeader header = entry.header; long size = header.contentLength; Date time = header.warcDate; RequestMetaData metaData = new RequestMetaData( size == -1 ? null : size, time == null ? null : time.getTime(), entryName); super.submit(WEB_ARCHIVE_TYPE, metaData, parentName, entry.getPayloadContent(), correlationId, originatorNodeId); }
/** * Create new identification request instance. * @param requestMetaData a * @param identifier a * @param tempDir a */ public RarIdentificationRequest(RequestMetaData requestMetaData, RequestIdentifier identifier, File tempDir) { this.fileName = requestMetaData.getName(); this.extension = ResourceUtils.getExtension(fileName); this.requestMetaData = requestMetaData; this.identifier = identifier; this.requestMetaData.getSize(); this.tempDir = tempDir; this.size = requestMetaData.getSize(); }
/** * Submits a request for a single file to droid. * @param webArchiveType arc or warc * @param metaData file size, time and name * @param parentName the name of the parent file * @param payload the file input stream * @param correlationId the correlation Id for the request * @param originatorNodeId the Id of the originator node * @throws IOException if the input stream could not be read */ final void submit(String webArchiveType, RequestMetaData metaData, URI parentName, InputStream payload, ResourceId correlationId, long originatorNodeId) throws IOException { RequestIdentifier identifier = new RequestIdentifier(ArchiveFileUtils.toWebArchiveUri(webArchiveType, parentName, metaData.getName())); identifier.setAncestorId(originatorNodeId); identifier.setParentResourceId(correlationId); IdentificationRequest request = factory.newRequest(metaData, identifier); request.open(payload); // get the inputstream back from the record, and write it out to file droidCore.submit(request); }
private void generateHash(IdentificationRequest request) throws IOException { if (generateHash) { try { InputStream in = request.getSourceInputStream(); try { String hash = hashGenerator.hash(in); request.getRequestMetaData().setHash(hash); } finally { if (in != null) { in.close(); } } //CHECKSTYLE:OFF - generating a hash can't prejudice any other results } catch (Exception e) { log.error(e); } //CHECKSTYLE:ON } }
/** * Submits a request to droid. * @param entry the arc entry to submit * @param entryName the name of the entry * @param parentName the name of the parent file * @param in the archive input stream * @param correlationId the correlation Id for the request * @param originatorNodeId the Id of the originator node * @throws IOException if the input stream could not be read */ final void submit(WarcRecord entry, String entryName, URI parentName, InputStream in, ResourceId correlationId, long originatorNodeId) throws IOException { WarcHeader header = entry.header; long size = header.contentLength; Date time = header.warcDate; RequestMetaData metaData = new RequestMetaData( size == -1 ? null : size, time == null ? null : time.getTime(), entryName); super.submit(WEB_ARCHIVE_TYPE, metaData, parentName, entry.getPayloadContent(), correlationId, originatorNodeId); }
/** * Constructs a new identification request. * @param metaData the metaData about the binary. * @param identifier the request's identifier */ public FileSystemIdentificationRequest(final RequestMetaData metaData, final RequestIdentifier identifier) { this.identifier = identifier; requestMetaData = metaData; size = metaData.getSize(); fileName = metaData.getName(); extension = ResourceUtils.getExtension(fileName); }
private ResourceId submitDirectory(String path, long lastModifiedTime) throws URISyntaxException, UnsupportedEncodingException { String parentPath = FilenameUtils.getPath(path.substring(0, path.length() - 1)); String name = FilenameUtils.getName(path.substring(0, path.length() - 1)); log.debug("processing path: " + path + " name: " + name); ResourceId resourceId = directories.get(name); if (resourceId == null) { ResourceId parentID = directories.get(parentPath); if (parentID == null) { parentID = submitDirectory(parentPath, lastModifiedTime); } RequestMetaData metaData = new RequestMetaData(null, lastModifiedTime, name); RequestIdentifier identifier = new RequestIdentifier(ArchiveFileUtils.toIsoImageUri(isoFileUri, path)); IdentificationResultImpl result = new IdentificationResultImpl(); result.setRequestMetaData(metaData); result.setIdentifier(identifier); resourceId = resultHandler.handleDirectory(result, parentID, false); this.directories.put(path, resourceId); } return resourceId; }
/** * @param metaData the request meta data * @param identifier the request identifier * @param tempDir the location to write temp files. */ public WebArchiveEntryIdentificationRequest(RequestMetaData metaData, RequestIdentifier identifier, File tempDir) { this.identifier = identifier; this.size = metaData.getSize(); this.fileName = metaData.getName(); this.extension = ResourceUtils.getExtension(fileName); this.tempDir = tempDir; this.requestMetaData = metaData; }
private ResourceId submitDirectory(String path, long lastModifiedTime) throws URISyntaxException, UnsupportedEncodingException { String parentPath = FilenameUtils.getPath(path.substring(0, path.length() - 1)); String name = FilenameUtils.getName(path.substring(0, path.length() - 1)); log.debug("processing path: " + path + " name: " + name); ResourceId resourceId = directories.get(name); if (resourceId == null) { ResourceId parentID = directories.get(parentPath); if (parentID == null) { parentID = submitDirectory(parentPath, lastModifiedTime); } RequestMetaData metaData = new RequestMetaData(null, lastModifiedTime, name); RequestIdentifier identifier = new RequestIdentifier(ArchiveFileUtils.toIsoImageUri(isoFileUri, path)); IdentificationResultImpl result = new IdentificationResultImpl(); result.setRequestMetaData(metaData); result.setIdentifier(identifier); resourceId = resultHandler.handleDirectory(result, parentID, false); this.directories.put(path, resourceId); } return resourceId; }