Skip to content

Commit

Permalink
Add SqlStatement et. al
Browse files Browse the repository at this point in the history
  • Loading branch information
minborg committed Mar 29, 2015
1 parent a575849 commit 33190af
Show file tree
Hide file tree
Showing 16 changed files with 489 additions and 93 deletions.
Expand Up @@ -29,7 +29,7 @@
import com.speedment.codegen.lang.models.Type;
import static com.speedment.codegen.lang.models.constants.DefaultAnnotationUsage.OVERRIDE;
import com.speedment.orm.config.model.Table;
import com.speedment.orm.core.manager.AbstractSqlManager;
import com.speedment.orm.core.manager.sql.AbstractSqlManager;
import com.speedment.orm.platform.Platform;
import com.speedment.orm.platform.component.JavaTypeMapperComponent;
import com.speedment.orm.runtime.typemapping.JavaTypeMapping;
Expand Down Expand Up @@ -78,13 +78,13 @@ protected Class make(File file) {
// .add(Method.of("stream", Type.of(Stream.class).add(GENERIC_OF_ENTITY)).public_().add(OVERRIDE)
// .add("return Stream.empty();")) //TODO MUST BE FIXED!

.add(Method.of("persist", ENTITY.getType()).public_().add(OVERRIDE)
.add(Field.of("entity", ENTITY.getType()))
.add("return entity;")) //TODO MUST BE FIXED!
// .add(Method.of("persist", ENTITY.getType()).public_().add(OVERRIDE)
// .add(Field.of("entity", ENTITY.getType()))
// .add("return entity;")) //TODO MUST BE FIXED!

.add(Method.of("remove", ENTITY.getType()).public_().add(OVERRIDE)
.add(Field.of("entity", ENTITY.getType()))
.add("return entity;")) //TODO MUST BE FIXED!
// .add(Method.of("remove", ENTITY.getType()).public_().add(OVERRIDE)
// .add(Field.of("entity", ENTITY.getType()))
// .add("return entity;")) //TODO MUST BE FIXED!
.add(defaultReadEntity(file));
}

