/** * If a metadata is deleted in profile, or the type is changed, the metadata should be removed in * image * * @throws Exception */ public void removeDeadMetadata() throws Exception { boolean update = false; Collection<ImageMetadata> mds = new ArrayList<ImageMetadata>(); try { for (ImageMetadata md : image.getMetadataSet().getMetadata()) { boolean isStatement = false; for (Statement st : profile.getStatements()) { if (st.getName().equals(md.getNamespace())) { isStatement = true; if (!st.getType().equals(md.getType().getURI())) { isStatement = false; } } } if (isStatement) mds.add(md); else update = true; } if (update) { ImageController imageController = new ImageController(sessionBean.getUser()); image.getMetadataSet().setMetadata(mds); List<Image> l = new ArrayList<Image>(); l.add(image); imageController.update(l); } } catch (Exception e) { /* this user has not the priviliges to update the image */ } }