private String createDigitalObject(File file) throws HarvesterException, StorageException { String objectId; DigitalObject object; if (forceUpdate) { object = StorageUtils.storeFile(getStorage(), file, !forceLocalStorage); } else { String oid = StorageUtils.generateOid(file); String pid = StorageUtils.generatePid(file); object = getStorage().createObject(oid); if (forceLocalStorage) { try { object.createStoredPayload(pid, new FileInputStream(file)); } catch (FileNotFoundException ex) { throw new HarvesterException(ex); } } else { object.createLinkedPayload(pid, file.getAbsolutePath()); } } // update object metadata Properties props = object.getMetadata(); props.setProperty("render-pending", "true"); props.setProperty("file.path", FilenameUtils.separatorsToUnix(file.getAbsolutePath())); objectId = object.getId(); // Store rendition information if we have it String ext = FilenameUtils.getExtension(file.getName()); for (String chain : renderChains.keySet()) { Map<String, List<String>> details = renderChains.get(chain); if (details.get("fileTypes").contains(ext)) { storeList(props, details, "harvestQueue"); storeList(props, details, "indexOnHarvest"); storeList(props, details, "renderQueue"); } } object.close(); return objectId; }