From e1f27a60f594f2de7d354edf24374d6692727ccb Mon Sep 17 00:00:00 2001 From: Ryan D. Brooks Date: Fri, 24 May 2019 20:50:05 -0700 Subject: feature: Selective Loading Change-Id: Ice0bd1482ae0b7336fbba8cd6cbed0bcf8f460f7 --- .../osee/define/rest/GitOperationsImpl.java | 10 ++++ .../org/eclipse/osee/orcs/core/ds/QueryData.java | 18 +++++++ .../osee/orcs/search/ArtifactQuerySelection.java | 58 ++++++++++++++++++++++ .../org/eclipse/osee/orcs/search/QueryBuilder.java | 8 +++ 4 files changed, 94 insertions(+) create mode 100644 plugins/org.eclipse.osee.orcs/src/org/eclipse/osee/orcs/search/ArtifactQuerySelection.java diff --git a/plugins/org.eclipse.osee.define.rest/src/org/eclipse/osee/define/rest/GitOperationsImpl.java b/plugins/org.eclipse.osee.define.rest/src/org/eclipse/osee/define/rest/GitOperationsImpl.java index 0abed8f5d17..0e90708a439 100644 --- a/plugins/org.eclipse.osee.define.rest/src/org/eclipse/osee/define/rest/GitOperationsImpl.java +++ b/plugins/org.eclipse.osee.define.rest/src/org/eclipse/osee/define/rest/GitOperationsImpl.java @@ -110,8 +110,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 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 37637954668..ddc35d233cc 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.ArtifactId; @@ -67,6 +68,7 @@ import org.eclipse.osee.orcs.core.ds.criteria.CriteriaRelationTypeSideNotExists; import org.eclipse.osee.orcs.core.internal.search.CallableQueryFactory; import org.eclipse.osee.orcs.data.ArtifactReadable; import org.eclipse.osee.orcs.data.AttributeReadable; +import org.eclipse.osee.orcs.search.ArtifactQuerySelection; import org.eclipse.osee.orcs.search.Match; import org.eclipse.osee.orcs.search.QueryBuilder; import org.eclipse.osee.orcs.search.QueryFactory; @@ -91,6 +93,7 @@ public final class QueryData implements QueryBuilder, HasOptions, HasBranch { private final HashMap mainAliases = new HashMap<>(4); private QueryType queryType; private boolean followCausesChild = true; + private Supplier selectInto; public QueryData(QueryData parentQueryData, QueryFactory queryFactory, QueryEngine queryEngine, CallableQueryFactory artQueryFactory, OrcsTokenService tokenService, BranchId branch, ArtifactId view) { this.parentQueryData = parentQueryData; @@ -141,6 +144,21 @@ public final class QueryData implements QueryBuilder, HasOptions, HasBranch { return options; } + @Override + public ArtifactQuerySelection selectInto(Supplier receiver) { + return new ArtifactQuerySelection<>(receiver); + } + + @Override + public ArtifactQuerySelection selectInto(R receiver) { + return new ArtifactQuerySelection<>(receiver); + } + + @Override + public void selectAtt(AttributeTypeToken attributeType, Consumer 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 { + private final R receiver; + private final Supplier receiverSupplier; + private final HashMap, BiConsumer> atts = new HashMap<>(); + + public ArtifactQuerySelection(Supplier receiverSupplier) { + this.receiverSupplier = receiverSupplier; + this.receiver = null; + } + + public ArtifactQuerySelection(R receiver) { + this.receiverSupplier = null; + this.receiver = receiver; + } + + public void selectAtt(AttributeTypeToken attributeType, BiConsumer consumer) { + atts.put(attributeType, consumer); + } + + public void accept(AttributeTypeToken attributeType, T value) { + BiConsumer consumer = (BiConsumer) atts.get(attributeType); + consumer.accept(getReceiver(), value); + } + + private R getReceiver() { + return receiver == null ? receiverSupplier.get() : receiver; + } + + public void selectArtifactId(BiConsumer consumer) { + + } + + public void selectArtifactType(BiConsumer 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 ec5bed21995..e67a3b10bf6 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.ArtifactToken; import org.eclipse.osee.framework.core.data.ArtifactTypeToken; @@ -91,6 +93,12 @@ public interface QueryBuilder extends Query { */ ArtifactToken getArtifactOrSentinal(); + + ArtifactQuerySelection selectInto(Supplier receiver); + + ArtifactQuerySelection selectInto(R receiver); + + public void selectAtt(AttributeTypeToken attributeType, Consumer consumer); public static AttributeTypeToken ANY_ATTRIBUTE_TYPE = AttributeTypeToken.valueOf(Long.MIN_VALUE, "Any Attribute Type"); -- cgit v1.2.1