com.heliorm.impl.FieldPart Maven / Gradle / Ivy
The newest version!
package com.heliorm.impl;
import com.heliorm.Field;
import com.heliorm.OrmException;
import com.heliorm.Table;
import com.heliorm.def.FieldOrder;
import java.util.Optional;
import static java.lang.String.format;
/**
* @param Type of POJO
* @param Type of the field
* @author gideon
*/
public abstract class FieldPart implements Field, Cloneable {
private final Table table;
private final FieldType fieldType;
private final Class javaType;
private final String javaName;
private String sqlName;
private boolean primaryKey = false;
private boolean autoNumber = false;
private boolean foreignKey = false;
private boolean nullable = false;
private Optional> foreignTable = Optional.empty();
private Optional length = Optional.empty();
public FieldPart(Table table, FieldType fieldType, Class javaType, String javaName) {
this.table = table;
this.fieldType = fieldType;
this.javaType = javaType;
this.javaName = javaName;
this.sqlName = javaName;
}
@Override
public final Table getTable() {
return table;
}
@Override
public final Class getJavaType() {
return javaType;
}
@Override
public final String getJavaName() {
return javaName;
}
@Override
public final String getSqlName() {
return sqlName;
}
void setSqlName(String sqlName) {
this.sqlName = sqlName;
}
@Override
public final boolean isPrimaryKey() {
return primaryKey;
}
void setPrimaryKey(boolean primaryKey) {
this.primaryKey = primaryKey;
}
@Override
public boolean isAutoNumber() {
return autoNumber;
}
void setAutoNumber(boolean autoNumber) {
this.autoNumber = autoNumber;
}
public final FieldPart getThis() throws OrmException {
try {
return (FieldPart) clone();
} catch (CloneNotSupportedException ex) {
throw new OrmException(format("Could not make a copy of class %s.BUG!", getClass().getSimpleName()));
}
}
@Override
public final FieldType getFieldType() {
return fieldType;
}
@Override
public final boolean isForeignKey() {
return foreignKey;
}
void setForeignKey(boolean foreignKey) {
this.foreignKey = foreignKey;
}
@Override
public final Optional> getForeignTable() {
return foreignTable;
}
void setForeignTable(Optional> foreignTable) {
this.foreignTable = foreignTable;
}
@Override
public final Optional getLength() {
return length;
}
public void setLength(Optional length) {
this.length = length;
}
@Override
public final boolean isNullable() {
return nullable;
}
void setNullable(boolean nullable) {
this.nullable = nullable;
}
public FieldOrder asc() {
return () -> FieldPart.this;
}
public FieldOrder desc() {
return new FieldOrder() {
@Override
public Direction getDirection() {
return Direction.DESC;
}
@Override
public Field getField() {
return FieldPart.this;
}
};
}
@Override
public Field getField() {
return this;
}
@Override
public String toString() {
return format("%s : %s", getJavaName(), getFieldType());
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy