/** * removeLink * * <p>Remove the specified link with the object * * <pre> * Version Date Developer Description * 0.21 22/10/2012 Genevieve Turner(GT) Initial * 0.23 26/11/2012 Genevieve Turner (GT) Added the removal of reverse links * </pre> * * @param fedoraObject The fedoraObject to remove an association with * @param linkType The relationship type to remove * @param itemId The item to remove the relationship from * @throws FedoraClientException * @see * au.edu.anu.datacommons.security.service.FedoraObjectService#removeLink(au.edu.anu.datacommons.data.db.model.FedoraObject, * java.lang.String, java.lang.String) */ @Override public void removeLink(FedoraObject fedoraObject, String linkType, String itemId) throws FedoraClientException { String link = GlobalProps.getProperty(GlobalProps.PROP_FEDORA_RELATEDURI); LinkTypeDAO linkTypeDAO = new LinkTypeDAOImpl(); LinkType linkTypeRecord = linkTypeDAO.getByCode(linkType); if (null == linkTypeRecord) { throw new WebApplicationException( Response.status(400).entity("Invalid relation type").build()); } FedoraReference reference = new FedoraReference(); String referenceType = linkType; String referenceItem = itemId; reference.setPredicate_(link + referenceType); reference.setObject_(referenceItem); reference.setIsLiteral_(Boolean.FALSE); LOGGER.debug( "Item: {}, Predicate: {}, Object: {}", new Object[] { fedoraObject.getObject_id(), reference.getPredicate_(), reference.getObject_() }); FedoraBroker.removeRelationship(fedoraObject.getObject_id(), reference); if (referenceItem.startsWith("info:fedora/")) { String referenceItemID = referenceItem.substring(12); FedoraReference reverseReference = new FedoraReference(); reverseReference.setPredicate_(link + linkTypeRecord.getReverse()); reverseReference.setObject_("info:fedora/" + fedoraObject.getObject_id()); reverseReference.setIsLiteral_(Boolean.FALSE); LOGGER.debug( "Item: {}, Predicate: {}, Object: {}", new Object[] { referenceItemID, reverseReference.getPredicate_(), reverseReference.getObject_() }); FedoraBroker.removeRelationship(referenceItemID, reverseReference); } }