From b69def12bc6421b15198c2d1ae039bab9840060c Mon Sep 17 00:00:00 2001 From: Joel Weiser Date: Tue, 22 Aug 2023 20:02:40 -0400 Subject: [PATCH 1/3] adds deleted stable identifiers for checks if stable id is used --- .../qa/check/StableIdentifierCheck.java | 122 +++++++++--------- 1 file changed, 62 insertions(+), 60 deletions(-) diff --git a/src/main/java/org/reactome/release/qa/check/StableIdentifierCheck.java b/src/main/java/org/reactome/release/qa/check/StableIdentifierCheck.java index f42583b..93a1972 100644 --- a/src/main/java/org/reactome/release/qa/check/StableIdentifierCheck.java +++ b/src/main/java/org/reactome/release/qa/check/StableIdentifierCheck.java @@ -1,10 +1,6 @@ package org.reactome.release.qa.check; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; +import java.util.*; import org.gk.model.GKInstance; import org.gk.model.ReactomeJavaConstants; @@ -23,64 +19,70 @@ public class StableIdentifierCheck extends AbstractQACheck { public StableIdentifierCheck() { - } + } @Override public QAReport executeQACheck() throws Exception { - QAReport report = new QAReport(); - report.setColumnHeaders("DBID", "DisplayName", "Issue", "LastAuthor"); - - Collection stableIds = dba.fetchInstancesByClass(ReactomeJavaConstants.StableIdentifier); - dba.loadInstanceAttributeValues(stableIds, new String[] {ReactomeJavaConstants.identifier}); - Map> idToInsts = new HashMap<>(); - for (GKInstance stableId : stableIds) { - if (isEscaped(stableId)) { - continue; - } - String id = (String) stableId.getAttributeValue(ReactomeJavaConstants.identifier); - if (id == null) { - report.addLine(stableId.getDBID().toString(), - stableId.getDisplayName(), - "Missing identifier", - QACheckerHelper.getLastModificationAuthor(stableId)); - continue; - } - idToInsts.compute(id, (key, set) -> { - if (set == null) - set = new HashSet<>(); - set.add(stableId); - return set; - }); - // Check if this stableId is used - Collection referrers = stableId.getReferers(ReactomeJavaConstants.stableIdentifier); - if (referrers == null || referrers.size() == 0) { - report.addLine(stableId.getDBID().toString(), - stableId.getDisplayName(), - "Not used", - QACheckerHelper.getLastModificationAuthor(stableId)); - } - else if (referrers.size() > 1) { - report.addLine(stableId.getDBID().toString(), - stableId.getDisplayName(), - "Referred more than once", - QACheckerHelper.getLastModificationAuthor(stableId)); - } - } - - for (Collection instances: idToInsts.values()) { - if (instances.size() != 1) { - for (GKInstance stableId: instances) { - if (!isEscaped(stableId)) { - report.addLine(stableId.getDBID().toString(), - stableId.getDisplayName(), - "Duplicated identifier", - QACheckerHelper.getLastModificationAuthor(stableId)); - } - } - } - } - - return report; + QAReport report = new QAReport(); + report.setColumnHeaders("DBID", "DisplayName", "Issue", "LastAuthor"); + + Collection stableIds = dba.fetchInstancesByClass(ReactomeJavaConstants.StableIdentifier); + dba.loadInstanceAttributeValues(stableIds, new String[] {ReactomeJavaConstants.identifier}); + Map> idToInsts = new HashMap<>(); + for (GKInstance stableId : stableIds) { + if (isEscaped(stableId)) { + continue; + } + String id = (String) stableId.getAttributeValue(ReactomeJavaConstants.identifier); + if (id == null) { + report.addLine(stableId.getDBID().toString(), + stableId.getDisplayName(), + "Missing identifier", + QACheckerHelper.getLastModificationAuthor(stableId)); + continue; + } + idToInsts.compute(id, (key, set) -> { + if (set == null) + set = new HashSet<>(); + set.add(stableId); + return set; + }); + // Check if this stableId is used by an existing instance or a deleted instance + Collection instanceReferrers = stableId.getReferers(ReactomeJavaConstants.stableIdentifier); + Collection deletedInstanceReferrers = + stableId.getReferers("deletedStableIdentifier"); + Collection referrers = new ArrayList<>(); + referrers.addAll(instanceReferrers); + referrers.addAll(deletedInstanceReferrers); + + if (referrers.size() == 0) { + report.addLine(stableId.getDBID().toString(), + stableId.getDisplayName(), + "Not used", + QACheckerHelper.getLastModificationAuthor(stableId)); + } + else if (referrers.size() > 1) { + report.addLine(stableId.getDBID().toString(), + stableId.getDisplayName(), + "Referred more than once", + QACheckerHelper.getLastModificationAuthor(stableId)); + } + } + + for (Collection instances: idToInsts.values()) { + if (instances.size() != 1) { + for (GKInstance stableId: instances) { + if (!isEscaped(stableId)) { + report.addLine(stableId.getDBID().toString(), + stableId.getDisplayName(), + "Duplicated identifier", + QACheckerHelper.getLastModificationAuthor(stableId)); + } + } + } + } + + return report; } } From f37cf4d49b343844d8e3847938a97bb3f4c69803 Mon Sep 17 00:00:00 2001 From: jweiser Date: Tue, 27 Jan 2026 18:34:06 -0500 Subject: [PATCH 2/3] bug fix - adds null check for collections of referrers --- .../reactome/release/qa/check/StableIdentifierCheck.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/reactome/release/qa/check/StableIdentifierCheck.java b/src/main/java/org/reactome/release/qa/check/StableIdentifierCheck.java index 93a1972..30615fb 100644 --- a/src/main/java/org/reactome/release/qa/check/StableIdentifierCheck.java +++ b/src/main/java/org/reactome/release/qa/check/StableIdentifierCheck.java @@ -52,8 +52,12 @@ public QAReport executeQACheck() throws Exception { Collection deletedInstanceReferrers = stableId.getReferers("deletedStableIdentifier"); Collection referrers = new ArrayList<>(); - referrers.addAll(instanceReferrers); - referrers.addAll(deletedInstanceReferrers); + if (instanceReferrers != null) { + referrers.addAll(instanceReferrers); + } + if (deletedInstanceReferrers != null) { + referrers.addAll(deletedInstanceReferrers); + } if (referrers.size() == 0) { report.addLine(stableId.getDBID().toString(), From 6e0027bcd78302ebbfabe4781c45e710b9af03af Mon Sep 17 00:00:00 2001 From: jweiser Date: Sun, 1 Feb 2026 22:57:03 -0500 Subject: [PATCH 3/3] uses isEmpty rather than size check --- .../org/reactome/release/qa/check/StableIdentifierCheck.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/reactome/release/qa/check/StableIdentifierCheck.java b/src/main/java/org/reactome/release/qa/check/StableIdentifierCheck.java index 30615fb..a16dc86 100644 --- a/src/main/java/org/reactome/release/qa/check/StableIdentifierCheck.java +++ b/src/main/java/org/reactome/release/qa/check/StableIdentifierCheck.java @@ -59,7 +59,7 @@ public QAReport executeQACheck() throws Exception { referrers.addAll(deletedInstanceReferrers); } - if (referrers.size() == 0) { + if (referrers.isEmpty()) { report.addLine(stableId.getDBID().toString(), stableId.getDisplayName(), "Not used",