Skip to content

Commit

Permalink
Generate file tree based on Map<String,String> modifiedFilesName
Browse files Browse the repository at this point in the history
  • Loading branch information
tsantalis committed Apr 14, 2024
1 parent 4fbcb36 commit d6ca9ca
Showing 1 changed file with 49 additions and 0 deletions.
49 changes: 49 additions & 0 deletions src/main/java/gui/webdiff/DirectoryDiffView.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,66 @@
import org.rendersnake.Renderable;

import java.io.IOException;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set;

import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode;

import static org.rendersnake.HtmlAttributesFactory.*;

public class DirectoryDiffView implements Renderable {
private final DirComparator comperator;
private final DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");

public DirectoryDiffView(DirComparator comperator) {
this.comperator = comperator;
for(Map.Entry<String, String> pair : comperator.getModifiedFilesName().entrySet()) {
String fileName = pair.getValue();
String[] tokens = fileName.split("/");
int counter = 1;
for(String token : tokens) {
String pathToNode = concatWithSlash(tokens, counter);
DefaultMutableTreeNode parent = findNode(pathToNode);
if(!parent.getUserObject().equals(token)) {
DefaultMutableTreeNode newChild = new DefaultMutableTreeNode(token);
parent.add(newChild);
}
counter++;
}
}
}

private static String concatWithSlash(String[] tokens, int numberOfTokensToConcat) {
StringBuilder sb = new StringBuilder();
int index = 0;
for(String token : tokens) {
if(index < numberOfTokensToConcat) {
sb.append(token);
}
if(index < numberOfTokensToConcat - 1) {
sb.append("/");
}
index++;
}
return sb.toString();
}

private DefaultMutableTreeNode findNode(String pathToNode) {
String[] tokens = pathToNode.split("/");
Enumeration<TreeNode> enumeration = root.children();
int index = 0;
DefaultMutableTreeNode lastNode = null;
while(enumeration.hasMoreElements() && index < tokens.length) {
DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode)enumeration.nextElement();
if(treeNode.getUserObject().equals(tokens[index])) {
lastNode = treeNode;
index++;
enumeration = treeNode.children();
}
}
return lastNode != null ? lastNode : root;
}

@Override
Expand Down

0 comments on commit d6ca9ca

Please sign in to comment.