@Override public void annotationBoundary(AnnotationBoundaryMap map) { ProtocolDocumentOperation.Component.AnnotationBoundary.Builder a = ProtocolDocumentOperation.Component.AnnotationBoundary.newBuilder(); if (map.endSize() == 0 && map.changeSize() == 0) { a.setEmpty(true); } else { for (int i = 0; i < map.endSize(); i++) { a.addEnd(map.getEndKey(i)); } for (int i = 0; i < map.changeSize(); i++) { a.addChange(makeKeyValueUpdate( map.getChangeKey(i), map.getOldValue(i), map.getNewValue(i))); } } output.addComponent(newComponentBuilder().setAnnotationBoundary(a.build()).build()); }
@Override public void replaceAttributes(Attributes oldAttributes, Attributes newAttributes) { ProtocolDocumentOperation.Component.ReplaceAttributes.Builder r = ProtocolDocumentOperation.Component.ReplaceAttributes.newBuilder(); if (oldAttributes.isEmpty() && newAttributes.isEmpty()) { r.setEmpty(true); } else { for (String name : oldAttributes.keySet()) { r.addOldAttribute(ProtocolDocumentOperation.Component.KeyValuePair.newBuilder() .setKey(name).setValue(oldAttributes.get(name)).build()); } for (String name : newAttributes.keySet()) { r.addNewAttribute(ProtocolDocumentOperation.Component.KeyValuePair.newBuilder() .setKey(name).setValue(newAttributes.get(name)).build()); } } output.addComponent(newComponentBuilder().setReplaceAttributes(r.build()).build()); }
@Override public void deleteCharacters(String characters) { output.addComponent(newComponentBuilder().setDeleteCharacters(characters).build()); }
@Override public void deleteElementEnd() { output.addComponent(newComponentBuilder().setDeleteElementEnd(true).build()); }
@Override public void elementEnd() { output.addComponent(newComponentBuilder().setElementEnd(true).build()); }
@Override public void characters(String characters) { output.addComponent(newComponentBuilder().setCharacters(characters).build()); }
@Override public void retain(int itemCount) { output.addComponent(newComponentBuilder().setRetainItemCount(itemCount).build()); }
@Override public void updateAttributes(AttributesUpdate attributes) { ProtocolDocumentOperation.Component.UpdateAttributes.Builder u = ProtocolDocumentOperation.Component.UpdateAttributes.newBuilder(); if (attributes.changeSize() == 0) { u.setEmpty(true); } else { for (int i = 0; i < attributes.changeSize(); i++) { u.addAttributeUpdate(makeKeyValueUpdate( attributes.getChangeKey(i), attributes.getOldValue(i), attributes.getNewValue(i))); } } output.addComponent(newComponentBuilder().setUpdateAttributes(u.build()).build()); }
@Override public void deleteElementStart(String type, Attributes attributes) { ProtocolDocumentOperation.Component.ElementStart e = makeElementStart(type, attributes); output.addComponent(newComponentBuilder().setDeleteElementStart(e).build()); }
@Override public void elementStart(String type, Attributes attributes) { ProtocolDocumentOperation.Component.ElementStart e = makeElementStart(type, attributes); output.addComponent(newComponentBuilder().setElementStart(e).build()); }