Skip to content

Commit

Permalink
#999 - Refactor tidy for ... @DiscriminatorColumn columnDefinition is…
Browse files Browse the repository at this point in the history
… ignored for DDL generation
  • Loading branch information
rbygrave committed May 20, 2017
1 parent d04954e commit 79f7c73
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 69 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public ModelBuildPropertyVisitor visitBean(BeanDescriptor<?> descriptor) {
String columnDefn = inheritInfo.getColumnDefn();
if (columnDefn == null || columnDefn.isEmpty()) {
DbPlatformType dbType = ctx.getDbTypeMap().get(inheritInfo.getDiscriminatorType());
columnDefn = dbType.renderType(inheritInfo.getDiscriminatorLength(), 0);
columnDefn = dbType.renderType(inheritInfo.getColumnLength(), 0);
}
table.addColumn(new MColumn(discColumn, columnDefn, true));
}
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/io/ebeaninternal/server/deploy/InheritInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,12 +54,12 @@ public InheritInfo(InheritInfo r, InheritInfo parent, DeployInheritInfo deploy)

this.parent = parent;
this.type = deploy.getType();
this.discriminatorColumn = InternString.intern(deploy.getDiscriminatorColumn(parent));
this.discriminatorColumn = InternString.intern(deploy.getColumnName(parent));
this.discriminatorValue = deploy.getDiscriminatorObjectValue();
this.discriminatorStringValue = deploy.getDiscriminatorStringValue();

this.discriminatorType = deploy.getDiscriminatorType(parent);
this.discriminatorLength = deploy.getDiscriminatorLength(parent);
this.discriminatorLength = deploy.getColumnLength(parent);
this.columnDefn = deploy.getColumnDefn();
this.where = InternString.intern(deploy.getWhere());

