public ExtendedItemsAndPendingChanges getExtendedItemsAndPendingChanges()

in src/org/jetbrains/tfsIntegration/core/tfs/VersionControlServer.java [517:586]


  public ExtendedItemsAndPendingChanges getExtendedItemsAndPendingChanges(final String workspaceName,
                                                                          final String ownerName,
                                                                          List<ItemSpec> itemsSpecs,
                                                                          final ItemType itemType,
                                                                          Object projectOrComponent, String progressTitle)
    throws TfsException {
    OperationOnCollection<ItemSpec, ExtendedItemsAndPendingChanges> operation =
      new OperationOnCollection<ItemSpec, ExtendedItemsAndPendingChanges>() {
        @Override
        public ExtendedItemsAndPendingChanges execute(Collection<ItemSpec> items,
                                                      Credentials credentials,
                                                      ProgressIndicator pi)
          throws RemoteException, HostNotApplicableException {
          final ArrayOfItemSpec arrayOfItemSpec = new ArrayOfItemSpec();
          arrayOfItemSpec.setItemSpec(items.toArray(new ItemSpec[0]));
          QueryItemsExtended param = new QueryItemsExtended();
          param.setWorkspaceName(workspaceName);
          param.setWorkspaceOwner(ownerName);
          param.setItems(arrayOfItemSpec);
          param.setDeletedState(DeletedState.NonDeleted);
          param.setItemType(itemType);
          ArrayOfExtendedItem[] extendedItemsArray =
            myBeans.getRepositoryStub(credentials, pi).queryItemsExtended(param).getQueryItemsExtendedResult().getArrayOfExtendedItem();

          TFSVcs.assertTrue(extendedItemsArray != null && extendedItemsArray.length == items.size());

          List<ExtendedItem> extendedItems = new ArrayList<>();
          //noinspection ConstantConditions
          for (ArrayOfExtendedItem extendedItem : extendedItemsArray) {
            if (extendedItem.getExtendedItem() != null) {
              // no need to chooseExtendedItem() since DeletedState.NonDeleted specified
              ContainerUtil.addAll(extendedItems, extendedItem.getExtendedItem());
            }
          }

          QueryPendingSets param2 = new QueryPendingSets();
          param2.setLocalWorkspaceName(workspaceName);
          param2.setLocalWorkspaceOwner(ownerName);
          param2.setQueryWorkspaceName(workspaceName);
          param2.setOwnerName(ownerName);
          param2.setItemSpecs(arrayOfItemSpec);
          param2.setGenerateDownloadUrls(false);
          final PendingSet[] pendingSets =
            myBeans.getRepositoryStub(credentials, pi).queryPendingSets(param2).getQueryPendingSetsResult().getPendingSet();

          final Collection<PendingChange> pendingChanges;
          if (pendingSets != null) {
            TFSVcs.assertTrue(pendingSets.length == 1);
            pendingChanges = Arrays.asList(pendingSets[0].getPendingChanges().getPendingChange());
          }
          else {
            pendingChanges = Collections.emptyList();
          }
          return new ExtendedItemsAndPendingChanges(pendingChanges, extendedItems);
        }

        @Override
        public ExtendedItemsAndPendingChanges merge(Collection<ExtendedItemsAndPendingChanges> results) {
          List<ExtendedItem> mergedItems = new ArrayList<>();
          List<PendingChange> mergedPendingChanges = new ArrayList<>();
          for (ExtendedItemsAndPendingChanges r : results) {
            mergedItems.addAll(r.extendedItems);
            mergedPendingChanges.addAll(r.pendingChanges);
          }
          return new ExtendedItemsAndPendingChanges(mergedPendingChanges, mergedItems);
        }
      };

    return execute(operation, projectOrComponent, itemsSpecs, progressTitle);
  }