UniqueKeyUtil.java
package ru.volnenko.maven.plugin.databasedoc.util;
import lombok.NonNull;
import ru.volnenko.maven.plugin.databasedoc.model.impl.*;
import java.util.*;
public final class UniqueKeyUtil {
@NonNull
public static Set<UK> uks(final Collection<Root> roots) {
if (roots == null || roots.isEmpty()) return Collections.emptySet();
@NonNull final Set<UK> result = new LinkedHashSet<>();
for (Root root: roots) result.addAll(uks(root));
return result;
}
@NonNull
public static Set<UK> uks(Root root) {
if (root == null) return Collections.emptySet();
if (root.getDatabaseChangeLog() == null) return Collections.emptySet();
if (root.getDatabaseChangeLog().isEmpty()) return Collections.emptySet();
@NonNull final Set<UK> result = new LinkedHashSet<>();
for (DatabaseChangeLog changeLog: root.getDatabaseChangeLog()) {
if (changeLog == null) continue;
final ChangeSet changeSet = changeLog.getChangeSet();
if (changeLog == null) continue;
final List<Change> changes = changeSet.getChanges();
if (changes == null || changes.isEmpty()) continue;
for (Change change: changes) {
if (change == null) continue;
result.addAll(uk(change.getCreateTable()));
final UK uk = uk(change.getAddUniqueConstraint());
if (uk == null) continue;
result.add(uk);
}
}
return result;
}
public static boolean enabled(final Column column) {
if (column == null) return false;
if (column.getConstraints() == null) return false;
if (column.getConstraints().getUnique() == null) return false;
return column.getConstraints().getUnique();
}
@NonNull
public static Set<UK> uk(final CreateTable createTable) {
if (createTable == null) return Collections.emptySet();
if (createTable.getColumns() == null) return Collections.emptySet();
if (createTable.getColumns().isEmpty()) return Collections.emptySet();
@NonNull final Set<UK> result = new LinkedHashSet<>();
for (final ColumnWrapper columnWrapper: createTable.getColumns()) {
if (columnWrapper == null) continue;
final Column column = columnWrapper.getColumn();
if (column == null) continue;
final UK uk = uk(createTable.getTableName(), column);
if (uk == null) continue;
result.add(uk);
}
return result;
}
public static UK uk(final AddUniqueConstraint constraint) {
if (constraint == null) return null;
if (constraint.getTableName() == null) return null;
if (constraint.getTableName().isEmpty()) return null;
if (constraint.getColumnNames() == null) return null;
if (constraint.getColumnNames().isEmpty()) return null;
final UK uk = new UK();
uk.setTableName(constraint.getTableName());
uk.setFieldName(constraint.getColumnNames());
return uk;
}
public static UK uk(final String tableName, final Column column) {
if (column == null) return null;
if (tableName == null || tableName.isEmpty()) return null;
if (column.getConstraints() == null) return null;
if (column.getConstraints().getUnique() == null) return null;
if (!column.getConstraints().getUnique()) return null;
@NonNull final UK uk = new UK();
uk.setTableName(tableName);
uk.setFieldName(column.getName());
return uk;
}
}