use of java.util.StringJoiner in project requery by requery.
the class EntityGenerator method generateConstructors.
private void generateConstructors(TypeSpec.Builder builder) {
// copy the existing constructors
for (ExecutableElement constructor : ElementFilter.constructorsIn(typeElement.getEnclosedElements())) {
// constructor params
List<? extends VariableElement> parameters = constructor.getParameters();
if (!parameters.isEmpty()) {
MethodSpec.Builder constructorBuilder = MethodSpec.constructorBuilder();
constructorBuilder.addModifiers(constructor.getModifiers());
List<String> parameterNames = new ArrayList<>();
for (VariableElement parameter : parameters) {
Modifier[] modifiers = parameter.getModifiers().toArray(new Modifier[parameter.getModifiers().size()]);
String parameterName = parameter.getSimpleName().toString();
parameterNames.add(parameterName);
ParameterSpec.Builder parameterBuilder = ParameterSpec.builder(TypeName.get(parameter.asType()), parameterName, modifiers);
constructorBuilder.addParameter(parameterBuilder.build());
}
// super parameter/arguments
StringJoiner joiner = new StringJoiner(",", "(", ")");
parameterNames.forEach(joiner::add);
constructorBuilder.addStatement("super" + joiner.toString());
builder.addMethod(constructorBuilder.build());
}
}
}
use of java.util.StringJoiner in project requery by requery.
the class EntityMetaGenerator method generateType.
private void generateType(TypeSpec.Builder builder, TypeName targetName) {
CodeBlock.Builder block = CodeBlock.builder().add("new $T<$T>($T.class, $S)\n", TypeBuilder.class, targetName, targetName, entity.tableName());
block.add(".setBaseType($T.class)\n", ClassName.get(typeElement)).add(".setCacheable($L)\n", entity.isCacheable()).add(".setImmutable($L)\n", entity.isImmutable()).add(".setReadOnly($L)\n", entity.isReadOnly()).add(".setStateless($L)\n", entity.isStateless()).add(".setView($L)\n", entity.isView());
String factoryName = entity.classFactoryName();
if (!Names.isEmpty(factoryName)) {
block.add(".setFactory(new $L())\n", ClassName.bestGuess(factoryName));
} else if (entity.isImmutable()) {
// returns this class as the builder
TypeSpec.Builder supplier = TypeSpec.anonymousClassBuilder("").addSuperinterface(parameterizedTypeName(Supplier.class, typeName));
supplier.addMethod(CodeGeneration.overridePublicMethod("get").returns(typeName).addStatement("return new $T()", typeName).build());
block.add(".setBuilderFactory($L)\n", supplier.build());
MethodSpec.Builder applyMethod = CodeGeneration.overridePublicMethod("apply").addParameter(typeName, "value").returns(targetName);
// add embedded builder calls
entity.attributes().values().stream().filter(AttributeDescriptor::isEmbedded).forEach(attribute -> graph.embeddedDescriptorOf(attribute).ifPresent(embedded -> embedded.builderType().ifPresent(type -> {
String fieldName = attribute.fieldName() + "Builder";
String methodName = attribute.setterName();
applyMethod.addStatement("value.builder.$L(value.$L.build())", methodName, fieldName);
})));
applyMethod.addStatement(entity.builderType().isPresent() ? "return value.builder.build()" : "return value.build()");
TypeSpec.Builder buildFunction = TypeSpec.anonymousClassBuilder("").addSuperinterface(parameterizedTypeName(Function.class, typeName, targetName)).addMethod(applyMethod.build());
block.add(".setBuilderFunction($L)\n", buildFunction.build());
} else {
TypeSpec.Builder typeFactory = TypeSpec.anonymousClassBuilder("").addSuperinterface(parameterizedTypeName(Supplier.class, targetName)).addMethod(CodeGeneration.overridePublicMethod("get").addStatement("return new $T()", targetName).returns(targetName).build());
block.add(".setFactory($L)\n", typeFactory.build());
}
ParameterizedTypeName proxyType = parameterizedTypeName(EntityProxy.class, targetName);
TypeSpec.Builder proxyProvider = TypeSpec.anonymousClassBuilder("").addSuperinterface(parameterizedTypeName(Function.class, targetName, proxyType));
MethodSpec.Builder proxyFunction = CodeGeneration.overridePublicMethod("apply").addParameter(targetName, "entity").returns(proxyType);
if (entity.isImmutable() || entity.isUnimplementable()) {
proxyFunction.addStatement("return new $T(entity, $L)", proxyType, TYPE_NAME);
} else {
proxyFunction.addStatement("return entity.$L", PROXY_NAME);
}
proxyProvider.addMethod(proxyFunction.build());
block.add(".setProxyProvider($L)\n", proxyProvider.build());
if (entity.tableAttributes().length > 0) {
StringJoiner joiner = new StringJoiner(",", "new String[] {", "}");
for (String attribute : entity.tableAttributes()) {
joiner.add("\"" + attribute + "\"");
}
block.add(".setTableCreateAttributes($L)\n", joiner.toString());
}
if (entity.tableUniqueIndexes().length > 0) {
StringJoiner joiner = new StringJoiner(",", "new String[] {", "}");
for (String attribute : entity.tableUniqueIndexes()) {
joiner.add("\"" + attribute + "\"");
}
block.add(".setTableUniqueIndexes($L)\n", joiner.toString());
}
attributeNames.forEach(name -> block.add(".addAttribute($L)\n", name));
expressionNames.forEach(name -> block.add(".addExpression($L)\n", name));
block.add(".build()");
ParameterizedTypeName type = parameterizedTypeName(Type.class, targetName);
builder.addField(FieldSpec.builder(type, TYPE_NAME, Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL).initializer("$L", block.build()).build());
}
use of java.util.StringJoiner in project goci by EBISPOT.
the class StudyUpdateService method generateUpdateDescription.
/**
* Generate a description of update made
*
* @param existingStudy Study based on whats stored in database
* @param study Updated study
*/
private String generateUpdateDescription(Study existingStudy, Study study) {
String updateDescription = null;
List<String> updateDetails = new ArrayList<>();
// Check disease trait for changes
String existingDiseaseTraitName = null;
if (existingStudy.getDiseaseTrait() != null && existingStudy.getDiseaseTrait().getTrait() != null) {
existingDiseaseTraitName = existingStudy.getDiseaseTrait().getTrait();
}
String updatedDiseaseTraitName = null;
if (study.getDiseaseTrait() != null && study.getDiseaseTrait().getTrait() != null) {
updatedDiseaseTraitName = study.getDiseaseTrait().getTrait();
}
String diseaseTraitUpdateDescription = checkForDiseaseTraitUpdate(existingDiseaseTraitName, updatedDiseaseTraitName);
if (diseaseTraitUpdateDescription != null) {
updateDetails.add(diseaseTraitUpdateDescription);
}
// Check EFO trait for changes
List<String> existingStudyEfoTraits = new ArrayList<>();
List<String> updatedStudyEfoTraits = new ArrayList<>();
existingStudyEfoTraits = existingStudy.getEfoTraits().stream().filter(efoTrait -> efoTrait.getTrait() != null).filter(efoTrait -> !efoTrait.getTrait().isEmpty()).map(efoTrait -> efoTrait.getTrait()).collect(Collectors.toList());
if (study.getEfoTraits() != null) {
updatedStudyEfoTraits = study.getEfoTraits().stream().filter(efoTrait -> !efoTrait.getTrait().isEmpty()).map(efoTrait -> efoTrait.getTrait()).collect(Collectors.toList());
}
String efoTraitUpdateDescription = checkForEfoTraitUpdate(existingStudyEfoTraits, updatedStudyEfoTraits);
if (efoTraitUpdateDescription != null) {
updateDetails.add(efoTraitUpdateDescription);
}
StringJoiner updateDetailsJoiner = new StringJoiner(", ");
if (!updateDetails.isEmpty()) {
updateDetails.forEach(s -> updateDetailsJoiner.add(s));
updateDescription = updateDetailsJoiner.toString();
}
return updateDescription;
}
use of java.util.StringJoiner in project jdk8u_jdk by JetBrains.
the class MergeTest method testSimple.
public void testSimple() {
StringJoiner sj = new StringJoiner(",", "{", "}");
StringJoiner other = new StringJoiner(",", "[", "]");
Stream.of("a", "b", "c").forEachOrdered(sj::add);
Stream.of("d", "e", "f").forEachOrdered(other::add);
sj.merge(other);
assertEquals(sj.toString(), "{a,b,c,d,e,f}");
}
use of java.util.StringJoiner in project jdk8u_jdk by JetBrains.
the class MergeTest method testCascadeEmpty.
public void testCascadeEmpty() {
StringJoiner sj = new StringJoiner(",", "{", "}");
StringJoiner o1 = new StringJoiner(":", "[", "]").setEmptyValue("Empty1");
StringJoiner o2 = new StringJoiner(",", "<", ">").setEmptyValue("Empty2");
o1.merge(o2);
assertEquals(o1.toString(), "Empty1");
sj.merge(o1);
assertEquals(sj.toString(), "{}");
}
Aggregations