You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2009/09/16 15:12:13 UTC

svn commit: r815754 - in /labs/magma/trunk/foundation-database/src: main/java/org/apache/magma/database/DatabaseConverter.java test/java/org/apache/magma/database/LogicallyNamedBean.java test/java/org/apache/magma/database/TestJPAConverter.java

Author: simoneg
Date: Wed Sep 16 13:12:12 2009
New Revision: 815754

URL: http://svn.apache.org/viewvc?rev=815754&view=rev
Log:
LABS-456 : database converter takes into account logical names

Added:
    labs/magma/trunk/foundation-database/src/test/java/org/apache/magma/database/LogicallyNamedBean.java
Modified:
    labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/DatabaseConverter.java
    labs/magma/trunk/foundation-database/src/test/java/org/apache/magma/database/TestJPAConverter.java

Modified: labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/DatabaseConverter.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/DatabaseConverter.java?rev=815754&r1=815753&r2=815754&view=diff
==============================================================================
--- labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/DatabaseConverter.java (original)
+++ labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/DatabaseConverter.java Wed Sep 16 13:12:12 2009
@@ -19,6 +19,7 @@
 import org.apache.magma.beans.BeanData;
 import org.apache.magma.conversion.Converter;
 import org.apache.magma.conversion.GenericConverter;
+import org.apache.magma.basics.MagmaException;
 
 public class DatabaseConverter implements Converter<DatabasePersisted> {
 
@@ -32,17 +33,42 @@
 
 	public DatabasePersisted from(String value) {
 		if (value == null || value.equals("")) return null;
-		DatabaseIdentity id = BeanData.getFor(myclass).getDatabaseIdentity();
-		Object key = id.getSubconverter().from(value);
+		DatabasePersisted ret = null;
+		Exception retexc = null;
 		Database db = new Database();
-		return db.load(myclass, key);
+		try {
+			DatabaseIdentity id = BeanData.getFor(myclass).getDatabaseIdentity();
+			Object key = id.getSubconverter().from(value);
+		    ret = db.load(myclass, key);
+		} catch (Exception e) {
+			retexc = e;
+		}
+		if (ret == null && LogicallyNamed.class.isAssignableFrom(myclass)) {
+			try {
+				ret = (DatabasePersisted) db.named((Class<? extends LogicallyNamed>)myclass, value);
+			} catch (Exception e) {
+				if (retexc == null) {
+					throw new MagmaException(e, "Error retriving {0} using logical name \"{1}\"", myclass, value);
+				} else {
+					throw new MagmaException(e, "Error retriving {0} using logical name \"{1}\"", myclass, value);
+				}
+			}
+		} else if (retexc != null) {
+			throw new MagmaException(retexc, "Error retrieving {0} using primary key \"{1}\"", myclass, value);
+		}
+		return ret;
 	}
 
 	@SuppressWarnings("unchecked")
 	public String to(DatabasePersisted value) {
 		if (value == null) return "";
-		DatabaseIdentity id = BeanData.getFor(myclass).getDatabaseIdentity();
-		String ret = id.getSubconverter().to(value.getPrimaryKey());
+		String ret = null;
+		if (value instanceof LogicallyNamed) {
+			ret = ((LogicallyNamed)value).getLogicalName();
+		} else {
+			DatabaseIdentity id = BeanData.getFor(myclass).getDatabaseIdentity();
+			ret = id.getSubconverter().to(value.getPrimaryKey());
+		}
 		return ret;
 	}
 

Added: labs/magma/trunk/foundation-database/src/test/java/org/apache/magma/database/LogicallyNamedBean.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-database/src/test/java/org/apache/magma/database/LogicallyNamedBean.java?rev=815754&view=auto
==============================================================================
--- labs/magma/trunk/foundation-database/src/test/java/org/apache/magma/database/LogicallyNamedBean.java (added)
+++ labs/magma/trunk/foundation-database/src/test/java/org/apache/magma/database/LogicallyNamedBean.java Wed Sep 16 13:12:12 2009
@@ -0,0 +1,33 @@
+package org.apache.magma.database;
+
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+
+import org.apache.magma.beans.MagmaBean;
+import org.apache.magma.database.LogicallyNamed;
+
+@MagmaBean
+@Entity
+public class LogicallyNamedBean implements LogicallyNamed {
+	private String name;
+	private long id;
+	
+	public String getName() {
+		return name;
+	}
+	public void setName(String name) {
+		this.name = name;
+	}
+	public long getId() {
+		return id;
+	}
+	public void setId(long id) {
+		this.id = id;
+	}
+	
+	public String computeLogicalName() {
+		return this.getName();
+	}
+	
+}

Modified: labs/magma/trunk/foundation-database/src/test/java/org/apache/magma/database/TestJPAConverter.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-database/src/test/java/org/apache/magma/database/TestJPAConverter.java?rev=815754&r1=815753&r2=815754&view=diff
==============================================================================
--- labs/magma/trunk/foundation-database/src/test/java/org/apache/magma/database/TestJPAConverter.java (original)
+++ labs/magma/trunk/foundation-database/src/test/java/org/apache/magma/database/TestJPAConverter.java Wed Sep 16 13:12:12 2009
@@ -16,6 +16,7 @@
  */
 package org.apache.magma.database;
 
+import static org.junit.Assert.*;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
@@ -41,6 +42,21 @@
 		assertNotNull(tos);
 		assertEquals("5", tos);
 	}
+	
+	@Test
+	public void named() throws Exception {
+		Converter converter = Converters.getConverterFor(LogicallyNamedBean.class);
+		assertNotNull(converter);
+		assertTrue(converter instanceof DatabaseConverter);
+		DatabaseConverter conv = (DatabaseConverter) converter;
+		LogicallyNamedBean b = new LogicallyNamedBean();
+		b.setId(5);
+		b.setName("Simone");
+		b.setLogicalName("simone");
+		String tos = converter.to(b);
+		assertNotNull(tos);
+		assertEquals("simone", tos);		
+	}
 
 	
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org