diff options
author | donald.g.dunne | 2017-05-22 16:17:12 +0000 |
---|---|---|
committer | donald.g.dunne | 2017-05-24 15:58:18 +0000 |
commit | e31cfb8e8a00b4eb01b5ae9c14b8eb1b4bd4f764 (patch) | |
tree | 875787f6293d3221149e4bb0cd78904f8e83f771 /plugins/org.eclipse.osee.ats.core/src | |
parent | 8c3bf58c5cfc5c830327d8dbaf97a90d74fde996 (diff) | |
download | org.eclipse.osee-e31cfb8e8a00b4eb01b5ae9c14b8eb1b4bd4f764.tar.gz org.eclipse.osee-e31cfb8e8a00b4eb01b5ae9c14b8eb1b4bd4f764.tar.xz org.eclipse.osee-e31cfb8e8a00b4eb01b5ae9c14b8eb1b4bd4f764.zip |
bug[ats_ATS402870]: Single action query is slow
Change-Id: Ic38769ac68cca5ec2829e5248ce19d69d0624da0
Diffstat (limited to 'plugins/org.eclipse.osee.ats.core/src')
2 files changed, 37 insertions, 10 deletions
diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/query/AbstractAtsQueryService.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/query/AbstractAtsQueryService.java index 1c6e8590b1c..bb6f3a40190 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/query/AbstractAtsQueryService.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/query/AbstractAtsQueryService.java @@ -36,6 +36,20 @@ public abstract class AbstractAtsQueryService implements IAtsQueryService { @Override public Collection<IAtsWorkItem> getWorkItemsFromQuery(String query, Object... data) { + List<IAtsWorkItem> workItems = new LinkedList<>(); + for (ArtifactId art : getArtifactsFromQuery(query, data)) { + if (services.getStoreService().isOfType(art, AtsArtifactTypes.AbstractWorkflowArtifact)) { + IAtsWorkItem workItem = services.getWorkItemFactory().getWorkItem(art); + if (workItem != null) { + workItems.add(workItem); + } + } + } + return workItems; + } + + @Override + public Collection<ArtifactId> getArtifactsFromQuery(String query, Object... data) { JdbcStatement chStmt = jdbcService.getClient().getStatement(); List<Integer> ids = new LinkedList<Integer>(); try { @@ -46,16 +60,7 @@ public abstract class AbstractAtsQueryService implements IAtsQueryService { } finally { chStmt.close(); } - List<IAtsWorkItem> workItems = new LinkedList<>(); - for (ArtifactId art : services.getQueryService().getArtifacts(ids, services.getAtsBranch())) { - if (services.getStoreService().isOfType(art, AtsArtifactTypes.AbstractWorkflowArtifact)) { - IAtsWorkItem workItem = services.getWorkItemFactory().getWorkItem(art); - if (workItem != null) { - workItems.add(workItem); - } - } - } - return workItems; + return services.getQueryService().getArtifacts(ids, services.getAtsBranch()); } @Override diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AtsCoreServiceImpl.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AtsCoreServiceImpl.java index 2d7e4ce03e2..3760f6bd39b 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AtsCoreServiceImpl.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AtsCoreServiceImpl.java @@ -73,6 +73,7 @@ import org.eclipse.osee.framework.core.data.BranchId; import org.eclipse.osee.framework.core.data.IOseeBranch; import org.eclipse.osee.framework.core.enums.CoreAttributeTypes; import org.eclipse.osee.framework.core.enums.CoreBranches; +import org.eclipse.osee.framework.jdk.core.type.ItemDoesNotExist; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; import org.eclipse.osee.framework.jdk.core.type.OseeStateException; import org.eclipse.osee.framework.jdk.core.util.Conditions; @@ -546,4 +547,25 @@ public abstract class AtsCoreServiceImpl implements IAtsServices { return getStoreService().createAtsChangeSet(comment, user); } + // Quick Search for ATS Id takes 22 seconds, just use straight database call instead. Replace this when searching is improved. + private static String ATS_ID_QUERY = + "SELECT art.art_id FROM osee_artifact art, osee_txs txs, OSEE_ATTRIBUTE attr WHERE art.gamma_id = txs.gamma_id " // + + "AND txs.tx_current = 1 AND txs.branch_id = ? and attr.ART_ID = art.ART_ID and " // + + "attr.ATTR_TYPE_ID = 1152921504606847877 and attr.VALUE = ?"; + + @Override + public ArtifactId getArtifactByAtsId(String id) { + ArtifactId artifact = null; + try { + Collection<ArtifactId> workItems = + getQueryService().getArtifactsFromQuery(ATS_ID_QUERY, getAtsBranch().getId(), id); + if (!workItems.isEmpty()) { + artifact = workItems.iterator().next(); + } + } catch (ItemDoesNotExist ex) { + // do nothing + } + return artifact; + } + } |