Skip to content

Commit

Permalink
Fix: Save filter parameters in app session
Browse files Browse the repository at this point in the history
  • Loading branch information
AkMo3 committed Jul 11, 2022
1 parent 383e905 commit cde688c
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 72 deletions.
Expand Up @@ -23,6 +23,7 @@
import org.nrnb.gsoc.enrichment.ui.EnrichmentCytoPanel;
import org.nrnb.gsoc.enrichment.ui.EnrichmentTableModel;
import org.nrnb.gsoc.enrichment.utils.ModelUtils;
import org.nrnb.gsoc.enrichment.utils.SessionUtils;

import java.util.ArrayList;
import java.util.Arrays;
Expand Down Expand Up @@ -80,47 +81,51 @@ public FilterEnrichmentTableTask(final CyServiceRegistrar registrar, EnrichmentC
this.applicationManager = registrar.getService(CyApplicationManager.class);
this.network = applicationManager.getCurrentNetwork();
this.enrichmentPanel = panel;
this.filteredEnrichmentTable = ModelUtils.getEnrichmentTable(registrar, network,
TermSource.ALL.getTable());
this.setCategoriesAndEvidenceCodesAtStartup();
List<String> evidenceCodesEnum = EVIDENCE_CODES.stringValue();
categories.setSelectedValues(ModelUtils.getNetSelectedCategories(network));
categories.setSelectedValues(SessionUtils.getSelectedCategories(network, filteredEnrichmentTable));
this.evidenceCodes = new ListMultipleSelection<>(evidenceCodesEnum);
evidenceCodes.setSelectedValues(ModelUtils.getNetSelectedEvidenceCode(network));
removeOverlapping = ModelUtils.getNetRemoveRedundant(network);
overlapCutoff.setValue(ModelUtils.getNetRedundantCutoff(network));
evidenceCodes.setSelectedValues(SessionUtils.getSelectedEvidenceCode(network, filteredEnrichmentTable));
removeOverlapping = SessionUtils.getRemoveRedundantStatus(network, filteredEnrichmentTable);
overlapCutoff.setValue(SessionUtils.getRemoveRedundantCutoff(network, filteredEnrichmentTable));
}

private void setCategoriesAndEvidenceCodesAtStartup() {
List<TermSource> selectedCategories = ModelUtils.getNetSelectedCategories(network);
List<TermSource> selectedCategories = SessionUtils.getSelectedCategories(network, filteredEnrichmentTable);
if (Objects.isNull(selectedCategories)) {
ModelUtils.setNetSelectedCategories(network, Collections.emptyList());
SessionUtils.setSelectedCategories(network, filteredEnrichmentTable, Collections.emptyList());
}
else if (!selectedCategories.isEmpty()) {
TermSource termSource = selectedCategories.get(0);
if (Objects.isNull(termSource)) ModelUtils.setNetSelectedCategories(network, Collections.emptyList());
if (Objects.isNull(termSource)) SessionUtils.setSelectedCategories(network,
filteredEnrichmentTable, Collections.emptyList());
}
List<String> selectedEvidenceCodes = ModelUtils.getNetSelectedEvidenceCode(network);
List<String> selectedEvidenceCodes = SessionUtils.getSelectedEvidenceCode(network,
filteredEnrichmentTable);
if (Objects.isNull(selectedEvidenceCodes)) {
ModelUtils.setNetSelectedEvidenceCodes(network, Collections.emptyList());
SessionUtils.setSelectedEvidenceCode(network, filteredEnrichmentTable, Collections.emptyList());
}
else if (!selectedEvidenceCodes.isEmpty()) {
String termSource = selectedEvidenceCodes.get(0);
if (Objects.isNull(termSource) || termSource.isEmpty())
ModelUtils.setNetSelectedEvidenceCodes(network, Collections.emptyList());
SessionUtils.setSelectedEvidenceCode(network, filteredEnrichmentTable, Collections.emptyList());
}

try {
// Do not remove assignment to variable. Not able to cast causes exception
boolean toRemoveRedundancy = ModelUtils.getNetRemoveRedundant(network);
boolean toRemoveRedundancy = SessionUtils.getRemoveRedundantStatus(network, filteredEnrichmentTable);
}
catch (NullPointerException exception) {
ModelUtils.setNetRemoveRedundant(network, false);
SessionUtils.setRemoveRedundantStatus(network, filteredEnrichmentTable, false);
}

try {
double overlapCutoff = ModelUtils.getNetRedundantCutoff(network);
double overlapCutoff = SessionUtils.getRemoveRedundantCutoff(network, filteredEnrichmentTable);
}
catch (NullPointerException exception) {
ModelUtils.setNetRedundantCutoff(network, 0.5);
SessionUtils.setRemoveRedundantCutoff(network, filteredEnrichmentTable, 0.5);
}
}

