Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRyan D. Brooks2019-05-25 03:50:05 +0000
committerRyan D. Brooks2023-09-05 17:08:10 +0000
commitf4330c5c375f59469279035c5957024827118366 (patch)
tree29c3c5d757beaab1577ea3db8e4491cf59670dc0
parentbf9030a8f0d83bdf58dce96203acd7e8f0e748aa (diff)
downloadorg.eclipse.osee-f4330c5c375f59469279035c5957024827118366.tar.gz
org.eclipse.osee-f4330c5c375f59469279035c5957024827118366.tar.xz
org.eclipse.osee-f4330c5c375f59469279035c5957024827118366.zip
feature: Selective Loading
-rw-r--r--plugins/org.eclipse.osee.define/src/org/eclipse/osee/define/rest/GitOperationsImpl.java10
-rw-r--r--plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/QueryData.java18
-rw-r--r--plugins/org.eclipse.osee.orcs/src/org/eclipse/osee/orcs/search/ArtifactQuerySelection.java58
-rw-r--r--plugins/org.eclipse.osee.orcs/src/org/eclipse/osee/orcs/search/QueryBuilder.java8
4 files changed, 94 insertions, 0 deletions
diff --git a/plugins/org.eclipse.osee.define/src/org/eclipse/osee/define/rest/GitOperationsImpl.java b/plugins/org.eclipse.osee.define/src/org/eclipse/osee/define/rest/GitOperationsImpl.java
index 10cab974cba..30425f09cdd 100644
--- a/plugins/org.eclipse.osee.define/src/org/eclipse/osee/define/rest/GitOperationsImpl.java
+++ b/plugins/org.eclipse.osee.define/src/org/eclipse/osee/define/rest/GitOperationsImpl.java
@@ -119,8 +119,18 @@ public final class GitOperationsImpl implements GitOperations {
this.systemPrefs = systemPrefs;
}
+ private void s(Date authorDate) {
+
+ }
+
@Override
public ArtifactToken getCommitArtifactId(BranchId branch, String changeId) {
+
+ queryFactory.fromBranch(branch).and(GitChangeId, changeId).selectInto(this).selectAtt(GitCommitAuthorDate,
+ GitOperationsImpl::s);
+
+ queryFactory.fromBranch(branch).and(GitChangeId, changeId).selectAtt(GitCommitAuthorDate, this::s);
+
List<ArtifactReadable> commits =
queryFactory.fromBranch(branch).andAttributeIs(GitChangeId, changeId).andTypeEquals(
GitCommit).getResults().getList();
diff --git a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/QueryData.java b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/QueryData.java
index 973dac0be73..d5fa8b6711c 100644
--- a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/QueryData.java
+++ b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/QueryData.java
@@ -26,6 +26,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
+import java.util.function.Consumer;
import java.util.stream.Collectors;
import org.eclipse.osee.framework.core.OrcsTokenService;
import org.eclipse.osee.framework.core.data.ApplicabilityId;
@@ -74,6 +75,7 @@ import org.eclipse.osee.orcs.core.ds.criteria.CriteriaRelationTypeSideExists;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaRelationTypeSideNotExists;
import org.eclipse.osee.orcs.core.internal.search.CallableQueryFactory;
import org.eclipse.osee.orcs.search.ArtifactTable;
+import org.eclipse.osee.orcs.search.ArtifactQuerySelection;
import org.eclipse.osee.orcs.search.ArtifactTableOptions;
import org.eclipse.osee.orcs.search.Match;
import org.eclipse.osee.orcs.search.QueryBuilder;
@@ -101,6 +103,7 @@ public final class QueryData implements QueryBuilder, HasOptions, HasBranch {
private QueryType queryType;
private boolean followCausesChild = true;
private final ApplicabilityId appId;
+ private Supplier<?> selectInto;
public QueryData(QueryData parentQueryData, QueryFactory queryFactory, QueryEngine queryEngine, CallableQueryFactory artQueryFactory, OrcsTokenService tokenService, BranchToken branch, ArtifactId view, ApplicabilityId appId) {
this.parentQueryData = parentQueryData;
@@ -157,6 +160,21 @@ public final class QueryData implements QueryBuilder, HasOptions, HasBranch {
return options;
}
+ @Override
+ public <R> ArtifactQuerySelection<R> selectInto(Supplier<R> receiver) {
+ return new ArtifactQuerySelection<>(receiver);
+ }
+
+ @Override
+ public <R> ArtifactQuerySelection<R> selectInto(R receiver) {
+ return new ArtifactQuerySelection<>(receiver);
+ }
+
+ @Override
+ public <T> void selectAtt(AttributeTypeToken<T> attributeType, Consumer<T> consumer) {
+
+ }
+
public boolean isSelectQueryType() {
return queryType == QueryType.SELECT;
}
diff --git a/plugins/org.eclipse.osee.orcs/src/org/eclipse/osee/orcs/search/ArtifactQuerySelection.java b/plugins/org.eclipse.osee.orcs/src/org/eclipse/osee/orcs/search/ArtifactQuerySelection.java
new file mode 100644
index 00000000000..b65bcc4bf3c
--- /dev/null
+++ b/plugins/org.eclipse.osee.orcs/src/org/eclipse/osee/orcs/search/ArtifactQuerySelection.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2019 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.search;
+
+import java.util.HashMap;
+import java.util.function.BiConsumer;
+import java.util.function.Supplier;
+import org.eclipse.osee.framework.core.data.ArtifactId;
+import org.eclipse.osee.framework.core.data.ArtifactTypeToken;
+import org.eclipse.osee.framework.core.data.AttributeTypeToken;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class ArtifactQuerySelection<R> {
+ private final R receiver;
+ private final Supplier<R> receiverSupplier;
+ private final HashMap<AttributeTypeToken<?>, BiConsumer<R, ?>> atts = new HashMap<>();
+
+ public ArtifactQuerySelection(Supplier<R> receiverSupplier) {
+ this.receiverSupplier = receiverSupplier;
+ this.receiver = null;
+ }
+
+ public ArtifactQuerySelection(R receiver) {
+ this.receiverSupplier = null;
+ this.receiver = receiver;
+ }
+
+ public <T> void selectAtt(AttributeTypeToken<T> attributeType, BiConsumer<R, T> consumer) {
+ atts.put(attributeType, consumer);
+ }
+
+ public <T> void accept(AttributeTypeToken<T> attributeType, T value) {
+ BiConsumer<R, T> consumer = (BiConsumer<R, T>) atts.get(attributeType);
+ consumer.accept(getReceiver(), value);
+ }
+
+ private R getReceiver() {
+ return receiver == null ? receiverSupplier.get() : receiver;
+ }
+
+ public <T> void selectArtifactId(BiConsumer<R, ArtifactId> consumer) {
+
+ }
+
+ public <T> void selectArtifactType(BiConsumer<R, ArtifactTypeToken> consumer) {
+
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.orcs/src/org/eclipse/osee/orcs/search/QueryBuilder.java b/plugins/org.eclipse.osee.orcs/src/org/eclipse/osee/orcs/search/QueryBuilder.java
index 258ccf9a3c7..ef0bda9fd4e 100644
--- a/plugins/org.eclipse.osee.orcs/src/org/eclipse/osee/orcs/search/QueryBuilder.java
+++ b/plugins/org.eclipse.osee.orcs/src/org/eclipse/osee/orcs/search/QueryBuilder.java
@@ -16,6 +16,8 @@ package org.eclipse.osee.orcs.search;
import java.util.Collection;
import java.util.List;
import java.util.Map;
+import java.util.function.Consumer;
+import java.util.function.Supplier;
import org.eclipse.osee.framework.core.data.ArtifactId;
import org.eclipse.osee.framework.core.data.ArtifactReadable;
import org.eclipse.osee.framework.core.data.ArtifactToken;
@@ -110,6 +112,12 @@ public interface QueryBuilder extends Query {
*/
ArtifactToken getArtifactOrSentinal();
+
+ <R> ArtifactQuerySelection<R> selectInto(Supplier<R> receiver);
+
+ <R> ArtifactQuerySelection<R> selectInto(R receiver);
+
+ public <T> void selectAtt(AttributeTypeToken<T> attributeType, Consumer<T> consumer);
public static AttributeTypeToken ANY_ATTRIBUTE_TYPE =
AttributeTypeToken.valueOf(Long.MIN_VALUE, "Any Attribute Type");

Back to the top