mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
143 lines
3.1 KiB
Java
143 lines
3.1 KiB
Java
package io.ebeaninternal.server.deploy.meta;
|
|
|
|
import io.ebean.annotation.Identity;
|
|
import io.ebean.annotation.IdentityGenerated;
|
|
import io.ebean.annotation.IdentityType;
|
|
import io.ebean.config.dbplatform.IdType;
|
|
|
|
public class DeployIdentityMode {
|
|
|
|
public static DeployIdentityMode auto() {
|
|
return new DeployIdentityMode(IdType.AUTO);
|
|
}
|
|
|
|
private IdType type;
|
|
private IdentityGenerated generated;
|
|
private int start;
|
|
private int increment;
|
|
private int cache;
|
|
private String sequenceName;
|
|
private boolean platformDefault;
|
|
|
|
public DeployIdentityMode(Identity id) {
|
|
this.type = idType(id.type());
|
|
this.generated = id.generated();
|
|
this.start = id.start();
|
|
this.increment = id.increment();
|
|
this.cache = id.cache();
|
|
this.sequenceName = id.sequenceName();
|
|
}
|
|
|
|
private DeployIdentityMode(IdType type) {
|
|
this.type = type;
|
|
this.generated = IdentityGenerated.AUTO;
|
|
this.sequenceName = "";
|
|
this.start = 0;
|
|
this.increment = 0;
|
|
this.cache = 0;
|
|
}
|
|
|
|
public void setPlatformType(IdType type) {
|
|
this.type = type;
|
|
this.platformDefault = true;
|
|
}
|
|
|
|
public void setSequence(int initialValue, int allocationSize, String sequenceName) {
|
|
this.start = initialValue;
|
|
this.increment = allocationSize;
|
|
this.sequenceName = sequenceName;
|
|
}
|
|
|
|
public void setSequenceGenerator(String genName) {
|
|
if (sequenceName == null || sequenceName.isEmpty()) {
|
|
sequenceName = genName;
|
|
}
|
|
}
|
|
|
|
public int setSequenceBatchMode(boolean sequenceBatchMode) {
|
|
if (sequenceBatchMode) {
|
|
// Ebean batch fetching multiple sequence values
|
|
increment = 1;
|
|
} else if (increment == 0) {
|
|
// Use JPA default of 50
|
|
increment = 50;
|
|
}
|
|
return increment;
|
|
}
|
|
|
|
public void setIdType(IdType type) {
|
|
this.type = type;
|
|
}
|
|
|
|
public void setStart(int start) {
|
|
this.start = start;
|
|
}
|
|
|
|
public void setIncrement(int increment) {
|
|
this.increment = increment;
|
|
}
|
|
|
|
public void setSequenceName(String sequenceName) {
|
|
this.sequenceName = sequenceName;
|
|
}
|
|
|
|
public boolean isPlatformDefault() {
|
|
return platformDefault;
|
|
}
|
|
|
|
public IdType getIdType() {
|
|
return type;
|
|
}
|
|
|
|
public IdentityGenerated getGenerated() {
|
|
return generated;
|
|
}
|
|
|
|
public int getStart() {
|
|
return start;
|
|
}
|
|
|
|
public int getIncrement() {
|
|
return increment;
|
|
}
|
|
|
|
public int getCache() {
|
|
return cache;
|
|
}
|
|
|
|
public String getSequenceName() {
|
|
return sequenceName;
|
|
}
|
|
|
|
public boolean isSequence() {
|
|
return type == IdType.SEQUENCE;
|
|
}
|
|
|
|
public boolean isIdentity() {
|
|
return type == IdType.IDENTITY;
|
|
}
|
|
|
|
public boolean isExternal() {
|
|
return type == IdType.EXTERNAL;
|
|
}
|
|
|
|
public boolean isAuto() {
|
|
return type == IdType.AUTO;
|
|
}
|
|
|
|
private static IdType idType(IdentityType type) {
|
|
switch (type) {
|
|
case AUTO:
|
|
return IdType.AUTO;
|
|
case SEQUENCE:
|
|
return IdType.SEQUENCE;
|
|
case IDENTITY:
|
|
return IdType.IDENTITY;
|
|
case APPLICATION:
|
|
return IdType.EXTERNAL;
|
|
default:
|
|
throw new IllegalStateException("type " + type + " not expected?");
|
|
}
|
|
}
|
|
}
|