private Map<URI, Record> extractRelated(final Record record) throws Throwable { // TODO: this has to be done better using some Schema object final URI id = record.getID(); final URI type = record.getSystemType(); final Map<URI, Record> map = Maps.newHashMap(); if (type.equals(KS.RESOURCE)) { for (final URI mentionID : record.get(KS.HAS_MENTION, URI.class)) { map.put(mentionID, Record.create(mentionID, KS.MENTION).add(KS.MENTION_OF, id)); } } else if (type.equals(KS.MENTION)) { final URI resourceID = record.getUnique(KS.MENTION_OF, URI.class); if (resourceID != null) { map.put(resourceID, Record.create(resourceID, KS.RESOURCE).add(KS.HAS_MENTION, id)); } } else { // TODO: handle entities, axioms and contexts throw new Error("Unexpected type: " + type); } return map; }
final Record metadata = resource.getUnique(KS.STORED_AS, Record.class); if (metadata == null) { return null; final String fileName = metadata.getUnique(NFO.FILE_NAME, String.class); check(fileName != null, null, resourceID, "No filename stored for resource (!)"); final String fileTypeString = metadata.getUnique(NIE.MIME_TYPE, String.class); if (mimeTypes != null) { check(fileTypeString != null, Status.ERROR_NOT_ACCEPTABLE, resourceID, Data.mimeTypeToExtensions(transformToType), "bin"); final String name = MoreObjects.firstNonNull( metadata.getUnique(NFO.FILE_NAME, String.class, null), "download") + "." + ext; stream = transform(fileTypeString, transformToType, stream); meta.set(NIE.MIME_TYPE, transformToType); meta.set(NFO.FILE_NAME, name); meta.set(NFO.FILE_LAST_MODIFIED, metadata.getUnique(NFO.FILE_LAST_MODIFIED)); return representation;
final Record oldMetadata = resource.getUnique(KS.STORED_AS, Record.class); final Record metadata = representation.getMetadata(); metadata.setID(Data.getValueFactory().createURI(resourceID + "_file")); fileName = metadata.getUnique(NFO.FILE_NAME, String.class); String fileType = metadata.getUnique(NIE.MIME_TYPE, String.class); if (fileType != null) { try { deleteFileQuietly(oldMetadata.getUnique(NFO.FILE_NAME, String.class));