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