1. Modified the edge generation logic in co-author vis to exclude all the edges between an ego & it self.
2. Refactored some portion of the code. 3. Added another utilities vis - whose sole job is to generate URLs on the fly for requested individuals - whether it be profile urls or some other vis specific urls.
This commit is contained in:
parent
32bbd519c2
commit
954b726904
12 changed files with 185 additions and 48 deletions
|
@ -113,6 +113,10 @@ public class VisualizationController extends BaseEditController {
|
|||
public static final String COAUTHORSHIP_VIS_URL_VALUE
|
||||
= "coauthorship";
|
||||
|
||||
public static final String UTILITIES_URL_VALUE
|
||||
= "utilities";
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
|
@ -209,6 +213,31 @@ public class VisualizationController extends BaseEditController {
|
|||
} else if (PDF_REPORT_VIS_URL_VALUE
|
||||
.equalsIgnoreCase(vreq.getParameter(VIS_TYPE_URL_HANDLE))) {
|
||||
|
||||
} else if (UTILITIES_URL_VALUE
|
||||
.equalsIgnoreCase(vreq.getParameter(VIS_TYPE_URL_HANDLE))) {
|
||||
|
||||
edu.cornell.mannlib.vitro.webapp.visualization.utilities.VisualizationRequestHandler visRequestHandler =
|
||||
new edu.cornell.mannlib.vitro.webapp.visualization.utilities.VisualizationRequestHandler(vreq, request, response, log);
|
||||
|
||||
String rdfResultFormatParam = "RDF/XML-ABBREV";
|
||||
|
||||
DataSource dataSource = setupJENADataSource(request,
|
||||
response,
|
||||
vreq,
|
||||
rdfResultFormatParam);
|
||||
|
||||
if (dataSource != null) {
|
||||
|
||||
/*
|
||||
* This is side-effecting because the visualization content is added
|
||||
* to the request object.
|
||||
* */
|
||||
visRequestHandler.generateVisualization(dataSource);
|
||||
|
||||
} else {
|
||||
log.error("ERROR! data model empoty");
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
log.debug("vis uqery parameter value -> " + vreq.getParameter("vis"));
|
||||
|
@ -319,3 +348,4 @@ public class VisualizationController extends BaseEditController {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ package edu.cornell.mannlib.vitro.webapp.controller.visualization;
|
|||
|
||||
public class VisualizationFrameworkConstants {
|
||||
|
||||
public static final String VIS_TYPE_URL_HANDLE = "vis";
|
||||
public static final String VIS_CONTAINER_URL_HANDLE = "container";
|
||||
public static final String INDIVIDUAL_URI_URL_HANDLE = "uri";
|
||||
public static final String VIS_MODE_URL_HANDLE = "vis_mode";
|
||||
|
|
|
@ -339,7 +339,7 @@ public class VisualizationCodeGenerator {
|
|||
"=" + URLEncoder.encode(individualURI,
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString() +
|
||||
"&" +
|
||||
"vis" +
|
||||
VisualizationFrameworkConstants.VIS_TYPE_URL_HANDLE +
|
||||
"=" + URLEncoder.encode(VisualizationController
|
||||
.PERSON_PUBLICATION_COUNT_VIS_URL_VALUE,
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString() +
|
||||
|
|
|
@ -26,11 +26,11 @@ import com.hp.hpl.jena.rdf.model.RDFNode;
|
|||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.QueryConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.QueryFieldLabels;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.utils.UniqueIDGenerator;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.BiboDocument;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.Edge;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.Node;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.VivoCollegeOrSchool;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.visutils.UniqueIDGenerator;
|
||||
|
||||
|
||||
|
||||
|
@ -116,6 +116,16 @@ public class QueryHandler {
|
|||
|
||||
egoNode.addAuthorDocument(biboDocument);
|
||||
|
||||
/*
|
||||
* After some discussion we concluded that for the purpose of this visualization
|
||||
* we do not want a co-author node or edge if the publication has only one
|
||||
* author and that happens to be the ego.
|
||||
* */
|
||||
if (solution.get(QueryFieldLabels.AUTHOR_URL).toString().equalsIgnoreCase(
|
||||
solution.get(QueryFieldLabels.CO_AUTHOR_URL).toString())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Node coAuthorNode;
|
||||
|
||||
RDFNode coAuthorURLNode = solution.get(QueryFieldLabels.CO_AUTHOR_URL);
|
||||
|
|
|
@ -21,8 +21,8 @@ import edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationCo
|
|||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationFrameworkConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.QueryConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.utils.GenericQueryHandler;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.GenericQueryMap;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.visutils.GenericQueryHandler;
|
||||
|
||||
public class VisualizationRequestHandler {
|
||||
|
||||
|
@ -54,8 +54,10 @@ public class VisualizationRequestHandler {
|
|||
|
||||
String visContainer = vitroRequest.getParameter(VisualizationFrameworkConstants.VIS_CONTAINER_URL_HANDLE);
|
||||
|
||||
|
||||
|
||||
System.out.println("******************************************************");
|
||||
System.out.println(VisualizationFrameworkConstants.VIS_MODE_URL_HANDLE);
|
||||
System.out.println(vitroRequest.getParameter(VisualizationFrameworkConstants.VIS_MODE_URL_HANDLE));
|
||||
System.out.println(VisualizationFrameworkConstants.IMAGE_VIS_MODE_URL_VALUE);
|
||||
/*
|
||||
* If the data being requested is about a standalone image, which is used when we want
|
||||
* to render an image & other info for a co-author OR ego for that matter.
|
||||
|
@ -99,7 +101,7 @@ public class VisualizationRequestHandler {
|
|||
|
||||
File imageFile = new File(imageServerPath) ;
|
||||
|
||||
if (imageFile == null) {
|
||||
if (!imageFile.exists()) {
|
||||
|
||||
Portal portal = vitroRequest.getPortal();
|
||||
String themeDir = portal != null ? portal.getThemeDir() : Portal.DEFAULT_THEME_DIR_FROM_CONTEXT;
|
||||
|
@ -114,6 +116,17 @@ public class VisualizationRequestHandler {
|
|||
|
||||
System.out.println(imagePath);
|
||||
|
||||
} else {
|
||||
|
||||
System.out.println("ABSOLUTE PATH : " + imageFile.getAbsolutePath());
|
||||
try {
|
||||
System.out.println("ABSOLUTE PATH : " + imageFile.getCanonicalPath());
|
||||
} catch (IOException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
System.out.println("ABSOLUTE PATH : " + imageFile.getName());
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -136,6 +149,9 @@ public class VisualizationRequestHandler {
|
|||
|
||||
}
|
||||
|
||||
prepareVisualizationQueryImageResponse(imagePath);
|
||||
return;
|
||||
|
||||
|
||||
} catch (MalformedQueryParametersException e) {
|
||||
try {
|
||||
|
@ -148,6 +164,7 @@ public class VisualizationRequestHandler {
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -5,41 +5,6 @@ import java.util.Map;
|
|||
|
||||
public class QueryConstants {
|
||||
|
||||
/*
|
||||
* This is not supposed to be used. Will remove after verifying that the dynamic prefix
|
||||
* section generation works.
|
||||
* */
|
||||
public static final String SPARQL_QUERY_PREFIXES_DEP = "" +
|
||||
"PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n" +
|
||||
"PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n" +
|
||||
"PREFIX vitro: <http://vitro.mannlib.cornell.edu/ns/vitro/0.7#>\n" +
|
||||
"PREFIX vivo: <http://vivo.library.cornell.edu/ns/0.1#>\n" +
|
||||
"PREFIX core: <http://vivoweb.org/ontology/core#>\n" +
|
||||
"PREFIX bibo: <http://purl.org/ontology/bibo/>\n" +
|
||||
"PREFIX foaf: <http://xmlns.com/foaf/0.1/>\n" +
|
||||
"PREFIX aktp: <http://www.aktors.org/ontology/portal#>\n" +
|
||||
"PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>\n" +
|
||||
"PREFIX owl: <http://www.w3.org/2002/07/owl#>\n" +
|
||||
"PREFIX swrl: <http://www.w3.org/2003/11/swrl#>\n" +
|
||||
"PREFIX swrlb: <http://www.w3.org/2003/11/swrlb#>\n" +
|
||||
"PREFIX far: <http://vitro.mannlib.cornell.edu/ns/reporting#>\n" +
|
||||
"PREFIX ai: <http://vitro.mannlib.cornell.edu/ns/hotel#>\n" +
|
||||
"PREFIX akts: <http://www.aktors.org/ontology/support#>\n" +
|
||||
"PREFIX hr: <http://vivo.cornell.edu/ns/hr/0.9/hr.owl#>\n" +
|
||||
"PREFIX dcterms: <http://purl.org/dc/terms/>\n" +
|
||||
"PREFIX dcelem: <http://purl.org/dc/elements/1.1/>\n" +
|
||||
"PREFIX event: <http://purl.org/NET/c4dm/event.owl#>\n" +
|
||||
"PREFIX geo: <http://aims.fao.org/aos/geopolitical.owl#>\n" +
|
||||
"PREFIX mann: <http://vivo.cornell.edu/ns/mannadditions/0.1#>\n" +
|
||||
"PREFIX pubmed: <http://vitro.mannlib.cornell.edu/ns/pubmed#>\n" +
|
||||
"PREFIX rdfsyn: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n" +
|
||||
"PREFIX skos: <http://www.w3.org/2004/02/skos/core#>\n" +
|
||||
"PREFIX socsci: <http://vivo.library.cornell.edu/ns/vivo/socsci/0.1#>\n" +
|
||||
"PREFIX stars: <http://vitro.mannlib.cornell.edu/ns/cornell/stars/classes#>\n" +
|
||||
"PREFIX temp: <http://vitro.mannlib.cornell.edu/ns/temp#>\n" +
|
||||
"PREFIX wos: <http://vivo.mannlib.cornell.edu/ns/ThomsonWOS/0.1#>\n";
|
||||
|
||||
|
||||
public static final Map<String, String> PREFIX_TO_NAMESPACE = new HashMap<String, String>() {{
|
||||
|
||||
put("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#");
|
||||
|
|
|
@ -0,0 +1,114 @@
|
|||
package edu.cornell.mannlib.vitro.webapp.visualization.utilities;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLEncoder;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
|
||||
import com.hp.hpl.jena.query.DataSource;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationController;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationFrameworkConstants;
|
||||
|
||||
public class VisualizationRequestHandler {
|
||||
|
||||
private VitroRequest vitroRequest;
|
||||
private HttpServletRequest request;
|
||||
private HttpServletResponse response;
|
||||
private Log log;
|
||||
|
||||
|
||||
|
||||
public VisualizationRequestHandler(VitroRequest vitroRequest,
|
||||
HttpServletRequest request, HttpServletResponse response, Log log) {
|
||||
|
||||
this.vitroRequest = vitroRequest;
|
||||
this.request = request;
|
||||
this.response = response;
|
||||
this.log = log;
|
||||
|
||||
}
|
||||
|
||||
public void generateVisualization(DataSource dataSource) {
|
||||
|
||||
String individualURIParam = vitroRequest.getParameter(VisualizationFrameworkConstants.INDIVIDUAL_URI_URL_HANDLE);
|
||||
|
||||
String visMode = vitroRequest.getParameter(VisualizationFrameworkConstants.VIS_MODE_URL_HANDLE);
|
||||
|
||||
String profileVisMode = "PROFILE_URL";
|
||||
|
||||
String coAuthorVisMode = "COAUTHORSHIP_URL";
|
||||
|
||||
String preparedURL = "";
|
||||
|
||||
try {
|
||||
|
||||
/*
|
||||
* By default we will be generating profile url else some specific url like coAuthorShip vis
|
||||
* url for that individual.
|
||||
* */
|
||||
if (coAuthorVisMode.equalsIgnoreCase(visMode)) {
|
||||
|
||||
preparedURL += request.getContextPath()
|
||||
+ "/admin/visQuery"
|
||||
+ "?"
|
||||
+ VisualizationFrameworkConstants.INDIVIDUAL_URI_URL_HANDLE
|
||||
+ "=" + URLEncoder.encode(individualURIParam,
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString()
|
||||
+ "&"
|
||||
+ VisualizationFrameworkConstants.VIS_TYPE_URL_HANDLE
|
||||
+ "=" + URLEncoder.encode("coauthorship",
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString()
|
||||
+ "&"
|
||||
+ VisualizationFrameworkConstants.RENDER_MODE_URL_HANDLE
|
||||
+ "=" + URLEncoder.encode(VisualizationFrameworkConstants.STANDALONE_RENDER_MODE_URL_VALUE,
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString();
|
||||
|
||||
|
||||
prepareVisualizationQueryResponse(preparedURL);
|
||||
return;
|
||||
|
||||
} else {
|
||||
|
||||
preparedURL += request.getContextPath()
|
||||
+ "/individual"
|
||||
+ "?"
|
||||
+ VisualizationFrameworkConstants.INDIVIDUAL_URI_URL_HANDLE
|
||||
+ "=" + URLEncoder.encode(individualURIParam,
|
||||
VisualizationController.URL_ENCODING_SCHEME).toString();
|
||||
|
||||
prepareVisualizationQueryResponse(preparedURL);
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
log.error(e.getLocalizedMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void prepareVisualizationQueryResponse(String preparedURL) {
|
||||
|
||||
response.setContentType("text/plain");
|
||||
|
||||
try {
|
||||
|
||||
PrintWriter responseWriter = response.getWriter();
|
||||
|
||||
responseWriter.append(preparedURL);
|
||||
|
||||
responseWriter.close();
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -7,8 +7,8 @@ import java.util.Map;
|
|||
import java.util.Set;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VOConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.utils.UniqueIDGenerator;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.utils.VOUtils;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.visutils.UniqueIDGenerator;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.visutils.VOUtils;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
|
@ -7,8 +7,8 @@ import java.util.Map;
|
|||
import java.util.Set;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VOConstants;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.utils.UniqueIDGenerator;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.utils.VOUtils;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.visutils.UniqueIDGenerator;
|
||||
import edu.cornell.mannlib.vitro.webapp.visualization.visutils.VOUtils;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package edu.cornell.mannlib.vitro.webapp.visualization.utils;
|
||||
package edu.cornell.mannlib.vitro.webapp.visualization.visutils;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package edu.cornell.mannlib.vitro.webapp.visualization.utils;
|
||||
package edu.cornell.mannlib.vitro.webapp.visualization.visutils;
|
||||
|
||||
public class UniqueIDGenerator {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package edu.cornell.mannlib.vitro.webapp.visualization.utils;
|
||||
package edu.cornell.mannlib.vitro.webapp.visualization.visutils;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
Loading…
Add table
Reference in a new issue