}
}
public void save(Metadata metadata) {
try {
Folder parentFolder = metadata.getParent();
if (parentFolder == null) {
throw new IllegalArgumentException("Parent folder cannot be null");
} else if (parentFolder.getId() == null) {
throw new IllegalArgumentException("Parent folder needs to be saved first.");
}
String parentId = parentFolder.getId();
Session session = (Session) DatabaseUtil.getSingleton().getDaoSession();
Node parentNode = session.getNodeByUUID(parentId);
Node metadataNode;
for (Iterator it = parentFolder.getMetadatas().iterator(); it.hasNext(); ) {
Metadata currentMetadata = (Metadata) it.next();
if (currentMetadata.getName().equals(metadata.getName()) && currentMetadata.getId() != null) {
throw new IllegalArgumentException("This metadata already exists");
}
}
if (parentFolder.getMetadatas() != null ) {
Node metadatasNode = parentNode.getNode(NodesTypes.PREFIX + FolderDao.METADATAS_NODE_NAME);
metadataNode = metadatasNode.addNode(ISO9075.encode(metadata.getName()), metadata.getName());
} else {
throw new IllegalArgumentException("Metadata is not registered to a folder");
}