CreateTypeBuilder.java

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

import lombok.NonNull;
import ru.volnenko.maven.plugin.databasedoc.builder.ICreateTypeBuilder;
import ru.volnenko.maven.plugin.databasedoc.model.impl.CreateType;
import ru.volnenko.maven.plugin.databasedoc.model.impl.Root;

public final class CreateTypeBuilder implements ICreateTypeBuilder {

    @NonNull
    private final ChangeBuilder changeBuilder;

    @NonNull
    private final CreateType createType = new CreateType();

    public CreateTypeBuilder(@NonNull final ChangeBuilder changeBuilder) {
        this.changeBuilder = changeBuilder;
        changeBuilder.change().setCreateType(createType);
    }

    @NonNull
    @Override
    public CreateTypeBuilder catalogName(final String catalogName) {
        createType.setCatalogName(catalogName);
        return this;
    }

    @NonNull
    @Override
    public CreateTypeBuilder tablespace(final String tablespace) {
        createType.setTablespace(tablespace);
        return this;
    }

    @NonNull
    @Override
    public CreateTypeBuilder typeName(final String typeName) {
        createType.setTypeName(typeName);
        return this;
    }

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

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

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

    @NonNull
    @Override
    public CreateType createType() {
        return createType;
    }

    @NonNull
    public ValueBuilder value() {
        return new ValueBuilder(this);
    }

}