diff options
author | Ryan D. Brooks | 2019-05-25 03:50:05 +0000 |
---|---|---|
committer | Ryan D. Brooks | 2023-09-05 17:08:10 +0000 |
commit | f4330c5c375f59469279035c5957024827118366 (patch) | |
tree | 29c3c5d757beaab1577ea3db8e4491cf59670dc0 | |
parent | bf9030a8f0d83bdf58dce96203acd7e8f0e748aa (diff) | |
download | org.eclipse.osee-f4330c5c375f59469279035c5957024827118366.tar.gz org.eclipse.osee-f4330c5c375f59469279035c5957024827118366.tar.xz org.eclipse.osee-f4330c5c375f59469279035c5957024827118366.zip |
feature: Selective Loading
Change-Id: Ice0bd1482ae0b7336fbba8cd6cbed0bcf8f460f7
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"); |