Skip to content

Commit

Permalink
generator-standard: Fix #528 generate static list of fields in manage…
Browse files Browse the repository at this point in the history
…r interface
  • Loading branch information
Pyknic committed Oct 10, 2017
1 parent b554cc1 commit 3deec36
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 9 deletions.
Expand Up @@ -16,19 +16,18 @@
*/
package com.speedment.generator.standard.manager;

import com.speedment.common.codegen.constant.DefaultType;
import com.speedment.common.codegen.constant.SimpleParameterizedType;
import com.speedment.common.codegen.model.Class;
import com.speedment.common.codegen.model.*;
import com.speedment.generator.translator.AbstractEntityAndManagerTranslator;
import com.speedment.runtime.config.Column;
import com.speedment.runtime.config.Table;
import com.speedment.runtime.config.identifier.TableIdentifier;
import com.speedment.runtime.config.trait.HasColumn;
import com.speedment.runtime.config.trait.HasEnabled;
import com.speedment.runtime.core.manager.AbstractManager;
import com.speedment.runtime.core.manager.AbstractViewManager;

import java.util.Comparator;
import java.util.Optional;
import java.util.stream.Stream;

Expand Down Expand Up @@ -60,6 +59,8 @@ protected Class makeCodeGenModel(File file) {
// The table specific methods. //
////////////////////////////////////////////////////////////////////
.forEveryTable((clazz, table) -> {
file.add(Import.of(getSupport().managerType()));

clazz
.public_()
.abstract_()
Expand All @@ -81,7 +82,18 @@ protected Class makeCodeGenModel(File file) {
.public_().add(OVERRIDE)
.add("return tableIdentifier;")
)
.add(generateFields(getSupport(), file, FIELDS_METHOD, () -> table.columns().sorted(Comparator.comparing(Column::getOrdinalPosition))))
.add(
Method.of(FIELDS_METHOD,
DefaultType.stream(
SimpleParameterizedType.create(
com.speedment.runtime.field.Field.class,
getSupport().entityType()
)
)
)
.public_().add(OVERRIDE)
.add("return " + getSupport().managerName() + ".FIELDS.stream();")
)
.add(generateFields(getSupport(), file, PRIMARY_KEYS_FIELDS_METHOD,
() -> table.primaryKeyColumns()
.filter(HasEnabled::test)
Expand Down
Expand Up @@ -17,15 +17,23 @@
package com.speedment.generator.standard.manager;

import com.speedment.common.codegen.constant.SimpleParameterizedType;
import com.speedment.common.codegen.model.File;
import com.speedment.common.codegen.model.Interface;
import com.speedment.common.codegen.model.Method;
import com.speedment.common.codegen.model.*;
import com.speedment.generator.translator.AbstractEntityAndManagerTranslator;
import com.speedment.runtime.config.Column;
import com.speedment.runtime.config.Table;
import com.speedment.runtime.config.trait.HasEnabled;
import com.speedment.runtime.core.manager.Manager;

import java.util.Arrays;
import java.util.Collections;

import static com.speedment.common.codegen.constant.DefaultAnnotationUsage.OVERRIDE;
import static com.speedment.common.codegen.constant.DefaultType.classOf;
import static com.speedment.common.codegen.constant.DefaultType.list;
import static com.speedment.common.codegen.util.Formatting.indent;
import static com.speedment.common.codegen.util.Formatting.nl;
import static java.util.Comparator.comparing;
import static java.util.stream.Collectors.joining;

/**
*
Expand All @@ -42,14 +50,32 @@ public GeneratedManagerTranslator(Table table) {
@Override
protected Interface makeCodeGenModel(File file) {
return newBuilder(file, getSupport().generatedManagerName())
.forEveryTable((intf, table) ->
.forEveryTable((intf, table) -> {
file.add(Import.of(getSupport().entityType()));
file.add(Import.of(Collections.class).setStaticMember("unmodifiableList").static_());
file.add(Import.of(Arrays.class).setStaticMember("asList").static_());

intf.public_()
.add(SimpleParameterizedType.create(Manager.class, getSupport().entityType()))

.add(Field.of("FIELDS", list(SimpleParameterizedType.create(
com.speedment.runtime.field.Field.class,
getSupport().entityType())
)).set(Value.ofReference("unmodifiableList(asList(" + nl() + indent(
table.columns()
.sorted(comparing(Column::getOrdinalPosition))
.filter(HasEnabled::isEnabled)
.map(Column::getJavaName)
.map(getSupport().namer()::javaStaticFieldName)
.map(field -> getSupport().typeName() + "." + field)
.collect(joining("," + nl()))
) + nl() + "))")))

.add(Method.of("getEntityClass", classOf(getSupport().entityType()))
.default_().add(OVERRIDE)
.add("return " + getSupport().entityName() + ".class;")
)
).build();
);
}).build();
}

@Override
Expand Down

0 comments on commit 3deec36

Please sign in to comment.