package jef.database.meta.def; import java.util.ArrayList; import java.util.List; import javax.persistence.Index; import org.apache.commons.lang.StringUtils; /** * Index描述 * * @author publicxtgxrj10 * */ public class IndexDef { /** * 索引名,为空时自动创建名称(但是可能会超出数据库长度,因此也可以手工指定) * * @return */ private String name; /** * 索引的各个字段名称(是java字段名,不是列名) * * @return */ private String[] columns; /** * 其他索引类型的定义关键字,如bitmap * * @return */ private String definition; /** * unique索引 * * @return true if the index is a unique index. */ private boolean unique; /** * 是否聚簇索引 * * @return true if the index is a clustered index. */ private boolean clustered; public String getName() { return name; } public void setName(String name) { this.name = name; } public String[] getColumns() { return columns; } public void setColumns(String[] columns) { this.columns = columns; } public String getDefinition() { return definition; } public void setDefinition(String definition) { if(definition==null)return; String[] defs = StringUtils.split(definition); List<String> result = new ArrayList<String>(defs.length); for (String s : defs) { if ("clustered".equalsIgnoreCase(s)) { this.clustered = true; continue; } else if ("unique".equalsIgnoreCase(s)) { this.unique = true; continue; } result.add(s); } this.definition = StringUtils.join(result, ' '); } public boolean isUnique() { return unique; } public void setUnique(boolean unique) { this.unique = unique; } public IndexDef(String name, String[] columns) { this.name = name; this.columns = columns; } public static IndexDef create(Index index) { IndexDef def = new IndexDef(index.name(), StringUtils.split(index.columnList(), ",")); def.setUnique(index.unique()); return def; } public boolean isClustered() { return clustered; } }