Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- protected List<TreeMember> getTree(List<NameIndentLevelPair> values)
- {
- System.out.println("Entering get tree method");
- List<TreeMember> rootTreeMembers = new ArrayList<TreeMember>();
- if(values.isEmpty())
- return rootTreeMembers;
- Multimap<TreeMember, List<NameIndentLevelPair>> currentlyWorkingOn = ArrayListMultimap.create();
- // Get the tree getting loop started off.
- int initialMinIndentLevel = values.get(0).getIndentLevel();
- TreeMember initialCurrentFound = null;
- List<NameIndentLevelPair> initialCurrentTreeMemberSubs = new ArrayList<NameIndentLevelPair>();
- for(int i = 0; i < values.size(); i++)
- {
- System.out.println("Checking nameindentlevelpair in initial loop");
- if(values.get(i).getIndentLevel() <= initialMinIndentLevel)
- {
- if(initialCurrentFound != null)
- {
- rootTreeMembers.add(initialCurrentFound);
- if(!initialCurrentTreeMemberSubs.isEmpty())
- currentlyWorkingOn.put(initialCurrentFound, initialCurrentTreeMemberSubs);
- }
- initialCurrentFound = new TreeMember(values.get(i).getName());
- initialCurrentTreeMemberSubs = new ArrayList<NameIndentLevelPair>();
- }
- else
- initialCurrentTreeMemberSubs.add(values.get(i));
- }
- // Tree-getting loop.
- while(!currentlyWorkingOn.isEmpty())
- {
- System.out.println("currentlyWorkingOn run-through");
- System.out.println("Currently working on contains: ");
- for(Entry<TreeMember, List<NameIndentLevelPair>> i : currentlyWorkingOn.entries())
- {
- System.out.println("Tree name: " + i.getKey().getName());
- for(NameIndentLevelPair j : i.getValue())
- {
- System.out.println("- " + j.getName() + " (" + j.getIndentLevel() + ")");
- }
- }
- Multimap<TreeMember, List<NameIndentLevelPair>> workingOnThisRound = ArrayListMultimap.create(currentlyWorkingOn);
- for(Entry<TreeMember, List<NameIndentLevelPair>> entry : workingOnThisRound.entries())
- {
- System.out.println("Checking entry:" + entry.getKey().getName());
- for(NameIndentLevelPair i : entry.getValue())
- System.out.println("- " + i.getName());
- int minIndentLevel = entry.getValue().get(0).getIndentLevel();
- TreeMember currentFound = null;
- List<NameIndentLevelPair> currentTreeMemberSubs = new ArrayList<NameIndentLevelPair>();
- for(int i = 0; i < entry.getValue().size(); i++)
- {
- System.out.println("Checking tree pair: " + entry.getValue().get(i).getName() + " (" + entry.getValue().get(i).getIndentLevel() + ")");
- if(entry.getValue().get(i).getIndentLevel() <= minIndentLevel)
- {
- if(currentFound != null)
- {
- entry.getKey().addMember(currentFound);
- if(!currentTreeMemberSubs.isEmpty())
- currentlyWorkingOn.put(currentFound, currentTreeMemberSubs);
- }
- currentFound = new TreeMember(entry.getValue().get(i).getName());
- currentTreeMemberSubs = new ArrayList<NameIndentLevelPair>();
- }
- else
- currentTreeMemberSubs.add(entry.getValue().get(i));
- }
- System.out.println("currentlyWorkingOn contains before removing: ");
- for(Entry<TreeMember, List<NameIndentLevelPair>> i : currentlyWorkingOn.entries())
- {
- System.out.println(i.getKey().getName());
- for(NameIndentLevelPair j : i.getValue())
- System.out.println("- " + j.getName() + " (" + j.getIndentLevel() + ")");
- }
- System.out.println("Attempting to remove: " + entry.getKey().getName());
- for(NameIndentLevelPair i : entry.getValue())
- System.out.println("- " + i.getName() + " (" + i.getIndentLevel() + ")");
- currentlyWorkingOn.remove(entry.getKey(), entry.getValue());
- System.out.println("currentlyWorkingOn contains after removing: ");
- for(Entry<TreeMember, List<NameIndentLevelPair>> i : currentlyWorkingOn.entries())
- {
- System.out.println(i.getKey().getName());
- for(NameIndentLevelPair j : i.getValue())
- System.out.println("- " + j.getName() + " (" + j.getIndentLevel() + ")");
- }
- }
- }
- return rootTreeMembers;
- }
Advertisement
Add Comment
Please, Sign In to add comment