if (payload.getType().equals(PayloadType.Source)) { setSourceId(payload.getId());
@Override public String getSourceId() { List<Map<String, Object>> files = getFileList(); if (files != null) { for (Map<String, Object> fileInfo : files) { if (PayloadType.Source.toString() .equals(fileInfo.get("payloadType"))) { sourceId = (String) fileInfo.get("pid"); } } } // mirror the legacy behavior of setting the first entry as the source // if none is specified... if (files != null && files.size() > 0) { sourceId = (String) files.get(0).get("pid"); } return sourceId; }
private void loadBlob() throws StorageException { if (BlobStoreClient.getClient().blobExists(BlobStoreClient.getContainerName(), location)) { blob = BlobStoreClient.getClient().getBlob(BlobStoreClient.getContainerName(), location); Map<String, String> userMetaData; try { userMetaData = getUserMetadata(blob); if (StringUtils.isNotEmpty(userMetaData.get(PAYLOAD_TYPE_KEY))) { setType(PayloadType.valueOf(userMetaData.get(PAYLOAD_TYPE_KEY))); } setLabel(userMetaData.get(LABEL_KEY)); setContentType(userMetaData.get(CONTENT_TYPE_KEY)); } catch (IOException e) { throw new StorageException("Failed to retrieve payload metadata", e); } } else { BlobStore blobStore = BlobStoreClient.getClient(); blob = blobStore.blobBuilder(location).build(); } }
props.setProperty("payloadType", getType().toString()); props.setProperty("label", getLabel()); props.setProperty("linked", String.valueOf(isLinked()));
public void setMetadataDoc(Document doc) { setId(doc.getString("pid")); setLinked(doc.getBoolean("linked", false)); setLabel(doc.getString("label")); setType(PayloadType.valueOf(doc.getString("payloadType"))); setContentType(doc.getString("contentType")); lastModified = doc.getDate("lastModified"); getBackend().setId(doc.getString("payloadId")); }
userMetadata.put(PAYLOAD_TYPE_KEY, getType().toString()); userMetadata.put(LABEL_KEY, getLabel()); userMetadata.put("linked", String.valueOf(isLinked()));
/***** * Find the MIME type to use at display time, giving first priority to the * preview payload, then to the source payload. * * @param indexerFormats The list of types so far allocated by the rules * script. * @param object The object being indexed. * @param preview The preview payload * @return String The MIME type to be used at display time. */ public String getDisplayMimeType(String[] indexerFormats, DigitalObject object, String preview) { // The source should be the first type given by the indexer String result = indexerFormats[0]; // Lets look for a preview payload if (preview != null) { try { Payload payload = object.getPayload(preview); PayloadType type = payload.getType(); if (type != null && type.equals(PayloadType.Preview)) { if (payload.getContentType() != null) { result = payload.getContentType(); } } } catch (StorageException ex) { log.error("Error accessing payload: '{}'", preview, ex); } } return result; }
public Map<String, Object> getMetadataDoc() { Document doc = new Document(); doc.append("pid", getId()); doc.append("linked", isLinked()); doc.append("label", getLabel()); doc.append("payloadType", getType().toString()); doc.append("oid", obj.oid); doc.append("contentType", getContentType()); doc.append("backend", backendType.toString()); doc.append("backend_type", getBackend().getType()); doc.append("payloadId", getPayloadId()); doc.append("lastModified", lastModified); System.out.println("Metadta doc now is:"); System.out.println(doc.toJson()); System.out.println("Adding backend metadata..."); Document backendMeta = getBackend().getMetadata(); if (backendMeta != null) { doc.append(getBackend().getId(), backendMeta); } System.out.println(doc.toJson()); return doc; }
private void buildManifest() throws StorageException { Map<String, Payload> manifest = getManifest(); BlobStore blobStore = BlobStoreClient.getClient(); Blob manifestBlob = blobStore.getBlob(BlobStoreClient.getContainerName(), getId() + "/object-manifest"); if (manifestBlob == null) { String manifestString = "{}"; manifestBlob = blobStore.blobBuilder(getId() + "/object-manifest").build(); manifestBlob.setPayload(manifestString); blobStore.putBlob(BlobStoreClient.getContainerName(), manifestBlob); } else { InputStreamReader isr; try { JsonSimple manifestObject = new JsonSimple(manifestBlob.getPayload().openStream()); if (manifestObject.getArray("items") != null) { for (Object itemObject : manifestObject.getArray("items")) { JsonObject item = (JsonObject) itemObject; String name = (String) item.get("name"); Payload payload = new BlobStorePayload(getId(), name); if (PayloadType.Source.equals(payload.getType())) { setSourceId(name); } manifest.put(name, payload); } } } catch (IOException e) { new StorageException("Failed to build manifest", e); } } }