Skip to content

Instantly share code, notes, and snippets.

@eneveu
Last active December 11, 2015 12:58

Revisions

  1. eneveu revised this gist Jan 23, 2013. 1 changed file with 0 additions and 2 deletions.
    2 changes: 0 additions & 2 deletions TreeBuilderDemo.java
    Original file line number Diff line number Diff line change
    @@ -17,7 +17,5 @@ public void demo() {
    .____________("h")
    .____("i")
    .build();


    }
    }
  2. eneveu created this gist Jan 23, 2013.
    58 changes: 58 additions & 0 deletions TreeBuilder.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,58 @@
    package rubber.duck;

    import com.google.common.collect.ImmutableMultimap;
    import com.google.common.collect.Lists;
    import org.apache.commons.lang.NotImplementedException;

    import java.util.List;

    // TODO: generate the tree from the list of temporary element holders
    // fail fast if an user calls methods in the wrong order
    public class TreeBuilder<T> {

    private final List<TemporaryElementHolder<T>> temporaryElementHolders = Lists.newArrayList();


    public TreeBuilder<T> ____(T element) {
    return addElementAtLevel(element, 1);
    }

    public TreeBuilder<T> ________(T element) {
    return addElementAtLevel(element, 2);
    }

    public TreeBuilder<T> ____________(T element) {
    return addElementAtLevel(element, 3);
    }

    public TreeBuilder<T> ________________(T element) {
    return addElementAtLevel(element, 4);
    }

    public TreeBuilder<T> ____________________(T element) {
    return addElementAtLevel(element, 5);
    }

    /**
    * Use this method when your tree is too deep to use the "____" methods.
    */
    public TreeBuilder<T> addElementAtLevel(T element, int level) {
    temporaryElementHolders.add(new TemporaryElementHolder<T>(element, level));
    return this;
    }

    public ImmutableMultimap<T, T> build() {
    throw new NotImplementedException("TODO");
    }

    private static class TemporaryElementHolder<T> {
    final T element;
    final int level;

    private TemporaryElementHolder(T element, int level) {
    this.element = element;
    this.level = level;
    }
    }

    }
    23 changes: 23 additions & 0 deletions TreeBuilderDemo.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,23 @@
    package rubber.duck;

    import com.google.common.collect.ImmutableMultimap;

    public class TreeBuilderDemo {

    public void demo() {

    ImmutableMultimap<String, String> tree = new TreeBuilder<String>()
    .____("a")
    .________("b")
    .____________("c")
    .____________("d")
    .________________("e")
    .____________("f")
    .________("g")
    .____________("h")
    .____("i")
    .build();


    }
    }