All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.grosner.processor.definition.BaseDefinition Maven / Gradle / Ivy

The newest version!
package com.grosner.processor.definition;

import com.google.common.collect.Sets;
import com.grosner.processor.model.ProcessorManager;
import com.grosner.processor.writer.FlowWriter;
import com.squareup.javawriter.JavaWriter;

import javax.lang.model.element.Element;
import javax.lang.model.element.Modifier;
import java.io.IOException;

/**
 * Author: andrewgrosner
 * Contributors: { }
 * Description:
 */
public abstract class BaseDefinition implements Definition, FlowWriter {

    public final ProcessorManager manager;

    public final String elementClassName;

    public final Element element;

    public String definitionClassName;

    public String packageName;

    public BaseDefinition(Element typeElement, ProcessorManager processorManager) {
        this.manager = processorManager;
        this.element = typeElement;
        elementClassName = element.getSimpleName().toString();
        packageName = manager.getElements().getPackageOf(typeElement).toString();
    }

    protected void setDefinitionClassName(String definitionClassName) {
        this.definitionClassName = elementClassName + definitionClassName;
    }

    @Override
    public String getSourceFileName() {
        return packageName + "." + definitionClassName;
    }

    public ProcessorManager getManager() {
        return manager;
    }

    @Override
    public void write(JavaWriter javaWriter) throws IOException {
        javaWriter.emitPackage(packageName);
        javaWriter.emitImports(getImports());
        javaWriter.beginType(definitionClassName, "class" , Sets.newHashSet(Modifier.PUBLIC, Modifier.FINAL), getExtendsClass(), getImplementsClasses());
        onWriteDefinition(javaWriter);
        javaWriter.endType();
        javaWriter.close();
    }

    protected String[] getImports() {
        return new String[0];
    }

    protected String getExtendsClass() {
        return null;
    }

    protected String[] getImplementsClasses() {
        return new String[0];
    }

    public void onWriteDefinition(JavaWriter javaWriter) throws IOException {

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy