1. Added download file in csv format for map of science info.
This commit is contained in:
parent
2ab43d907a
commit
43a391a0ae
2 changed files with 1224 additions and 30 deletions
File diff suppressed because it is too large
Load diff
|
@ -3,6 +3,7 @@
|
||||||
package edu.cornell.mannlib.vitro.webapp.visualization.mapofscience;
|
package edu.cornell.mannlib.vitro.webapp.visualization.mapofscience;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.text.DecimalFormat;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -13,7 +14,9 @@ import mapping.ScienceMappingResult;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringEscapeUtils;
|
import org.apache.commons.lang.StringEscapeUtils;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.apache.commons.lang.math.NumberUtils;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.jgrapht.util.MathUtil;
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.hp.hpl.jena.query.Dataset;
|
import com.hp.hpl.jena.query.Dataset;
|
||||||
|
@ -23,6 +26,7 @@ import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.Res
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues;
|
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.visualization.DataVisualizationController;
|
import edu.cornell.mannlib.vitro.webapp.controller.visualization.DataVisualizationController;
|
||||||
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.MapOfScienceConstants;
|
||||||
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.constants.VisConstants;
|
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VisConstants;
|
||||||
import edu.cornell.mannlib.vitro.webapp.visualization.entitycomparison.OrganizationUtilityFunctions;
|
import edu.cornell.mannlib.vitro.webapp.visualization.entitycomparison.OrganizationUtilityFunctions;
|
||||||
|
@ -88,7 +92,7 @@ public class MapOfScienceVisualizationRequestHandler implements
|
||||||
|
|
||||||
private Map<String, String> getSubjectEntityAndGenerateDataResponse(
|
private Map<String, String> getSubjectEntityAndGenerateDataResponse(
|
||||||
VitroRequest vitroRequest, Log log, Dataset dataset,
|
VitroRequest vitroRequest, Log log, Dataset dataset,
|
||||||
String subjectEntityURI, VisConstants.DataVisMode visMode)
|
String subjectEntityURI, VisConstants.DataVisMode dataOuputFormat)
|
||||||
throws MalformedQueryParametersException {
|
throws MalformedQueryParametersException {
|
||||||
|
|
||||||
Entity organizationEntity = SelectOnModelUtilities
|
Entity organizationEntity = SelectOnModelUtilities
|
||||||
|
@ -96,7 +100,7 @@ public class MapOfScienceVisualizationRequestHandler implements
|
||||||
|
|
||||||
if (organizationEntity.getSubEntities() == null) {
|
if (organizationEntity.getSubEntities() == null) {
|
||||||
|
|
||||||
if (VisConstants.DataVisMode.JSON.equals(visMode)) {
|
if (VisConstants.DataVisMode.JSON.equals(dataOuputFormat)) {
|
||||||
return prepareStandaloneDataErrorResponse();
|
return prepareStandaloneDataErrorResponse();
|
||||||
} else {
|
} else {
|
||||||
return prepareDataErrorResponse();
|
return prepareDataErrorResponse();
|
||||||
|
@ -123,7 +127,7 @@ public class MapOfScienceVisualizationRequestHandler implements
|
||||||
|
|
||||||
if (allDocumentURIToVOs.isEmpty() && documentURIForAssociatedPeopleTOVO.isEmpty()) {
|
if (allDocumentURIToVOs.isEmpty() && documentURIForAssociatedPeopleTOVO.isEmpty()) {
|
||||||
|
|
||||||
if (VisConstants.DataVisMode.JSON.equals(visMode)) {
|
if (VisConstants.DataVisMode.JSON.equals(dataOuputFormat)) {
|
||||||
return prepareStandaloneDataErrorResponse();
|
return prepareStandaloneDataErrorResponse();
|
||||||
} else {
|
} else {
|
||||||
return prepareDataErrorResponse();
|
return prepareDataErrorResponse();
|
||||||
|
@ -131,7 +135,7 @@ public class MapOfScienceVisualizationRequestHandler implements
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (VisConstants.DataVisMode.JSON.equals(visMode)) {
|
if (VisConstants.DataVisMode.JSON.equals(dataOuputFormat)) {
|
||||||
return prepareStandaloneDataResponse(vitroRequest, organizationEntity);
|
return prepareStandaloneDataResponse(vitroRequest, organizationEntity);
|
||||||
} else {
|
} else {
|
||||||
return prepareDataResponse(vitroRequest, organizationEntity);
|
return prepareDataResponse(vitroRequest, organizationEntity);
|
||||||
|
@ -160,7 +164,7 @@ public class MapOfScienceVisualizationRequestHandler implements
|
||||||
}
|
}
|
||||||
|
|
||||||
String outputFileName = UtilityFunctions.slugify(entityLabel)
|
String outputFileName = UtilityFunctions.slugify(entityLabel)
|
||||||
+ "_publications-per-year" + ".csv";
|
+ "_discipline-to-publications" + ".csv";
|
||||||
|
|
||||||
|
|
||||||
Map<String, String> fileData = new HashMap<String, String>();
|
Map<String, String> fileData = new HashMap<String, String>();
|
||||||
|
@ -170,7 +174,7 @@ public class MapOfScienceVisualizationRequestHandler implements
|
||||||
fileData.put(DataVisualizationController.FILE_CONTENT_TYPE_KEY,
|
fileData.put(DataVisualizationController.FILE_CONTENT_TYPE_KEY,
|
||||||
"application/octet-stream");
|
"application/octet-stream");
|
||||||
fileData.put(DataVisualizationController.FILE_CONTENT_KEY,
|
fileData.put(DataVisualizationController.FILE_CONTENT_KEY,
|
||||||
getEntityPublicationsPerYearCSVContent(entity));
|
getDisciplineToPublicationsCSVContent(entity));
|
||||||
return fileData;
|
return fileData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -368,26 +372,14 @@ public class MapOfScienceVisualizationRequestHandler implements
|
||||||
|
|
||||||
int mappedPublicationCount = 0;
|
int mappedPublicationCount = 0;
|
||||||
int publicationsWithInvalidJournalCount = 0;
|
int publicationsWithInvalidJournalCount = 0;
|
||||||
|
|
||||||
ScienceMappingResult result = null;
|
|
||||||
Map<Integer, Float> subdisciplineToActivity = new HashMap<Integer, Float>();
|
Map<Integer, Float> subdisciplineToActivity = new HashMap<Integer, Float>();
|
||||||
|
|
||||||
try {
|
ScienceMappingResult result = getScienceMappingResult(journalToPublicationCount);
|
||||||
result = (new ScienceMapping()).generateScienceMappingResult(journalToPublicationCount);
|
|
||||||
} catch (NumberFormatException e) {
|
|
||||||
System.err.println("NumberFormatException coming from Map Of Science Vis");
|
|
||||||
e.printStackTrace();
|
|
||||||
} catch (IOException e) {
|
|
||||||
System.err.println("IOException coming from Map Of Science Vis");
|
|
||||||
e.printStackTrace();
|
|
||||||
} finally {
|
|
||||||
|
|
||||||
if (result != null) {
|
|
||||||
subdisciplineToActivity = result.getMappedResult();
|
|
||||||
publicationsWithInvalidJournalCount = Math.round(result.getUnMappedPublications());
|
|
||||||
mappedPublicationCount = Math.round(result.getMappedPublications());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (result != null) {
|
||||||
|
subdisciplineToActivity = result.getMappedResult();
|
||||||
|
publicationsWithInvalidJournalCount = Math.round(result.getUnMappedPublications());
|
||||||
|
mappedPublicationCount = Math.round(result.getMappedPublications());
|
||||||
}
|
}
|
||||||
|
|
||||||
// System.out.println("subdisciplineToActivity " + subdisciplineToActivity);
|
// System.out.println("subdisciplineToActivity " + subdisciplineToActivity);
|
||||||
|
@ -398,24 +390,81 @@ public class MapOfScienceVisualizationRequestHandler implements
|
||||||
entityJson.setSubdisciplineActivity(subdisciplineToActivity);
|
entityJson.setSubdisciplineActivity(subdisciplineToActivity);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getEntityPublicationsPerYearCSVContent(Entity entity) {
|
private ScienceMappingResult getScienceMappingResult(
|
||||||
|
Map<String, Integer> journalToPublicationCount) {
|
||||||
|
ScienceMappingResult result = null;
|
||||||
|
try {
|
||||||
|
result = (new ScienceMapping()).generateScienceMappingResult(journalToPublicationCount);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
System.err.println("NumberFormatException coming from Map Of Science Vis");
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.err.println("IOException coming from Map Of Science Vis");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getDisciplineToPublicationsCSVContent(Entity subjectEntity) {
|
||||||
|
|
||||||
StringBuilder csvFileContent = new StringBuilder();
|
StringBuilder csvFileContent = new StringBuilder();
|
||||||
|
|
||||||
csvFileContent.append("Entity Name, Publication Count, Entity Type\n");
|
csvFileContent.append("Discipline, Publication Count, % Activity\n");
|
||||||
|
|
||||||
for (SubEntity subEntity : entity.getSubEntities()) {
|
Set<Activity> publicationsForEntity = new HashSet<Activity>();
|
||||||
|
|
||||||
csvFileContent.append(StringEscapeUtils.escapeCsv(subEntity.getIndividualLabel()));
|
for (SubEntity subEntity : subjectEntity.getSubEntities()) {
|
||||||
|
|
||||||
|
publicationsForEntity.addAll(subEntity.getActivities());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
PublicationJournalStats publicationStats = getPublicationJournalStats(publicationsForEntity);
|
||||||
|
|
||||||
|
ScienceMappingResult result = getScienceMappingResult(publicationStats.journalToPublicationCount);
|
||||||
|
|
||||||
|
Map<Integer, Float> disciplineToPublicationCount = new HashMap<Integer, Float>();
|
||||||
|
|
||||||
|
Float totalMappedPublications = new Float(0);
|
||||||
|
|
||||||
|
if (result != null) {
|
||||||
|
|
||||||
|
for (Map.Entry<Integer, Float> currentMappedSubdiscipline : result.getMappedResult().entrySet()) {
|
||||||
|
|
||||||
|
float updatedPublicationCount = currentMappedSubdiscipline.getValue();
|
||||||
|
|
||||||
|
Integer lookedUpDisciplineID = MapOfScienceConstants.SUB_DISCIPLINE_ID_TO_DISCIPLINE_ID
|
||||||
|
.get(currentMappedSubdiscipline.getKey());
|
||||||
|
|
||||||
|
if (disciplineToPublicationCount.containsKey(lookedUpDisciplineID)) {
|
||||||
|
|
||||||
|
updatedPublicationCount += disciplineToPublicationCount.get(lookedUpDisciplineID);
|
||||||
|
}
|
||||||
|
|
||||||
|
disciplineToPublicationCount.put(lookedUpDisciplineID, updatedPublicationCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
totalMappedPublications = result.getMappedPublications();
|
||||||
|
}
|
||||||
|
|
||||||
|
DecimalFormat percentageActivityFormat = new DecimalFormat("#.###");
|
||||||
|
|
||||||
|
for (Map.Entry<Integer, Float> currentMappedDiscipline : disciplineToPublicationCount.entrySet()) {
|
||||||
|
|
||||||
|
csvFileContent.append(StringEscapeUtils.escapeCsv(MapOfScienceConstants.DISCIPLINE_ID_TO_LABEL.get(currentMappedDiscipline.getKey())));
|
||||||
csvFileContent.append(", ");
|
csvFileContent.append(", ");
|
||||||
csvFileContent.append(subEntity.getActivities().size());
|
csvFileContent.append(percentageActivityFormat.format(currentMappedDiscipline.getValue()));
|
||||||
csvFileContent.append(", ");
|
csvFileContent.append(", ");
|
||||||
|
|
||||||
String allTypes = StringUtils.join(subEntity.getEntityTypeLabels(), "; ");
|
if (totalMappedPublications > 0) {
|
||||||
|
csvFileContent.append(percentageActivityFormat.format(100 * currentMappedDiscipline.getValue() / totalMappedPublications));
|
||||||
|
} else {
|
||||||
|
csvFileContent.append("Not Available");
|
||||||
|
}
|
||||||
|
|
||||||
csvFileContent.append(StringEscapeUtils.escapeCsv(allTypes));
|
|
||||||
csvFileContent.append("\n");
|
csvFileContent.append("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
return csvFileContent.toString();
|
return csvFileContent.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue