org.eclipse.emf.cdo.common.model

## Interface CDOPackageUnit

- All Superinterfaces:
    CDOTimeProvider, java.lang.Comparable<CDOPackageUnit>
  All Known Subinterfaces:
    InternalCDOPackageUnit

      public interface CDOPackageUnit
      extends java.lang.Comparable<CDOPackageUnit>, CDOTimeProvider

  Represents a tree structure of nested `packages` that are registered with a `package registry` and that can only be serialized as a whole.

  A package unit is the granule of committing or lazy loading packages. It contains some overall information like `type`, `state`, `commit time` and nested `package info` objects that describe all the nested packages.

  Since:
    2.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
    `CDOPackageUnit.Type`, `CDOPackageUnit.State`
  Apiviz
    `CDOPackageInfo`

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static class` | `CDOPackageUnit.State` Describes the possible states a `package unit` may be in during its lifecycle.
    `static class` | `CDOPackageUnit.Type` Describes the instances of `classes` of a `package unit`.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `EPackage[]` | `getEPackages(boolean loadOnDemand)` Returns all `packages` of the nested package tree structure described by this package unit in depth-first traversal order.
    `java.lang.String` | `getID()` Returns the ID of this package unit.
    `CDOPackageUnit.Type` | `getOriginalType()` Returns the type of this package unit as it was at the time it was originally committed by a client.
    `CDOPackageInfo` | `getPackageInfo(java.lang.String packageURI)` Returns the `package info` object that describes the `package` with the given namespace URI, or `null` if this package unit does not contain a package with this URI.
    `CDOPackageInfo[]` | `getPackageInfos()` Returns all `package info` objects of the nested package tree structure described by this package unit in depth-first traversal order.
    `CDOPackageRegistry` | `getPackageRegistry()` Returns the package registry this package unit is managed by.
    `CDOPackageUnit.State` | `getState()` Returns the current state of this package unit.
    `long` | `getTimeStamp()` Returns the time this package unit was originally committed.
    `CDOPackageInfo` | `getTopLevelPackageInfo()` Returns the `package info` object that describes the top level `package` of the nested package tree structure described by this package unit.
    `CDOPackageUnit.Type` | `getType()` Returns the current type of this package unit.
    `boolean` | `isResource()` Returns `true` is this package unit describes the model Eresource , `false` otherwise.
    `boolean` | `isSystem()` Returns `true` is this package unit describes one of the models Ecore, Eresource or Etypes, `false` otherwise.

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

      `compareTo`

- - ### Method Detail

    - #### getPackageRegistry

          CDOPackageRegistry getPackageRegistry()

      Returns the package registry this package unit is managed by.

    - #### getID

          java.lang.String getID()

      Returns the ID of this package unit.

      Same as `getTopLevelPackageInfo()`. `CDOPackageInfo.getPackageURI()`.

    - #### getState

          CDOPackageUnit.State getState()

      Returns the current state of this package unit.

    - #### getType

          CDOPackageUnit.Type getType()

      Returns the current type of this package unit.

    - #### getOriginalType

          CDOPackageUnit.Type getOriginalType()

      Returns the type of this package unit as it was at the time it was originally committed by a client.

    - #### getTimeStamp

          long getTimeStamp()

      Returns the time this package unit was originally committed.
      Specified by:
        `getTimeStamp` in interface `CDOTimeProvider`

    - #### getTopLevelPackageInfo

          CDOPackageInfo getTopLevelPackageInfo()

      Returns the `package info` object that describes the top level `package` of the nested package tree structure described by this package unit.

    - #### getPackageInfo

          CDOPackageInfo getPackageInfo(java.lang.String packageURI)

      Returns the `package info` object that describes the `package` with the given namespace URI, or `null` if this package unit does not contain a package with this URI.

    - #### getPackageInfos

          CDOPackageInfo[] getPackageInfos()

      Returns all `package info` objects of the nested package tree structure described by this package unit in depth-first traversal order.

    - #### getEPackages

          EPackage[] getEPackages(boolean loadOnDemand)

      Returns all `packages` of the nested package tree structure described by this package unit in depth-first traversal order.
      Parameters:
        `loadOnDemand` - If `true` and this package unit is not `LOADED` the package unit is implicitely loaded. If `false` and this package unit is not `LOADED` an empty array is returned.

    - #### isSystem

          boolean isSystem()

      Returns `true` is this package unit describes one of the models Ecore, Eresource or Etypes, `false` otherwise.

      Note that the models Ecore, Eresource and Etypes are expected to be present as generated `NATIVE` models in all deployments.

    - #### isResource

          boolean isResource()

      Returns `true` is this package unit describes the model Eresource , `false` otherwise.

      Note that the model Eresource is expected to bepresent as generated `NATIVE` models in all deployments.

      Since:
        4.0

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