From a0d4f2587eac5569d89a8d07484b5ca12e3d3588 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Mon, 23 Dec 2013 01:54:07 +0100 Subject: [PATCH] [New] Using visitor pattern to perform DOM actions --- .../li/strolch/persistence/impl/AbstractDao.java | 6 ------ .../persistence/impl/XmlStrolchTransaction.java | 9 ++++----- .../persistence/impl/model/OrderDomParser.java | 16 ++++------------ .../impl/model/ResourceDomParser.java | 16 ++++------------ 4 files changed, 12 insertions(+), 35 deletions(-) diff --git a/src/main/java/li/strolch/persistence/impl/AbstractDao.java b/src/main/java/li/strolch/persistence/impl/AbstractDao.java index 140a1bbaa..60a6e0e47 100644 --- a/src/main/java/li/strolch/persistence/impl/AbstractDao.java +++ b/src/main/java/li/strolch/persistence/impl/AbstractDao.java @@ -126,10 +126,4 @@ public abstract class AbstractDao implements StrolchDa public void removeAll(List 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); - } } diff --git a/src/main/java/li/strolch/persistence/impl/XmlStrolchTransaction.java b/src/main/java/li/strolch/persistence/impl/XmlStrolchTransaction.java index a3f1c89f4..ab4562f5d 100644 --- a/src/main/java/li/strolch/persistence/impl/XmlStrolchTransaction.java +++ b/src/main/java/li/strolch/persistence/impl/XmlStrolchTransaction.java @@ -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 keys = this.txResult.getKeys(); + Set keys = txResult.getKeys(); for (String key : keys) { - ModificationResult modificationResult = this.txResult.getModificationResult(key); + ModificationResult modificationResult = txResult.getModificationResult(key); this.observerHandler.add(key, modificationResult. getCreated()); this.observerHandler.update(key, modificationResult. getUpdated()); diff --git a/src/main/java/li/strolch/persistence/impl/model/OrderDomParser.java b/src/main/java/li/strolch/persistence/impl/model/OrderDomParser.java index 0e80b8a82..45cf30440 100644 --- a/src/main/java/li/strolch/persistence/impl/model/OrderDomParser.java +++ b/src/main/java/li/strolch/persistence/impl/model/OrderDomParser.java @@ -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 { @@ -42,19 +40,13 @@ public class OrderDomParser implements DomParser { @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; diff --git a/src/main/java/li/strolch/persistence/impl/model/ResourceDomParser.java b/src/main/java/li/strolch/persistence/impl/model/ResourceDomParser.java index b94ce74aa..497a81d1a 100644 --- a/src/main/java/li/strolch/persistence/impl/model/ResourceDomParser.java +++ b/src/main/java/li/strolch/persistence/impl/model/ResourceDomParser.java @@ -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 { @@ -41,19 +39,13 @@ public class ResourceDomParser implements DomParser { @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;