ColumnItemBuilder.java

package ru.volnenko.maven.plugin.databasedoc.builder.impl;

import lombok.NonNull;
import ru.volnenko.maven.plugin.databasedoc.builder.IColumnItemBuilder;
import ru.volnenko.maven.plugin.databasedoc.model.impl.Column;
import ru.volnenko.maven.plugin.databasedoc.model.impl.Root;

public final class ColumnItemBuilder implements IColumnItemBuilder {

    @NonNull
    private final ColumnBuilder columnBuilder;

    @NonNull
    private final Column column = new Column();

    public ColumnItemBuilder(@NonNull final ColumnBuilder columnBuilder) {
        this.columnBuilder = columnBuilder;
        columnBuilder.createTable().add(column);
    }

    @NonNull
    @Override
    public ColumnItemBuilder add() {
        return columnBuilder.add();
    }

    @NonNull
    @Override
    public ConstraintsBuilder constraints() {
        return new ConstraintsBuilder(this);
    }

    @NonNull
    @Override
    public ColumnItemBuilder name(final String name) {
        column.setName(name);
        return this;
    }

    @NonNull
    @Override
    public ColumnItemBuilder type(final String type) {
        column.setType(type);
        return this;
    }

    @NonNull
    @Override
    public ColumnItemBuilder remarks(final String remarks) {
        column.setRemarks(remarks);
        return this;
    }

    @NonNull
    @Override
    public ColumnItemBuilder autoIncrement(final Boolean autoIncrement) {
        column.setAutoIncrement(autoIncrement);
        return this;
    }

    @NonNull
    @Override
    public Column column() {
        return column;
    }

    @NonNull
    @Override
    public Root root() {
        return columnBuilder.root();
    }

    @NonNull
    @Override
    public ChangeBuilder change() {
        return columnBuilder.change();
    }

}