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:
cdtank 2010-06-28 23:16:14 +00:00
parent 32bbd519c2
commit 954b726904
12 changed files with 185 additions and 48 deletions

View file

@ -113,6 +113,10 @@ public class VisualizationController extends BaseEditController {
public static final String COAUTHORSHIP_VIS_URL_VALUE public static final String COAUTHORSHIP_VIS_URL_VALUE
= "coauthorship"; = "coauthorship";
public static final String UTILITIES_URL_VALUE
= "utilities";
@Override @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) protected void doPost(HttpServletRequest request, HttpServletResponse response)
@ -209,6 +213,31 @@ public class VisualizationController extends BaseEditController {
} else if (PDF_REPORT_VIS_URL_VALUE } else if (PDF_REPORT_VIS_URL_VALUE
.equalsIgnoreCase(vreq.getParameter(VIS_TYPE_URL_HANDLE))) { .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 { } else {
log.debug("vis uqery parameter value -> " + vreq.getParameter("vis")); log.debug("vis uqery parameter value -> " + vreq.getParameter("vis"));
@ -319,3 +348,4 @@ public class VisualizationController extends BaseEditController {
} }
} }

View file

@ -2,6 +2,7 @@ package edu.cornell.mannlib.vitro.webapp.controller.visualization;
public class VisualizationFrameworkConstants { 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 VIS_CONTAINER_URL_HANDLE = "container";
public static final String INDIVIDUAL_URI_URL_HANDLE = "uri"; public static final String INDIVIDUAL_URI_URL_HANDLE = "uri";
public static final String VIS_MODE_URL_HANDLE = "vis_mode"; public static final String VIS_MODE_URL_HANDLE = "vis_mode";

View file

@ -339,7 +339,7 @@ public class VisualizationCodeGenerator {
"=" + URLEncoder.encode(individualURI, "=" + URLEncoder.encode(individualURI,
VisualizationController.URL_ENCODING_SCHEME).toString() + VisualizationController.URL_ENCODING_SCHEME).toString() +
"&" + "&" +
"vis" + VisualizationFrameworkConstants.VIS_TYPE_URL_HANDLE +
"=" + URLEncoder.encode(VisualizationController "=" + URLEncoder.encode(VisualizationController
.PERSON_PUBLICATION_COUNT_VIS_URL_VALUE, .PERSON_PUBLICATION_COUNT_VIS_URL_VALUE,
VisualizationController.URL_ENCODING_SCHEME).toString() + VisualizationController.URL_ENCODING_SCHEME).toString() +

View file

@ -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.QueryConstants;
import edu.cornell.mannlib.vitro.webapp.visualization.constants.QueryFieldLabels; 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.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.BiboDocument;
import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.Edge; 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.Node;
import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.VivoCollegeOrSchool; 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); 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; Node coAuthorNode;
RDFNode coAuthorURLNode = solution.get(QueryFieldLabels.CO_AUTHOR_URL); RDFNode coAuthorURLNode = solution.get(QueryFieldLabels.CO_AUTHOR_URL);

View file

@ -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.controller.visualization.VisualizationFrameworkConstants;
import edu.cornell.mannlib.vitro.webapp.visualization.constants.QueryConstants; 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.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.valueobjects.GenericQueryMap;
import edu.cornell.mannlib.vitro.webapp.visualization.visutils.GenericQueryHandler;
public class VisualizationRequestHandler { public class VisualizationRequestHandler {
@ -54,8 +54,10 @@ public class VisualizationRequestHandler {
String visContainer = vitroRequest.getParameter(VisualizationFrameworkConstants.VIS_CONTAINER_URL_HANDLE); 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 * 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. * 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) ; File imageFile = new File(imageServerPath) ;
if (imageFile == null) { if (!imageFile.exists()) {
Portal portal = vitroRequest.getPortal(); Portal portal = vitroRequest.getPortal();
String themeDir = portal != null ? portal.getThemeDir() : Portal.DEFAULT_THEME_DIR_FROM_CONTEXT; String themeDir = portal != null ? portal.getThemeDir() : Portal.DEFAULT_THEME_DIR_FROM_CONTEXT;
@ -114,6 +116,17 @@ public class VisualizationRequestHandler {
System.out.println(imagePath); 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) { } catch (MalformedQueryParametersException e) {
try { try {
@ -148,6 +164,7 @@ public class VisualizationRequestHandler {
return; return;
} }
} }

View file

@ -5,41 +5,6 @@ import java.util.Map;
public class QueryConstants { 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>() {{ 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#"); put("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#");

View file

@ -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();
}
}
}

View file

@ -7,8 +7,8 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VOConstants; 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.visutils.UniqueIDGenerator;
import edu.cornell.mannlib.vitro.webapp.visualization.utils.VOUtils; import edu.cornell.mannlib.vitro.webapp.visualization.visutils.VOUtils;
/** /**
* *

View file

@ -7,8 +7,8 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VOConstants; 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.visutils.UniqueIDGenerator;
import edu.cornell.mannlib.vitro.webapp.visualization.utils.VOUtils; import edu.cornell.mannlib.vitro.webapp.visualization.visutils.VOUtils;
/** /**
* *

View file

@ -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; import org.apache.commons.logging.Log;

View file

@ -1,4 +1,4 @@
package edu.cornell.mannlib.vitro.webapp.visualization.utils; package edu.cornell.mannlib.vitro.webapp.visualization.visutils;
public class UniqueIDGenerator { public class UniqueIDGenerator {

View file

@ -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.Map;
import java.util.Set; import java.util.Set;