GeoPubby  Version 0.1.0.0
ValuesURLServlet Class Reference

A servlet for rendering an HTML page listing resources related to a given resource via a given property. More...

Inheritance diagram for ValuesURLServlet:
Collaboration diagram for ValuesURLServlet:

Public Member Functions

boolean doGet (HypermediaControls controller, Property predicate, boolean isInverse, HttpServletRequest request, HttpServletResponse response, Configuration config) throws IOException
 
boolean doGet (String relativeURI, HttpServletRequest request, HttpServletResponse response, Configuration config) throws IOException, ServletException
 
void doGet (HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
 
void init () throws ServletException
 

Protected Member Functions

void addDocumentMetadata (Model model, HypermediaControls controller, String documentURL, String title)
 
void addPageMetadata (Context context, HypermediaControls controller, PrefixMapping prefixes)
 
void send404 (HttpServletResponse response, String resourceURI) throws IOException
 
void sendInitialization500 (HttpServletResponse response, String message) throws IOException
 
String addQueryString (String dataURL, HttpServletRequest request)
 

Private Attributes

Configuration config
 
String initError
 

Static Private Attributes

static final long serialVersionUID = -2597664961896022667L
 
static Pattern prefixedNamePattern = Pattern.compile("(-?)([^!:/]*):([^:/]*)/(.*)")
 
static Pattern fullIRIPattern = Pattern.compile("(-?)!(.*?)///(.*)")
 

Detailed Description

A servlet for rendering an HTML page listing resources related to a given resource via a given property.

URIs and literals are displayed as simple values. Blank nodes are displayed as complete resource descriptions.

Member Function Documentation

◆ addDocumentMetadata()

void addDocumentMetadata ( Model  model,
HypermediaControls  controller,
String  documentURL,
String  title 
)
protectedinherited
54  {
55  ModelUtil.addNSIfUndefined(model, "foaf", FOAF.getURI());
56  ModelUtil.addNSIfUndefined(model, "rdfs", RDFS.getURI());
57 
58  // Add document metadata
59  Resource topic = model.getResource(controller.getAbsoluteIRI());
60  Resource document = model.getResource(documentURL);
61  document.addProperty(FOAF.primaryTopic, topic);
62  document.addProperty(RDFS.label, title);
63 
64  // Add custom metadata
65  for (Dataset dataset: config.getDatasets()) {
66  MetadataConfiguration metadata = dataset.getMetadataConfiguration();
67  metadata.addCustomMetadata(model, document);
68  metadata.addMetadataFromTemplate(model, controller);
69  }
70  }
List< Dataset > getDatasets()
The conf:dataset blocks.
Definition: Configuration.java:199
Configuration config
Definition: BaseServlet.java:38

References MetadataConfiguration.addCustomMetadata(), MetadataConfiguration.addMetadataFromTemplate(), ModelUtil.addNSIfUndefined(), BaseServlet.config, HypermediaControls.getAbsoluteIRI(), and Configuration.getDatasets().

Referenced by ValuesDataURLServlet.doGet(), and DataURLServlet.doGet().

◆ addPageMetadata()

void addPageMetadata ( Context  context,
HypermediaControls  controller,
PrefixMapping  prefixes 
)
protectedinherited
75  {
76  try {
77  Model metadataModel = ModelFactory.createDefaultModel();
78  for (Dataset dataset: config.getDatasets()) {
79  MetadataConfiguration metadata = dataset.getMetadataConfiguration();
80  Resource document = metadata.addMetadataFromTemplate(metadataModel, controller);
81  // Replaced the commented line by the following one because the
82  // RDF graph we want to talk about is a specific representation
83  // of the data identified by the getDataURL() URI.
84  // Olaf, May 28, 2010
85  // context.put("metadata", metadata.getResource(resource.getDataURL()));
86  context.put("metadata", document);
87  }
88 
89  Map<String,String> nsSet = metadataModel.getNsPrefixMap();
90  nsSet.putAll(prefixes.getNsPrefixMap());
91  context.put("prefixes", nsSet.entrySet());
92  context.put("blankNodesMap", new HashMap<Resource,String>());
93  }
94  catch (Exception e) {
95  context.put("metadata", Boolean.FALSE);
96  }
97  }

References MetadataConfiguration.addMetadataFromTemplate(), BaseServlet.config, and Configuration.getDatasets().

Referenced by ValuesURLServlet.doGet(), and PageURLServlet.doGet().

◆ addQueryString()

String addQueryString ( String  dataURL,
HttpServletRequest  request 
)
protectedinherited
161  {
162  if (request.getParameter("output") == null) {
163  return dataURL;
164  }
165  return dataURL + "?output=" + request.getParameter("output");
166  }

Referenced by ValuesDataURLServlet.doGet(), and DataURLServlet.doGet().

◆ doGet() [1/3]

void doGet ( HttpServletRequest  request,
HttpServletResponse  response 
) throws IOException, ServletException
inherited
106  {
107  if (initError != null) {
108  if(config==null) {
109  System.out.println("Calling initConfiguration from BaseServlet!");
110  Boolean res=ServletContextInitializer.initConfiguration(getServletContext());
111  if(res)
112  initError=null;
113  else {
114  initError=getServletContext().getAttribute(ServletContextInitializer.ERROR_MESSAGE).toString();
115  }
116  System.out.println("Successful result? "+res.toString());
117  }
118  config = (Configuration) getServletContext().getAttribute(
119  ServletContextInitializer.SERVER_CONFIGURATION);
120  }
121  if(initError!=null) {
122  sendInitialization500(response, initError);
123  return;
124  }
125  String relativeURI = request.getRequestURI().substring(
126  request.getContextPath().length() + request.getServletPath().length());
127  // Some servlet containers keep the leading slash, some don't
128  if (!"".equals(relativeURI) && "/".equals(relativeURI.substring(0, 1))) {
129  relativeURI = relativeURI.substring(1);
130  }
131  if (!doGet(relativeURI, request, response, config)) {
132  send404(response, null);
133  }
134 
135 
136  }
String initError
Definition: BaseServlet.java:39
void send404(HttpServletResponse response, String resourceURI)
Definition: BaseServlet.java:138
void sendInitialization500(HttpServletResponse response, String message)
Definition: BaseServlet.java:152
abstract boolean doGet(String relativeURI, HttpServletRequest request, HttpServletResponse response, Configuration config)

References BaseServlet.config, BaseServlet.doGet(), ServletContextInitializer.ERROR_MESSAGE, ServletContextInitializer.initConfiguration(), BaseServlet.initError, BaseServlet.send404(), BaseServlet.sendInitialization500(), and ServletContextInitializer.SERVER_CONFIGURATION.

◆ doGet() [2/3]

boolean doGet ( HypermediaControls  controller,
Property  predicate,
boolean  isInverse,
HttpServletRequest  request,
HttpServletResponse  response,
Configuration  config 
) throws IOException

Reimplemented from ValuesBaseServlet.

34  {
35  ResourceDescription resource = controller.getResourceDescription();
36  if (resource == null) return false;
37 
38  Model descriptions = config.getDataSource().listPropertyValues(
39  controller.getAbsoluteIRI(), predicate, isInverse);
40  if (descriptions.isEmpty()) return false;
41  ResourceProperty property = new ResourceDescription(
42  controller, descriptions, config).getProperty(predicate, isInverse);
43  if (property == null) return false; // Can happen if prefix is declared in URI space of a data source rather than in web space
44 
45  VelocityHelper template = new VelocityHelper(getServletContext(), response);
46  Context context = template.getVelocityContext();
47  context.put("project_name", config.getProjectName());
48  context.put("project_link", config.getProjectLink());
49  context.put("uri", resource.getURI());
50  if(config.getDataSource() instanceof RemoteSPARQLDataSource) {
51  context.put("endpoint", ((RemoteSPARQLDataSource)config.getDataSource()).endpointURL);
52  }else if(config.getDataSource() instanceof MergeDataSource) {
53  String sources="";
54  for(DataSource source:((MergeDataSource)config.getDataSource()).sources) {
55  if(source instanceof RemoteSPARQLDataSource) {
56  sources+=((RemoteSPARQLDataSource) source).endpointURL+";";
57  }else if(source instanceof RewrittenDataSource && ((RewrittenDataSource) source).original instanceof RemoteSPARQLDataSource) {
58  sources+=((RemoteSPARQLDataSource)((RewrittenDataSource) source).original).endpointURL+";";
59  }else if(source instanceof IndexDataSource && ((IndexDataSource) source).wrapped instanceof RemoteSPARQLDataSource) {
60  sources+=((RemoteSPARQLDataSource)((IndexDataSource) source).wrapped).endpointURL+";";
61  }
62  }
63  if(!sources.isEmpty())
64  context.put("endpoint", sources.substring(0,sources.length()-1));
65  else {
66  context.put("endpoint", "#");
67  }
68  }else if(config.getDataSource() instanceof RewrittenDataSource && ((RewrittenDataSource) config.getDataSource()).original instanceof RemoteSPARQLDataSource){
69  context.put("endpoint", ((RemoteSPARQLDataSource)((RewrittenDataSource) config.getDataSource()).original).endpointURL);
70  }else if(config.getDataSource() instanceof IndexDataSource && ((IndexDataSource) config.getDataSource()).wrapped instanceof RemoteSPARQLDataSource){
71  context.put("endpoint", ((RemoteSPARQLDataSource)((IndexDataSource) config.getDataSource()).wrapped).endpointURL);
72  }else {
73  context.put("endpoint", "#");
74  }
75  context.put("server_base", config.getWebApplicationBaseURI());
76  context.put("title", resource.getTitle());
77  context.put("head_title", resource.getTitle() + " \u00BB " + property.getCompleteLabel());
78  context.put("property", property);
79  context.put("back_uri", controller.getBrowsableURL());
80  context.put("back_label", resource.getTitle());
81  context.put("rdf_link", isInverse ? controller.getInverseValuesDataURL(predicate) : controller.getValuesDataURL(predicate));
82  context.put("showLabels", config.showLabels());
83 
84  addPageMetadata(context, controller, resource.getModel());
85 
86  template.renderXHTML("valuespage.vm");
87  return true;
88  }
String getProjectName()
Definition: Configuration.java:265
boolean showLabels()
Definition: Configuration.java:277
DataSource getDataSource()
A composite DataSource representing the merge of all datasets.
Definition: Configuration.java:192
String getProjectLink()
Definition: Configuration.java:261
String getWebApplicationBaseURI()
Definition: Configuration.java:269
void addPageMetadata(Context context, HypermediaControls controller, PrefixMapping prefixes)
Definition: BaseServlet.java:74
Model listPropertyValues(String resourceIRI, Property property, boolean isInverse)
Returns a subgraph of the data source.

References BaseServlet.addPageMetadata(), BaseServlet.config, Configuration.getDataSource(), ResourceDescription.getModel(), Configuration.getProjectLink(), Configuration.getProjectName(), ResourceDescription.getProperty(), ResourceDescription.getTitle(), ResourceDescription.getURI(), Configuration.getWebApplicationBaseURI(), DataSource.listPropertyValues(), and Configuration.showLabels().

◆ doGet() [3/3]

boolean doGet ( String  relativeURI,
HttpServletRequest  request,
HttpServletResponse  response,
Configuration  config 
) throws IOException, ServletException
inherited

Reimplemented from BaseServlet.

38  {
39  boolean isInverse;
40  Property property;
41  Matcher matcher = prefixedNamePattern.matcher(relativeURI);
42  if (matcher.matches()) {
43  String prefix = matcher.group(2);
44  if (config.getPrefixes().getNsPrefixURI(prefix) == null) {
45  return false;
46  }
47  String localName = matcher.group(3);
48  relativeURI = matcher.group(4); // Keep just last part
49  property = ResourceFactory.createProperty(
50  config.getPrefixes().getNsPrefixURI(prefix), localName);
51  } else {
52  matcher = fullIRIPattern.matcher(relativeURI);
53  if (!matcher.matches()) {
54  return false;
55  }
56  String propertyIRI = IRIEncoder.toIRI(
57  PubbyIRIEscaper.unescapeSpecialCharacters(matcher.group(2)));
58  relativeURI = matcher.group(3); // Keep just last part
59  property = ResourceFactory.createProperty(propertyIRI);
60  }
61  isInverse = "-".equals(matcher.group(1));
62 
63  HypermediaControls controller = config.getControls(relativeURI, false);
64  if (controller == null) {
65  return false;
66  }
67  return doGet(controller, property, isInverse, request, response, config);
68  }
HypermediaControls getControls(String relativeRequestURI, boolean isRelativeToPubbyRoot)
Definition: Configuration.java:210
PrefixMapping getPrefixes()
Definition: Configuration.java:221
abstract boolean doGet(HypermediaControls controller, Property property, boolean isInverse, HttpServletRequest request, HttpServletResponse response, Configuration config)
static Pattern fullIRIPattern
Definition: ValuesBaseServlet.java:27
static Pattern prefixedNamePattern
Definition: ValuesBaseServlet.java:26

References BaseServlet.config, ValuesBaseServlet.doGet(), ValuesBaseServlet.fullIRIPattern, Configuration.getControls(), Configuration.getPrefixes(), ValuesBaseServlet.prefixedNamePattern, IRIEncoder.toIRI(), and PubbyIRIEscaper.unescapeSpecialCharacters().

◆ init()

void init ( ) throws ServletException
inherited
41  {
42  config = (Configuration) getServletContext().getAttribute(
43  ServletContextInitializer.SERVER_CONFIGURATION);
44  if(config==null){
45  initError = (String) getServletContext().getAttribute(
46  ServletContextInitializer.ERROR_MESSAGE);
47  }else {
48  initError=null;
49  }
50  }

References BaseServlet.config, ServletContextInitializer.ERROR_MESSAGE, BaseServlet.initError, and ServletContextInitializer.SERVER_CONFIGURATION.

◆ send404()

void send404 ( HttpServletResponse  response,
String  resourceURI 
) throws IOException
protectedinherited
138  {
139  response.setStatus(404);
140  VelocityHelper template = new VelocityHelper(getServletContext(), response);
141  Context context = template.getVelocityContext();
142  context.put("project_name", config.getProjectName());
143  context.put("project_link", config.getProjectLink());
144  context.put("server_base", config.getWebApplicationBaseURI());
145  context.put("title", "404 Not Found");
146  if (resourceURI != null) {
147  context.put("uri", resourceURI);
148  }
149  template.renderXHTML("404.vm");
150  }

References BaseServlet.config, Configuration.getProjectLink(), Configuration.getProjectName(), and Configuration.getWebApplicationBaseURI().

Referenced by BaseServlet.doGet().

◆ sendInitialization500()

void sendInitialization500 ( HttpServletResponse  response,
String  message 
) throws IOException
protectedinherited
152  {
153  response.setStatus(500);
154  VelocityHelper template = new VelocityHelper(getServletContext(), response);
155  Context context = template.getVelocityContext();
156  context.put("message", message);
157  context.put("title", "Configuration error");
158  template.renderXHTML("500init.vm");
159  }

Referenced by BaseServlet.doGet().

Member Data Documentation

◆ config

◆ fullIRIPattern

Pattern fullIRIPattern = Pattern.compile("(-?)!(.*?)///(.*)")
staticprivateinherited

Referenced by ValuesBaseServlet.doGet().

◆ initError

String initError
privateinherited

◆ prefixedNamePattern

Pattern prefixedNamePattern = Pattern.compile("(-?)([^!:/]*):([^:/]*)/(.*)")
staticprivateinherited

Referenced by ValuesBaseServlet.doGet().

◆ serialVersionUID

final long serialVersionUID = -2597664961896022667L
staticprivate