From: <ms...@us...> - 2008-10-30 19:48:21
|
Revision: 8513 http://wonder.svn.sourceforge.net/wonder/?rev=8513&view=rev Author: mschrag Date: 2008-10-30 19:48:12 +0000 (Thu, 30 Oct 2008) Log Message: ----------- support for default values and anjo's single table inheritance fix Modified Paths: -------------- trunk/Wonder/Frameworks/PlugIns/EROraclePlugIn/Sources/com/webobjects/jdbcadaptor/EROracleExpression.java Modified: trunk/Wonder/Frameworks/PlugIns/EROraclePlugIn/Sources/com/webobjects/jdbcadaptor/EROracleExpression.java =================================================================== --- trunk/Wonder/Frameworks/PlugIns/EROraclePlugIn/Sources/com/webobjects/jdbcadaptor/EROracleExpression.java 2008-10-30 19:25:37 UTC (rev 8512) +++ trunk/Wonder/Frameworks/PlugIns/EROraclePlugIn/Sources/com/webobjects/jdbcadaptor/EROracleExpression.java 2008-10-30 19:48:12 UTC (rev 8513) @@ -7,6 +7,7 @@ import com.webobjects.eoaccess.EOModel; import com.webobjects.eoaccess.EORelationship; import com.webobjects.foundation.NSArray; +import com.webobjects.foundation.NSDictionary; import com.webobjects.foundation.NSMutableDictionary; import com.webobjects.foundation.NSTimestamp; import com.webobjects.foundation.NSTimestampFormatter; @@ -49,7 +50,40 @@ public EROracleExpression(EOEntity eoentity) { super(eoentity); } - + + protected boolean isInherited(EOAttribute attribute) { + boolean inherited = false; + + EOEntity parentEntity = attribute.entity().parentEntity(); + while (!inherited && parentEntity != null && attribute.entity().externalName().equals(parentEntity.externalName())) { + inherited = (parentEntity.attributeNamed(attribute.name()) != null); + parentEntity = parentEntity.parentEntity(); + } + return inherited; + } + + public void addCreateClauseForAttribute(EOAttribute attribute) { + NSDictionary userInfo = attribute.userInfo(); + Object defaultValue = null; + if (userInfo != null) { + defaultValue = userInfo.valueForKey("er.extensions.eoattribute.default"); + } + String sql; + boolean allowsNull = attribute.allowsNull(); + if(!allowsNull) { + allowsNull = !isInherited(attribute); + } + + String allowsNullClauseForConstraint = allowsNullClauseForConstraint(allowsNull); + if (defaultValue == null) { + sql = _NSStringUtilities.concat(attribute.columnName(), " ", columnTypeStringForAttribute(attribute), " ", allowsNullClauseForConstraint); + } + else { + sql = _NSStringUtilities.concat(attribute.columnName(), " ", columnTypeStringForAttribute(attribute), " DEFAULT ", formatValueForAttribute(defaultValue, attribute), " ", allowsNullClauseForConstraint); + } + appendItemToListString(sql, _listString()); + } + /** Overridden in order to add milliseconds to the value. This * applies only if obj is an instance of NSTimestamp and if * valueType from the eoattribute is T This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |