[TASK] Allow toggling whether to shorten uris using prefixs.
This commit is contained in:
parent
5371fa6aaa
commit
744b9c0dc2
|
@ -5,6 +5,7 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import lu.jpt.csparqlproject.gui.SimulationControlWindow;
|
import lu.jpt.csparqlproject.gui.SimulationControlWindow;
|
||||||
|
import lu.jpt.csparqlproject.util.PrefixManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is the main entry point of the whole project. A logger is being set up
|
* This is the main entry point of the whole project. A logger is being set up
|
||||||
|
@ -16,6 +17,7 @@ import lu.jpt.csparqlproject.gui.SimulationControlWindow;
|
||||||
public class Main {
|
public class Main {
|
||||||
|
|
||||||
public static Logger logger = LoggerFactory.getLogger(Main.class);
|
public static Logger logger = LoggerFactory.getLogger(Main.class);
|
||||||
|
public static PrefixManager prefixManager;
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
// Initialize a logger
|
// Initialize a logger
|
||||||
|
@ -24,6 +26,13 @@ public class Main {
|
||||||
} catch(Throwable t) {
|
} catch(Throwable t) {
|
||||||
PropertyConfigurator.configure("/log4j.properties");
|
PropertyConfigurator.configure("/log4j.properties");
|
||||||
}
|
}
|
||||||
|
// Initialize PrefixManager which helps to shorten strings using prefixes
|
||||||
|
Main.prefixManager = new PrefixManager();
|
||||||
|
// Register generic prefixes
|
||||||
|
Main.prefixManager.registerPrefix("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#");
|
||||||
|
Main.prefixManager.registerPrefix("xsd", "http://www.w3.org/2001/XMLSchema#");
|
||||||
|
Main.prefixManager.registerPrefix("f", "http://larkc.eu/csparql/sparql/jena/ext#");
|
||||||
|
|
||||||
// Initialize SimulationContext and wire it up with its control window
|
// Initialize SimulationContext and wire it up with its control window
|
||||||
final SimulationContext simulationContext = new SimulationContext();
|
final SimulationContext simulationContext = new SimulationContext();
|
||||||
// Fire up the control window
|
// Fire up the control window
|
||||||
|
|
|
@ -31,6 +31,7 @@ import eu.larkc.csparql.cep.api.RdfQuadruple;
|
||||||
import eu.larkc.csparql.common.RDFTable;
|
import eu.larkc.csparql.common.RDFTable;
|
||||||
import eu.larkc.csparql.common.RDFTuple;
|
import eu.larkc.csparql.common.RDFTuple;
|
||||||
import eu.larkc.csparql.core.engine.CsparqlQueryResultProxy;
|
import eu.larkc.csparql.core.engine.CsparqlQueryResultProxy;
|
||||||
|
import lu.jpt.csparqlproject.Main;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Multi-purpose text window to allow for easy viewing of RdfStream quadruples,
|
* Multi-purpose text window to allow for easy viewing of RdfStream quadruples,
|
||||||
|
@ -44,7 +45,7 @@ public class TextObserverWindow extends JFrame implements Observer {
|
||||||
|
|
||||||
private JTextPane textPane;
|
private JTextPane textPane;
|
||||||
private volatile boolean autoScrollToBottom = true;
|
private volatile boolean autoScrollToBottom = true;
|
||||||
|
private volatile boolean usePrefixManager = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
|
@ -63,6 +64,15 @@ public class TextObserverWindow extends JFrame implements Observer {
|
||||||
this.autoScrollToBottom = autoScrollToBottom;
|
this.autoScrollToBottom = autoScrollToBottom;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set whether or not the PrefixManager shall be used to shorten
|
||||||
|
* uris in strings to prefixes.
|
||||||
|
* @param usePrefixManager
|
||||||
|
*/
|
||||||
|
public void setUsePrefixManager(boolean usePrefixManager) {
|
||||||
|
this.usePrefixManager = usePrefixManager;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show the given text in the window
|
* Show the given text in the window
|
||||||
* @param text
|
* @param text
|
||||||
|
@ -111,7 +121,8 @@ public class TextObserverWindow extends JFrame implements Observer {
|
||||||
* @param color
|
* @param color
|
||||||
*/
|
*/
|
||||||
public void showQuadruple(RdfQuadruple quad, Color color) {
|
public void showQuadruple(RdfQuadruple quad, Color color) {
|
||||||
this.appendToTextPane(quad.toString(), true, color);
|
String quadruple = this.shortenUriToPrefix(quad.toString());
|
||||||
|
this.appendToTextPane(quadruple, true, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -182,6 +193,20 @@ public class TextObserverWindow extends JFrame implements Observer {
|
||||||
});
|
});
|
||||||
bottomPanel.add(autoscrollCheckbox);
|
bottomPanel.add(autoscrollCheckbox);
|
||||||
|
|
||||||
|
// Add a checkbox to toggle uri shortening using PrefixManager
|
||||||
|
JCheckBox usePrefixManagerCheckbox = new JCheckBox();
|
||||||
|
usePrefixManagerCheckbox.setText("Shorten URIs to prefixes");
|
||||||
|
usePrefixManagerCheckbox.setEnabled(true);
|
||||||
|
usePrefixManagerCheckbox.setSelected(true);
|
||||||
|
usePrefixManagerCheckbox.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
JCheckBox checkBox = (JCheckBox) e.getSource();
|
||||||
|
textObserverWindow.setUsePrefixManager(checkBox.isSelected());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
bottomPanel.add(usePrefixManagerCheckbox);
|
||||||
|
|
||||||
// Add buttons to increase/decrease font size
|
// Add buttons to increase/decrease font size
|
||||||
JButton increaseFontSizeButton = new JButton("+");
|
JButton increaseFontSizeButton = new JButton("+");
|
||||||
increaseFontSizeButton.addActionListener(new ActionListener() {
|
increaseFontSizeButton.addActionListener(new ActionListener() {
|
||||||
|
@ -296,6 +321,7 @@ public class TextObserverWindow extends JFrame implements Observer {
|
||||||
int tokenIndex = 0;
|
int tokenIndex = 0;
|
||||||
while(tokenizer.hasMoreTokens()) {
|
while(tokenizer.hasMoreTokens()) {
|
||||||
String token = tokenizer.nextToken();
|
String token = tokenizer.nextToken();
|
||||||
|
token = this.shortenUriToPrefix(token);
|
||||||
if(token == "") token = "[NO VALUE]";
|
if(token == "") token = "[NO VALUE]";
|
||||||
if(tokenizer.hasMoreTokens()) {
|
if(tokenizer.hasMoreTokens()) {
|
||||||
token += "\t";
|
token += "\t";
|
||||||
|
@ -330,4 +356,18 @@ public class TextObserverWindow extends JFrame implements Observer {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper method to shorten strings using the PrefixManager if
|
||||||
|
* this window uses it
|
||||||
|
* @param str input string
|
||||||
|
* @return output string, shortened or not depending on usePrefixManager variable
|
||||||
|
*/
|
||||||
|
private String shortenUriToPrefix(String str) {
|
||||||
|
if(this.usePrefixManager) {
|
||||||
|
return Main.prefixManager.applyPrefix(str);
|
||||||
|
} else {
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import eu.larkc.csparql.cep.api.RdfQuadruple;
|
import eu.larkc.csparql.cep.api.RdfQuadruple;
|
||||||
import eu.larkc.csparql.cep.api.RdfStream;
|
import eu.larkc.csparql.cep.api.RdfStream;
|
||||||
|
import lu.jpt.csparqlproject.Main;
|
||||||
import lu.jpt.csparqlproject.util.WindowLoggingRdfStream;
|
import lu.jpt.csparqlproject.util.WindowLoggingRdfStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -40,6 +41,7 @@ public class RentACarSimulation implements Runnable {
|
||||||
|
|
||||||
|
|
||||||
public RentACarSimulation() {
|
public RentACarSimulation() {
|
||||||
|
this.registerOwnPrefixes();
|
||||||
int numberOfCars = 1;
|
int numberOfCars = 1;
|
||||||
int numberOfCustomers = 1;
|
int numberOfCustomers = 1;
|
||||||
// Create a car pool and drivers
|
// Create a car pool and drivers
|
||||||
|
@ -58,6 +60,13 @@ public class RentACarSimulation implements Runnable {
|
||||||
this.pauseSimulation = false;
|
this.pauseSimulation = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void registerOwnPrefixes() {
|
||||||
|
Main.prefixManager.registerPrefix("event", RentACarSimulation.BASE_OBJECT_IRI+"/event#");
|
||||||
|
Main.prefixManager.registerPrefix("carOnt", RentACarSimulation.BASE_ONTOLOGY_IRI);
|
||||||
|
Main.prefixManager.registerPrefix("car", RentACarSimulation.BASE_OBJECT_IRI+"/Car#");
|
||||||
|
Main.prefixManager.registerPrefix("driver", RentACarSimulation.BASE_OBJECT_IRI+"/Driver#");
|
||||||
|
}
|
||||||
|
|
||||||
public RdfStream getCarStream() {
|
public RdfStream getCarStream() {
|
||||||
return this.carStream;
|
return this.carStream;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
package lu.jpt.csparqlproject.util;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is a small helper class which will be used on some occasions
|
||||||
|
* to make output easier to read by providing a method to replace known
|
||||||
|
* uris in (tuple) strings with their known prefix.
|
||||||
|
*/
|
||||||
|
public class PrefixManager {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Key is the uri, value is its prefix
|
||||||
|
*/
|
||||||
|
private Map<String, String> prefixTable;
|
||||||
|
|
||||||
|
|
||||||
|
public PrefixManager() {
|
||||||
|
this.prefixTable = new HashMap<String, String>();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register a known prefix with its corresponding uri
|
||||||
|
* @param prefix
|
||||||
|
* @param uri
|
||||||
|
*/
|
||||||
|
public void registerPrefix(String prefix, String uri) {
|
||||||
|
this.prefixTable.put(uri, prefix);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Replace all uris within a tuple with their know prefix
|
||||||
|
* This is not efficient, but that is not the point
|
||||||
|
* @param tuple as a string
|
||||||
|
* @return shortened tuple string
|
||||||
|
*/
|
||||||
|
public String applyPrefix(String tuple) {
|
||||||
|
for (Map.Entry<String, String> entry : this.prefixTable.entrySet()) {
|
||||||
|
tuple = tuple.replace(entry.getKey(), entry.getValue() + ":");
|
||||||
|
}
|
||||||
|
return tuple;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue