org.eclipse.emf.cdo.common.branch

## Interface CDOBranch

- All Superinterfaces:
    CDOBranchPoint, CDOBranchProvider, CDONameProvider, CDOTimeProvider, java.lang.Comparable<CDOBranch>, IAdaptable, IContainer<CDOBranch>, INotifier
  All Known Subinterfaces:
    InternalCDOBranch

      public interface CDOBranch
      extends CDOBranchPoint, CDONameProvider, IContainer<CDOBranch>, java.lang.Comparable<CDOBranch>, IAdaptable

  Represents a stream of changes that is isolated from other streams of changes.

  A branch starts at a fixed `base` point and ends at a floating `head` point. Between these two points there can be a number of other `branch points`:

  - `Commit infos` are points in a branch that represent commit operations.
  - `Branch tags` are named points in a branch.
  - `Base points` of sub branches of a branch.
  Since:
    3.0
  Author:
    Eike Stepper
  No Implement
    This interface is not intended to be implemented by clients.
  No Extend
    This interface is not intended to be extended by clients.
  Apiviz
  Apiviz
    `CDOBranchPoint` oneway - - base
  Apiviz
    `CDOBranch` - - subBranches

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.eclipse.net4j.util.container.IContainer

      `IContainer.Modifiable<E>, IContainer.Persistable<E>, IContainer.Persistence<E>`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `MAIN_BRANCH_ID` The fixed ID of the `main branch`.
    `static java.lang.String` | `MAIN_BRANCH_NAME` The fixed name of the `main branch`.
    `static java.lang.String` | `PATH_SEPARATOR` The string used to separate the segments of branch paths.

    - ### Fields inherited from interface org.eclipse.emf.cdo.common.branch.CDOBranchPoint

      `INVALID_DATE, UNSPECIFIED_DATE`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `CDOBranch` | `createBranch(java.lang.String name)` Creates a sub branch of this branch with the given name, `based` at the `current time`.
    `CDOBranch` | `createBranch(java.lang.String name, long timeStamp)` Creates a sub branch of this branch with the given name, `based` at the `branch point` in this branch with the given time stamp.
    `CDOBranchPoint` | `getBase()` Returns the immutable base branch point of this branch, the point in the parent branch that marks the creation of this branch.
    `CDOBranchPoint[]` | `getBasePath()` Returns an array of the `base` branch points starting from the base of the `main branch` down to and including the base of this branch.
    `CDOBranch` | `getBranch(java.lang.String path)` Returns the sub branch of this branch with the given relative path, or `null` if no sub branch with this path exists in this branch.
    `CDOBranch[]` | `getBranches()` Returns an array of the sub branches of this branch, never `null`.
    `CDOBranchManager` | `getBranchManager()` Returns the branch manager that manages this branch, never `null`.
    `CDOBranchPoint` | `getHead()` Returns the floating end point of this branch, a pair of this branch and the fixed special time stamp `unspecified`.
    `int` | `getID()` Returns the ID of this branch.
    `java.lang.String` | `getName()` Returns the name of this branch as specified when it was created with `createBranch()` or `MAIN_BRANCH_NAME` if this branch is the `main branch`.
    `java.lang.String` | `getPathName()` Returns the fully qualified path name of this branch, a concatenation of the names of all branches from the `main branch` to this branch, separated by `slashes` ("/" characters).
    `CDOBranchPoint` | `getPoint(long timeStamp)` Returns the branch point in this branch with the given time stamp.
    `CDOBranchVersion` | `getVersion(int version)` Returns the branch version in this branch with the given version number.
    `boolean` | `isLocal()` Returns `true` if this branch is a local branch, `false` otherwise.
    `boolean` | `isMainBranch()` Returns `true` if this branch is the `main branch`, `false` otherwise.
    `void` | `rename(java.lang.String newName)` Deprecated. as of 4.4 use `setName(String)`.
    `void` | `setName(java.lang.String name)`

    - ### Methods inherited from interface org.eclipse.emf.cdo.common.branch.CDOBranchPoint

      `getBranch, getTimeStamp`

    - ### Methods inherited from interface org.eclipse.net4j.util.container.IContainer

      `getElements, isEmpty`

    - ### Methods inherited from interface org.eclipse.net4j.util.event.INotifier

      `addListener, getListeners, hasListeners, removeListener`

    - ### Methods inherited from interface java.lang.Comparable

      `compareTo`

    - ### Methods inherited from interface org.eclipse.core.runtime.IAdaptable

      `getAdapter`

