Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordonald.g.dunne2017-05-22 16:17:12 +0000
committerdonald.g.dunne2017-05-24 15:58:18 +0000
commite31cfb8e8a00b4eb01b5ae9c14b8eb1b4bd4f764 (patch)
tree875787f6293d3221149e4bb0cd78904f8e83f771 /plugins/org.eclipse.osee.ats.core/src
parent8c3bf58c5cfc5c830327d8dbaf97a90d74fde996 (diff)
downloadorg.eclipse.osee-e31cfb8e8a00b4eb01b5ae9c14b8eb1b4bd4f764.tar.gz
org.eclipse.osee-e31cfb8e8a00b4eb01b5ae9c14b8eb1b4bd4f764.tar.xz
org.eclipse.osee-e31cfb8e8a00b4eb01b5ae9c14b8eb1b4bd4f764.zip
bug[ats_ATS402870]: Single action query is slow
Diffstat (limited to 'plugins/org.eclipse.osee.ats.core/src')
-rw-r--r--plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/query/AbstractAtsQueryService.java25
-rw-r--r--plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AtsCoreServiceImpl.java22
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;
+ }
+
}

Back to the top