You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by kw...@apache.org on 2006/08/09 22:17:20 UTC
svn commit: r430133 - in /incubator/tuscany/java/das/rdb/src:
main/java/org/apache/tuscany/das/rdb/merge/impl/GraphMerger.java
test/java/org/apache/tuscany/das/rdb/test/GraphMergeTests.java
Author: kwilliams
Date: Wed Aug 9 13:17:20 2006
New Revision: 430133
URL: http://svn.apache.org/viewvc?rev=430133&view=rev
Log:
Brent's patch for TUSCANY-592
Modified:
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/merge/impl/GraphMerger.java
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GraphMergeTests.java
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/merge/impl/GraphMerger.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/merge/impl/GraphMerger.java?rev=430133&r1=430132&r2=430133&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/merge/impl/GraphMerger.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/merge/impl/GraphMerger.java Wed Aug 9 13:17:20 2006
@@ -22,14 +22,21 @@
import java.util.List;
import java.util.logging.Logger;
+import org.apache.tuscany.das.rdb.config.Config;
import org.apache.tuscany.das.rdb.config.wrapper.QualifiedColumn;
import org.apache.tuscany.das.rdb.graphbuilder.impl.MultiTableRegistry;
import org.apache.tuscany.das.rdb.graphbuilder.impl.TableRegistry;
+import org.apache.tuscany.sdo.helper.TypeHelperImpl;
import org.apache.tuscany.sdo.impl.ChangeSummaryImpl;
+import org.apache.tuscany.sdo.util.SDOUtil;
+import org.eclipse.emf.ecore.EPackage;
import commonj.sdo.ChangeSummary;
+import commonj.sdo.DataGraph;
import commonj.sdo.DataObject;
import commonj.sdo.Property;
+import commonj.sdo.Type;
+import commonj.sdo.helper.TypeHelper;
public class GraphMerger {
@@ -44,6 +51,44 @@
// Empty Constructor
}
+ // TODO Replace EMF reference with SDOUtil function when available
+ // (Tuscany-583)
+ public DataObject emptyGraph(Config config) {
+
+ if (config.getDataObjectModel() == null)
+ throw new RuntimeException(
+ "DataObjectModel must be specified in the Config");
+
+ String uri = "http:///org.apache.tuscany.das.rdb/das";
+ TypeHelper typeHelper = SDOUtil.createTypeHelper();
+ Type rootType = SDOUtil.createType(typeHelper, uri + "/DataGraphRoot",
+ "DataGraphRoot", false);
+
+ EPackage pkg = ((TypeHelperImpl) typeHelper).getExtendedMetaData()
+ .getPackage(config.getDataObjectModel());
+ if (pkg == null)
+ throw new RuntimeException(
+ "SDO Types have not been registered for URI " + uri);
+ Iterator i = pkg.getEClassifiers().iterator();
+ while (i.hasNext()) {
+ Type type = (Type) i.next();
+ Property property = SDOUtil.createProperty(rootType,
+ type.getName(), type);
+ SDOUtil.setContainment(property, true);
+ SDOUtil.setMany(property, true);
+ }
+
+ // Create the DataGraph
+ DataGraph g = SDOUtil.createDataGraph();
+
+ // Create the root object
+ g.createRootObject(rootType);
+
+ ChangeSummary summary = g.getChangeSummary();
+ summary.beginLogging();
+
+ return g.getRootObject();
+ }
public DataObject merge(List graphs) {
DataObject primaryGraph = (DataObject) graphs.get(0);
Modified: incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GraphMergeTests.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GraphMergeTests.java?rev=430133&r1=430132&r2=430133&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GraphMergeTests.java (original)
+++ incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GraphMergeTests.java Wed Aug 9 13:17:20 2006
@@ -19,11 +19,15 @@
import java.util.ArrayList;
import org.apache.tuscany.das.rdb.Command;
+import org.apache.tuscany.das.rdb.ConfigHelper;
import org.apache.tuscany.das.rdb.DAS;
import org.apache.tuscany.das.rdb.merge.impl.GraphMerger;
+import org.apache.tuscany.das.rdb.test.customer.Customer;
+import org.apache.tuscany.das.rdb.test.customer.CustomerFactory;
import org.apache.tuscany.das.rdb.test.data.CustomerData;
import org.apache.tuscany.das.rdb.test.data.OrderData;
import org.apache.tuscany.das.rdb.test.framework.DasTest;
+import org.apache.tuscany.sdo.util.SDOUtil;
import commonj.sdo.DataObject;
@@ -37,7 +41,42 @@
}
-
+ public void testCreateEmptyGraph() throws Exception {
+ String typeUri = "http:///org.apache.tuscany.das.rdb.test/customer.xsd";
+ SDOUtil.registerStaticTypes(CustomerFactory.class);
+ ConfigHelper helper = new ConfigHelper();
+ helper.setDataObjectModel(typeUri);
+ DataObject graph = new GraphMerger().emptyGraph(helper.getConfig());
+ assertEquals(0, graph.getList("Customer").size());
+ assertEquals(0, graph.getList("AnOrder").size());
+
+ }
+
+ public void testCreateEmptyGraphAndAddCustomer() throws Exception {
+ String typeUri = "http:///org.apache.tuscany.das.rdb.test/customer.xsd";
+ SDOUtil.registerStaticTypes(CustomerFactory.class);
+ ConfigHelper helper = new ConfigHelper();
+ helper.setDataObjectModel(typeUri);
+ helper.addTable("CUSTOMER", "Customer");
+ helper.addPrimaryKey("CUSTOMER.ID");
+
+ DataObject graph = new GraphMerger().emptyGraph(helper.getConfig());
+ Customer c = (Customer) graph.createDataObject("Customer");
+ c.setID(4000);
+ c.setLastName("Smith");
+ c.setAddress("400 Fourth Street");
+
+ DAS das = DAS.FACTORY.createDAS(helper.getConfig(), getConnection());
+ das.applyChanges(graph);
+
+ Command cmd = das.createCommand("select * from CUSTOMER order by ID desc");
+ graph = cmd.executeQuery();
+ assertEquals(6, graph.getList("Customer").size());
+ assertEquals("Smith", graph.getDataObject("Customer[1]").getString("lastName"));
+ assertEquals("400 Fourth Street", graph.getDataObject("Customer[1]").getString("address"));
+
+ }
+
public void testSingleTableMerge() throws Exception {
DAS das = DAS.FACTORY.createDAS(getConnection());
Command select = das
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org