Skip to content

Commit

Permalink
Got rid of some unnecessary database lookups that were made when rend…
Browse files Browse the repository at this point in the history
…ering the harvesting server page. #3322
  • Loading branch information
landreev committed Jan 11, 2024
1 parent 15ad04e commit 2f571e2
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 6 deletions.
60 changes: 55 additions & 5 deletions src/main/java/edu/harvard/iq/dataverse/HarvestingSetsPage.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
import jakarta.faces.view.ViewScoped;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;

/**
Expand Down Expand Up @@ -430,44 +432,92 @@ public boolean isSessionUserAuthenticated() {
return false;
}

// The numbers of datasets and deleted/exported records below are used
// in rendering rules on the page. They absolutely need to be cached
// on the first lookup.

Map<String, Integer> cachedSetInfoNumDatasets = new HashMap<>();

public int getSetInfoNumOfDatasets(OAISet oaiSet) {
if (oaiSet.isDefaultSet()) {
return getSetInfoNumOfExported(oaiSet);
}

if (cachedSetInfoNumDatasets.get(oaiSet.getSpec()) != null) {
return cachedSetInfoNumDatasets.get(oaiSet.getSpec());
}

String query = oaiSet.getDefinition();

try {
int num = oaiSetService.validateDefinitionQuery(query);
if (num > -1) {
cachedSetInfoNumDatasets.put(oaiSet.getSpec(), num);
return num;
}
} catch (OaiSetException ose) {
// do notghin - will return zero.
// do nothing - will return zero.
}
cachedSetInfoNumDatasets.put(oaiSet.getSpec(), 0);
return 0;
}

Map<String, Integer> cachedSetInfoNumExported = new HashMap<>();
Integer defaultSetNumExported = null;

public int getSetInfoNumOfExported(OAISet oaiSet) {
if (oaiSet.isDefaultSet() && defaultSetNumExported != null) {
return defaultSetNumExported;
} else if (cachedSetInfoNumExported.get(oaiSet.getSpec()) != null) {
return cachedSetInfoNumExported.get(oaiSet.getSpec());
}

List<OAIRecord> records = oaiRecordService.findActiveOaiRecordsBySetName(oaiSet.getSpec());

int num;

if (records == null || records.isEmpty()) {
return 0;
num = 0;
} else {
num = records.size();
}

return records.size();
if (oaiSet.isDefaultSet()) {
defaultSetNumExported = num;
} else {
cachedSetInfoNumExported.put(oaiSet.getSpec(), num);
}

return num;
}

Map<String, Integer> cachedSetInfoNumDeleted = new HashMap<>();
Integer defaultSetNumDeleted = null;

public int getSetInfoNumOfDeleted(OAISet oaiSet) {
if (oaiSet.isDefaultSet() && defaultSetNumDeleted != null) {
return defaultSetNumDeleted;
} else if (cachedSetInfoNumDeleted.get(oaiSet.getSpec()) != null) {
return cachedSetInfoNumDeleted.get(oaiSet.getSpec());
}

List<OAIRecord> records = oaiRecordService.findDeletedOaiRecordsBySetName(oaiSet.getSpec());

int num;

if (records == null || records.isEmpty()) {
return 0;
num = 0;
} else {
num = records.size();
}

return records.size();
if (oaiSet.isDefaultSet()) {
defaultSetNumDeleted = num;
} else {
cachedSetInfoNumDeleted.put(oaiSet.getSpec(), num);
}

return num;
}

public void validateSetQuery() {
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/propertyFiles/Bundle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -631,7 +631,7 @@ harvestserver.tab.header.description=Description
harvestserver.tab.header.definition=Definition Query
harvestserver.tab.col.definition.default=All Published Local Datasets
harvestserver.tab.header.stats=Datasets
harvestserver.tab.col.stats.empty=No records (empty set)
harvestserver.tab.col.stats.empty=No active records ({2} {2, choice, 0#records|1#record|2#records} marked as deleted)
harvestserver.tab.col.stats.results={0} {0, choice, 0#datasets|1#dataset|2#datasets} ({1} {1, choice, 0#records|1#record|2#records} exported, {2} marked as deleted)
harvestserver.tab.header.action=Actions
harvestserver.tab.header.action.btn.export=Run Export
Expand Down

0 comments on commit 2f571e2

Please sign in to comment.