@Override public int compareTo(IndexMetadata indexMetadata) { String columnNames = StringUtil.merge(getColumnNames()); String indexMetadataColumnNames = StringUtil.merge( indexMetadata.getColumnNames()); return columnNames.compareTo(indexMetadataColumnNames); }
@Override public String toString() { return getCreateSQL(null); }
@Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof IndexMetadata)) { return false; } IndexMetadata indexMetadata = (IndexMetadata)obj; if (Objects.equals(getTableName(), indexMetadata.getTableName()) && Arrays.equals(_columnNames, indexMetadata._columnNames)) { return true; } return false; }
public Boolean redundantTo(IndexMetadata indexMetadata) { String[] indexMetadataColumnNames = indexMetadata._columnNames; if (_columnNames.length <= indexMetadataColumnNames.length) { for (int i = 0; i < _columnNames.length; i++) { if (!_columnNames[i].equals(indexMetadataColumnNames[i])) { return null; } } if (isUnique()) { return Boolean.FALSE; } return Boolean.TRUE; } Boolean redundant = indexMetadata.redundantTo(this); if (redundant == null) { return null; } return !redundant; }
if (isUnique()) { sb.append("create unique "); sb.append(getIndexName()); sb.append(" on "); sb.append(getTableName());
createSQL.substring(start, end), StringPool.COMMA_AND_SPACE); return new IndexMetadata(indexName, tableName, unique, columnNames);
public static IndexMetadata createIndexMetadata( boolean unique, String tableName, String... columnNames) { if (columnNames == null) { throw new NullPointerException("Column names are missing"); } StringBundler sb = new StringBundler(4 + columnNames.length * 2); sb.append(tableName); sb.append(StringPool.SPACE); sb.append(StringPool.OPEN_PARENTHESIS); for (String columnName : columnNames) { sb.append(columnName); sb.append(StringPool.COMMA_AND_SPACE); } sb.setIndex(sb.index() - 1); sb.append(StringPool.CLOSE_PARENTHESIS); sb.append(StringPool.SEMICOLON); String specification = sb.toString(); String specificationHash = StringUtil.toHexString( specification.hashCode()); specificationHash = StringUtil.toUpperCase(specificationHash); return new IndexMetadata( _INDEX_NAME_PREFIX.concat(specificationHash), tableName, unique, columnNames); }
@Override public int hashCode() { int hashCode = HashUtil.hash(0, getTableName()); for (String columnName : _columnNames) { hashCode = HashUtil.hash(hashCode, columnName); } return hashCode; }
indexMetadata.getColumnNames()))) {
IndexMetadataFactoryUtil.createIndexMetadata(line); if (tableName.equals(indexMetadata.getTableName())) { objectValuePairs.add( new ObjectValuePair<>(line, indexMetadata)); _portalIndexesSQL.get(indexMetadata.getTableName()); indexMetadata.getTableName(), objectValuePairs);