Skip to content

Commit

Permalink
move nodes in same hierarchy
Browse files Browse the repository at this point in the history
  • Loading branch information
rsehr committed Oct 11, 2024
1 parent 730dd86 commit f4d1e8a
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1723,7 +1723,8 @@ public void moveNode() {
destinationEntry.reOrderElements();
selectedEntry.updateHierarchy();
List<IEadEntry> nodesToUpdate = selectedEntry.getAllNodes();
ArchiveManagementManager.saveNodes(recordGroup.getId(), nodesToUpdate);

ArchiveManagementManager.updateNodeHierarchy(recordGroup.getId(), nodesToUpdate);

setSelectedEntry(selectedEntry);
displayMode = "";
Expand Down Expand Up @@ -1758,12 +1759,16 @@ public void moveNodeUp() {
previousNode.setOrderNumber(currentOrderNumber);

// save nodes
ArchiveManagementManager.saveNode(recordGroup.getId(), previousNode);
ArchiveManagementManager.saveNode(recordGroup.getId(), selectedEntry);
List<IEadEntry> nodes = new ArrayList<>();
nodes.add(previousNode);
nodes.add(selectedEntry);
ArchiveManagementManager.updateNodeHierarchy(recordGroup.getId(), nodes);

selectedEntry.getParentNode().sortElements();
selectedEntry.updateHierarchy();
List<IEadEntry> nodesToUpdate = selectedEntry.getAllNodes();
ArchiveManagementManager.saveNodes(recordGroup.getId(), nodesToUpdate);
selectedEntry.getParentNode().updateHierarchy();

List<IEadEntry> nodesToUpdate = selectedEntry.getParentNode().getAllNodes();
ArchiveManagementManager.updateNodeHierarchy(recordGroup.getId(), nodesToUpdate);

flatEntryList = null;

Expand Down Expand Up @@ -1796,12 +1801,16 @@ public void moveNodeDown() {
followingNode.setOrderNumber(currentOrderNumber);

// save nodes
ArchiveManagementManager.saveNode(recordGroup.getId(), followingNode);
ArchiveManagementManager.saveNode(recordGroup.getId(), selectedEntry);
List<IEadEntry> nodes = new ArrayList<>();
nodes.add(followingNode);
nodes.add(selectedEntry);
ArchiveManagementManager.updateNodeHierarchy(recordGroup.getId(), nodes);

selectedEntry.getParentNode().sortElements();
selectedEntry.updateHierarchy();
List<IEadEntry> nodesToUpdate = selectedEntry.getAllNodes();
ArchiveManagementManager.saveNodes(recordGroup.getId(), nodesToUpdate);
selectedEntry.getParentNode().updateHierarchy();

List<IEadEntry> nodesToUpdate = selectedEntry.getParentNode().getAllNodes();
ArchiveManagementManager.updateNodeHierarchy(recordGroup.getId(), nodesToUpdate);
flatEntryList = null;

}
Expand All @@ -1826,9 +1835,6 @@ public void moveHierarchyDown() {
// move node to prev.
destinationEntry = previousNode;
destinationEntry.setDisplayChildren(true);
destinationEntry.updateHierarchy();
List<IEadEntry> nodesToUpdate = destinationEntry.getAllNodes();
ArchiveManagementManager.saveNodes(recordGroup.getId(), nodesToUpdate);
moveNode();
}

Expand Down Expand Up @@ -1859,7 +1865,7 @@ public void moveHierarchyUp() {
selectedEntry.getParentNode().reOrderElements();
selectedEntry.getParentNode().updateHierarchy();
List<IEadEntry> nodesToUpdate = selectedEntry.getParentNode().getAllNodes();
ArchiveManagementManager.saveNodes(recordGroup.getId(), nodesToUpdate);
ArchiveManagementManager.updateNodeHierarchy(recordGroup.getId(), nodesToUpdate);
}

}
Expand Down Expand Up @@ -2114,23 +2120,18 @@ private ProcessTitleGenerator prepareTitleGenerator(DocStruct docstruct) {
ManipulationType manipulationType = null;
// check for special types
switch (comp.getType().toLowerCase()) {
case "camelcase":
case "camel_case":
case "camelcaselenghtlimited":
case "camel_case_lenght_limited":
case "camelcase", "camel_case", "camelcaselenghtlimited", "camel_case_lenght_limited":
if (lengthLimit > 0) {
manipulationType = ManipulationType.CAMEL_CASE_LENGTH_LIMITED;
} else {
manipulationType = ManipulationType.CAMEL_CASE;
}

break;
case "afterlastseparator":
case "after_last_separator":
case "afterlastseparator", "after_last_separator":
manipulationType = ManipulationType.AFTER_LAST_SEPARATOR;
break;
case "beforefirstseparator":
case "before_first_separator":
case "beforefirstseparator", "before_first_separator":
manipulationType = ManipulationType.BEFORE_FIRST_SEPARATOR;
break;
case "normal":
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ public static synchronized void saveNodes(Integer archiveId, List<IEadEntry> nod
sql.append(values.toString());
sql.append("ON DUPLICATE KEY UPDATE hierarchy = VALUES(hierarchy), order_number = VALUES(order_number), "
+ "node_type = VALUES(node_type), sequence = VALUES(sequence), processtitle = VALUES(processtitle), "
+ "processtitle = VALUES(processtitle), label = VALUES(label), data = VALUES(data)");
+ "processtitle = VALUES(processtitle), parent_id = VALUES(parent_id), label = VALUES(label), data = VALUES(data)");
try (Connection connection = MySQLHelper.getInstance().getConnection()) {
QueryRunner run = new QueryRunner();
run.update(connection, sql.toString());
Expand All @@ -224,6 +224,50 @@ public static synchronized void saveNodes(Integer archiveId, List<IEadEntry> nod
}
}

public static void updateNodeHierarchy(Integer archiveId, List<IEadEntry> nodes) {
String insertSql = "INSERT INTO archive_record_node (id, hierarchy, order_number, sequence, parent_id) VALUES ";

StringBuilder values = new StringBuilder();
for (int i = 0; i < nodes.size(); i++) {
IEadEntry entry = nodes.get(i);
if (values.length() > 0) {
values.append(", ");
}
Integer parentId = null;
if (entry.getParentNode() != null) {
parentId = entry.getParentNode().getDatabaseId();
}

values.append("(");
values.append(entry.getDatabaseId());
values.append(", ");
values.append(entry.getHierarchy());
values.append(", ");
values.append(entry.getOrderNumber());
values.append(", '");
values.append(entry.getSequence());
values.append("', ");
values.append(parentId);
values.append(")");
// save every 50 records or when we reached the last one
if (i % 50 == 49 || i + 1 == nodes.size()) {
StringBuilder sql = new StringBuilder(insertSql);
sql.append(values.toString());
sql.append(
"ON DUPLICATE KEY UPDATE hierarchy = VALUES(hierarchy), order_number = VALUES(order_number), sequence = VALUES(sequence), parent_id = VALUES(parent_id)");
try (Connection connection = MySQLHelper.getInstance().getConnection()) {
QueryRunner run = new QueryRunner();
run.update(connection, sql.toString());
} catch (SQLException e) {
log.error(e);
}
// reset values
values = new StringBuilder();
}
}

}

public static IEadEntry loadRecordGroup(int recordGroupId) {

try (Connection connection = MySQLHelper.getInstance().getConnection()) {
Expand Down

0 comments on commit f4d1e8a

Please sign in to comment.