package net.sf.minuteProject.plugin.grails;
import java.util.List;
import net.sf.minuteProject.configuration.bean.enrichment.SemanticReference;
import net.sf.minuteProject.configuration.bean.model.data.Column;
import net.sf.minuteProject.configuration.bean.model.data.Table;
import net.sf.minuteProject.utils.FormatUtils;
import net.sf.minuteProject.utils.TableUtils;
public class GrailsUtils {
public static String getToString (Table table) {
return getToString (table, null);
}
public static String getToString (Table table, String def) {
if (def!=null) {
return def;
}
String semanticRef = getToStringFromSemanticReferenceTable(table);
return (semanticRef!=null)?semanticRef:getGrailsToString (table);
}
private static String getGrailsToString(Table table) {
for (Column column: table.getAttributes()) {
return FormatUtils.getJavaNameVariable(column.getAlias());
}
return FormatUtils.getJavaNameVariable(table.getAlias());
}
private static String getToStringFromSemanticReferenceTable(Table table) {
if (TableUtils.hasSemanticReference(table)) {
return getToStringFromSemanticReference(table);
}
return null;
}
private static String getToStringFromSemanticReference(Table table) {
StringBuffer sb = new StringBuffer();
List<Column> columns = TableUtils.getSemanticReferenceColumns(table);
for (int i = 0; i < columns.size(); i++) {
sb.append(FormatUtils.getJavaNameVariable(columns.get(i).getAlias()));
if (i+1!=columns.size())
sb.append(" - ");
}
return sb.toString();
}
public static String getM2MVariableName (Table table, String targetTableName, String linkTableName, String localColumnName) {
//${targetTableVariableName}Via${linkTableName}By${localColumnName}s
String targetTableVariableName = FormatUtils.getJavaNameVariable(targetTableName);
String linkTableClassName = FormatUtils.getJavaName(linkTableName);
String localColumnClassName = FormatUtils.getJavaName(localColumnName);
if (TableUtils.hasChild(table, targetTableName)) {
return targetTableVariableName+"Via"+linkTableClassName+"By"+localColumnClassName+"s";
}
return targetTableVariableName+"s";
}
public String getVersionField (Table table) {
return FormatUtils.getJavaNameVariable(TableUtils.getVersionColumn(table).getAlias());
}
}