mirror of
https://github.com/querydsl/querydsl.git
synced 2026-06-30 21:08:30 +08:00
This commit is contained in:
parent
9a04bbb71d
commit
fb0620792f
@ -22,7 +22,6 @@ class ScalaEntitySerializer(val namePrefix: String, val nameSuffix: String) exte
|
||||
|
||||
val typeMappings = ScalaTypeMappings.typeMappings;
|
||||
|
||||
// val classHeaderFormat = "%1$s(path: String) extends EntityPathImpl[%2$s](classOf[%2$s], path)";
|
||||
val classHeaderFormat = "%1$s(cl: Class[_ <: %2$s], md: PathMetadata[_]) extends EntityPathImpl[%2$s](cl, md)";
|
||||
|
||||
def serialize(model: EntityType, serializerConfig: SerializerConfig, writer: CodeWriter) {
|
||||
@ -48,18 +47,9 @@ class ScalaEntitySerializer(val namePrefix: String, val nameSuffix: String) exte
|
||||
|
||||
writer.importClasses(importedClasses.toArray: _*);
|
||||
|
||||
val queryType = typeMappings.getPathType(model, model, true);
|
||||
var modelName = writer.getRawName(model);
|
||||
var queryTypeName = writer.getRawName(queryType);
|
||||
var classHeader = String.format(classHeaderFormat, queryTypeName, modelName);
|
||||
|
||||
scalaWriter.beginObject(queryTypeName);
|
||||
scalaWriter.line("def as(variable: String) = new ", queryTypeName, "(variable)");
|
||||
scalaWriter.end();
|
||||
writeHeader(model, scalaWriter);
|
||||
|
||||
// header
|
||||
model.getAnnotations.foreach(writer.annotation(_));
|
||||
scalaWriter.beginClass(classHeader);
|
||||
var modelName = writer.getRawName(model);
|
||||
|
||||
// entity property fields
|
||||
model.getProperties filter (_.getType.getCategory == ENTITY) foreach { property =>
|
||||
@ -68,17 +58,42 @@ class ScalaEntitySerializer(val namePrefix: String, val nameSuffix: String) exte
|
||||
scalaWriter.line("private var _", property.getEscapedName, ": ", typeName, " = _;\n");
|
||||
}
|
||||
|
||||
writeAdditionalFields(model, scalaWriter);
|
||||
|
||||
// additional constructors
|
||||
scalaWriter.line("def this(variable: String) = this(classOf[",modelName,"], forVariable(variable));");
|
||||
scalaWriter.line("");
|
||||
scalaWriter.line("def this(parent: Path[_], variable: String) = this(classOf[",modelName,"], forProperty(parent, variable));");
|
||||
scalaWriter.line("");
|
||||
scalaWriter.line("def this(variable: String) = this(classOf[",modelName,"], forVariable(variable));\n");
|
||||
scalaWriter.line("def this(parent: Path[_], variable: String) = this(classOf[",modelName,"], forProperty(parent, variable));\n");
|
||||
|
||||
// properties
|
||||
serializeProperties(model, writer, model.getProperties );
|
||||
|
||||
writeAdditionalProperties(model, scalaWriter);
|
||||
|
||||
writer.end();
|
||||
}
|
||||
|
||||
def writeAdditionalFields(model: EntityType, writer: ScalaWriter) {
|
||||
// override to customize
|
||||
}
|
||||
|
||||
def writeAdditionalProperties(model: EntityType, writer: ScalaWriter) {
|
||||
// override to customize
|
||||
}
|
||||
|
||||
def writeHeader(model: EntityType, writer: ScalaWriter) {
|
||||
val queryType = typeMappings.getPathType(model, model, true);
|
||||
var modelName = writer.getRawName(model);
|
||||
var queryTypeName = writer.getRawName(queryType);
|
||||
var classHeader = String.format(classHeaderFormat, queryTypeName, modelName);
|
||||
|
||||
writer.beginObject(queryTypeName);
|
||||
writer.line("def as(variable: String) = new ", queryTypeName, "(variable)");
|
||||
writer.end();
|
||||
|
||||
// header
|
||||
model.getAnnotations.foreach(writer.annotation(_));
|
||||
writer.beginClass(classHeader);
|
||||
}
|
||||
|
||||
def serializeProperties(model: EntityType, writer: CodeWriter, properties: Collection[Property]) {
|
||||
// entity properties
|
||||
|
||||
@ -28,12 +28,21 @@ class RelationalPathImpl[T](t: Class[_ <: T], md: PathMetadata[_])
|
||||
|
||||
override def add[P <: Path[_]](p: P): P = { columns.add(p); p; }
|
||||
|
||||
// FIXME
|
||||
//def all: Array[Path[_]] = columns.toArray(new Array[Path[_]](columns.size));
|
||||
def all: Array[Path[_]] = columns.toArray[Path[_]](new Array[Path[_]](columns.size));
|
||||
|
||||
// createPrimaryKey
|
||||
def createPrimaryKey(cols: Array[Path[_]]): PrimaryKey[T] = {
|
||||
primaryKey = new PrimaryKey[T](this, cols:_*); primaryKey
|
||||
}
|
||||
|
||||
// createForeignKey
|
||||
def createForeignKey[F](local: Path[_], foreign: String) = {
|
||||
val foreignKey = new ForeignKey[F](this, local, foreign);
|
||||
foreignKeys.add(foreignKey); foreignKey
|
||||
}
|
||||
|
||||
def createInvForeignKey[F](local: Path[_], foreign: String) = {
|
||||
val foreignKey = new ForeignKey[F](this, local, foreign);
|
||||
inverseForeignKeys.add(foreignKey); foreignKey
|
||||
}
|
||||
|
||||
def getPrimaryKey = primaryKey;
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user