1. Refactored code.

2. Removed edges of documents that has more than 100 co-authors.
This commit is contained in:
cdtank 2010-07-29 23:33:40 +00:00
parent d7e39e2953
commit 0ba1e950aa
2 changed files with 45 additions and 5 deletions

View file

@ -44,7 +44,7 @@ import edu.cornell.mannlib.vitro.webapp.visualization.visutils.UniqueIDGenerator
*/
public class CoAuthorshipQueryHandler implements QueryHandler<CoAuthorshipVOContainer> {
private static final int MAX_AUTHORS_PER_PAPER_ALLOWED = 101;
private static final int MAX_AUTHORS_PER_PAPER_ALLOWED = 100;
protected static final Syntax SYNTAX = Syntax.syntaxARQ;
@ -108,7 +108,6 @@ public class CoAuthorshipQueryHandler implements QueryHandler<CoAuthorshipVOCont
}
}
RDFNode documentNode = solution.get(QueryFieldLabels.DOCUMENT_URL);
BiboDocument biboDocument;
@ -191,6 +190,38 @@ public class CoAuthorshipQueryHandler implements QueryHandler<CoAuthorshipVOCont
}
/*
* This code snippet takes out all the edges belong to documents that have more than
* 100 authors. We conjecture that these papers do not provide much insight. However,
* we have left the documents be, just the edges are removed.
* */
for (Map.Entry<String, Set<Node>> currentBiboDocumentEntry
: biboDocumentURLToCoAuthors.entrySet()) {
if (currentBiboDocumentEntry.getValue().size() > MAX_AUTHORS_PER_PAPER_ALLOWED) {
BiboDocument currentBiboDocument = biboDocumentURLToVO
.get(currentBiboDocumentEntry.getKey());
Set<Edge> edgesToBeRemoved = new HashSet<Edge>();
for (Edge currentEdge : edges) {
Set<BiboDocument> currentCollaboratorDocuments =
currentEdge.getCollaboratorDocuments();
if (currentCollaboratorDocuments.contains(currentBiboDocument)) {
currentCollaboratorDocuments.remove(currentBiboDocument);
if (currentCollaboratorDocuments.isEmpty()) {
edgesToBeRemoved.add(currentEdge);
}
}
}
edges.removeAll(edgesToBeRemoved);
}
}
/*
* We need to create edges between 2 co-authors. E.g. On a paper there were 3 authors
* ego, A & B then we have already created edges like,
@ -230,7 +261,8 @@ public class CoAuthorshipQueryHandler implements QueryHandler<CoAuthorshipVOCont
* & causes unnecessary computations causing the server to time-out.
* */
if (currentBiboDocumentEntry.getValue().size() > 1
&& currentBiboDocumentEntry.getValue().size() < MAX_AUTHORS_PER_PAPER_ALLOWED) {
&& currentBiboDocumentEntry.getValue().size()
<= MAX_AUTHORS_PER_PAPER_ALLOWED) {
Set<Edge> newlyAddedEdges = new HashSet<Edge>();

View file

@ -92,7 +92,11 @@ public class UtilitiesRequestHandler implements VisualizationRequestHandler {
} catch (MalformedQueryParametersException e) {
try {
handleMalformedParameters(e.getMessage(), vitroRequest, request, response, log);
handleMalformedParameters(e.getMessage(),
vitroRequest,
request,
response,
log);
} catch (ServletException e1) {
log.error(e1.getStackTrace());
} catch (IOException e1) {
@ -141,7 +145,11 @@ public class UtilitiesRequestHandler implements VisualizationRequestHandler {
} catch (MalformedQueryParametersException e) {
try {
handleMalformedParameters(e.getMessage(), vitroRequest, request, response, log);
handleMalformedParameters(e.getMessage(),
vitroRequest,
request,
response,
log);
} catch (ServletException e1) {
log.error(e1.getStackTrace());
} catch (IOException e1) {