package org.docear.plugin.services.features.documentretrieval.model;
import java.util.ArrayList;
import java.util.List;
public class DocumentModelNode {
private List<DocumentModelNode> children = new ArrayList<DocumentModelNode>();
private Object userObject = null;
private DocumentModelNode parent;
private DocumentModelNode(DocumentEntry recommendation) {
setUserObject(recommendation);
}
private DocumentModelNode() {
}
@Override
public String toString() {
return getText();
}
private String getText() {
if(userObject == null) {
return null;
}
return userObject.toString();
}
public List<DocumentModelNode> getChildren() {
return this.children;
}
public boolean getAllowsChildren() {
return true;
}
public DocumentModelNode getChildAt(int index) {
synchronized (children) {
return children.get(index);
}
}
public int getChildCount() {
synchronized (children) {
return children.size();
}
}
public int getIndex(DocumentModelNode child) {
if(child == null) {
return -1;
}
synchronized (children) {
return children.indexOf(child);
}
}
public DocumentModelNode getParent() {
return this.parent;
}
public void insert(DocumentModelNode child, int index) {
if(child == null) {
return;
}
synchronized (children) {
children.add(index, child);
}
}
public void remove(int index) {
synchronized (children) {
children.remove(index);
}
}
public void remove(DocumentModelNode node) {
if(node == null) {
return;
}
synchronized (children) {
children.remove(node);
}
}
public void removeFromParent() {
if(parent == null) {
return;
}
parent.remove(this);
}
public void setParent(DocumentModelNode newParent) {
this.parent = newParent;
}
public void setUserObject(Object object) {
this.userObject = object;
}
public Object getUserObject() {
return this.userObject;
}
public boolean isLeaf() {
return children.size() <= 0;
}
public void insert(DocumentModelNode node) {
synchronized (children) {
children.add(node);
}
}
public static DocumentModelNode createNoRecommendationsNode(String text) {
NoRecommendationsNode node = new DocumentModelNode().new NoRecommendationsNode(text);
return node;
}
public static DocumentModelNode createNoServiceNode() {
NoServiceNode node = new DocumentModelNode().new NoServiceNode();
return node;
}
public static DocumentModelNode createRecommendationContainerNode(String name) {
RecommendationContainerNode node = new DocumentModelNode().new RecommendationContainerNode(name);
return node;
}
public static DocumentModelNode createRecommendationContainerNode() {
UntitledRecommendationContainerNode node = new DocumentModelNode().new UntitledRecommendationContainerNode();
return node;
}
public static DocumentModelNode createRecommendationEntryNode(DocumentEntry entry) {
RecommendationEntryNode node = new DocumentModelNode().new RecommendationEntryNode(entry);
return node;
}
public class NoRecommendationsNode extends DocumentModelNode {
public NoRecommendationsNode(String text) {
super();
setUserObject(text);
}
}
public class NoServiceNode extends DocumentModelNode {
public NoServiceNode() {
super();
setUserObject(null);
}
}
public class RecommendationContainerNode extends DocumentModelNode {
public RecommendationContainerNode(String title) {
super();
setUserObject(title);
}
}
public class UntitledRecommendationContainerNode extends DocumentModelNode {
public UntitledRecommendationContainerNode() {
super();
setUserObject(null);
}
}
public class RecommendationEntryNode extends DocumentModelNode {
public RecommendationEntryNode(DocumentEntry entry) {
super(entry);
}
}
}