package org.springframework.roo.addon.jpa.addon.identifier;
import org.apache.commons.lang3.Validate;
import org.springframework.roo.model.JavaSymbolName;
import org.springframework.roo.model.JavaType;
/**
* Represents an entity identifier. Instances are immutable.
*
* @author Alan Stewart
* @since 1.1
*/
public class Identifier {
private final String columnDefinition;
private final String columnName;
private final int columnSize;
private final JavaSymbolName fieldName;
private final JavaType fieldType;
private final int scale;
/**
* Constructor
*
* @param fieldName required
* @param fieldType required
* @param columnName required
* @param columnSize
* @param scale
* @param columnDefinition
*/
public Identifier(final JavaSymbolName fieldName, final JavaType fieldType,
final String columnName, final int columnSize, final int scale, final String columnDefinition) {
Validate.notNull(fieldName, "Field name required");
Validate.notNull(fieldType, "Field type required");
Validate.notBlank(columnName, "Column name required");
this.columnDefinition = columnDefinition;
this.columnName = columnName;
this.columnSize = columnSize;
this.fieldName = fieldName;
this.fieldType = fieldType;
this.scale = scale;
}
@Override
public boolean equals(final Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Identifier other = (Identifier) obj;
if (columnDefinition == null) {
if (other.columnDefinition != null) {
return false;
}
} else if (!columnDefinition.equals(other.columnDefinition)) {
return false;
}
if (columnName == null) {
if (other.columnName != null) {
return false;
}
} else if (!columnName.equals(other.columnName)) {
return false;
}
if (columnSize != other.columnSize) {
return false;
}
if (fieldName == null) {
if (other.fieldName != null) {
return false;
}
} else if (!fieldName.equals(other.fieldName)) {
return false;
}
if (fieldType == null) {
if (other.fieldType != null) {
return false;
}
} else if (!fieldType.equals(other.fieldType)) {
return false;
}
if (scale != other.scale) {
return false;
}
return true;
}
public String getColumnDefinition() {
return columnDefinition;
}
public String getColumnName() {
return columnName;
}
public int getColumnSize() {
return columnSize;
}
public JavaSymbolName getFieldName() {
return fieldName;
}
public JavaType getFieldType() {
return fieldType;
}
public int getScale() {
return scale;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (columnDefinition == null ? 0 : columnDefinition.hashCode());
result = prime * result + (columnName == null ? 0 : columnName.hashCode());
result = prime * result + columnSize;
result = prime * result + (fieldName == null ? 0 : fieldName.hashCode());
result = prime * result + (fieldType == null ? 0 : fieldType.hashCode());
result = prime * result + scale;
return result;
}
@Override
public String toString() {
return String
.format(
"Identifier [fieldName=%s, fieldType=%s, columnName=%s, columnSize=%s, scale=%s, columnDefinition=%s]",
fieldName, fieldType, columnName, columnSize, scale, columnDefinition);
}
}