feature[ats_18K4T]: Add query tracing
diff --git a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/Criteria.java b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/Criteria.java
index 5f5d567..94bff31 100644
--- a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/Criteria.java
+++ b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/Criteria.java
@@ -21,4 +21,9 @@
public void checkValid(QueryOptions options) throws OseeCoreException {
// For subclasses to implement
}
+
+ @Override
+ public String toString() {
+ return getClass().getSimpleName();
+ }
}
diff --git a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/CriteriaSet.java b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/CriteriaSet.java
index fad82c5..90696af 100644
--- a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/CriteriaSet.java
+++ b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/CriteriaSet.java
@@ -63,4 +63,8 @@
return getCriterias().iterator();
}
+ @Override
+ public String toString() {
+ return "CriteriaSet [branch=" + branch + ", criterias=" + criterias + "]";
+ }
}
diff --git a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/OrcsApiImpl.java b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/OrcsApiImpl.java
index 5811efb..b65ccda 100644
--- a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/OrcsApiImpl.java
+++ b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/OrcsApiImpl.java
@@ -79,7 +79,7 @@
dataStoreTypeCache.getArtifactTypeCache(), cacheService.getBranchCache());
criteriaFctry = new CriteriaFactory(getDataStoreTypeCache().getAttributeTypeCache());
- callableQueryFactory = new CallableQueryFactory(queryEngine, objectLoader);
+ callableQueryFactory = new CallableQueryFactory(logger, queryEngine, objectLoader);
}
public void stop() {
diff --git a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/CallableQueryFactory.java b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/CallableQueryFactory.java
index bc07207..f7ebabc 100644
--- a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/CallableQueryFactory.java
+++ b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/CallableQueryFactory.java
@@ -12,6 +12,7 @@
import org.eclipse.osee.executor.admin.CancellableCallable;
import org.eclipse.osee.framework.core.enums.LoadLevel;
+import org.eclipse.osee.logger.Log;
import org.eclipse.osee.orcs.core.ds.CriteriaSet;
import org.eclipse.osee.orcs.core.ds.QueryEngine;
import org.eclipse.osee.orcs.core.ds.QueryOptions;
@@ -30,25 +31,28 @@
*/
public class CallableQueryFactory {
+ private final Log logger;
private final QueryEngine queryEngine;
private final OrcsObjectLoader objectLoader;
- public CallableQueryFactory(QueryEngine queryEngine, OrcsObjectLoader objectLoader) {
+ public CallableQueryFactory(Log logger, QueryEngine queryEngine, OrcsObjectLoader objectLoader) {
super();
+ this.logger = logger;
this.queryEngine = queryEngine;
this.objectLoader = objectLoader;
}
public CancellableCallable<Integer> createCount(SessionContext sessionContext, CriteriaSet criteriaSet, QueryOptions options) {
- return new SearchCountCallable(queryEngine, objectLoader, sessionContext, LoadLevel.ATTRIBUTE, criteriaSet,
- options);
+ return new SearchCountCallable(logger, queryEngine, objectLoader, sessionContext, LoadLevel.ATTRIBUTE,
+ criteriaSet, options);
}
public CancellableCallable<ResultSet<ReadableArtifact>> createSearch(SessionContext sessionContext, CriteriaSet criteriaSet, QueryOptions options) {
- return new SearchCallable(queryEngine, objectLoader, sessionContext, LoadLevel.FULL, criteriaSet, options);
+ return new SearchCallable(logger, queryEngine, objectLoader, sessionContext, LoadLevel.FULL, criteriaSet, options);
}
public CancellableCallable<ResultSet<Match<ReadableArtifact, ReadableAttribute<?>>>> createSearchWithMatches(SessionContext sessionContext, CriteriaSet criteriaSet, QueryOptions options) {
- return new SearchMatchesCallable(queryEngine, objectLoader, sessionContext, LoadLevel.FULL, criteriaSet, options);
+ return new SearchMatchesCallable(logger, queryEngine, objectLoader, sessionContext, LoadLevel.FULL, criteriaSet,
+ options);
}
}
diff --git a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/AbstractSearchCallable.java b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/AbstractSearchCallable.java
new file mode 100644
index 0000000..0525431
--- /dev/null
+++ b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/AbstractSearchCallable.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.orcs.core.internal.search.callable;
+
+import org.eclipse.osee.executor.admin.CancellableCallable;
+import org.eclipse.osee.framework.core.enums.LoadLevel;
+import org.eclipse.osee.framework.jdk.core.util.Lib;
+import org.eclipse.osee.logger.Log;
+import org.eclipse.osee.orcs.core.ds.CriteriaSet;
+import org.eclipse.osee.orcs.core.ds.QueryEngine;
+import org.eclipse.osee.orcs.core.ds.QueryOptions;
+import org.eclipse.osee.orcs.core.internal.OrcsObjectLoader;
+import org.eclipse.osee.orcs.core.internal.SessionContext;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public abstract class AbstractSearchCallable<T> extends CancellableCallable<T> {
+
+ protected final Log logger;
+ protected final QueryEngine queryEngine;
+ protected final OrcsObjectLoader objectLoader;
+
+ protected final SessionContext sessionContext;
+ protected final LoadLevel loadLevel;
+ protected final CriteriaSet criteriaSet;
+ protected final QueryOptions options;
+
+ public AbstractSearchCallable(Log logger, QueryEngine queryEngine, OrcsObjectLoader objectLoader, SessionContext sessionContext, LoadLevel loadLevel, CriteriaSet criteriaSet, QueryOptions options) {
+ super();
+ this.logger = logger;
+ this.queryEngine = queryEngine;
+ this.objectLoader = objectLoader;
+ this.sessionContext = sessionContext;
+ this.loadLevel = loadLevel;
+ this.criteriaSet = criteriaSet;
+ this.options = options;
+ }
+
+ @Override
+ public final T call() throws Exception {
+ long startTime = 0;
+ if (logger.isDebugEnabled()) {
+ startTime = System.currentTimeMillis();
+ }
+
+ T result = innerCall();
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("Search [%s] completed in [%s]\n\tCriteria - [%s]\n\tOptions - [%s]",
+ getClass().getSimpleName(), Lib.getElapseString(startTime), criteriaSet, options);
+ }
+ return result;
+ }
+
+ protected abstract T innerCall() throws Exception;
+}
diff --git a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/SearchCallable.java b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/SearchCallable.java
index 5b1b98e..d4996f7 100644
--- a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/SearchCallable.java
+++ b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/SearchCallable.java
@@ -12,8 +12,8 @@
import java.util.ArrayList;
import java.util.List;
-import org.eclipse.osee.executor.admin.CancellableCallable;
import org.eclipse.osee.framework.core.enums.LoadLevel;
+import org.eclipse.osee.logger.Log;
import org.eclipse.osee.orcs.core.ds.CriteriaSet;
import org.eclipse.osee.orcs.core.ds.LoadOptions;
import org.eclipse.osee.orcs.core.ds.QueryContext;
@@ -31,27 +31,14 @@
/**
* @author Roberto E. Escobar
*/
-public class SearchCallable extends CancellableCallable<ResultSet<ReadableArtifact>> {
- private final QueryEngine queryEngine;
- private final OrcsObjectLoader objectLoader;
+public class SearchCallable extends AbstractSearchCallable<ResultSet<ReadableArtifact>> {
- private final SessionContext sessionContext;
- private final LoadLevel loadLevel;
- private final CriteriaSet criteriaSet;
- private final QueryOptions options;
-
- public SearchCallable(QueryEngine queryEngine, OrcsObjectLoader objectLoader, SessionContext sessionContext, LoadLevel loadLevel, CriteriaSet criteriaSet, QueryOptions options) {
- super();
- this.queryEngine = queryEngine;
- this.objectLoader = objectLoader;
- this.sessionContext = sessionContext;
- this.loadLevel = loadLevel;
- this.criteriaSet = criteriaSet;
- this.options = options;
+ public SearchCallable(Log logger, QueryEngine queryEngine, OrcsObjectLoader objectLoader, SessionContext sessionContext, LoadLevel loadLevel, CriteriaSet criteriaSet, QueryOptions options) {
+ super(logger, queryEngine, objectLoader, sessionContext, loadLevel, criteriaSet, options);
}
@Override
- public ResultSet<ReadableArtifact> call() throws Exception {
+ protected ResultSet<ReadableArtifact> innerCall() throws Exception {
QueryContext queryContext = queryEngine.create(sessionContext.getSessionId(), criteriaSet, options);
LoadOptions loadOptions = new LoadOptions(options.isHistorical(), options.areDeletedIncluded(), loadLevel);
checkForCancelled();
diff --git a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/SearchCountCallable.java b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/SearchCountCallable.java
index afc895f..fe771cd 100644
--- a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/SearchCountCallable.java
+++ b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/SearchCountCallable.java
@@ -12,8 +12,8 @@
import java.util.ArrayList;
import java.util.List;
-import org.eclipse.osee.executor.admin.CancellableCallable;
import org.eclipse.osee.framework.core.enums.LoadLevel;
+import org.eclipse.osee.logger.Log;
import org.eclipse.osee.orcs.core.ds.CriteriaSet;
import org.eclipse.osee.orcs.core.ds.LoadOptions;
import org.eclipse.osee.orcs.core.ds.QueryContext;
@@ -30,27 +30,14 @@
/**
* @author Roberto E. Escobar
*/
-public class SearchCountCallable extends CancellableCallable<Integer> {
- private final QueryEngine queryEngine;
- private final OrcsObjectLoader objectLoader;
+public class SearchCountCallable extends AbstractSearchCallable<Integer> {
- private final SessionContext sessionContext;
- private final LoadLevel loadLevel;
- private final CriteriaSet criteriaSet;
- private final QueryOptions options;
-
- public SearchCountCallable(QueryEngine queryEngine, OrcsObjectLoader objectLoader, SessionContext sessionContext, LoadLevel loadLevel, CriteriaSet criteriaSet, QueryOptions options) {
- super();
- this.queryEngine = queryEngine;
- this.objectLoader = objectLoader;
- this.sessionContext = sessionContext;
- this.loadLevel = loadLevel;
- this.criteriaSet = criteriaSet;
- this.options = options;
+ public SearchCountCallable(Log logger, QueryEngine queryEngine, OrcsObjectLoader objectLoader, SessionContext sessionContext, LoadLevel loadLevel, CriteriaSet criteriaSet, QueryOptions options) {
+ super(logger, queryEngine, objectLoader, sessionContext, loadLevel, criteriaSet, options);
}
@Override
- public Integer call() throws Exception {
+ protected Integer innerCall() throws Exception {
int count = -1;
if (criteriaSet.hasCriteriaType(CriteriaAttributeKeyword.class)) {
QueryContext queryContext = queryEngine.create(sessionContext.getSessionId(), criteriaSet, options);
diff --git a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/SearchMatchesCallable.java b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/SearchMatchesCallable.java
index d271173..183b01a 100644
--- a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/SearchMatchesCallable.java
+++ b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/SearchMatchesCallable.java
@@ -14,8 +14,8 @@
import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import org.eclipse.osee.executor.admin.CancellableCallable;
import org.eclipse.osee.framework.core.enums.LoadLevel;
+import org.eclipse.osee.logger.Log;
import org.eclipse.osee.orcs.core.ds.CriteriaSet;
import org.eclipse.osee.orcs.core.ds.LoadOptions;
import org.eclipse.osee.orcs.core.ds.QueryContext;
@@ -33,27 +33,14 @@
/**
* @author Roberto E. Escobar
*/
-public class SearchMatchesCallable extends CancellableCallable<ResultSet<Match<ReadableArtifact, ReadableAttribute<?>>>> {
- private final QueryEngine queryEngine;
- private final OrcsObjectLoader objectLoader;
+public class SearchMatchesCallable extends AbstractSearchCallable<ResultSet<Match<ReadableArtifact, ReadableAttribute<?>>>> {
- private final SessionContext sessionContext;
- private final LoadLevel loadLevel;
- private final CriteriaSet criteriaSet;
- private final QueryOptions options;
-
- public SearchMatchesCallable(QueryEngine queryEngine, OrcsObjectLoader objectLoader, SessionContext sessionContext, LoadLevel loadLevel, CriteriaSet criteriaSet, QueryOptions options) {
- super();
- this.queryEngine = queryEngine;
- this.objectLoader = objectLoader;
- this.sessionContext = sessionContext;
- this.loadLevel = loadLevel;
- this.criteriaSet = criteriaSet;
- this.options = options;
+ public SearchMatchesCallable(Log logger, QueryEngine queryEngine, OrcsObjectLoader objectLoader, SessionContext sessionContext, LoadLevel loadLevel, CriteriaSet criteriaSet, QueryOptions options) {
+ super(logger, queryEngine, objectLoader, sessionContext, loadLevel, criteriaSet, options);
}
@Override
- public ResultSet<Match<ReadableArtifact, ReadableAttribute<?>>> call() throws Exception {
+ protected ResultSet<Match<ReadableArtifact, ReadableAttribute<?>>> innerCall() throws Exception {
QueryContext queryContext = queryEngine.create(sessionContext.getSessionId(), criteriaSet, options);
LoadOptions loadOptions = new LoadOptions(options.isHistorical(), options.areDeletedIncluded(), loadLevel);
checkForCancelled();