Skip to content

Commit

Permalink
Dataset page gets file-based externalTool lists as needed, not for al…
Browse files Browse the repository at this point in the history
…l files upfront #4233
  • Loading branch information
matthew-a-dunlap committed Nov 21, 2017
1 parent aa4bf22 commit b4578ac
Showing 1 changed file with 43 additions and 29 deletions.
72 changes: 43 additions & 29 deletions src/main/java/edu/harvard/iq/dataverse/DatasetPage.java
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,10 @@ public enum DisplayMode {
private boolean removeUnusedTags;

private Boolean hasRsyncScript = false;
private Map<Long,List<ExternalToolHandler>> externalToolHandlers = new HashMap<Long,List<ExternalToolHandler>>();
//private Map<Long,List<ExternalToolHandler>> externalToolHandlers = new HashMap<Long,List<ExternalToolHandler>>();

List<ExternalTool> allTools = new ArrayList<>();
ApiToken apiToken = new ApiToken();

public Boolean isHasRsyncScript() {
return hasRsyncScript;
Expand Down Expand Up @@ -1528,8 +1531,14 @@ private String init(boolean initFull) {
BundleUtil.getStringFromBundle("file.rsyncUpload.inProgressMessage.details"));
}
}

//generateExternalTools();

generateExternalTools();
allTools = externalToolService.findAll();
User user = session.getUser();
if (user instanceof AuthenticatedUser) {
apiToken = authService.findApiTokenByUser((AuthenticatedUser) user);
}

return null;
}
Expand Down Expand Up @@ -4052,34 +4061,39 @@ public List<DatasetField> getDatasetSummaryFields() {
return DatasetUtil.getDatasetSummaryFields(workingVersion, customFields);
}

private void generateExternalTools() {
User user = session.getUser();
ApiToken apiToken = new ApiToken();
if (user instanceof AuthenticatedUser) {
apiToken = authService.findApiTokenByUser((AuthenticatedUser) user);
}

//MAD: use findValidExternalToolHandlersByFile
//also get the list of all beforehand externalToolService.findAll()

if(fileMetadatasSearch != null) {
externalToolHandlers.clear();
List<ExternalTool> allTools = externalToolService.findAll();
for (FileMetadata fm : fileMetadatasSearch) { //why does normal fileMetadatas not exist at this point? how is search different?
DataFile fmFile = fm.getDataFile();
List<ExternalToolHandler> fileToolHandlers = externalToolService.findExternalToolHandlersByFile(allTools, fmFile, apiToken); //findExternalToolHandlersByFile(fmFile, apitoken);
externalToolHandlers.put(fmFile.getId(), fileToolHandlers);
}
}
}

public Map getExternalToolHandlers() {
return externalToolHandlers;
}

// private void generateExternalTools() {
// User user = session.getUser();
// ApiToken apiToken = new ApiToken();
// if (user instanceof AuthenticatedUser) {
// apiToken = authService.findApiTokenByUser((AuthenticatedUser) user);
// }
//
// //MAD: use findValidExternalToolHandlersByFile
// //also get the list of all beforehand externalToolService.findAll()
//
// if(fileMetadatasSearch != null) {
// externalToolHandlers.clear();
// List<ExternalTool> allTools = externalToolService.findAll();
// for (FileMetadata fm : fileMetadatasSearch) { //why does normal fileMetadatas not exist at this point? how is search different?
// DataFile fmFile = fm.getDataFile();
// List<ExternalToolHandler> fileToolHandlers = externalToolService.findExternalToolHandlersByFile(allTools, fmFile, apiToken); //findExternalToolHandlersByFile(fmFile, apitoken);
// externalToolHandlers.put(fmFile.getId(), fileToolHandlers);
// }
// }
// }

// public Map getExternalToolHandlers() {
// return externalToolHandlers;
// }

//Should we be leveraging fileMetadatasSearch or something else that already has a list of the files (fileMetadatasSearch isn't a map for me to access via an index...)
public List<ExternalToolHandler> getExternalToolHandlersForDataFile(Long fileId) {
//TODO: Instead of this relying on generation at page load to create the big externalToolHandlers list, this should likely be more dynamic
return externalToolHandlers.get(fileId);
DataFile dataFile = datafileService.find(fileId);

//MAD: Should I be passing back the ExternalTool instead?
List<ExternalToolHandler> fileToolHandlers = externalToolService.findExternalToolHandlersByFile(allTools, dataFile, apiToken);

return fileToolHandlers;
}


Expand Down

0 comments on commit b4578ac

Please sign in to comment.