diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/VisualizationController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/VisualizationController.java index f7b0f2f37..b8885bf9f 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/VisualizationController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/VisualizationController.java @@ -112,6 +112,10 @@ public class VisualizationController extends BaseEditController { public static final String COAUTHORSHIP_VIS_URL_VALUE = "coauthorship"; + + public static final String UTILITIES_URL_VALUE + = "utilities"; + @Override @@ -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 { } } + diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/VisualizationFrameworkConstants.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/VisualizationFrameworkConstants.java index 542a708c4..6b83e03a9 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/VisualizationFrameworkConstants.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/visualization/VisualizationFrameworkConstants.java @@ -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"; diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/VisualizationCodeGenerator.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/VisualizationCodeGenerator.java index 5b33d9459..afbe3a3c3 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/VisualizationCodeGenerator.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/VisualizationCodeGenerator.java @@ -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() + diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/coauthorship/QueryHandler.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/coauthorship/QueryHandler.java index 7ff6b755a..489487cdf 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/coauthorship/QueryHandler.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/coauthorship/QueryHandler.java @@ -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); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/coauthorship/VisualizationRequestHandler.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/coauthorship/VisualizationRequestHandler.java index b12a73153..ab7cd34a7 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/coauthorship/VisualizationRequestHandler.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/coauthorship/VisualizationRequestHandler.java @@ -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; } + } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/constants/QueryConstants.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/constants/QueryConstants.java index 648612391..6e1b5249d 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/constants/QueryConstants.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/constants/QueryConstants.java @@ -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: \n" + - "PREFIX rdfs: \n" + - "PREFIX vitro: \n" + - "PREFIX vivo: \n" + - "PREFIX core: \n" + - "PREFIX bibo: \n" + - "PREFIX foaf: \n" + - "PREFIX aktp: \n" + - "PREFIX xsd: \n" + - "PREFIX owl: \n" + - "PREFIX swrl: \n" + - "PREFIX swrlb: \n" + - "PREFIX far: \n" + - "PREFIX ai: \n" + - "PREFIX akts: \n" + - "PREFIX hr: \n" + - "PREFIX dcterms: \n" + - "PREFIX dcelem: \n" + - "PREFIX event: \n" + - "PREFIX geo: \n" + - "PREFIX mann: \n" + - "PREFIX pubmed: \n" + - "PREFIX rdfsyn: \n" + - "PREFIX skos: \n" + - "PREFIX socsci: \n" + - "PREFIX stars: \n" + - "PREFIX temp: \n" + - "PREFIX wos: \n"; - - public static final Map PREFIX_TO_NAMESPACE = new HashMap() {{ put("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#"); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/utilities/VisualizationRequestHandler.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/utilities/VisualizationRequestHandler.java new file mode 100644 index 000000000..2e07451d7 --- /dev/null +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/utilities/VisualizationRequestHandler.java @@ -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(); + } + } + +} diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/Edge.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/Edge.java index 76c1c1451..11e6ddd9e 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/Edge.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/Edge.java @@ -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; /** * diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/Node.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/Node.java index 24efd0a4e..b5142a3d9 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/Node.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/Node.java @@ -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; /** * diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/utils/GenericQueryHandler.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/GenericQueryHandler.java similarity index 95% rename from webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/utils/GenericQueryHandler.java rename to webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/GenericQueryHandler.java index dc0b82b2b..e5a1141ff 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/utils/GenericQueryHandler.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/GenericQueryHandler.java @@ -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; diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/utils/UniqueIDGenerator.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/UniqueIDGenerator.java similarity index 71% rename from webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/utils/UniqueIDGenerator.java rename to webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/UniqueIDGenerator.java index d85c8a300..a5d796951 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/utils/UniqueIDGenerator.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/UniqueIDGenerator.java @@ -1,4 +1,4 @@ -package edu.cornell.mannlib.vitro.webapp.visualization.utils; +package edu.cornell.mannlib.vitro.webapp.visualization.visutils; public class UniqueIDGenerator { diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/utils/VOUtils.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/VOUtils.java similarity index 92% rename from webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/utils/VOUtils.java rename to webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/VOUtils.java index cbe2163e3..6ac9fbbb8 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/utils/VOUtils.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/VOUtils.java @@ -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;