package org.mindswap.swoop.change;
import java.net.URL;
import java.util.Iterator;
import java.util.Vector;
public class TreeTableNode {
public SwoopChange swoopChange;
public Vector children;
public URL location;
public TreeTableNode(SwoopChange swc) {
this.swoopChange = swc;
children = new Vector();
}
public String toString() {
return swoopChange.toString();
}
public Object getValueAt(int i) {
switch (i) {
case 0: // return author
if (swoopChange.getAuthor()!=null) return swoopChange.getAuthor();
else return "";
case 1: // return description
if (swoopChange.getDescription()!=null) {
String desc = swoopChange.getDescription();
if (desc.indexOf("<u>")>=0) {
desc = desc.substring(desc.indexOf("<u>")+3, desc.indexOf("</u>"));
}
if (!swoopChange.isCommitted) desc = "*" + desc;
return desc;
}
else return "";
case 2: // return timestamp
String ts = "";
if (swoopChange.getTimeStamp()!=null) {
ts = swoopChange.getTimeStamp();
if (ts.indexOf(" ")>=0) ts = ts.substring(ts.indexOf(" "), ts.length()) + " " + ts.substring(0, ts.indexOf(" "));
}
return ts;
case 3: // return uris
String uris = "";
if (swoopChange.getExtraSubjects()!=null && swoopChange.getExtraSubjects().size()>0) {
for (Iterator iter = swoopChange.getExtraSubjects().iterator(); iter.hasNext();) {
String uri = iter.next().toString();
uris += getName(uri) + ",";
}
uris = uris.substring(0, uris.length()-1);
}
else if (swoopChange.getOwlObjectURI()!=null) {
uris = getName(swoopChange.getOwlObjectURI().toString());
}
return uris;
}
return null;
}
public void setValueAt(Object aValue, int i) {
}
public int getColumnCount() {
return 4;
}
public int getChildCount() {
return children.size();
}
public TreeTableNode getChildAt(int i) {
return (TreeTableNode) children.get(i);
}
public void addChild(TreeTableNode child) {
if(child.getColumnCount() != getColumnCount())
throw new RuntimeException("Column count of a child should be same as parent");
children.add(child);
}
private String getName(String uri) {
if (uri.indexOf("#")>=0) return uri.substring(uri.indexOf("#")+1, uri.length());
else return uri.substring(uri.lastIndexOf("/")+1, uri.length());
}
}