package com.revolsys.record.schema;
import com.revolsys.datatype.DataType;
import com.revolsys.geometry.model.GeometryFactory;
import com.revolsys.io.PathName;
public class RecordDefinitionBuilder {
private final RecordDefinitionImpl recordDefinition;
public RecordDefinitionBuilder(final PathName pathName) {
this.recordDefinition = new RecordDefinitionImpl(pathName);
}
public RecordDefinitionBuilder(final String pathName) {
this(PathName.newPathName(pathName));
}
public void addField(final FieldDefinition field) {
this.recordDefinition.addField(field.clone());
}
public RecordDefinitionBuilder addField(final String fieldName, final DataType type) {
this.recordDefinition.addField(fieldName, type);
return this;
}
public RecordDefinitionBuilder addField(final String fieldName, final DataType type,
final boolean required) {
this.recordDefinition.addField(fieldName, type, required);
return this;
}
public RecordDefinitionBuilder addField(final String fieldName, final DataType type,
final int length) {
this.recordDefinition.addField(fieldName, type, length, false);
return this;
}
public RecordDefinitionBuilder addField(final String fieldName, final DataType type,
final int length, final boolean required) {
this.recordDefinition.addField(fieldName, type, length, required);
return this;
}
public RecordDefinitionBuilder addField(final String fieldName, final DataType type,
final int length, final int scale) {
this.recordDefinition.addField(fieldName, type, length, scale);
return this;
}
public RecordDefinitionBuilder addField(final String fieldName, final DataType type,
final int length, final int scale, final boolean required) {
this.recordDefinition.addField(fieldName, type, length, scale, required);
return this;
}
public RecordDefinition getRecordDefinition() {
return this.recordDefinition;
}
public RecordDefinition newRecordDefinition(final RecordStore recordStore) {
final RecordDefinition recordDefinition = getRecordDefinition();
return recordStore.getRecordDefinition(recordDefinition);
}
public RecordDefinitionBuilder setGeometryFactory(final GeometryFactory geometryFactory) {
this.recordDefinition.setGeometryFactory(geometryFactory);
return this;
}
}