
br.com.objectos.way.flat.FlatContainerInfo Maven / Gradle / Ivy
/*
* Copyright 2014-2015 Objectos, Fábrica de Software LTDA.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package br.com.objectos.way.flat;
import br.com.objectos.way.pojo.plugin.Contribution;
import br.com.objectos.way.pojo.plugin.PojoInfo;
import com.squareup.javapoet.MethodSpec;
import com.squareup.javapoet.TypeSpec;
/**
* @author [email protected] (Marcio Endo)
*/
class FlatContainerInfo {
final MethodSpec constructor;
final MethodSpec readFrom;
final MethodSpec writeTo;
final TypeSpec flatReaderVisitor;
private FlatContainerInfo(MethodSpec constructor,
MethodSpec readFrom,
MethodSpec writeTo,
TypeSpec flatReaderVisitor) {
this.constructor = constructor;
this.readFrom = readFrom;
this.writeTo = writeTo;
this.flatReaderVisitor = flatReaderVisitor;
}
public static FlatContainerInfo of(PojoInfo pojoInfo) {
FlatContainerConstructor constructor = new FlatContainerConstructor();
FlatContainerReadFrom readFrom = new FlatContainerReadFrom(pojoInfo);
FlatContainerWriteTo writeTo = new FlatContainerWriteTo();
FlatContainerVisitor visitor = new FlatContainerVisitor(pojoInfo);
pojoInfo.propertyStream()
.map(FlatContainerProperty::of)
.forEach(p -> {
constructor.add(p);
writeTo.add(p);
visitor.add(p);
});
return new FlatContainerInfo(
constructor.build(),
readFrom.build(),
writeTo.build(),
visitor.build());
}
public Contribution execute() {
return Contribution.builder()
.addMethod(constructor)
.addMethod(readFrom)
.addMethod(writeTo)
.addType(flatReaderVisitor)
.build();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy