diff --git a/productMods/images/visualization/mapofscience/vivo_scimap_icon_v001.png b/productMods/images/visualization/mapofscience/vivo_scimap_icon_v001.png new file mode 100644 index 00000000..8b022956 Binary files /dev/null and b/productMods/images/visualization/mapofscience/vivo_scimap_icon_v001.png differ diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/entitycomparison/OrganizationUtilityFunctions.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/entitycomparison/OrganizationUtilityFunctions.java index ddc92f4b..72b68411 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/entitycomparison/OrganizationUtilityFunctions.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/entitycomparison/OrganizationUtilityFunctions.java @@ -92,7 +92,7 @@ public class OrganizationUtilityFunctions { QueryRunner highestLevelOrganizationQueryHandler = new GenericQueryRunner( fieldLabelToOutputFieldLabel, aggregationRules, whereClause, - groupOrderClause, dataset, log); + groupOrderClause, dataset); String highestLevelOrgURI = OrganizationUtilityFunctions .getHighestLevelOrganizationURI( diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/mapofscience/MapOfScienceVisualizationRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/mapofscience/MapOfScienceVisualizationRequestHandler.java index 33395aac..2e68c671 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/mapofscience/MapOfScienceVisualizationRequestHandler.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/mapofscience/MapOfScienceVisualizationRequestHandler.java @@ -87,11 +87,48 @@ public class MapOfScienceVisualizationRequestHandler implements // return prepareStandaloneMarkupResponse(vitroRequest, entityURI); } + + + private Map getSubjectPersonEntityAndGenerateDataResponse( + VitroRequest vitroRequest, Log log, Dataset dataset, + String subjectEntityURI, VisConstants.DataVisMode dataOuputFormat) + throws MalformedQueryParametersException { + + Map documentURIForAssociatedPeopleTOVO = new HashMap(); + + + Entity personEntity = SelectOnModelUtilities + .getSubjectPersonEntity(dataset, subjectEntityURI); + + if (personEntity.getSubEntities() != null) { + + documentURIForAssociatedPeopleTOVO = SelectOnModelUtilities + .getPublicationsWithJournalForAssociatedPeople(dataset, personEntity.getSubEntities()); + + } + + if (documentURIForAssociatedPeopleTOVO.isEmpty()) { + + if (VisConstants.DataVisMode.JSON.equals(dataOuputFormat)) { + return prepareStandaloneDataErrorResponse(); + } else { + return prepareDataErrorResponse(); + } + + } else { + + if (VisConstants.DataVisMode.JSON.equals(dataOuputFormat)) { + return prepareStandaloneDataResponse(vitroRequest, personEntity); + } else { + return prepareDataResponse(vitroRequest, personEntity); + } + } + } private Map getSubjectEntityAndGenerateDataResponse( VitroRequest vitroRequest, Log log, Dataset dataset, String subjectEntityURI, VisConstants.DataVisMode dataOuputFormat) - throws MalformedQueryParametersException { + throws MalformedQueryParametersException { Entity organizationEntity = SelectOnModelUtilities .getSubjectOrganizationHierarchy(dataset, subjectEntityURI); @@ -187,15 +224,15 @@ public class MapOfScienceVisualizationRequestHandler implements if (VisualizationFrameworkConstants.SUBDISCIPLINE_TO_ACTIVTY_VIS_MODE .equalsIgnoreCase(vitroRequest.getParameter(VisualizationFrameworkConstants.VIS_MODE_KEY))) { - fileData.put(DataVisualizationController.FILE_CONTENT_KEY, - getSubDisciplineToPublicationsCSVContent(entity)); - - outputFileName += "_subdiscipline-to-publications" + ".csv"; - + fileData.put(DataVisualizationController.FILE_CONTENT_KEY, + getSubDisciplineToPublicationsCSVContent(entity)); + + outputFileName += "_subdiscipline-to-publications" + ".csv"; + } else { fileData.put(DataVisualizationController.FILE_CONTENT_KEY, - getDisciplineToPublicationsCSVContent(entity)); + getDisciplineToPublicationsCSVContent(entity)); outputFileName += "_discipline-to-publications" + ".csv"; @@ -257,14 +294,26 @@ public class MapOfScienceVisualizationRequestHandler implements currentDataVisMode = VisConstants.DataVisMode.JSON; } + if (UtilityFunctions.isEntityAPerson(vitroRequest, entityURI)) { + + return getSubjectPersonEntityAndGenerateDataResponse( + vitroRequest, + log, + dataset, + entityURI, + currentDataVisMode); + + } else { - return getSubjectEntityAndGenerateDataResponse( - vitroRequest, - log, - dataset, - entityURI, - currentDataVisMode); + return getSubjectEntityAndGenerateDataResponse( + vitroRequest, + log, + dataset, + entityURI, + currentDataVisMode); + } + } @@ -304,7 +353,6 @@ public class MapOfScienceVisualizationRequestHandler implements body.put("entityLabel", organizationLabel); body.put("vivoDefaultNamespace", vreq.getWebappDaoFactory().getDefaultNamespace()); - return new TemplateResponseValues(standaloneTemplate, body); } diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/utilities/UtilitiesRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/utilities/UtilitiesRequestHandler.java index 95572651..750a30ec 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/utilities/UtilitiesRequestHandler.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/utilities/UtilitiesRequestHandler.java @@ -106,7 +106,7 @@ public class UtilitiesRequestHandler implements VisualizationRequestHandler { "", whereClause, "", - dataset, log); + dataset); return getThumbnailInformation(imageQueryHandler.getQueryResult(), fieldLabelToOutputFieldLabel, vitroRequest); @@ -131,7 +131,7 @@ public class UtilitiesRequestHandler implements VisualizationRequestHandler { aggregationRules, whereClause, groupOrderClause, - dataset, log); + dataset); Gson publicationsInformation = new Gson(); @@ -162,7 +162,7 @@ public class UtilitiesRequestHandler implements VisualizationRequestHandler { aggregationRules, whereClause, "", - dataset, log); + dataset); Gson grantsInformation = new Gson(); @@ -309,7 +309,7 @@ public class UtilitiesRequestHandler implements VisualizationRequestHandler { aggregationRules, whereClause, groupOrderClause, - dataset, log); + dataset); return getHighestLevelOrganizationTemporalGraphVisURL( highestLevelOrganizationQueryHandler.getQueryResult(), diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/GenericQueryRunner.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/GenericQueryRunner.java index 25ac9a57..11fa1e13 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/GenericQueryRunner.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/GenericQueryRunner.java @@ -4,7 +4,6 @@ package edu.cornell.mannlib.vitro.webapp.visualization.visutils; import java.util.Map; -import org.apache.commons.logging.Log; import com.hp.hpl.jena.query.Dataset; import com.hp.hpl.jena.query.Query; @@ -42,7 +41,7 @@ public class GenericQueryRunner implements QueryRunner { String aggregationRules, String whereClause, String groupOrderClause, - Dataset dataset, Log log) { + Dataset dataset) { this.fieldLabelToOutputFieldLabel = fieldLabelToOutputFieldLabel; this.aggregationRules = aggregationRules; diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/SelectOnModelUtilities.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/SelectOnModelUtilities.java index cbc6e297..a3c3b049 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/SelectOnModelUtilities.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/visutils/SelectOnModelUtilities.java @@ -72,6 +72,53 @@ public class SelectOnModelUtilities { return entityWithSubOrganizations; } + public static Entity getSubjectPersonEntity(Dataset dataset, + String subjectEntityURI) throws MalformedQueryParametersException { + + Map fieldLabelToOutputFieldLabel = new HashMap(); + fieldLabelToOutputFieldLabel.put("authorLabel", QueryFieldLabels.AUTHOR_LABEL); + + String whereClause = "" + + " <" + subjectEntityURI + "> rdfs:label ?authorLabel . "; + + QueryRunner personQuery = + new GenericQueryRunner(fieldLabelToOutputFieldLabel, + "", + whereClause, + "", + dataset); + + Entity personEntity = new Entity(subjectEntityURI); + + ResultSet queryResult = personQuery.getQueryResult(); + + while (queryResult.hasNext()) { + + QuerySolution solution = queryResult.nextSolution(); + + RDFNode personLabelNode = solution.get(QueryFieldLabels.AUTHOR_LABEL); + if (personLabelNode != null) { + personEntity.setEntityLabel(personLabelNode.toString()); + } + + } + + /* + * We are adding A person as it's own subentity in order to make our code for geenrating csv, json + * & other data as streamlined as possible between entities of type Organization & Person. + * */ + SubEntity subEntity = new SubEntity(subjectEntityURI, personEntity.getEntityLabel()); + subEntity.setEntityClass(VOConstants.EntityClassType.PERSON); + + personEntity.addSubEntity(subEntity); + +// Entity entityWithParentOrganizations = getAllParentOrganizations(dataset, subjectEntityURI); +// +// personEntity.addParents(entityWithParentOrganizations.getParents()); + + return personEntity; + } + public static Entity getAllParentOrganizations(Dataset dataset, String subjectEntityURI) throws MalformedQueryParametersException { Model organizationModel = ModelConstructorUtilities