You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package de.edu.hsfulda.ciip.tdd;
import java.util.LinkedList; import java.util.List;
public class TannenbaumRenderer {
private static final int BOTH_DIRECTIONS = 2; private static final int OFFSET = 1; private static final int MIDDLE_BRANCH = 1; private static final String SYMBOL_TRUNK = "I"; private static final String SYMBOL_BRANCH = "X"; private static final String SYMBOL_INDENT = " "; private final StringRepeater symbolRepeater;
public TannenbaumRenderer(StringRepeater symbolRepeater) { this.symbolRepeater = symbolRepeater; }
public List<String> getTreeOf(int size) { List<String> tree = new LinkedList<>(); renderTreeSlices(size, tree); renderTrunk(size, tree); return tree; }
private void renderTrunk(int size, List<String> tree) { StringBuilder slice = new StringBuilder(); symbolRepeater.repeatSymbol(slice, size - MIDDLE_BRANCH, SYMBOL_INDENT); symbolRepeater.repeatSymbol(slice, MIDDLE_BRANCH, SYMBOL_TRUNK); tree.add(slice.toString()); }
private void renderTreeSlices(int size, List<String> tree) { for (int sliceWidth = 0; sliceWidth < size; sliceWidth++) { renderSingleSlice(size, tree, sliceWidth); } }
private void renderSingleSlice(int size, List<String> tree, int sliceWidth) { StringBuilder slice = new StringBuilder(); symbolRepeater.repeatSymbol(slice, size - (sliceWidth + OFFSET), SYMBOL_INDENT); symbolRepeater.repeatSymbol(slice, sliceWidth * BOTH_DIRECTIONS + MIDDLE_BRANCH, SYMBOL_BRANCH); tree.add(slice.toString()); }
}
|