Package org.eclipse.egit.core

Source Code of org.eclipse.egit.core.ProjectReference

/*******************************************************************************
* Copyright (C) 2009, Mykola Nikishov <mn@mn.com.ua>
* Copyright (C) 2011, Robin Stocker <robin@nibor.org>
*
* 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:
*     Manuel Doninger <manuel.doninger@googlemail.com>
*******************************************************************************/
package org.eclipse.egit.core;

import java.net.URISyntaxException;
import java.util.regex.Pattern;

import org.eclipse.egit.core.internal.CoreText;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.transport.URIish;
import org.eclipse.osgi.util.NLS;

/**
* ProjectReference for Team project sets
*/
public final class ProjectReference {

  private static final String DEFAULT_BRANCH = Constants.MASTER;

  /**
   * the version of the reference string
   */
  private String version;

  /**
   * a relative path (from the repository root) to a project
   */
  private String projectDir;

  /**
   * <code>repository</code> parameter
   */
  private URIish repository;

  /**
   * the remote branch that will be checked out, see <code>--branch</code>
   * option
   */
  private String branch = DEFAULT_BRANCH;

  /**
   * use this name instead of using the remote name origin to keep track
   * of the upstream repository, see <code>--origin</code> option.
   */
  private String origin = Constants.DEFAULT_REMOTE_NAME;

  static final String SEPARATOR = ","; //$NON-NLS-1$

  /**
   * @param reference
   * @throws URISyntaxException
   * @throws IllegalArgumentException
   */
  @SuppressWarnings("boxing")
  public ProjectReference(final String reference) throws URISyntaxException, IllegalArgumentException {
    final String[] tokens = reference.split(Pattern.quote(ProjectReference.SEPARATOR));
    if (tokens.length != 4)
      throw new IllegalArgumentException(NLS.bind(
          CoreText.ProjectReference_InvalidTokensCount, new Object[] {
              4, tokens.length, tokens }));

    this.version = tokens[0];
    this.repository = new URIish(tokens[1]);
    if (!"".equals(tokens[2])) //$NON-NLS-1$
      this.branch = tokens[2];
    this.projectDir = tokens[3];
  }

  /**
   * @return <code>repository</code> parameter
   */
  public URIish getRepository() {
    return repository;
  }

  /**
   * @return the remote branch that will be checked out, see <code>--branch</code>
   * option
   */
  public String getBranch() {
    return branch;
  }

  /**
   * @return name of the upstream repository
   */
  public String getOrigin() {
    return origin;
  }

  /**
   * @return a relative path (from the repository root) to a project
   */
  public String getProjectDir() {
    return projectDir;
  }

  String getVersion() {
    return version;
  }

  @Override
  public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((branch == null) ? 0 : branch.hashCode());
    result = prime * result
        + ((projectDir == null) ? 0 : projectDir.hashCode());
    result = prime * result
        + ((repository == null) ? 0 : repository.hashCode());
    return result;
  }

  @Override
  public boolean equals(Object obj) {
    if (this == obj)
      return true;
    if (obj == null)
      return false;
    if (!(obj instanceof ProjectReference))
      return false;
    ProjectReference other = (ProjectReference) obj;
    if (branch == null) {
      if (other.branch != null)
        return false;
    } else if (!branch.equals(other.branch))
      return false;
    if (projectDir == null) {
      if (other.projectDir != null)
        return false;
    } else if (!projectDir.equals(other.projectDir))
      return false;
    if (repository == null) {
      if (other.repository != null)
        return false;
    } else if (!repository.equals(other.repository))
      return false;
    return true;
  }
}
TOP

Related Classes of org.eclipse.egit.core.ProjectReference

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.