Mercurial > hg > Members > kazuma > jungle-ormapper
diff src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/data/list/headNode.java @ 0:44465893e8b8
first Commit
author | Kazuma |
---|---|
date | Wed, 30 Nov 2016 01:47:55 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/data/list/headNode.java Wed Nov 30 01:47:55 2016 +0900 @@ -0,0 +1,63 @@ +package jp.ac.u_ryukyu.ie.cr.jungle.data.list; + +public class headNode<T> implements Node<T> { + private final Node<T> next; + + + public headNode() { + this.next = new TailNode<>(); + } + + public headNode(Node<T> next) { + this.next = next; + } + + public Node<T> getNext() { + return next; + } + + public T getAttribute() { + return null; + } + + public Node<T> add(int currentNum, int num, T attribute) { + if (num == 0) { + Node<T> newNode = new DefaultNode<>(attribute, next); + return new headNode<>(newNode); + } + Node<T> newNode = next.add(currentNum + 1, num, attribute); + if (newNode == null) + return this; + return new headNode<>(newNode); + } + + public Node<T> addLast(T attribute) { + Node<T> node = next.addLast(attribute); + return new headNode<>(node); + } + + public Node<T> delete(int currentNum, int deleteNum) { + if (currentNum == deleteNum) { + return new headNode<>(this.next.getNext()); + } + + Node<T> newNode = next.delete(currentNum + 1, deleteNum); + if (newNode == null) + return this; + return new headNode<>(newNode); + } + + @Override + public Node<T> replaceNode(int currentNum, int num, T attribute) { + Node<T> nextNode = getNext(); + Node<T> newNode = nextNode.replaceNode(currentNum, num, attribute); + if (newNode == null) + return this; + return new headNode<>(newNode); + } + + @Override + public int length() { + return next.length(); + } +}