Expand Down
Expand Up @@ -28,10 +28,11 @@
import static com.speedment.codegen.lang.models.constants.DefaultAnnotationUsage.OVERRIDE;
import static com.speedment.codegen.lang.models.constants.DefaultAnnotationUsage.SUPPRESS_WARNINGS_UNCHECKED;
import static com.speedment.codegen.lang.models.constants.DefaultType.OBJECT;
import static com.speedment.codegen.lang.models.constants.DefaultType.VOID;
import com.speedment.orm.config.model.Column;
import com.speedment.orm.config.model.Dbms;
import com.speedment.orm.config.model.Table;
import com.speedment.orm.core.manager.SqlManager;
import com.speedment.orm.core.manager.sql.SqlManager;
import com.speedment.orm.platform.Platform;
import com.speedment.orm.platform.component.ManagerComponent;
import com.speedment.orm.platform.component.ProjectComponent;
Expand Down Expand Up @@ -70,6 +71,7 @@ protected Interface make(File file) {
.add(Method.of("getBuilderClass", Type.of(Class.class).add(GENERIC_OF_BUILDER)).default_().add(OVERRIDE)
.add("return " + BUILDER.getName() + ".class;"))
.add(generateGet(file))
.add(generateSet(file))
.call(i -> file.add(Import.of(Type.of(Platform.class))))
.call(i -> file.add(Import.of(Type.of(ManagerComponent.class))))
.add(Method.of("get", MANAGER.getType()).static_().add(SUPPRESS_WARNINGS_UNCHECKED)
Expand Down Expand Up @@ -101,7 +103,21 @@ protected Method generateGet(File file) {
.add(Field.of("entity", ENTITY.getType()))
.add(Field.of("column", Type.of(Column.class)))
.add("switch (column.getName()) " + block(
columns().map(c -> "case \"" + variableName(c) + "\" : return entity.get" + typeName(c) + "();").collect(Collectors.joining(nl()))
columns().map(c -> "case \"" + c.getName() + "\" : return entity." + GETTER_METHOD_PREFIX + typeName(c) + "();").collect(Collectors.joining(nl()))
+ nl() + "default : throw new IllegalArgumentException(\"Unknown column '\" + column.getName() + \"'.\");"
));
}

protected Method generateSet(File file) {
file.add(Import.of(Type.of(IllegalArgumentException.class)));
return Method.of("set", VOID).default_().add(OVERRIDE)
.add(Field.of("entity", BUILDER.getType()))
.add(Field.of("column", Type.of(Column.class)))
.add(Field.of("value", Type.of(Object.class)))
.add("switch (column.getName()) " + block(
columns()
.peek(c -> file.add(Import.of(Type.of(c.getMapping()))))
.map(c -> "case \"" + c.getName() + "\" : entity." + SETTER_METHOD_PREFIX + typeName(c) + "((" + c.getMapping().getSimpleName() + ") value);").collect(Collectors.joining(nl()))
+ nl() + "default : throw new IllegalArgumentException(\"Unknown column '\" + column.getName() + \"'.\");"
));
}
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/com/speedment/orm/config/model/Column.java
Expand Up @@ -64,6 +64,12 @@ default Class<Table> getParentInterfaceMainClass() {
@External(type = Boolean.class)
void setNullable(Boolean nullable);

@External(type = Boolean.class)
Boolean isAutoincrement();

@External(type = Boolean.class)
void setAutoincrement(Boolean nullable);

@External(type = String.class)
Optional<String> getAlias();

Expand Down
18 changes: 15 additions & 3 deletions src/main/java/com/speedment/orm/config/model/impl/ColumnImpl.java
Expand Up @@ -28,7 +28,8 @@
*/
public class ColumnImpl extends AbstractOrdinalConfigEntity implements Column {

private Boolean nullable;
private boolean nullable;
private boolean autoincrement;
private String alias;
private Table parent;
private FieldStorageType fieldStorageType;
Expand All @@ -38,6 +39,7 @@ public class ColumnImpl extends AbstractOrdinalConfigEntity implements Column {
@Override
protected void setDefaults() {
setNullable(true);
setAutoincrement(false);
setFieldStorageType(FieldStorageType.defaultFor(this));
setColumnCompressionType(ColumnCompressionType.defaultFor(this));
setMapping(String.class);
Expand Down Expand Up @@ -86,7 +88,7 @@ public void setMapping(Class<?> mappedClass) {
@Override
public void setParentTo(Parent<?> parent) {
setParentHelper(parent, Table.class)
.ifPresent(p -> this.parent = p);
.ifPresent(p -> this.parent = p);
}

@Override
Expand All @@ -103,4 +105,14 @@ public Boolean isNullable() {
public void setNullable(Boolean nullable) {
this.nullable = nullable;
}
}

@Override
public Boolean isAutoincrement() {
return autoincrement;
}

@Override
public void setAutoincrement(Boolean autoincrement) {
this.autoincrement = autoincrement;
}
}
Expand Up @@ -61,7 +61,7 @@ public static External getExternalFor(final Method method, final Class<?> clazz)
return null;
}

final External e = (External) method.getAnnotation(External.class);
final External e = method.getAnnotation(External.class);
if (e != null) {
return e;
}
Expand Down
Expand Up @@ -17,11 +17,15 @@
package com.speedment.orm.core.manager;

import com.speedment.orm.config.model.Column;
import com.speedment.orm.config.model.Schema;
import com.speedment.orm.config.model.Table;
import com.speedment.orm.core.Buildable;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
import static java.util.stream.Collectors.joining;

/**
*
Expand Down

This file was deleted.

8 changes: 5 additions & 3 deletions src/main/java/com/speedment/orm/core/manager/Manager.java
Expand Up @@ -48,6 +48,8 @@ public interface Manager<PK, ENTITY, BUILDER extends Buildable<ENTITY>> extends

Object get(ENTITY entity, Column column);

void set(BUILDER builder, Column column, Object value);

// Data source metadata
Table getTable();

Expand All @@ -61,10 +63,10 @@ public interface Manager<PK, ENTITY, BUILDER extends Buildable<ENTITY>> extends
// Factories
BUILDER builder();

BUILDER toBuilder(ENTITY model);
BUILDER toBuilder(ENTITY entity);

default ENTITY toInternal(ENTITY model) {
return model;
default ENTITY toInternal(ENTITY entity) {
return entity;
}

// Queries
Expand Down

0 comments on commit 33190af

Please sign in to comment.