
br.com.objectos.io.xls.compiler.SheetMethod Maven / Gradle / Ivy
The newest version!
/*
* Copyright 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.io.xls.compiler;
import java.util.Set;
import br.com.objectos.code.MethodInfo;
import br.com.objectos.core.auto.AutoPojo;
import br.com.objectos.core.testing.Testable;
import br.com.objectos.io.xls.Styles;
import br.com.objectos.io.xls.annotation.Header;
import com.squareup.javapoet.MethodSpec;
/**
* @author [email protected] (Marcio Endo)
*/
@AutoPojo
abstract class SheetMethod implements Testable {
abstract String fieldName();
abstract String header();
abstract SheetMethodFormat format();
abstract Set styleSet();
abstract SheetMethodWidth width();
SheetMethod() {
}
public static SheetMethod of(MethodInfo methodInfo) {
return SheetMethod.builder()
.fieldName(methodInfo.fieldName())
.header(methodInfo.annotationInfo(Header.class)
.map(ann -> ann.stringValue("value", methodInfo.fieldName()))
.get())
.format(SheetMethodFormat.of(methodInfo))
.styleSet(SheetMethodStyle.of(methodInfo))
.width(SheetMethodWidth.of(methodInfo))
.build();
}
private static SheetMethodBuilder builder() {
return new SheetMethodBuilderPojo();
}
public void toXls(MethodSpec.Builder toXls) {
toXls.addCode(" .add($L)", fieldName());
format().toXls(toXls);
if (!styleSet().isEmpty()) {
toXls.addCode(".with($T", Styles.class);
for (SheetMethodStyle style : styleSet()) {
style.toXls(toXls);
}
toXls.addCode(")");
}
toXls.addCode("\n");
}
public void writeColumnWidth(MethodSpec.Builder write) {
width().write(write);
}
public void writeHeader(MethodSpec.Builder write) {
write.addCode(" .add($S).with($T.bold()", header(), Styles.class);
for (SheetMethodStyle style : styleSet()) {
style.writeHeader(write);
}
write.addCode(")\n");
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy