public static void mergeFeedDocument(Document doc,UUID id,Date created,Date modified)
{
boolean idDone = false;
boolean createdDone = false;
boolean modifiedDone = false;
Element feed = doc.getDocumentElement();
List<Child> toRemove = new ArrayList<Child>();
Element linkEdit = null;
for (Child c : feed) {
if (c instanceof Element) {
Element e = (Element)c;
if (e.getName().equals(ID_NAME)) {
idDone = true;
e.clear();
e.addCharacters("urn:uuid:"+id.toString());
/*
} else if (e.getName().equals(PUBLISHED_NAME) && created!=null) {
createdDone = true;
e.clear();
e.addCharacters(toXSDDate(created));
*/
} else if (e.getName().equals(LINK_NAME)) {
String rel = e.getAttributeValue("rel");
if ("edit".equals(rel)) {
linkEdit = e;
} else if ("self".equals(rel)) {
toRemove.add(e);
}
} else if (e.getName().equals(UPDATED_NAME)) {
modifiedDone = true;
e.clear();
e.addCharacters(toXSDDate(modified));
} else if (e.getName().equals(ENTRY_NAME)) {
toRemove.add(e);
}
}
}
if (!modifiedDone) {
feed.addElement(0,UPDATED_NAME).addCharacters(toXSDDate(modified));
}
/*
if (!createdDone && created!=null) {
feed.addElement(0,PUBLISHED_NAME).addCharacters(toXSDDate(created));
}
*/
if (!idDone) {
feed.addElement(0,ID_NAME).addCharacters("urn:uuid:"+id.toString());
}
feed.removeAll(toRemove);
if (linkEdit==null) {
linkEdit = feed.addElement(LINK_NAME);
}
linkEdit.setAttributeValue("rel","edit");
linkEdit.setAttributeValue("href","");
Element selfLink = feed.addElement(LINK_NAME);
selfLink.setAttributeValue("rel","self");
selfLink.setAttributeValue("href","");
}