Expand All @@ -133,10 +138,10 @@ public void run(TaskMonitor monitor) throws Exception {
+ evidenceCodes.getSelectedValues());
List<TermSource> categoryList = categories.getSelectedValues();
List<String> evidenceList = new ArrayList<>(evidenceCodes.getSelectedValues());
ModelUtils.setNetRemoveRedundant(network, removeOverlapping);
ModelUtils.setNetRedundantCutoff(network, overlapCutoff.getValue());
ModelUtils.setNetSelectedEvidenceCodes(network, evidenceCodes.getSelectedValues());
ModelUtils.setNetSelectedCategories(network, categoryList);
SessionUtils.setRemoveRedundantStatus(network, filteredEnrichmentTable, removeOverlapping);
SessionUtils.setRemoveRedundantCutoff(network, filteredEnrichmentTable, overlapCutoff.getValue());
SessionUtils.setSelectedEvidenceCode(network, filteredEnrichmentTable, evidenceList);
SessionUtils.setSelectedCategories(network, filteredEnrichmentTable, categoryList);
if (enrichmentPanel == null) {
CySwingApplication swingApplication = registrar.getService(CySwingApplication.class);
CytoPanel cytoPanel = swingApplication.getCytoPanel(CytoPanelName.SOUTH);
Expand Down
54 changes: 0 additions & 54 deletions src/main/java/org/nrnb/gsoc/enrichment/utils/ModelUtils.java
Expand Up @@ -63,10 +63,6 @@ public class ModelUtils {
public static String NET_ALL_RESULTS = ENRICHMENT_NAMESPACE + NAMESPACE_SEPARATOR + "All Results";
public static String NET_MEASURE_UNDERREPRESENTATION = ENRICHMENT_NAMESPACE + NAMESPACE_SEPARATOR + "Measure Underrepresentation";

public static String NET_REMOVE_REDUNDANT = ENRICHMENT_NAMESPACE + NAMESPACE_SEPARATOR + "Remove Redundant Term";
public static String NET_REDUNDANT_CUTOFF = ENRICHMENT_NAMESPACE + NAMESPACE_SEPARATOR + "Redundant Term Cutoff";
public static String NET_SELECTED_EVIDENCE_CODES = ENRICHMENT_NAMESPACE + NAMESPACE_SEPARATOR + "Selected evidence codes";
public static String NET_SELECTED_CATEGORIES = ENRICHMENT_NAMESPACE + ENRICHMENT_NAMESPACE + "Selected categories";
// Create network view size threshold
// See https://github.com/cytoscape/cytoscape-impl/blob/develop/core-task-impl/
// src/main/java/org/cytoscape/task/internal/loadnetwork/AbstractLoadNetworkTask.java
Expand Down Expand Up @@ -733,56 +729,6 @@ public static Boolean getNetNoIEA(CyNetwork network) {
return network.getRow(network).get(NET_NO_IEA, Boolean.class);
}

public static void setNetRemoveRedundant(CyNetwork network, Boolean removeRedundant) {
createColumnIfNeeded(network.getDefaultNetworkTable(), Boolean.class, NET_REMOVE_REDUNDANT);
network.getRow(network).set(NET_REMOVE_REDUNDANT, removeRedundant);
}

public static Boolean getNetRemoveRedundant(CyNetwork network) {
if (network.getDefaultNetworkTable().getColumn(NET_REMOVE_REDUNDANT) == null)
return false;
return network.getRow(network).get(NET_REMOVE_REDUNDANT, Boolean.class);
}

public static void setNetRedundantCutoff(CyNetwork network, Double removeRedundant) {
createColumnIfNeeded(network.getDefaultNetworkTable(), Double.class, NET_REDUNDANT_CUTOFF);
network.getRow(network).set(NET_REDUNDANT_CUTOFF, removeRedundant);
}

public static Double getNetRedundantCutoff(CyNetwork network) {
if (network.getDefaultNetworkTable().getColumn(NET_REDUNDANT_CUTOFF) == null)
return 0.5;
return network.getRow(network).get(NET_REDUNDANT_CUTOFF, Double.class);
}

public static void setNetSelectedEvidenceCodes(CyNetwork network, List<String> selectedEvidenceCodes) {
createListColumnIfNeeded(network.getDefaultNetworkTable(), String.class, NET_SELECTED_EVIDENCE_CODES);
network.getRow(network).set(NET_SELECTED_EVIDENCE_CODES, selectedEvidenceCodes);
}

public static List<String> getNetSelectedEvidenceCode(CyNetwork network) {
if (network.getDefaultNetworkTable().getColumn(NET_SELECTED_EVIDENCE_CODES) == null) {
return Collections.emptyList();
};
return network.getRow(network).getList(NET_SELECTED_EVIDENCE_CODES, String.class);
}

public static void setNetSelectedCategories(CyNetwork network, List<TermSource> selectedCategories) {
createListColumnIfNeeded(network.getDefaultNetworkTable(), String.class, NET_SELECTED_CATEGORIES);
List<String> list = selectedCategories.stream().map(TermSource::getKey).collect(Collectors.toList());
network.getRow(network).set(NET_SELECTED_CATEGORIES, list);
}

public static List<TermSource> getNetSelectedCategories(CyNetwork network) {
CyColumn column = network.getDefaultNetworkTable().getColumn(NET_SELECTED_CATEGORIES);
if (column == null) {
return Collections.emptyList();
};
List<String> categoriesString = network.getRow(network).getList(NET_SELECTED_CATEGORIES, String.class);
if (categoriesString == null || categoriesString.isEmpty()) return Collections.emptyList();
return categoriesString.stream().map(TermSource::getByKey).collect(Collectors.toList());
}

/**
* all_results setter
*/
Expand Down
78 changes: 78 additions & 0 deletions src/main/java/org/nrnb/gsoc/enrichment/utils/SessionUtils.java
@@ -0,0 +1,78 @@
package org.nrnb.gsoc.enrichment.utils;

import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.CyTable;
import org.nrnb.gsoc.enrichment.model.EnrichmentTerm;

import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class SessionUtils {

private static final Map<String, Object> sessionObjectMap = new HashMap<>();

public static void setSelectedEvidenceCode(CyNetwork network, CyTable model,
List<String> evidenceCode) {
sessionObjectMap.put("selectedEvidenceCodes" + generateHashMap(network, model),
evidenceCode);
}

public static List<String> getSelectedEvidenceCode(CyNetwork network, CyTable model) {
try {
return (List<String>) sessionObjectMap.get("selectedEvidenceCodes" + generateHashMap(network, model));
}
catch (Exception e) {
return Collections.emptyList();
}
}

public static void setSelectedCategories(CyNetwork network, CyTable model,
List<EnrichmentTerm.TermSource> evidenceCode) {
sessionObjectMap.put("selectedCategories" + generateHashMap(network, model),
evidenceCode);
}

public static List<EnrichmentTerm.TermSource> getSelectedCategories(CyNetwork network, CyTable model) {
try {
return (List<EnrichmentTerm.TermSource>)
sessionObjectMap.get("selectedCategories" + generateHashMap(network, model));
}
catch (Exception e) {
return Collections.emptyList();
}
}

public static void setRemoveRedundantStatus(CyNetwork network, CyTable model,
boolean status) {
sessionObjectMap.put("removeRedundantStatus" + generateHashMap(network, model), status);
}

public static boolean getRemoveRedundantStatus(CyNetwork network, CyTable model) {
try {
return (boolean) sessionObjectMap.get("removeRedundantStatus" + generateHashMap(network, model));
}
catch (Exception e) {
return false;
}
}

public static void setRemoveRedundantCutoff(CyNetwork network, CyTable model,
double cutoff) {
sessionObjectMap.put("removeRedundantCutOff" + generateHashMap(network, model), cutoff);
}

public static double getRemoveRedundantCutoff(CyNetwork network, CyTable model) {
try {
return (double) sessionObjectMap.get("removeRedundantCutOff" + generateHashMap(network, model));
}
catch (Exception e) {
return 0.5;
}
}

private static String generateHashMap(CyNetwork network, CyTable model) {
return network.hashCode() + "" + model.hashCode();
}
}

0 comments on commit cde688c

Please sign in to comment.