- - ### Field Detail

    - #### MAIN_BRANCH_ID

          static final int MAIN_BRANCH_ID

      The fixed ID of the `main branch`.
      See Also:
        Constant Field Values

    - #### MAIN_BRANCH_NAME

          static final java.lang.String MAIN_BRANCH_NAME

      The fixed name of the `main branch`.
      See Also:
        Constant Field Values

    - #### PATH_SEPARATOR

          static final java.lang.String PATH_SEPARATOR

      The string used to separate the segments of branch paths.
      See Also:
        `getPathName()`, `getBranch(String)`, `CDOBranchManager.getBranch(String)`, Constant Field Values

  - ### Method Detail

    - #### isMainBranch

          boolean isMainBranch()

      Returns `true` if this branch is the `main branch`, `false` otherwise.

    - #### isLocal

          boolean isLocal()

      Returns `true` if this branch is a local branch, `false` otherwise.

      Local branches are created on the fly when committing to a `clone` repository while it is in `offline` state and they do not participate in repository replication. They can not be created manually and they have negative `IDs`.

    - #### getID

          int getID()

      Returns the ID of this branch.

      The `main branch` has the fixed ID 0 (zero), `Local branches` have negative IDs and normal branches have positive IDs.

    - #### getName

          java.lang.String getName()

      Returns the name of this branch as specified when it was created with `createBranch()` or `MAIN_BRANCH_NAME` if this branch is the `main branch`.
      Specified by:
        `getName` in interface `CDONameProvider`

    - #### setName

          void setName(java.lang.String name)

      Since:
        4.4

    - #### getPathName

          java.lang.String getPathName()

      Returns the fully qualified path name of this branch, a concatenation of the names of all branches from the `main branch` to this branch, separated by `slashes` ("/" characters). Example: "MAIN/team1/smith".

    - #### getBasePath

          CDOBranchPoint[] getBasePath()

      Returns an array of the `base` branch points starting from the base of the `main branch` down to and including the base of this branch.

    - #### getBase

          CDOBranchPoint getBase()

      Returns the immutable base branch point of this branch, the point in the parent branch that marks the creation of this branch.

      The base of the `main branch` marks the creation of the `repository`.

      See Also:
        `getHead()`, `getPoint(long)`

    - #### getHead

          CDOBranchPoint getHead()

      Returns the floating end point of this branch, a pair of this branch and the fixed special time stamp `unspecified`.
      See Also:
        `getBase()`, `getPoint(long)`

    - #### getPoint

          CDOBranchPoint getPoint(long timeStamp)

      Returns the branch point in this branch with the given time stamp.

      This factory method never returns `null`.

      See Also:
        `getBase()`, `getHead()`, `getVersion(int)`

    - #### getVersion

          CDOBranchVersion getVersion(int version)

      Returns the branch version in this branch with the given version number.

      This factory method never returns `null`.

      See Also:
        `getPoint(long)`

    - #### getBranchManager

          CDOBranchManager getBranchManager()

      Returns the branch manager that manages this branch, never `null`.

    - #### getBranches

          CDOBranch[] getBranches()

      Returns an array of the sub branches of this branch, never `null`.

    - #### getBranch

          CDOBranch getBranch(java.lang.String path)

      Returns the sub branch of this branch with the given relative path, or `null` if no sub branch with this path exists in this branch.

      The path name is the concatenation of the names of all branches from a direct sub branch of this branch, separated by `slashes` ("/" characters). Example: "team1/smith".

    - #### createBranch

          CDOBranch createBranch(java.lang.String name,
                                 long timeStamp)

      Creates a sub branch of this branch with the given name, `based` at the `branch point` in this branch with the given time stamp.

      Parameters:
        `name` - The name of the sub branch to be created. It must not contain the `path separator` character (slash).
        `timeStamp` - The time stamp in this branch that the sub branch to be created is supposed to be `based at`. It must not be before the base time stamp of this branch and it must be different from the fixed special time stamp `unspecified`
      See Also:
        `createBranch(String)`

    - #### createBranch

          CDOBranch createBranch(java.lang.String name)

      Creates a sub branch of this branch with the given name, `based` at the `current time`.

    - #### rename

          @Deprecated
          void rename(java.lang.String newName)

      Deprecated. as of 4.4 use `setName(String)`.
      Renames this branch with the given new name.
      Since:
        4.3

Copyright (c) 2014 Eike Stepper (Berlin, Germany) and others.
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