Expand Down Expand Up @@ -341,7 +341,7 @@ public int getDiscriminatorType() {
/**
* Return the length of the discriminator column.
*/
public int getDiscriminatorLength() {
public int getColumnLength() {
return discriminatorLength;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,9 @@
import io.ebeaninternal.server.deploy.meta.DeployBeanDescriptor;

import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Inheritance;
import java.lang.annotation.Annotation;
import java.sql.Types;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -118,14 +116,9 @@ private DeployInheritInfo createInfo(Class<?> cls) {
DiscriminatorColumn da = AnnotationBase.findAnnotation(cls, DiscriminatorColumn.class);
if (da != null) {
// lowercase the discriminator column for RawSql and JSON
info.setDiscriminatorColumn(da.name().toLowerCase());
DiscriminatorType discriminatorType = da.discriminatorType();
if (discriminatorType.equals(DiscriminatorType.INTEGER)) {
info.setDiscriminatorType(Types.INTEGER);
} else {
info.setDiscriminatorType(Types.VARCHAR);
}
info.setDiscriminatorLength(da.length());
info.setColumnName(da.name().toLowerCase());
info.setColumnType(da.discriminatorType());
info.setColumnLength(da.length());
info.setColumnDefn(da.columnDefinition());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import io.ebeaninternal.server.deploy.InheritInfo;

import javax.persistence.DiscriminatorType;
import java.sql.Types;
import java.util.ArrayList;
import java.util.List;
Expand All @@ -15,21 +16,16 @@ public class DeployInheritInfo {
/**
* the default discriminator column according to the JPA 1.0 spec.
*/
private static final String JPA_DEFAULT_DISCRIM_COLUMN = "dtype";

private int discriminatorLength;

private int discriminatorType;
private static final String DEFAULT_COLUMN_NAME = "dtype";

private String discriminatorStringValue;
private Object discriminatorObjectValue;

private String discriminatorColumn;

private int columnType;
private String columnName;
private int columnLength;
private String columnDefn;

private String discriminatorWhere;

private final Class<?> type;

private Class<?> parent;
Expand All @@ -39,7 +35,7 @@ public class DeployInheritInfo {
/**
* Create for a given type.
*/
public DeployInheritInfo(Class<?> type) {
DeployInheritInfo(Class<?> type) {
this.type = type;
}

Expand Down Expand Up @@ -92,77 +88,67 @@ public void addChild(DeployInheritInfo childInfo) {
children.add(childInfo);
}

/**
* Return the derived where for the discriminator.
*/
public String getDiscriminatorWhere() {
return discriminatorWhere;
}

/**
* Set the derived where for the discriminator.
*/
public void setDiscriminatorWhere(String discriminatorWhere) {
this.discriminatorWhere = discriminatorWhere;
}

/**
* Return the column name of the discriminator.
*/
public String getDiscriminatorColumn(InheritInfo parent) {
if (discriminatorColumn == null) {
public String getColumnName(InheritInfo parent) {
if (columnName == null) {
if (parent == null) {
discriminatorColumn = JPA_DEFAULT_DISCRIM_COLUMN;
columnName = DEFAULT_COLUMN_NAME;
} else {
discriminatorColumn = parent.getDiscriminatorColumn();
columnName = parent.getDiscriminatorColumn();
}
}
return discriminatorColumn;
return columnName;
}

/**
* Set the column name of the discriminator.
*/
public void setDiscriminatorColumn(String discriminatorColumn) {
this.discriminatorColumn = discriminatorColumn;
public void setColumnName(String columnName) {
this.columnName = columnName;
}

public int getDiscriminatorLength(InheritInfo parent) {
if (discriminatorLength == 0) {
public int getColumnLength(InheritInfo parent) {
if (columnLength == 0) {
if (parent == null) {
discriminatorLength = 10;
columnLength = 10;
} else {
discriminatorLength = parent.getDiscriminatorLength();
columnLength = parent.getColumnLength();
}
}
return discriminatorLength;
return columnLength;
}

/**
* Return the sql type of the discriminator value.
*/
public int getDiscriminatorType(InheritInfo parent) {
if (discriminatorType == 0) {
if (columnType == 0) {
if (parent == null) {
discriminatorType = Types.VARCHAR;
columnType = Types.VARCHAR;
} else {
discriminatorType = parent.getDiscriminatorType();
columnType = parent.getDiscriminatorType();
}
}
return discriminatorType;
return columnType;
}

/**
* Set the sql type of the discriminator.
*/
public void setDiscriminatorType(int discriminatorType) {
this.discriminatorType = discriminatorType;
public void setColumnType(DiscriminatorType type) {
if (type.equals(DiscriminatorType.INTEGER)) {
this.columnType = Types.INTEGER;
} else {
this.columnType = Types.VARCHAR;
}
}

/**
* Set explicit column definition (ddl).
*/
public void setColumnDefn(String columnDefn) {
void setColumnDefn(String columnDefn) {
this.columnDefn = columnDefn;
}

Expand All @@ -173,18 +159,11 @@ public String getColumnDefn() {
return columnDefn;
}

/**
* Return the length of the discriminator column.
*/
public int getDiscriminatorLength() {
return discriminatorLength;
}

/**
* Set the length of the discriminator column.
*/
public void setDiscriminatorLength(int discriminatorLength) {
this.discriminatorLength = discriminatorLength;
void setColumnLength(int columnLength) {
this.columnLength = columnLength;
}

/**
Expand All @@ -201,13 +180,13 @@ public String getDiscriminatorStringValue() {
/**
* Set the discriminator value for this node.
*/
public void setDiscriminatorValue(String value) {
void setDiscriminatorValue(String value) {
if (value != null) {
value = value.trim();
if (!value.isEmpty()) {
discriminatorStringValue = value;
// convert the value if desired
if (discriminatorType == Types.INTEGER) {
if (columnType == Types.INTEGER) {
this.discriminatorObjectValue = Integer.valueOf(value);
} else {
this.discriminatorObjectValue = value;
Expand Down Expand Up @@ -240,7 +219,7 @@ private String buildWhereLiteral(List<Object> discList) {
return "";
}
StringBuilder sb = new StringBuilder();
sb.append(discriminatorColumn);
sb.append(columnName);
if (size == 1) {
sb.append(" = ");
} else {
Expand Down

0 comments on commit 79f7c73

Please sign in to comment.