/** * PropertyTreeNode.java * Idea * @version version 1.0 * * @author Danny Ayers * @created 04-Dec-2002 * * Copyright (c) 2002 D.Ayers * All rights reserved. * * For license details see http://ideagraph.net/licenses */ package org.hyperdata.scute.tree; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import java.util.Vector; import javax.swing.ImageIcon; import javax.swing.tree.TreeNode; import org.hyperdata.resources.tree.TreeIcons; import org.hyperdata.scute.rdf.RdfUtils; import org.hyperdata.scute.system.Log; import com.hp.hpl.jena.rdf.model.RDFNode; import com.hp.hpl.jena.rdf.model.Statement; /** * The Class StatementNode. */ public class StatementNode extends AbstractRdfTreeNode implements RdfTreeNode { /** The children. */ private List<TreeNode> children; // private Property property; /** The statement. */ private final Statement statement; /** * Instantiates a new statement node. * * @param nodeMap * the node map * @param statement * the statement */ public StatementNode(RdfNodeMap nodeMap, Statement statement) { super(nodeMap, statement); this.statement = statement; // setTreeModel(treeModel); } /* * (non-Javadoc) * * @see javax.swing.tree.TreeNode#children() */ @Override @SuppressWarnings("unchecked")// javax.swing.tree.TreeNode is old-fashioned public Enumeration<?> children() { return (new Vector(getChildren())).elements(); } /* (non-Javadoc) * @see org.hyperdata.scute.tree.RdfTreeNode#delete() */ @Override public void delete() { } /* * (non-Javadoc) * * @see javax.swing.tree.TreeNode#getAllowsChildren() */ @Override public boolean getAllowsChildren() { return true; } /* * (non-Javadoc) * * @see javax.swing.tree.TreeNode#getChildAt(int) */ @Override public TreeNode getChildAt(int childIndex) { // System.out.println("\nstate.getChildAt " + childIndex); // System.out.println(".getChildAt = " + getChildren().get(childIndex)); return getChildren().get(childIndex); } /* * (non-Javadoc) * * @see javax.swing.tree.TreeNode#getChildCount() */ @Override public int getChildCount() { return getChildren().size(); } /** * Gets the children. * * @return the children */ private List<TreeNode> getChildren() { if ((children == null) || isDirty()) { children = new ArrayList<TreeNode>(); try { /* * NodeIterator iterator = * nodeMap.getModel().listObjectsOfProperty( * statement.getPredicate()); while (iterator.hasNext()) { * children.add( nodeMap.getTreeNode((RDFNode) * iterator.next())); } */ children.add(getNodeMap().getTreeNode(statement.getObject())); } catch (final Exception exception) { Log.exception(exception); } } return children; } /* (non-Javadoc) * @see org.hyperdata.scute.tree.RdfTreeNode#getIcon() */ @Override public ImageIcon getIcon() { return TreeIcons.propertyIcon; } /* * (non-Javadoc) * * @see javax.swing.tree.TreeNode#getIndex(TreeNode) */ @Override public int getIndex(TreeNode node) { return getChildren().indexOf(node); } /* (non-Javadoc) * @see org.hyperdata.scute.tree.RdfTreeNode#getNodeType() */ @Override public int getNodeType() { return RdfTreeNode.STATEMENT; } /* * (non-Javadoc) * * @see javax.swing.tree.TreeNode#getParent() */ @Override public TreeNode getParent() { return getNodeMap().getTreeNode( RdfUtils.getParent(getModel(), statement.getSubject())); } /* (non-Javadoc) * @see org.hyperdata.scute.tree.RdfTreeNode#getRdfNode() */ @Override public RDFNode getRdfNode() { // return (RDFNode)statement.asResource(); // ?? is ok? cast added - // change from Jena // 1.6 return statement.getResource(); } /* (non-Javadoc) * @see org.hyperdata.scute.tree.AbstractRdfTreeNode#getStatement() */ @Override public Statement getStatement() { return statement; } /* * (non-Javadoc) * * @see javax.swing.tree.TreeNode#isLeaf() */ @Override public boolean isLeaf() { return getChildren().size() == 0; } /* (non-Javadoc) * @see org.hyperdata.scute.tree.RdfTreeNode#rename(java.lang.String) */ @Override public void rename(String newName) { } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return statement.getPredicate().getLocalName(); } }