Skip to content

Commit

Permalink
Rename some methods for cleaner API
Browse files Browse the repository at this point in the history
  • Loading branch information
Emil Forslund committed Feb 2, 2016
1 parent cfa8f10 commit bd823c7
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 30 deletions.
23 changes: 14 additions & 9 deletions src/main/java/com/speedment/code/Translator.java
Expand Up @@ -40,6 +40,7 @@
import java.util.function.BiConsumer;
import java.util.function.BiFunction;
import static java.util.Objects.requireNonNull;
import java.util.function.Consumer;

/**
* A component that can translate a {@link Document} into something else. This
Expand Down Expand Up @@ -207,23 +208,27 @@ default String toCode() {
}

Generator getCodeGenerator();

default void onMake(Consumer<Builder<T>> action) {
onMake((file, builder) -> action.accept(builder));
}

void onMake(BiConsumer<File, Builder<T>> action);

Stream<BiConsumer<File, Builder<T>>> listeners();

interface Builder<T extends ClassOrInterface<T>> {
<P extends Document, DOC extends Document> Builder<T>
addConsumer(String key, BiFunction<P, Map<String, Object>, DOC> constructor, BiConsumer<T, DOC> consumer);
forEvery(String key, BiFunction<P, Map<String, Object>, DOC> constructor, BiConsumer<T, DOC> consumer);

Builder<T> addProjectConsumer(BiConsumer<T, Project> consumer);
Builder<T> addDbmsConsumer(BiConsumer<T, Dbms> consumer);
Builder<T> addSchemaConsumer(BiConsumer<T, Schema> consumer);
Builder<T> addTableConsumer(BiConsumer<T, Table> consumer);
Builder<T> addColumnConsumer(BiConsumer<T, Column> consumer);
Builder<T> addIndexConsumer(BiConsumer<T, Index> consumer);
Builder<T> addForeignKeyConsumer(BiConsumer<T, ForeignKey> consumer);
Builder<T> addForeignKeyReferencesThisTableConsumer(BiConsumer<T, ForeignKey> consumer);
Builder<T> forEveryProject(BiConsumer<T, Project> consumer);
Builder<T> forEveryDbms(BiConsumer<T, Dbms> consumer);
Builder<T> forEverySchema(BiConsumer<T, Schema> consumer);
Builder<T> forEveryTable(BiConsumer<T, Table> consumer);
Builder<T> forEveryColumn(BiConsumer<T, Column> consumer);
Builder<T> forEveryIndex(BiConsumer<T, Index> consumer);
Builder<T> forEveryForeignKey(BiConsumer<T, ForeignKey> consumer);
Builder<T> forEveryForeignKeyReferencingThis(BiConsumer<T, ForeignKey> consumer);

T build();
}
Expand Down
Expand Up @@ -25,7 +25,6 @@
import com.speedment.internal.codegen.lang.models.Constructor;
import com.speedment.internal.codegen.lang.models.Field;
import com.speedment.internal.codegen.lang.models.File;
import com.speedment.internal.codegen.lang.models.Interface;
import com.speedment.internal.codegen.lang.models.Javadoc;
import com.speedment.internal.codegen.lang.models.Type;
import static com.speedment.internal.codegen.lang.models.constants.DefaultAnnotationUsage.GENERATED;
Expand All @@ -45,7 +44,6 @@
import com.speedment.config.db.trait.HasEnabled;
import com.speedment.config.db.trait.HasMainInterface;
import com.speedment.config.db.trait.HasName;
import com.speedment.internal.codegen.lang.models.Enum;
import static com.speedment.internal.core.code.entity.EntityImplTranslator.SPEEDMENT_NAME;
import com.speedment.internal.core.config.BaseDocument;
import com.speedment.internal.core.config.db.ColumnImpl;
Expand Down Expand Up @@ -183,49 +181,49 @@ public BuilderImpl(String name) {
}

@Override
public <P extends Document, D extends Document> Builder<T> addConsumer(String key, BiFunction<P, Map<String, Object>, D> constructor, BiConsumer<T, D> consumer) {
public <P extends Document, D extends Document> Builder<T> forEvery(String key, BiFunction<P, Map<String, Object>, D> constructor, BiConsumer<T, D> consumer) {
aquireListAndAdd(key, wrap(consumer, constructor));
return this;
}

@Override
public BuilderImpl addProjectConsumer(BiConsumer<T, Project> consumer) {
public BuilderImpl forEveryProject(BiConsumer<T, Project> consumer) {
aquireListAndAdd(PROJECTS, wrap(consumer, ProjectImpl::new));
return this;
}

@Override
public BuilderImpl addDbmsConsumer(BiConsumer<T, Dbms> consumer) {
public BuilderImpl forEveryDbms(BiConsumer<T, Dbms> consumer) {
aquireListAndAdd(Project.DBMSES, wrap(consumer, DbmsImpl::new));
return this;
}

@Override
public BuilderImpl addSchemaConsumer(BiConsumer<T, Schema> consumer) {
public BuilderImpl forEverySchema(BiConsumer<T, Schema> consumer) {
aquireListAndAdd(Dbms.SCHEMAS, wrap(consumer, SchemaImpl::new));
return this;
}

@Override
public BuilderImpl addTableConsumer(BiConsumer<T, Table> consumer) {
public BuilderImpl forEveryTable(BiConsumer<T, Table> consumer) {
aquireListAndAdd(Schema.TABLES, wrap(consumer, TableImpl::new));
return this;
}

@Override
public BuilderImpl addColumnConsumer(BiConsumer<T, Column> consumer) {
public BuilderImpl forEveryColumn(BiConsumer<T, Column> consumer) {
aquireListAndAdd(Table.COLUMNS, wrap(consumer, ColumnImpl::new));
return this;
}

@Override
public BuilderImpl addIndexConsumer(BiConsumer<T, Index> consumer) {
public BuilderImpl forEveryIndex(BiConsumer<T, Index> consumer) {
aquireListAndAdd(Table.INDEXES, wrap(consumer, IndexImpl::new));
return this;
}

@Override
public BuilderImpl addForeignKeyConsumer(BiConsumer<T, ForeignKey> consumer) {
public BuilderImpl forEveryForeignKey(BiConsumer<T, ForeignKey> consumer) {
aquireListAndAdd(Table.FOREIGN_KEYS, wrap(consumer, ForeignKeyImpl::new));
return this;
}
Expand All @@ -239,7 +237,7 @@ private <P extends Document, D extends Document> BiConsumer<T, Document> wrap(Bi
}

@Override
public BuilderImpl addForeignKeyReferencesThisTableConsumer(BiConsumer<T, ForeignKey> consumer) {
public BuilderImpl forEveryForeignKeyReferencingThis(BiConsumer<T, ForeignKey> consumer) {
foreignKeyReferencesThisTableConsumers.add(requireNonNull(consumer));
return this;
}
Expand Down
Expand Up @@ -68,7 +68,7 @@ protected Class make(File file) {

final Class newClass = newBuilder(file, entity.getImplName())
// Getters
.addColumnConsumer((cl, c) -> {
.forEveryColumn((cl, c) -> {

final Type retType;
final String getter;
Expand All @@ -88,7 +88,7 @@ protected Class make(File file) {

})
// Setters
.addColumnConsumer((cl, c) -> {
.forEveryColumn((cl, c) -> {
cl
.add(Method.of(BUILDER_METHOD_PREFIX + typeName(c), entity.getImplType())
.public_().final_()
Expand All @@ -98,7 +98,7 @@ protected Class make(File file) {
.add("return this;"));
})
// Add streamers from back pointing FK:s
.addForeignKeyReferencesThisTableConsumer((i, fk) -> {
.forEveryForeignKeyReferencingThis((i, fk) -> {
final FkHolder fu = new FkHolder(getSpeedment(), getCodeGenerator(), fk);
//999 file.add(Import.of(fu.getForeignEmt().ENTITY.getType()));
fu.imports().forEachOrdered(file::add);
Expand All @@ -115,7 +115,7 @@ protected Class make(File file) {
.add(" .stream().filter(" + typeName(fu.getTable()) + "." + javaLanguageNamer().javaStaticFieldName(fu.getColumn().getName()) + ".equal(this." + GETTER_METHOD_PREFIX + typeName(fu.getForeignColumn()) + "()));");
i.add(method);
})
.addForeignKeyConsumer((i, fk) -> {
.forEveryForeignKey((i, fk) -> {
final FkHolder fu = new FkHolder(getSpeedment(), getCodeGenerator(), fk);
fu.imports().forEachOrdered(file::add);

Expand Down
Expand Up @@ -60,7 +60,7 @@ protected Interface make(File file) {

final Interface iface = newBuilder(file, entity.getName())
// Getters
.addColumnConsumer((i, c) -> {
.forEveryColumn((i, c) -> {
final Type retType;
if (c.isNullable()) {
retType = Type.of(Optional.class).add(
Expand All @@ -80,7 +80,7 @@ protected Interface make(File file) {

})
// Setters
.addColumnConsumer((i, c) -> {
.forEveryColumn((i, c) -> {
i.add(Method.of(SETTER_METHOD_PREFIX + typeName(c), entity.getType())
.add(Field.of(variableName(c), Type.of(c.findTypeMapper().getJavaType())))
.set(Javadoc.of("Sets the " + variableName(c) + " of this " + entity.getName() + ". The " + variableName(c) + " field corresponds to the database column "
Expand All @@ -92,7 +92,7 @@ protected Interface make(File file) {

})
// Fields
.addColumnConsumer((i, c) -> {
.forEveryColumn((i, c) -> {
final ReferenceFieldType ref = EntityTranslatorSupport.getReferenceFieldType(file, table(), c, entity.getType(), javaLanguageNamer());

final Type entityType = entity.getType();
Expand Down Expand Up @@ -141,7 +141,7 @@ protected Interface make(File file) {

})
// Add streamers from back pointing FK:s
.addForeignKeyReferencesThisTableConsumer((i, fk) -> {
.forEveryForeignKeyReferencingThis((i, fk) -> {
final FkHolder fu = new FkHolder(getSpeedment(), getCodeGenerator(), fk);
file.add(Import.of(fu.getEmt().entity().getType()));

Expand Down Expand Up @@ -182,7 +182,7 @@ protected Interface make(File file) {

i.add(method);
})
.addForeignKeyConsumer((i, fk) -> {
.forEveryForeignKey((i, fk) -> {

final FkHolder fu = new FkHolder(getSpeedment(), getCodeGenerator(), fk);
fu.imports().forEachOrdered(file::add);
Expand Down
Expand Up @@ -73,7 +73,7 @@ public EntityManagerImplTranslator(Speedment speedment, Generator gen, Table doc
protected Class make(File file) {

return newBuilder(file, manager.getImplName())
.addColumnConsumer((i, c) -> {
.forEveryColumn((i, c) -> {

final TypeMapper<?, ?> mapper = c.findTypeMapper();
final java.lang.Class<?> javaType = mapper.getJavaType();
Expand Down

0 comments on commit bd823c7

Please sign in to comment.