Package org.intellij.vcs.mks.sicommands.api

Source Code of org.intellij.vcs.mks.sicommands.api.ViewMemberHistoryAPICommand

/*
* COPYRIGHT. HSBC HOLDINGS PLC 2008. ALL RIGHTS RESERVED.
*
* This software is only to be used for the purpose for which it has been
* provided. No part of it is to be reproduced, disassembled, transmitted,
* stored in a retrieval system nor translated in any human or computer
* language in any way or for any other purposes whatsoever without the
* prior written consent of HSBC Holdings plc.
*/
package org.intellij.vcs.mks.sicommands.api;

import com.intellij.openapi.vcs.VcsException;
import com.mks.api.*;
import com.mks.api.response.*;
import org.intellij.vcs.mks.AbstractMKSCommand;
import org.intellij.vcs.mks.MksCLIConfiguration;
import org.intellij.vcs.mks.MksRevisionNumber;
import org.intellij.vcs.mks.MksVcsException;
import org.intellij.vcs.mks.model.MksMemberRevisionInfo;
import org.jetbrains.annotations.NonNls;

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

public class ViewMemberHistoryAPICommand extends SiAPICommand {

  private final String member;
  private List<MksMemberRevisionInfo> revisionsInfo;
  private static final String COMMAND = "viewhistory";
  @NonNls
  private static final String REVISION = "revision";
  @NonNls
  private static final String DATE = "date";
  @NonNls
  private static final String AUTHOR = "author";
  @NonNls
  private static final String CPID = "cpid";
  @NonNls
  private static final String DESCRIPTION = "description";
  @NonNls
  private static final String FIELDS = REVISION + "," + DATE + "," + AUTHOR + "," + CPID + "," + DESCRIPTION;

  public ViewMemberHistoryAPICommand(List<VcsException> errors, MksCLIConfiguration mksCLIConfiguration,
                     String member) {
    super(errors, COMMAND, mksCLIConfiguration);
    this.member = member;
  }

  public void execute() {
    try {
      Command command = new Command(Command.SI);
      command.setCommandName(COMMAND);
      command.addOption(new Option("fields", FIELDS));
      command.addSelection(member);
      final Response response;
      /**
       * response ::= WorkItem[id = membername]{revision*}
       * revision ::= Field
       */
      response = executeCommand(command);
      final WorkItemIterator workItems = response.getWorkItems();
      final List memberRevisions = (List) ((WorkItem) workItems.next()).getField("revisions").getValue();
      revisionsInfo = new ArrayList<MksMemberRevisionInfo>(memberRevisions.size());
      for (Iterator itRevisions = memberRevisions.iterator(); itRevisions.hasNext();) {
        Item revisionItem = (Item) itRevisions.next();
        String revision = revisionItem.getField(REVISION).getValueAsString();
        final Date date = revisionItem.getField(DATE).getDateTime();
        final String author = revisionItem.getField(AUTHOR).getValueAsString();
        final String cpid = revisionItem.getField(CPID).getValueAsString();
        final String description = revisionItem.getField(DESCRIPTION).getValueAsString();
        MksMemberRevisionInfo info = new MksMemberRevisionInfo();
        info.setRevision(MksRevisionNumber.createRevision(revision));
        info.setDate(date);
        info.setCPID(cpid);
        info.setAuthor(author);
        info.setDescription(description);
        revisionsInfo.add(info);
      }
    } catch (APIException e) {

      e.printStackTrace()//To change body of catch statement use File | Settings | File Templates.
      errors.add(new MksVcsException("apiException", e));
    } catch (VcsException e) {
      errors.add(e);
    }
  }

  public List<MksMemberRevisionInfo> getRevisionsInfo() {
    return revisionsInfo;
  }
}
TOP

Related Classes of org.intellij.vcs.mks.sicommands.api.ViewMemberHistoryAPICommand

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.