1. Refactored code to make it more amenable to dependency injection. Removed unnecessary state preservation from all the VisRequestHandlers.

This commit is contained in:
cdtank 2010-07-29 21:13:58 +00:00
parent 107eabbe14
commit e22b5d7d23
8 changed files with 153 additions and 184 deletions

View file

@ -102,12 +102,17 @@ public class VisualizationController extends BaseEditController {
public static final String UTILITIES_URL_VALUE public static final String UTILITIES_URL_VALUE
= "utilities"; = "utilities";
public VisualizationController() { @Override
super(); public void init() throws ServletException {
super.init();
try { try {
String resourcePath =
getServletContext()
.getRealPath("/WEB-INF/visualization/visualizations-beans-injection.xml");
ApplicationContext context = new ClassPathXmlApplicationContext( ApplicationContext context = new ClassPathXmlApplicationContext(
"WEB-INF/visualization/visualizations-beans-injection.xml"); resourcePath);
BeanFactory factory = context; BeanFactory factory = context;
@ -118,9 +123,9 @@ public class VisualizationController extends BaseEditController {
} catch (Exception e) { } catch (Exception e) {
System.out.println(e.getMessage()); e.printStackTrace();
System.out.println(e);
} }
} }
@ -144,30 +149,25 @@ public class VisualizationController extends BaseEditController {
if (PERSON_PUBLICATION_COUNT_VIS_URL_VALUE.equalsIgnoreCase(visTypeURLHandle)) { if (PERSON_PUBLICATION_COUNT_VIS_URL_VALUE.equalsIgnoreCase(visTypeURLHandle)) {
visRequestHandler = visRequestHandler = new PersonPublicationCountRequestHandler();
new PersonPublicationCountRequestHandler(vreq, request, response, log);
} else if (COLLEGE_PUBLICATION_COUNT_VIS_URL_VALUE.equalsIgnoreCase(visTypeURLHandle)) { } else if (COLLEGE_PUBLICATION_COUNT_VIS_URL_VALUE.equalsIgnoreCase(visTypeURLHandle)) {
visRequestHandler = visRequestHandler = new CollegePublicationCountRequestHandler();
new CollegePublicationCountRequestHandler(vreq, request, response, log);
} else if (COAUTHORSHIP_VIS_URL_VALUE.equalsIgnoreCase(visTypeURLHandle)) { } else if (COAUTHORSHIP_VIS_URL_VALUE.equalsIgnoreCase(visTypeURLHandle)) {
visRequestHandler = visRequestHandler = new CoAuthorshipRequestHandler();
new CoAuthorshipRequestHandler(vreq, request, response, log);
} else if (PERSON_LEVEL_VIS_URL_VALUE.equalsIgnoreCase(visTypeURLHandle)) { } else if (PERSON_LEVEL_VIS_URL_VALUE.equalsIgnoreCase(visTypeURLHandle)) {
visRequestHandler = visRequestHandler = new PersonLevelRequestHandler();
new PersonLevelRequestHandler(vreq, request, response, log);
} else if (UTILITIES_URL_VALUE } else if (UTILITIES_URL_VALUE
.equalsIgnoreCase(visTypeURLHandle)) { .equalsIgnoreCase(visTypeURLHandle)) {
visRequestHandler = visRequestHandler = new UtilitiesRequestHandler();
new UtilitiesRequestHandler(vreq, request, response, log);
} else { } else {
@ -198,7 +198,7 @@ public class VisualizationController extends BaseEditController {
* This is side-effecting because the visualization content is added * This is side-effecting because the visualization content is added
* to the request object. * to the request object.
* */ * */
visRequestHandler.generateVisualization(dataSource); visRequestHandler.generateVisualization(vreq, request, response, log, dataSource);
System.out.println(" VIS ID TO CLASS " + visualizationIDsToClass); System.out.println(" VIS ID TO CLASS " + visualizationIDsToClass);

View file

@ -31,19 +31,14 @@ import edu.cornell.mannlib.vitro.webapp.visualization.visutils.QueryHandler;
import edu.cornell.mannlib.vitro.webapp.visualization.visutils.UtilityFunctions; import edu.cornell.mannlib.vitro.webapp.visualization.visutils.UtilityFunctions;
import edu.cornell.mannlib.vitro.webapp.visualization.visutils.VisualizationRequestHandler; import edu.cornell.mannlib.vitro.webapp.visualization.visutils.VisualizationRequestHandler;
public class CoAuthorshipRequestHandler extends VisualizationRequestHandler { public class CoAuthorshipRequestHandler implements VisualizationRequestHandler {
public void generateVisualization(VitroRequest vitroRequest,
HttpServletRequest request,
HttpServletResponse response,
Log log,
DataSource dataSource) {
public CoAuthorshipRequestHandler(VitroRequest vitroRequest,
HttpServletRequest request, HttpServletResponse response, Log log) {
super(vitroRequest, request, response, log);
}
public void generateVisualization(DataSource dataSource) {
VitroRequest vitroRequest = super.getVitroRequest();
String egoURIParam = vitroRequest.getParameter( String egoURIParam = vitroRequest.getParameter(
VisualizationFrameworkConstants VisualizationFrameworkConstants
.INDIVIDUAL_URI_URL_HANDLE); .INDIVIDUAL_URI_URL_HANDLE);
@ -56,7 +51,6 @@ public class CoAuthorshipRequestHandler extends VisualizationRequestHandler {
VisualizationFrameworkConstants VisualizationFrameworkConstants
.VIS_MODE_URL_HANDLE); .VIS_MODE_URL_HANDLE);
Log log = super.getLog();
QueryHandler<CoAuthorshipVOContainer> queryManager = QueryHandler<CoAuthorshipVOContainer> queryManager =
new CoAuthorshipQueryHandler(egoURIParam, new CoAuthorshipQueryHandler(egoURIParam,
dataSource, dataSource,
@ -89,7 +83,8 @@ public class CoAuthorshipRequestHandler extends VisualizationRequestHandler {
* When the csv file is required - based on which sparkline visualization will * When the csv file is required - based on which sparkline visualization will
* be rendered. * be rendered.
* */ * */
prepareVisualizationQuerySparklineDataResponse(authorNodesAndEdges); prepareVisualizationQuerySparklineDataResponse(authorNodesAndEdges,
response);
return; return;
} else { } else {
@ -97,14 +92,14 @@ public class CoAuthorshipRequestHandler extends VisualizationRequestHandler {
* When the graphML file is required - based on which coauthorship network * When the graphML file is required - based on which coauthorship network
* visualization will be rendered. * visualization will be rendered.
* */ * */
prepareVisualizationQueryNetworkDataResponse(authorNodesAndEdges); prepareVisualizationQueryNetworkDataResponse(authorNodesAndEdges, response);
return; return;
} }
} }
} catch (MalformedQueryParametersException e) { } catch (MalformedQueryParametersException e) {
try { try {
handleMalformedParameters(e.getMessage()); handleMalformedParameters(e.getMessage(), vitroRequest, request, response, log);
} catch (ServletException e1) { } catch (ServletException e1) {
log.error(e1.getStackTrace()); log.error(e1.getStackTrace());
} catch (IOException e1) { } catch (IOException e1) {
@ -116,13 +111,13 @@ public class CoAuthorshipRequestHandler extends VisualizationRequestHandler {
} }
private void prepareVisualizationQueryNetworkDataResponse( private void prepareVisualizationQueryNetworkDataResponse(
CoAuthorshipVOContainer authorNodesAndEdges) { CoAuthorshipVOContainer authorNodesAndEdges, HttpServletResponse response) {
super.getResponse().setContentType("text/xml"); response.setContentType("text/xml");
try { try {
PrintWriter responseWriter = super.getResponse().getWriter(); PrintWriter responseWriter = response.getWriter();
/* /*
* We are side-effecting responseWriter since we are directly manipulating the response * We are side-effecting responseWriter since we are directly manipulating the response
@ -141,7 +136,7 @@ public class CoAuthorshipRequestHandler extends VisualizationRequestHandler {
} }
private void prepareVisualizationQuerySparklineDataResponse( private void prepareVisualizationQuerySparklineDataResponse(
CoAuthorshipVOContainer authorNodesAndEdges) { CoAuthorshipVOContainer authorNodesAndEdges, HttpServletResponse response) {
String outputFileName; String outputFileName;
Map<String, Set<Node>> yearToCoauthors = new TreeMap<String, Set<Node>>(); Map<String, Set<Node>> yearToCoauthors = new TreeMap<String, Set<Node>>();
@ -159,7 +154,6 @@ public class CoAuthorshipRequestHandler extends VisualizationRequestHandler {
outputFileName = "no_coauthors-per-year" + ".csv"; outputFileName = "no_coauthors-per-year" + ".csv";
} }
HttpServletResponse response = super.getResponse();
response.setContentType("application/octet-stream"); response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", response.setHeader("Content-Disposition",
"attachment;filename=" + outputFileName); "attachment;filename=" + outputFileName);
@ -247,12 +241,15 @@ public class CoAuthorshipRequestHandler extends VisualizationRequestHandler {
return yearToCoAuthors; return yearToCoAuthors;
} }
private void handleMalformedParameters(String errorMessage) private void handleMalformedParameters(String errorMessage,
VitroRequest vitroRequest,
HttpServletRequest request,
HttpServletResponse response,
Log log)
throws ServletException, IOException { throws ServletException, IOException {
Portal portal = super.getVitroRequest().getPortal(); Portal portal = vitroRequest.getPortal();
HttpServletRequest request = super.getRequest();
request.setAttribute("error", errorMessage); request.setAttribute("error", errorMessage);
RequestDispatcher requestDispatcher = RequestDispatcher requestDispatcher =
@ -264,9 +261,8 @@ public class CoAuthorshipRequestHandler extends VisualizationRequestHandler {
"Visualization Query Error - Individual Publication Count"); "Visualization Query Error - Individual Publication Count");
try { try {
requestDispatcher.forward(request, super.getResponse()); requestDispatcher.forward(request, response);
} catch (Exception e) { } catch (Exception e) {
Log log = super.getLog();
log.error("EntityEditController could not forward to view."); log.error("EntityEditController could not forward to view.");
log.error(e.getMessage()); log.error(e.getMessage());
log.error(e.getStackTrace()); log.error(e.getStackTrace());

View file

@ -46,18 +46,13 @@ import edu.cornell.mannlib.vitro.webapp.visualization.visutils.QueryHandler;
import edu.cornell.mannlib.vitro.webapp.visualization.visutils.UtilityFunctions; import edu.cornell.mannlib.vitro.webapp.visualization.visutils.UtilityFunctions;
import edu.cornell.mannlib.vitro.webapp.visualization.visutils.VisualizationRequestHandler; import edu.cornell.mannlib.vitro.webapp.visualization.visutils.VisualizationRequestHandler;
public class CollegePublicationCountRequestHandler extends VisualizationRequestHandler { public class CollegePublicationCountRequestHandler implements VisualizationRequestHandler {
public CollegePublicationCountRequestHandler(VitroRequest vitroRequest, public void generateVisualization(VitroRequest vitroRequest,
HttpServletRequest request, HttpServletResponse response, Log log) { HttpServletRequest request,
HttpServletResponse response,
super(vitroRequest, request, response, log); Log log,
DataSource dataSource) {
}
public void generateVisualization(DataSource dataSource) {
ServletRequest vitroRequest = super.getVitroRequest();
String collegeURIParam = vitroRequest.getParameter( String collegeURIParam = vitroRequest.getParameter(
VisualizationFrameworkConstants.INDIVIDUAL_URI_URL_HANDLE); VisualizationFrameworkConstants.INDIVIDUAL_URI_URL_HANDLE);
@ -71,7 +66,6 @@ public class CollegePublicationCountRequestHandler extends VisualizationRequestH
String visContainer = vitroRequest.getParameter( String visContainer = vitroRequest.getParameter(
VisualizationFrameworkConstants.VIS_CONTAINER_URL_HANDLE); VisualizationFrameworkConstants.VIS_CONTAINER_URL_HANDLE);
Log log = super.getLog();
QueryHandler<Set<VivoEmployee>> queryManager = QueryHandler<Set<VivoEmployee>> queryManager =
new CollegePublicationCountQueryHandler(collegeURIParam, new CollegePublicationCountQueryHandler(collegeURIParam,
dataSource, dataSource,
@ -120,7 +114,8 @@ public class CollegePublicationCountRequestHandler extends VisualizationRequestH
if (VisualizationFrameworkConstants.DATA_RENDER_MODE_URL_VALUE.equalsIgnoreCase(renderMode)) { if (VisualizationFrameworkConstants.DATA_RENDER_MODE_URL_VALUE.equalsIgnoreCase(renderMode)) {
prepareVisualizationQueryDataResponse( prepareVisualizationQueryDataResponse(
departmentToPublicationsOverTime, departmentToPublicationsOverTime,
((CollegePublicationCountQueryHandler) queryManager).getCollegeURLToVO()); ((CollegePublicationCountQueryHandler) queryManager).getCollegeURLToVO(),
response);
log.debug(publishedYearsForCollege); log.debug(publishedYearsForCollege);
return; return;
@ -148,7 +143,7 @@ public class CollegePublicationCountRequestHandler extends VisualizationRequestH
} catch (MalformedQueryParametersException e) { } catch (MalformedQueryParametersException e) {
try { try {
handleMalformedParameters(e.getMessage()); handleMalformedParameters(e.getMessage(), vitroRequest, request, response, log);
} catch (ServletException e1) { } catch (ServletException e1) {
log.error(e1.getStackTrace()); log.error(e1.getStackTrace());
} catch (IOException e1) { } catch (IOException e1) {
@ -211,7 +206,8 @@ public class CollegePublicationCountRequestHandler extends VisualizationRequestH
private void prepareVisualizationQueryPDFResponse(Individual college, private void prepareVisualizationQueryPDFResponse(Individual college,
List<BiboDocument> authorDocuments, List<BiboDocument> authorDocuments,
Map<String, Integer> yearToPublicationCount) { Map<String, Integer> yearToPublicationCount,
HttpServletResponse response) {
String authorName = null; String authorName = null;
@ -233,7 +229,6 @@ public class CollegePublicationCountRequestHandler extends VisualizationRequestH
String outputFileName = UtilityFunctions.slugify(authorName + "-report") String outputFileName = UtilityFunctions.slugify(authorName + "-report")
+ ".pdf"; + ".pdf";
HttpServletResponse response = super.getResponse();
response.setContentType("application/pdf"); response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment;filename=" + outputFileName); response.setHeader("Content-Disposition", "attachment;filename=" + outputFileName);
@ -271,7 +266,7 @@ public class CollegePublicationCountRequestHandler extends VisualizationRequestH
private void prepareVisualizationQueryDataResponse( private void prepareVisualizationQueryDataResponse(
Map<VivoDepartmentOrDivision, Map<String, Integer>> departmentToPublicationsOverTime, Map<VivoDepartmentOrDivision, Map<String, Integer>> departmentToPublicationsOverTime,
Map<String, VivoCollegeOrSchool> collegeURLToVO) { Map<String, VivoCollegeOrSchool> collegeURLToVO, HttpServletResponse response) {
String collegeName = null; String collegeName = null;
@ -296,7 +291,6 @@ public class CollegePublicationCountRequestHandler extends VisualizationRequestH
String outputFileName = UtilityFunctions.slugify(collegeName) + "depts-pub-count" + ".csv"; String outputFileName = UtilityFunctions.slugify(collegeName) + "depts-pub-count" + ".csv";
HttpServletResponse response = super.getResponse();
response.setContentType("application/octet-stream"); response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + outputFileName); response.setHeader("Content-Disposition", "attachment;filename=" + outputFileName);
@ -394,12 +388,15 @@ public class CollegePublicationCountRequestHandler extends VisualizationRequestH
} }
private void handleMalformedParameters(String errorMessage) private void handleMalformedParameters(String errorMessage,
VitroRequest vitroRequest,
HttpServletRequest request,
HttpServletResponse response,
Log log)
throws ServletException, IOException { throws ServletException, IOException {
Portal portal = super.getVitroRequest().getPortal(); Portal portal = vitroRequest.getPortal();
HttpServletRequest request = super.getRequest();
request.setAttribute("error", errorMessage); request.setAttribute("error", errorMessage);
RequestDispatcher requestDispatcher = request.getRequestDispatcher(Controllers.BASIC_JSP); RequestDispatcher requestDispatcher = request.getRequestDispatcher(Controllers.BASIC_JSP);
@ -408,9 +405,8 @@ public class CollegePublicationCountRequestHandler extends VisualizationRequestH
request.setAttribute("title", "Visualization Query Error - Individual Publication Count"); request.setAttribute("title", "Visualization Query Error - Individual Publication Count");
try { try {
requestDispatcher.forward(request, super.getResponse()); requestDispatcher.forward(request, response);
} catch (Exception e) { } catch (Exception e) {
Log log = super.getLog();
log.error("EntityEditController could not forward to view."); log.error("EntityEditController could not forward to view.");
log.error(e.getMessage()); log.error(e.getMessage());
log.error(e.getStackTrace()); log.error(e.getStackTrace());

View file

@ -38,22 +38,18 @@ import edu.cornell.mannlib.vitro.webapp.visualization.visutils.QueryHandler;
import edu.cornell.mannlib.vitro.webapp.visualization.visutils.UtilityFunctions; import edu.cornell.mannlib.vitro.webapp.visualization.visutils.UtilityFunctions;
import edu.cornell.mannlib.vitro.webapp.visualization.visutils.VisualizationRequestHandler; import edu.cornell.mannlib.vitro.webapp.visualization.visutils.VisualizationRequestHandler;
public class PersonLevelRequestHandler extends VisualizationRequestHandler { public class PersonLevelRequestHandler implements VisualizationRequestHandler {
private static final String EGO_PUB_SPARKLINE_VIS_CONTAINER_ID = "ego_pub_sparkline"; private static final String EGO_PUB_SPARKLINE_VIS_CONTAINER_ID = "ego_pub_sparkline";
private static final String UNIQUE_COAUTHORS_SPARKLINE_VIS_CONTAINER_ID = private static final String UNIQUE_COAUTHORS_SPARKLINE_VIS_CONTAINER_ID =
"unique_coauthors_sparkline"; "unique_coauthors_sparkline";
public PersonLevelRequestHandler(VitroRequest vitroRequest, public void generateVisualization(VitroRequest vitroRequest,
HttpServletRequest request, HttpServletResponse response, Log log) { HttpServletRequest request,
HttpServletResponse response,
Log log,
DataSource dataSource) {
super(vitroRequest, request, response, log);
}
public void generateVisualization(DataSource dataSource) {
VitroRequest vitroRequest = super.getVitroRequest();
String egoURIParam = vitroRequest.getParameter( String egoURIParam = vitroRequest.getParameter(
VisualizationFrameworkConstants.INDIVIDUAL_URI_URL_HANDLE); VisualizationFrameworkConstants.INDIVIDUAL_URI_URL_HANDLE);
@ -63,7 +59,6 @@ public class PersonLevelRequestHandler extends VisualizationRequestHandler {
String visMode = vitroRequest.getParameter( String visMode = vitroRequest.getParameter(
VisualizationFrameworkConstants.VIS_MODE_URL_HANDLE); VisualizationFrameworkConstants.VIS_MODE_URL_HANDLE);
Log log = super.getLog();
QueryHandler<CoAuthorshipVOContainer> QueryHandler<CoAuthorshipVOContainer>
coAuthorshipQueryManager = coAuthorshipQueryManager =
new CoAuthorshipQueryHandler(egoURIParam, new CoAuthorshipQueryHandler(egoURIParam,
@ -103,7 +98,8 @@ public class PersonLevelRequestHandler extends VisualizationRequestHandler {
* When the csv file is required - containing the unique co-authors vs how * When the csv file is required - containing the unique co-authors vs how
* many times they have co-authored with the ego. * many times they have co-authored with the ego.
* */ * */
prepareVisualizationQueryListCoauthorsDataResponse(coAuthorshipVO); prepareVisualizationQueryListCoauthorsDataResponse(coAuthorshipVO,
response);
return; return;
} else { } else {
@ -111,7 +107,7 @@ public class PersonLevelRequestHandler extends VisualizationRequestHandler {
* When the graphML file is required - based on which co-authorship * When the graphML file is required - based on which co-authorship
* network visualization will be rendered. * network visualization will be rendered.
* */ * */
prepareVisualizationQueryNetworkDataResponse(coAuthorshipVO); prepareVisualizationQueryNetworkDataResponse(coAuthorshipVO, response);
return; return;
} }
@ -159,20 +155,20 @@ public class PersonLevelRequestHandler extends VisualizationRequestHandler {
RequestDispatcher requestDispatcher = null; RequestDispatcher requestDispatcher = null;
HttpServletRequest request = super.getRequest();
prepareVisualizationQueryStandaloneResponse( prepareVisualizationQueryStandaloneResponse(
egoURIParam, egoURIParam,
publicationSparklineVO, publicationSparklineVO,
uniqueCoauthorsSparklineVO, uniqueCoauthorsSparklineVO,
coAuthorshipVO, coAuthorshipVO,
EGO_PUB_SPARKLINE_VIS_CONTAINER_ID, EGO_PUB_SPARKLINE_VIS_CONTAINER_ID,
UNIQUE_COAUTHORS_SPARKLINE_VIS_CONTAINER_ID); UNIQUE_COAUTHORS_SPARKLINE_VIS_CONTAINER_ID,
vitroRequest,
request);
requestDispatcher = request.getRequestDispatcher(Controllers.BASIC_JSP); requestDispatcher = request.getRequestDispatcher(Controllers.BASIC_JSP);
try { try {
requestDispatcher.forward(request, super.getResponse()); requestDispatcher.forward(request, response);
} catch (Exception e) { } catch (Exception e) {
log.error("EntityEditController could not forward to view."); log.error("EntityEditController could not forward to view.");
log.error(e.getMessage()); log.error(e.getMessage());
@ -181,7 +177,11 @@ public class PersonLevelRequestHandler extends VisualizationRequestHandler {
} catch (MalformedQueryParametersException e) { } catch (MalformedQueryParametersException e) {
try { try {
handleMalformedParameters(e.getMessage()); handleMalformedParameters(e.getMessage(),
vitroRequest,
request,
response,
log);
} catch (ServletException e1) { } catch (ServletException e1) {
log.error(e1.getStackTrace()); log.error(e1.getStackTrace());
} catch (IOException e1) { } catch (IOException e1) {
@ -229,7 +229,7 @@ public class PersonLevelRequestHandler extends VisualizationRequestHandler {
} }
private void prepareVisualizationQueryNetworkDataResponse( private void prepareVisualizationQueryNetworkDataResponse(
CoAuthorshipVOContainer coAuthorsipVO) { CoAuthorshipVOContainer coAuthorsipVO, HttpServletResponse response) {
String outputFileName = ""; String outputFileName = "";
@ -244,7 +244,6 @@ public class PersonLevelRequestHandler extends VisualizationRequestHandler {
} }
HttpServletResponse response = super.getResponse();
response.setContentType("application/octet-stream"); response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + outputFileName); response.setHeader("Content-Disposition", "attachment;filename=" + outputFileName);
@ -269,7 +268,7 @@ public class PersonLevelRequestHandler extends VisualizationRequestHandler {
} }
private void prepareVisualizationQueryListCoauthorsDataResponse( private void prepareVisualizationQueryListCoauthorsDataResponse(
CoAuthorshipVOContainer coAuthorshipVO) { CoAuthorshipVOContainer coAuthorshipVO, HttpServletResponse response) {
String outputFileName = ""; String outputFileName = "";
Map<String, Integer> coAuthorsToCount = new TreeMap<String, Integer>(); Map<String, Integer> coAuthorsToCount = new TreeMap<String, Integer>();
@ -287,7 +286,6 @@ public class PersonLevelRequestHandler extends VisualizationRequestHandler {
} }
HttpServletResponse response = super.getResponse();
response.setContentType("application/octet-stream"); response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + outputFileName); response.setHeader("Content-Disposition", "attachment;filename=" + outputFileName);
@ -349,11 +347,12 @@ public class PersonLevelRequestHandler extends VisualizationRequestHandler {
SparklineVOContainer uniqueCoauthorsSparklineVO, SparklineVOContainer uniqueCoauthorsSparklineVO,
CoAuthorshipVOContainer coAuthorshipVO, CoAuthorshipVOContainer coAuthorshipVO,
String egoPubSparklineVisContainer, String egoPubSparklineVisContainer,
String uniqueCoauthorsSparklineVisContainer) { String uniqueCoauthorsSparklineVisContainer,
VitroRequest vitroRequest,
HttpServletRequest request) {
Portal portal = super.getVitroRequest().getPortal(); Portal portal = vitroRequest.getPortal();
HttpServletRequest request = super.getRequest();
request.setAttribute("egoURIParam", egoURIParam); request.setAttribute("egoURIParam", egoURIParam);
String title = ""; String title = "";
@ -381,12 +380,15 @@ public class PersonLevelRequestHandler extends VisualizationRequestHandler {
request.setAttribute("bodyJsp", "/templates/visualization/person_level.jsp"); request.setAttribute("bodyJsp", "/templates/visualization/person_level.jsp");
} }
private void handleMalformedParameters(String errorMessage) private void handleMalformedParameters(String errorMessage,
VitroRequest vitroRequest,
HttpServletRequest request,
HttpServletResponse response,
Log log)
throws ServletException, IOException { throws ServletException, IOException {
Portal portal = super.getVitroRequest().getPortal(); Portal portal = vitroRequest.getPortal();
HttpServletRequest request = super.getRequest();
request.setAttribute("error", errorMessage); request.setAttribute("error", errorMessage);
RequestDispatcher requestDispatcher = request.getRequestDispatcher(Controllers.BASIC_JSP); RequestDispatcher requestDispatcher = request.getRequestDispatcher(Controllers.BASIC_JSP);
@ -395,9 +397,8 @@ public class PersonLevelRequestHandler extends VisualizationRequestHandler {
request.setAttribute("title", "Visualization Query Error - Individual Publication Count"); request.setAttribute("title", "Visualization Query Error - Individual Publication Count");
try { try {
requestDispatcher.forward(request, super.getResponse()); requestDispatcher.forward(request, response);
} catch (Exception e) { } catch (Exception e) {
Log log = super.getLog();
log.error("EntityEditController could not forward to view."); log.error("EntityEditController could not forward to view.");
log.error(e.getMessage()); log.error(e.getMessage());
log.error(e.getStackTrace()); log.error(e.getStackTrace());

View file

@ -37,18 +37,14 @@ import edu.cornell.mannlib.vitro.webapp.visualization.visutils.QueryHandler;
import edu.cornell.mannlib.vitro.webapp.visualization.visutils.UtilityFunctions; import edu.cornell.mannlib.vitro.webapp.visualization.visutils.UtilityFunctions;
import edu.cornell.mannlib.vitro.webapp.visualization.visutils.VisualizationRequestHandler; import edu.cornell.mannlib.vitro.webapp.visualization.visutils.VisualizationRequestHandler;
public class PersonPublicationCountRequestHandler extends VisualizationRequestHandler { public class PersonPublicationCountRequestHandler implements VisualizationRequestHandler {
public PersonPublicationCountRequestHandler(VitroRequest vitroRequest, public void generateVisualization(VitroRequest vitroRequest,
HttpServletRequest request, HttpServletResponse response, Log log) { HttpServletRequest request,
HttpServletResponse response,
Log log,
DataSource dataSource) {
super(vitroRequest, request, response, log);
}
public void generateVisualization(DataSource dataSource) {
VitroRequest vitroRequest = super.getVitroRequest();
String individualURIParam = vitroRequest.getParameter( String individualURIParam = vitroRequest.getParameter(
VisualizationFrameworkConstants VisualizationFrameworkConstants
.INDIVIDUAL_URI_URL_HANDLE); .INDIVIDUAL_URI_URL_HANDLE);
@ -65,7 +61,6 @@ public class PersonPublicationCountRequestHandler extends VisualizationRequestHa
VisualizationFrameworkConstants VisualizationFrameworkConstants
.VIS_CONTAINER_URL_HANDLE); .VIS_CONTAINER_URL_HANDLE);
Log log = super.getLog();
QueryHandler<List<BiboDocument>> queryManager = QueryHandler<List<BiboDocument>> queryManager =
new PersonPublicationCountQueryHandler(individualURIParam, new PersonPublicationCountQueryHandler(individualURIParam,
dataSource, dataSource,
@ -94,7 +89,8 @@ public class PersonPublicationCountRequestHandler extends VisualizationRequestHa
prepareVisualizationQueryDataResponse(author, prepareVisualizationQueryDataResponse(author,
authorDocuments, authorDocuments,
yearToPublicationCount); yearToPublicationCount,
response);
return; return;
} }
@ -104,7 +100,8 @@ public class PersonPublicationCountRequestHandler extends VisualizationRequestHa
prepareVisualizationQueryPDFResponse(author, prepareVisualizationQueryPDFResponse(author,
authorDocuments, authorDocuments,
yearToPublicationCount); yearToPublicationCount,
response);
return; return;
} }
@ -130,8 +127,6 @@ public class PersonPublicationCountRequestHandler extends VisualizationRequestHa
* a page with visualization on it. * a page with visualization on it.
* */ * */
RequestDispatcher requestDispatcher = null; RequestDispatcher requestDispatcher = null;
HttpServletRequest request = super.getRequest();
HttpServletResponse response = super.getResponse();
if (VisualizationFrameworkConstants.DYNAMIC_RENDER_MODE_URL_VALUE if (VisualizationFrameworkConstants.DYNAMIC_RENDER_MODE_URL_VALUE
.equalsIgnoreCase(renderMode)) { .equalsIgnoreCase(renderMode)) {
@ -157,7 +152,7 @@ public class PersonPublicationCountRequestHandler extends VisualizationRequestHa
} catch (MalformedQueryParametersException e) { } catch (MalformedQueryParametersException e) {
try { try {
handleMalformedParameters(e.getMessage()); handleMalformedParameters(e.getMessage(), vitroRequest, request, response, log);
} catch (ServletException e1) { } catch (ServletException e1) {
log.error(e1.getStackTrace()); log.error(e1.getStackTrace());
} catch (IOException e1) { } catch (IOException e1) {
@ -171,7 +166,8 @@ public class PersonPublicationCountRequestHandler extends VisualizationRequestHa
private void prepareVisualizationQueryPDFResponse( private void prepareVisualizationQueryPDFResponse(
Individual author, Individual author,
List<BiboDocument> authorDocuments, List<BiboDocument> authorDocuments,
Map<String, Integer> yearToPublicationCount) { Map<String, Integer> yearToPublicationCount,
HttpServletResponse response) {
String authorName = null; String authorName = null;
@ -191,7 +187,6 @@ public class PersonPublicationCountRequestHandler extends VisualizationRequestHa
} }
String outputFileName = UtilityFunctions.slugify(authorName) + "_report" + ".pdf"; String outputFileName = UtilityFunctions.slugify(authorName) + "_report" + ".pdf";
HttpServletResponse response = super.getResponse();
response.setContentType("application/pdf"); response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment;filename=" + outputFileName); response.setHeader("Content-Disposition", "attachment;filename=" + outputFileName);
@ -233,7 +228,8 @@ public class PersonPublicationCountRequestHandler extends VisualizationRequestHa
private void prepareVisualizationQueryDataResponse( private void prepareVisualizationQueryDataResponse(
Individual author, Individual author,
List<BiboDocument> authorDocuments, List<BiboDocument> authorDocuments,
Map<String, Integer> yearToPublicationCount) { Map<String, Integer> yearToPublicationCount,
HttpServletResponse response) {
String authorName = null; String authorName = null;
@ -255,7 +251,6 @@ public class PersonPublicationCountRequestHandler extends VisualizationRequestHa
String outputFileName = UtilityFunctions.slugify(authorName) String outputFileName = UtilityFunctions.slugify(authorName)
+ "_publications-per-year" + ".csv"; + "_publications-per-year" + ".csv";
HttpServletResponse response = super.getResponse();
response.setContentType("application/octet-stream"); response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + outputFileName); response.setHeader("Content-Disposition", "attachment;filename=" + outputFileName);
@ -333,11 +328,14 @@ public class PersonPublicationCountRequestHandler extends VisualizationRequestHa
} }
private void handleMalformedParameters(String errorMessage) private void handleMalformedParameters(String errorMessage,
VitroRequest vitroRequest,
HttpServletRequest request,
HttpServletResponse response,
Log log)
throws ServletException, IOException { throws ServletException, IOException {
Portal portal = super.getVitroRequest().getPortal(); Portal portal = vitroRequest.getPortal();
HttpServletRequest request = super.getRequest();
request.setAttribute("error", errorMessage); request.setAttribute("error", errorMessage);
@ -347,9 +345,8 @@ public class PersonPublicationCountRequestHandler extends VisualizationRequestHa
request.setAttribute("title", "Visualization Query Error - Individual Publication Count"); request.setAttribute("title", "Visualization Query Error - Individual Publication Count");
try { try {
requestDispatcher.forward(request, super.getResponse()); requestDispatcher.forward(request, response);
} catch (Exception e) { } catch (Exception e) {
Log log = super.getLog();
log.error("EntityEditController could not forward to view."); log.error("EntityEditController could not forward to view.");
log.error(e.getMessage()); log.error(e.getMessage());
log.error(e.getStackTrace()); log.error(e.getStackTrace());

View file

@ -36,18 +36,14 @@ import edu.cornell.mannlib.vitro.webapp.visualization.visutils.GenericQueryHandl
import edu.cornell.mannlib.vitro.webapp.visualization.visutils.QueryHandler; import edu.cornell.mannlib.vitro.webapp.visualization.visutils.QueryHandler;
import edu.cornell.mannlib.vitro.webapp.visualization.visutils.VisualizationRequestHandler; import edu.cornell.mannlib.vitro.webapp.visualization.visutils.VisualizationRequestHandler;
public class UtilitiesRequestHandler extends VisualizationRequestHandler { public class UtilitiesRequestHandler implements VisualizationRequestHandler {
public UtilitiesRequestHandler(VitroRequest vitroRequest, public void generateVisualization(VitroRequest vitroRequest,
HttpServletRequest request, HttpServletResponse response, Log log) { HttpServletRequest request,
HttpServletResponse response,
Log log,
DataSource dataSource) {
super(vitroRequest, request, response, log);
}
public void generateVisualization(DataSource dataSource) {
VitroRequest vitroRequest = super.getVitroRequest();
String individualURIParam = vitroRequest.getParameter( String individualURIParam = vitroRequest.getParameter(
VisualizationFrameworkConstants VisualizationFrameworkConstants
.INDIVIDUAL_URI_URL_HANDLE); .INDIVIDUAL_URI_URL_HANDLE);
@ -57,8 +53,6 @@ public class UtilitiesRequestHandler extends VisualizationRequestHandler {
String preparedURL = ""; String preparedURL = "";
Log log = super.getLog();
HttpServletRequest request = super.getRequest();
try { try {
/* /*
@ -89,15 +83,16 @@ public class UtilitiesRequestHandler extends VisualizationRequestHandler {
Gson profileInformation = new Gson(); Gson profileInformation = new Gson();
prepareVisualizationQueryResponse(profileInformation prepareVisualizationQueryResponse(
.toJson(profilePropertiesToValues)); profileInformation.toJson(profilePropertiesToValues),
response);
return; return;
} catch (MalformedQueryParametersException e) { } catch (MalformedQueryParametersException e) {
try { try {
handleMalformedParameters(e.getMessage()); handleMalformedParameters(e.getMessage(), vitroRequest, request, response, log);
} catch (ServletException e1) { } catch (ServletException e1) {
log.error(e1.getStackTrace()); log.error(e1.getStackTrace());
} catch (IOException e1) { } catch (IOException e1) {
@ -140,13 +135,13 @@ public class UtilitiesRequestHandler extends VisualizationRequestHandler {
imageQueryHandler.getVisualizationJavaValueObjects(), imageQueryHandler.getVisualizationJavaValueObjects(),
fieldLabelToOutputFieldLabel); fieldLabelToOutputFieldLabel);
prepareVisualizationQueryResponse(thumbnailAccessURL); prepareVisualizationQueryResponse(thumbnailAccessURL, response);
return; return;
} catch (MalformedQueryParametersException e) { } catch (MalformedQueryParametersException e) {
try { try {
handleMalformedParameters(e.getMessage()); handleMalformedParameters(e.getMessage(), vitroRequest, request, response, log);
} catch (ServletException e1) { } catch (ServletException e1) {
log.error(e1.getStackTrace()); log.error(e1.getStackTrace());
} catch (IOException e1) { } catch (IOException e1) {
@ -181,7 +176,7 @@ public class UtilitiesRequestHandler extends VisualizationRequestHandler {
.toString(); .toString();
prepareVisualizationQueryResponse(preparedURL); prepareVisualizationQueryResponse(preparedURL, response);
return; return;
} else if (VisualizationFrameworkConstants.PERSON_LEVEL_UTILS_VIS_MODE } else if (VisualizationFrameworkConstants.PERSON_LEVEL_UTILS_VIS_MODE
@ -207,7 +202,7 @@ public class UtilitiesRequestHandler extends VisualizationRequestHandler {
.STANDALONE_RENDER_MODE_URL_VALUE, .STANDALONE_RENDER_MODE_URL_VALUE,
VisualizationController.URL_ENCODING_SCHEME).toString(); VisualizationController.URL_ENCODING_SCHEME).toString();
prepareVisualizationQueryResponse(preparedURL); prepareVisualizationQueryResponse(preparedURL, response);
return; return;
} else { } else {
@ -219,7 +214,7 @@ public class UtilitiesRequestHandler extends VisualizationRequestHandler {
+ "=" + URLEncoder.encode(individualURIParam, + "=" + URLEncoder.encode(individualURIParam,
VisualizationController.URL_ENCODING_SCHEME).toString(); VisualizationController.URL_ENCODING_SCHEME).toString();
prepareVisualizationQueryResponse(preparedURL); prepareVisualizationQueryResponse(preparedURL, response);
return; return;
} }
@ -256,13 +251,14 @@ public class UtilitiesRequestHandler extends VisualizationRequestHandler {
return finalThumbNailLocation; return finalThumbNailLocation;
} }
private void prepareVisualizationQueryResponse(String preparedURL) { private void prepareVisualizationQueryResponse(String preparedURL,
HttpServletResponse response) {
super.getResponse().setContentType("text/plain"); response.setContentType("text/plain");
try { try {
PrintWriter responseWriter = super.getResponse().getWriter(); PrintWriter responseWriter = response.getWriter();
responseWriter.append(preparedURL); responseWriter.append(preparedURL);
@ -273,12 +269,15 @@ public class UtilitiesRequestHandler extends VisualizationRequestHandler {
} }
} }
private void handleMalformedParameters(String errorMessage) private void handleMalformedParameters(String errorMessage,
VitroRequest vitroRequest,
HttpServletRequest request,
HttpServletResponse response,
Log log)
throws ServletException, IOException { throws ServletException, IOException {
Portal portal = super.getVitroRequest().getPortal(); Portal portal = vitroRequest.getPortal();
HttpServletRequest request = super.getRequest();
request.setAttribute("error", errorMessage); request.setAttribute("error", errorMessage);
RequestDispatcher requestDispatcher = request.getRequestDispatcher(Controllers.BASIC_JSP); RequestDispatcher requestDispatcher = request.getRequestDispatcher(Controllers.BASIC_JSP);
@ -287,9 +286,8 @@ public class UtilitiesRequestHandler extends VisualizationRequestHandler {
request.setAttribute("title", "Visualization Query Error - Individual Publication Count"); request.setAttribute("title", "Visualization Query Error - Individual Publication Count");
try { try {
requestDispatcher.forward(request, super.getResponse()); requestDispatcher.forward(request, response);
} catch (Exception e) { } catch (Exception e) {
Log log = super.getLog();
log.error("EntityEditController could not forward to view."); log.error("EntityEditController could not forward to view.");
log.error(e.getMessage()); log.error(e.getMessage());
log.error(e.getStackTrace()); log.error(e.getStackTrace());

View file

@ -0,0 +1,6 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
package edu.cornell.mannlib.vitro.webapp.visualization.visutils;
public interface IVisRequestHandler {
public void doSomething();
}

View file

@ -10,37 +10,12 @@ import com.hp.hpl.jena.query.DataSource;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
public abstract class VisualizationRequestHandler { public interface VisualizationRequestHandler {
private VitroRequest vitroRequest; void generateVisualization(VitroRequest vitroRequest,
private HttpServletRequest request; HttpServletRequest request,
private HttpServletResponse response; HttpServletResponse response,
private Log log; Log log,
DataSource dataSource);
public VisualizationRequestHandler(VitroRequest vitroRequest,
HttpServletRequest request, HttpServletResponse response, Log log) {
this.vitroRequest = vitroRequest;
this.request = request;
this.response = response;
this.log = log;
}
public abstract void generateVisualization(DataSource dataSource);
public VitroRequest getVitroRequest() {
return vitroRequest;
}
public HttpServletRequest getRequest() {
return request;
}
public HttpServletResponse getResponse() {
return response;
}
public Log getLog() {
return log;
}
} }