/**
*
*/
package org.hyperdata.scute.triples;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import com.hp.hpl.jena.rdf.model.Literal;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.Property;
import com.hp.hpl.jena.rdf.model.RDFNode;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.Statement;
import com.hp.hpl.jena.rdf.model.StmtIterator;
import org.hyperdata.scute.rdf.RdfUtils;
public class TripleTableModel extends AbstractTableModel {
private Model model;
private List<Statement> statements = new ArrayList<Statement>();
private static final String[] columnNames = { "Subject", "Property",
"Object" };
public TripleTableModel(Model model) {
this.model = model;
RdfUtils.setPrefixes(model); // should already have happened
readStatements(null, null, null);
}
private void readStatements(Resource subject, Property property,
RDFNode object) {
statements.clear();
StmtIterator iterator = model.listStatements(subject, property, object);
while (iterator.hasNext()) {
statements.add(iterator.next());
}
}
/*
* (non-Javadoc)
*
* @see javax.swing.table.TableModel#getColumnCount()
*/
@Override
public int getColumnCount() {
return 3;
}
/*
* (non-Javadoc)
*
* @see javax.swing.table.TableModel#getColumnName(int)
*/
@Override
public String getColumnName(int index) {
return columnNames[index];
}
/*
* (non-Javadoc)
*
* @see javax.swing.table.TableModel#getRowCount()
*/
@Override
public int getRowCount() {
return statements.size();
}
/*
* (non-Javadoc)
*
* @see javax.swing.table.TableModel#getValueAt(int, int)
*/
@Override
public Object getValueAt(int row, int column) {
Statement statement = statements.get(row);
switch (column) {
case 0:
return RdfUtils.nodeToDisplayString(statement.getSubject());
case 1:
return RdfUtils.nodeToDisplayString(statement.getPredicate());
case 2:
return RdfUtils.nodeToDisplayString(statement.getObject());
}
return null;
}
/*
* (non-Javadoc)
*
* @see javax.swing.table.TableModel#isCellEditable(int, int)
*/
@Override
public boolean isCellEditable(int row, int column) {
// TODO make true later
return false;
}
}