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/12/11 16:30:09 UTC
svn commit: r889658 - in /labs/magma/trunk/foundation-database/src:
main/java/org/apache/magma/database/DatabaseConverter.java
test/java/org/apache/magma/database/LogicallyNamedBean.java
Author: simoneg
Date: Fri Dec 11 15:30:08 2009
New Revision: 889658
URL: http://svn.apache.org/viewvc?rev=889658&view=rev
Log:
LABS-235 : Database now uses bean converter if the entity is not persisted
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/LogicallyNamedBean.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=889658&r1=889657&r2=889658&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 Fri Dec 11 15:30:08 2009
@@ -17,8 +17,10 @@
package org.apache.magma.database;
import org.apache.magma.beans.BeanData;
+import org.apache.magma.beans.MagmaBeanSupport;
import org.apache.magma.conversion.Converter;
import org.apache.magma.conversion.GenericConverter;
+import org.apache.magma.conversion.string.MagmaBeanConverter;
import org.apache.magma.basics.MagmaException;
public class DatabaseConverter implements Converter<DatabasePersisted> {
@@ -36,6 +38,7 @@
DatabasePersisted ret = null;
Exception retexc = null;
Database db = new Database();
+ // Try if the string is a valid primary key
try {
DatabaseIdentity id = BeanData.getFor(myclass).getDatabaseIdentity();
Object key = id.getSubconverter().from(value);
@@ -43,18 +46,25 @@
} 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 {
+ // Try if it is a logical name
+ try {
+ if (ret == null && LogicallyNamed.class.isAssignableFrom(myclass)) {
+ try {
+ ret = (DatabasePersisted) db.named((Class<? extends LogicallyNamed>)myclass, value);
+ } catch (Exception e) {
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);
+ }
+ } catch (MagmaException e) {
+ // Last try, if it is an unpersisted bean
+ try {
+ MagmaBeanConverter mbc = (MagmaBeanConverter) new MagmaBeanConverter().build(myclass);
+ ret = (DatabasePersisted) mbc.from(value);
+ } catch (Exception mbe) {
+ throw e;
}
- } else if (retexc != null) {
- throw new MagmaException(retexc, "Error retrieving {0} using primary key \"{1}\"", myclass, value);
}
return ret;
}
@@ -62,13 +72,20 @@
@SuppressWarnings("unchecked")
public String to(DatabasePersisted value) {
if (value == null) return "";
+ Object primaryKey = value.getPrimaryKey();
+ // TODO assumption that 0 is not a valid primary key, which in fact it is, is there a better way?
+ if (primaryKey == null || (primaryKey instanceof Number && ((Number)primaryKey).intValue() == 0)) {
+ // Entity not persisted yet, use a magma bean converter
+ MagmaBeanConverter mbc = (MagmaBeanConverter) new MagmaBeanConverter().build(myclass);
+ return mbc.to(value);
+ }
String ret = null;
if (value instanceof LogicallyNamed) {
ret = ((LogicallyNamed)value).getLogicalName();
}
if (ret == null || ret.length() == 0) {
DatabaseIdentity id = BeanData.getFor(myclass).getDatabaseIdentity();
- ret = id.getSubconverter().to(value.getPrimaryKey());
+ ret = id.getSubconverter().to(primaryKey);
}
return ret;
}
Modified: 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=889658&r1=889657&r2=889658&view=diff
==============================================================================
--- labs/magma/trunk/foundation-database/src/test/java/org/apache/magma/database/LogicallyNamedBean.java (original)
+++ labs/magma/trunk/foundation-database/src/test/java/org/apache/magma/database/LogicallyNamedBean.java Fri Dec 11 15:30:08 2009
@@ -11,7 +11,6 @@
@Entity
public class LogicallyNamedBean implements LogicallyNamed {
private String name;
- private long id;
public String getName() {
return name;
@@ -19,13 +18,6 @@
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();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org