Package com.google.devtools.moe.client.repositories

Source Code of com.google.devtools.moe.client.repositories.Revision

// Copyright 2011 The MOE Authors All Rights Reserved.

package com.google.devtools.moe.client.repositories;

import com.google.common.base.Objects;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList;
import com.google.devtools.moe.client.MoeProblem;
import com.google.devtools.moe.client.parser.RepositoryExpression;
import com.google.devtools.moe.client.project.ProjectContext;

import java.util.List;

/**
* A Revision in a source control system.
*
* A dumb object with no mutable state.
*
* @author dbentley@google.com (Daniel Bentley)
*/
public class Revision {

  public final String revId;
  public final String repositoryName;

  public Revision() {
    this.revId = "";
    this.repositoryName = "";
  } // For gson

  public Revision(String revId, String repositoryName) {
    this.revId = revId;
    this.repositoryName = repositoryName;
  }

  @Override
  public int hashCode() {
    return Objects.hashCode(repositoryName, revId);
  }

  @Override
  public boolean equals(Object obj) {
    if (obj instanceof Revision) {
      Revision revisionObj = (Revision) obj;
      return (Objects.equal(repositoryName, revisionObj.repositoryName) &&
              Objects.equal(revId, revisionObj.revId));
    }
    return false;
 
 
  @Override
  public String toString() {
    return this.repositoryName + "{" + revId + "}";
  }
 
  /**
   * Return the list of Revisions given by a RepositoryExpression like "internal(revision=3,4,5)".
   */
  public static List<Revision> fromRepositoryExpression(
      RepositoryExpression repoEx, ProjectContext context) {
    Repository repo = context.repositories.get(repoEx.getRepositoryName());
    if (repo == null) {
      throw new MoeProblem("No repository " + repoEx.getRepositoryName());
    }
    if (Strings.isNullOrEmpty(repoEx.getOption("revision"))) {
      throw new MoeProblem(
          "Repository expression must have a 'revision' option, e.g. internal(revision=3,4,5).");
    }

    RevisionHistory rh = repo.revisionHistory;
    ImmutableList.Builder<Revision> revBuilder = ImmutableList.builder();
    for (String revId : repoEx.getOption("revision").split(",")) {
      revBuilder.add(rh.findHighestRevision(revId));
    }
    return revBuilder.build();
  }
}
TOP

Related Classes of com.google.devtools.moe.client.repositories.Revision

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.