Skip to content

Commit

Permalink
Migrate DbHelperBase.getExtendsForeignKeyName to DbHelper for issue #133
Browse files Browse the repository at this point in the history
  • Loading branch information
rcodesmith committed Jun 26, 2014
1 parent 9df59b0 commit b68dcbc
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,24 +20,25 @@ import java.util.Collection
import java.util.List
import java.util.Set
import javax.inject.Inject
import org.sculptor.generator.util.DbHelperBase
import org.sculptor.generator.chain.ChainOverridable
import org.sculptor.generator.util.CamelCaseConverter
import org.sculptor.generator.util.PropertiesBase
import sculptormetamodel.Attribute
import sculptormetamodel.BasicType
import sculptormetamodel.DiscriminatorType
import sculptormetamodel.DomainObject
import sculptormetamodel.Enum
import sculptormetamodel.Inheritance
import sculptormetamodel.InheritanceType
import sculptormetamodel.NamedElement
import sculptormetamodel.Reference
import sculptormetamodel.SculptormetamodelFactory
import org.sculptor.generator.chain.ChainOverridable

@ChainOverridable
public class DbHelper {
@Inject extension PropertiesBase propertiesBase
@Inject extension Properties properties
@Inject extension DbHelperBase dbHelperBase
@Inject extension org.sculptor.generator.util.DbHelperBase dbHelperBase
@Inject extension Helper helper

def String getCascade(Reference ref) {
Expand Down Expand Up @@ -194,7 +195,7 @@ public class DbHelper {
getHintOrDefault(ref, "databaseLength", length)
}

def boolean isOfTypeString(sculptormetamodel.Enum enumVal) {
def boolean isOfTypeString(Enum enumVal) {
"String" == enumVal.getEnumType()
}

Expand Down Expand Up @@ -412,4 +413,55 @@ public class DbHelper {
def boolean isSystemAttributeToPutLast(Attribute attr) {
getSystemAttributesToPutLast().contains(attr.name)
}

def getExtendsForeignKeyName(DomainObject extendedClass) {
var idAttribute = getIdAttribute(extendedClass)
checkIdAttribute(extendedClass, idAttribute)
var name = extendedClass.databaseTable
name += idSuffix(name, extendedClass)
name
}

private def checkIdAttribute(DomainObject referencedClass, Attribute idAttribute) {
if (idAttribute === null) {
throw new IllegalArgumentException(
'Referenced class ' + referencedClass.name + " doesn't contain 'id' attribute");
}
}

private def convertDatabaseName(String name) {
var String resName = name

if (propertiesBase.getBooleanProperty('db.useUnderscoreNaming')) {
resName = CamelCaseConverter::camelCaseToUnderscore(name)
}
truncateLongDatabaseName(resName).toUpperCase
}

private def idSuffix(String name, DomainObject to) {
if (useIdSuffixInForeignKey) {
var idAttribute = getIdAttribute(to)
if (idAttribute !== null) {
var idName = idAttribute.databaseColumn.toUpperCase
var convertedName = convertDatabaseName(name)
if (idName == convertedName && idName.startsWith(to.databaseTable)) {
idName = idName.substring(to.databaseTable.length)
} else if (idName.startsWith(convertedName)) {
idName = idName.substring(convertedName.length)
}
if (idName.startsWith('_')) {
return idName;
} else {
return ('_' + idName);
}
}
}
''
}

private def useIdSuffixInForeignKey() {
propertiesBase.getBooleanProperty('db.useIdSuffixInForeigKey')
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,11 @@ public String getDatabaseNameBase(NamedElement element) {
return name;
}

/**
* Moved to DbHelper
* @deprecated
*/
@Deprecated
private String convertDatabaseName(String name) {
if (propBase.getBooleanProperty("db.useUnderscoreNaming")) {
name = CamelCaseConverter.camelCaseToUnderscore(name);
Expand Down Expand Up @@ -350,14 +355,12 @@ private String getForeignKeyNameForUnidirectionalToManyWithJoinTable(Reference r
return convertDatabaseName(name);
}

public String getExtendsForeignKeyName(DomainObject extendedClass) {
Attribute idAttribute = getIdAttribute(extendedClass);
checkIdAttribute(extendedClass, idAttribute);
String name = extendedClass.getDatabaseTable();
name += idSuffix(name, extendedClass);
return name;
}


/**
* Moved to DbHelper
* @deprecated
*/
@Deprecated
private String idSuffix(String name, DomainObject to) {
if (useIdSuffixInForeignKey()) {
Attribute idAttribute = getIdAttribute(to);
Expand All @@ -379,6 +382,11 @@ private String idSuffix(String name, DomainObject to) {
return "";
}

/**
* Use Properties.useIdSuffixInForeigKey() instead
* @deprecated
*/
@Deprecated
private boolean useIdSuffixInForeignKey() {
return propBase.getBooleanProperty("db.useIdSuffixInForeigKey");
}
Expand Down Expand Up @@ -415,6 +423,11 @@ public String getForeignKeyType(DomainObject referencedClass) {
return type;
}

/**
* Moved to DbHelper
* @deprecated
*/
@Deprecated
private void checkIdAttribute(DomainObject referencedClass, Attribute idAttribute) {
if (idAttribute == null) {
throw new IllegalArgumentException("Referenced class " + referencedClass.getName() + " doesn't contain 'id' attribute");
Expand Down

0 comments on commit b68dcbc

Please sign in to comment.