You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ar...@apache.org on 2006/02/18 02:14:36 UTC
svn commit: r378672 - in
/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata:
CollectionDescriptor.java ObjectReferenceDescriptor.java
Author: arminw
Date: Fri Feb 17 17:14:34 2006
New Revision: 378672
URL: http://svn.apache.org/viewcvs?rev=378672&view=rev
Log:
fix for test-suite errors caused by new ForeignKey class
Modified:
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/CollectionDescriptor.java
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/ObjectReferenceDescriptor.java
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/CollectionDescriptor.java
URL: http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/CollectionDescriptor.java?rev=378672&r1=378671&r2=378672&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/CollectionDescriptor.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/CollectionDescriptor.java Fri Feb 17 17:14:34 2006
@@ -19,6 +19,7 @@
import java.util.Collection;
import java.util.Iterator;
import java.util.Vector;
+import java.util.List;
import org.apache.commons.lang.SystemUtils;
import org.apache.ojb.broker.PersistenceBrokerException;
@@ -64,6 +65,17 @@
super(descriptor);
}
+ /**
+ * Override method from base class to declare foreign key
+ * field as inverse.
+ * @param fkField
+ * @param targetField
+ */
+ public void addForeignKeyField(Object fkField, String targetField)
+ {
+ addForeignKeyField(fkField, targetField, true);
+ }
+
public String[] getFksToThisClass()
{
if (fksToThisClassAry == null)
@@ -259,23 +271,12 @@
// close opening tag
result += " >" + eol;
- // write elements
- // inverse fk elements
- for (int i=0;i<getForeignKeyFields().size();i++)
- {
- Object obj = getForeignKeyFields().get(i);
- if (obj instanceof Integer)
- {
- String fkId = obj.toString();
- result += " " + tags.getOpeningTagNonClosingById(INVERSE_FK) + " ";
- result += tags.getAttribute(FIELD_ID_REF, fkId) + "/>" + eol;
- }
- else
- {
- String fk = (String) obj;
- result += " " + tags.getOpeningTagNonClosingById(INVERSE_FK) + " ";
- result += tags.getAttribute(FIELD_REF, fk) + "/>" + eol;
- }
+ // write foreignkey elements
+ List fkf = getForeignKeyFields();
+ for(int i = 0; i < fkf.size(); i++)
+ {
+ ForeignKey fk = (ForeignKey) fkf.get(i);
+ result += (fk.toXML());
}
// write optional M:N elements
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/ObjectReferenceDescriptor.java
URL: http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/ObjectReferenceDescriptor.java?rev=378672&r1=378671&r2=378672&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/ObjectReferenceDescriptor.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/ObjectReferenceDescriptor.java Fri Feb 17 17:14:34 2006
@@ -350,11 +350,22 @@
*/
public void addForeignKeyField(Object fkField, String targetField)
{
+ addForeignKeyField(fkField, targetField, false);
+ }
+
+ /**
+ * Add a foreign key field.
+ * @param fkField the id or name of the foreign key field
+ * @param targetField the name of the target field
+ * @param inverse Flag to mark inverse foreign key fields.
+ */
+ protected void addForeignKeyField(Object fkField, String targetField, boolean inverse)
+ {
if (m_ForeignKeyFields == null)
{
m_ForeignKeyFields = new Vector();
}
- m_ForeignKeyFields.add(new ForeignKey(fkField, targetField));
+ m_ForeignKeyFields.add(new ForeignKey(fkField, targetField, inverse));
}
@@ -733,29 +744,11 @@
// elements
// write foreignkey elements
- for( int i = 0; i < getForeignKeyFields().size(); i++ )
+ List fkf = getForeignKeyFields();
+ for(int i = 0; i < fkf.size(); i++)
{
- Object obj = getForeignKeyFields().get( i );
- if( obj instanceof Integer )
- {
- String fkId = obj.toString();
- result.append( " " );
- result.append( tags.getOpeningTagNonClosingById( FOREIGN_KEY ) );
- result.append( " " );
- result.append( tags.getAttribute( FIELD_ID_REF, fkId ) );
- result.append( "/>" );
- result.append( eol );
- }
- else
- {
- String fk = ( String ) obj;
- result.append( " " );
- result.append( tags.getOpeningTagNonClosingById( FOREIGN_KEY ) );
- result.append( " " );
- result.append( tags.getAttribute( FIELD_REF, fk ) );
- result.append( "/>" );
- result.append( eol );
- }
+ ForeignKey fk = (ForeignKey) fkf.get(i);
+ result.append(fk.toXML());
}
// closing tag
@@ -768,17 +761,50 @@
/**
* Helper to store the fkField and the field it's referencing.
*/
- static class ForeignKey implements Serializable
+ static class ForeignKey implements Serializable, XmlCapable
{
private static final long serialVersionUID = 3256718468362482741L;
-
+ boolean inverse;
Object fkField;
String targetField;
- ForeignKey(Object fkField, String targetField)
+ public ForeignKey(Object fkField, String targetField, boolean inverse)
{
this.fkField = fkField;
this.targetField = targetField;
+ this.inverse = inverse;
+ }
+
+ public String toXML()
+ {
+ RepositoryTags tags = RepositoryTags.getInstance();
+ String eol = System.getProperty( "line.separator" );
+ // opening tag
+ StringBuffer result = new StringBuffer();
+ result.append( " " );
+ if(inverse) result.append( tags.getOpeningTagNonClosingById( INVERSE_FK ) );
+ else result.append( tags.getOpeningTagNonClosingById( FOREIGN_KEY ) );
+ result.append( " " );
+ String fk;
+ if(fkField instanceof String)
+ {
+ fk = ( String ) fkField;
+ result.append( tags.getAttribute( FIELD_REF, fk ) );
+ }
+ else
+ {
+ fk = fkField.toString();
+ result.append( tags.getAttribute( FIELD_ID_REF, fk ) );
+ }
+ result.append( " " );
+ if(targetField != null)
+ {
+ result.append( tags.getAttribute(TARGET_FIELD_REF, targetField));
+ }
+ result.append( "/>" );
+ result.append( eol );
+
+ return result.toString();
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org