[New] Using visitor pattern to perform DOM actions

This commit is contained in:
Robert von Burg 2013-12-23 01:54:07 +01:00
parent c76d6cebc4
commit a0d4f2587e
4 changed files with 12 additions and 35 deletions

View File

@ -126,10 +126,4 @@ public abstract class AbstractDao<T extends StrolchElement> implements StrolchDa
public void removeAll(List<T> objects) {
this.tx.getObjectDao().removeAll(objects);
}
@Override
public void remove(String type, String id) {
IdOfSubTypeRef objectRef = this.tx.getObjectRefCache().getIdOfSubTypeRef(getClassType(), type, id);
this.tx.getObjectDao().removeById(objectRef);
}
}

View File

@ -32,7 +32,6 @@ public class XmlStrolchTransaction implements StrolchTransaction {
private boolean suppressUpdates;
private PersistenceTransaction tx;
private TransactionCloseStrategy closeStrategy;
private TransactionResult txResult;
public XmlStrolchTransaction(PersistenceTransaction tx) {
this.suppressUpdates = false;
@ -75,18 +74,18 @@ public class XmlStrolchTransaction implements StrolchTransaction {
@Override
public void autoCloseableCommit() {
TransactionResult txResult = new TransactionResult();
if (!this.suppressUpdates && this.observerHandler != null) {
this.txResult = new TransactionResult();
this.tx.setTransactionResult(this.txResult);
this.tx.setTransactionResult(txResult);
}
this.tx.autoCloseableCommit();
if (!this.suppressUpdates && this.observerHandler != null) {
Set<String> keys = this.txResult.getKeys();
Set<String> keys = txResult.getKeys();
for (String key : keys) {
ModificationResult modificationResult = this.txResult.getModificationResult(key);
ModificationResult modificationResult = txResult.getModificationResult(key);
this.observerHandler.add(key, modificationResult.<StrolchElement> getCreated());
this.observerHandler.update(key, modificationResult.<StrolchElement> getUpdated());

View File

@ -15,15 +15,13 @@
*/
package li.strolch.persistence.impl.model;
import javax.xml.parsers.DocumentBuilder;
import li.strolch.model.Order;
import li.strolch.model.xml.OrderToDomVisitor;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import ch.eitchnet.xmlpers.api.DomParser;
import ch.eitchnet.xmlpers.util.DomUtil;
public class OrderDomParser implements DomParser<Order> {
@ -42,19 +40,13 @@ public class OrderDomParser implements DomParser<Order> {
@Override
public Document toDom() {
DocumentBuilder documentBuilder = DomUtil.createDocumentBuilder();
Document document = documentBuilder.getDOMImplementation().createDocument(null, null, null);
Element orderDom = this.order.toDom(document);
document.appendChild(orderDom);
return document;
OrderToDomVisitor orderDomVisitor = new OrderToDomVisitor();
orderDomVisitor.visit(this.order);
return orderDomVisitor.getDocument();
}
@Override
public void fromDom(Document document) {
Element rootElement = document.getDocumentElement();
Order order = new Order(rootElement);
this.order = order;

View File

@ -15,15 +15,13 @@
*/
package li.strolch.persistence.impl.model;
import javax.xml.parsers.DocumentBuilder;
import li.strolch.model.Resource;
import li.strolch.model.xml.ResourceToDomVisitor;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import ch.eitchnet.xmlpers.api.DomParser;
import ch.eitchnet.xmlpers.util.DomUtil;
public class ResourceDomParser implements DomParser<Resource> {
@ -41,19 +39,13 @@ public class ResourceDomParser implements DomParser<Resource> {
@Override
public Document toDom() {
DocumentBuilder documentBuilder = DomUtil.createDocumentBuilder();
Document document = documentBuilder.getDOMImplementation().createDocument(null, null, null);
Element resourceDom = this.resource.toDom(document);
document.appendChild(resourceDom);
return document;
ResourceToDomVisitor domVisitor = new ResourceToDomVisitor();
domVisitor.visit(this.resource);
return domVisitor.getDocument();
}
@Override
public void fromDom(Document document) {
Element rootElement = document.getDocumentElement();
Resource resource = new Resource(rootElement);
this.resource = resource;