Package fr.gouv.vitam.storage.engine.server.distribution

# Interface StorageDistribution

All Superinterfaces:
  `AutoCloseable`, `VitamAutoCloseable`

All Known Implementing Classes:
  `ReadOnlyShieldStorageDistribution`, `StorageDistributionImpl`

public interface StorageDistribution extends VitamAutoCloseable
Interface Storage Distribution for Storage Operations

- ## Method Summary

  Modifier and Type
  Method
  Description
  `BulkObjectStoreResponse`
  `bulkCreateFromWorkspace(String strategyId, BulkObjectStoreRequest bulkObjectStoreRequest, String requester)`
  `Map<String,AccessRequestStatus>`
  `checkAccessRequestStatuses(String strategyId, String offerId, List<String> accessRequestIds, boolean adminCrossTenantAccessRequestAllowed)`
  `boolean`
  `checkObjectAvailability(String strategyId, String offerId, DataCategory dataCategory, List<String> objectsNames)`
  `Map<String,Boolean>`
  `checkObjectExisting(String strategyId, String objectId, DataCategory category, List<String> offerIds)`
  Verify if object exists.
  `StoredInfoResult`
  `copyObjectFromOfferToOffer(DataContext context, String sourceOffer, String destinationOffer)`
  copy object from on offer to an another
  `Optional<String>`
  `createAccessRequestIfRequired(String strategyId, String offerId, DataCategory dataCategory, List<String> objectsNames)`
  `void`
  `deleteObjectInAllOffers(String strategyId, DataContext context)`
  Delete an object
  `void`
  `deleteObjectInOffers(String strategyId, DataContext context, List<String> offers)`
  Delete an object in offers
  `List<BatchObjectInformationResponse>`
  `getBatchObjectInformation(String strategyId, DataCategory type, List<String> objectIds, List<String> offerIds)`
  `jakarta.ws.rs.core.Response`
  `getContainerByCategory(String strategyId, String origin, String objectId, DataCategory category, AccessLogInfoModel logInformation)`
  Get a specific Object binary data as an input stream
  `jakarta.ws.rs.core.Response`
  `getContainerByCategory(String strategyId, String origin, String objectId, DataCategory category, String offerId)`
  Get a specific Object binary data as an input stream
  `com.fasterxml.jackson.databind.JsonNode`
  `getContainerInformation(String strategyId)`
  Get Storage Information (availability and capacity) for the requested tenant + strategy
  `com.fasterxml.jackson.databind.JsonNode`
  `getContainerInformation(String strategyId, DataCategory type, String objectId, List<String> offerIds, boolean noCache)`
  Get a specific Object information
  `List<String>`
  `getOfferIds(String strategyId)`
  get offer ids list
  `RequestResponse<OfferLog>`
  `getOfferLogs(String strategyId, DataCategory category, Long offset, int limit, Order order)`
  Get offer log from referent
  `RequestResponse<OfferLog>`
  `getOfferLogsByOfferId(String strategyId, String offerId, DataCategory category, Long offset, int limit, Order order)`
  Get offer log from the given offer
  `String`
  `getReferentOffer(String strategyId)`
  `Map<String,StorageStrategy>`
  `getStrategies()`
  Retrieve all the available storage strategies
  `jakarta.ws.rs.core.Response`
  `launchOfferLogCompaction(String offerReferenceId, Integer tenantId)`
  `CloseableIterator<ObjectEntry>`
  `listContainerObjects(String strategyId, DataCategory category)`
  List container objects
  `CloseableIterator<ObjectEntry>`
  `listContainerObjectsForOffer(DataCategory category, String offerId, boolean includeDisabled)`
  `void`
  `removeAccessRequest(String strategyId, String offerId, String accessRequestId, boolean adminCrossTenantAccessRequestAllowed)`
  `StoredInfoResult`
  `storeDataInAllOffers(String strategyId, String objectId, ObjectDescription createObjectDescription, DataCategory category, String requester)`
  Store data of any type for given tenant on storage offers associated to given strategy
  `StoredInfoResult`
  `storeDataInOffers(String strategyId, String origin, StreamAndInfo streamAndInfo, String objectId, DataCategory category, String requester, List<String> offerIds)`
  `StoredInfoResult`
  `storeDataInOffers(String strategyId, String origin, String objectId, DataCategory category, String requester, List<String> offerIds, jakarta.ws.rs.core.Response response)`
  Store data of any type for given tenant on the given storage offer.

  ### Methods inherited from interface fr.gouv.vitam.common.model.VitamAutoCloseable

  `close`

- ## Method Details

  - ### copyObjectFromOfferToOffer

    StoredInfoResult copyObjectFromOfferToOffer(DataContext context, String sourceOffer, String destinationOffer) throws StorageException
    copy object from on offer to an another
    Parameters:
      `context` - the context
      `sourceOffer` - source offer
      `destinationOffer` - destination Offer
    Returns:
      StoredInfoResult Object
    Throws:
      `StorageException` - StorageException

  - ### storeDataInAllOffers

    StoredInfoResult storeDataInAllOffers(String strategyId, String objectId, ObjectDescription createObjectDescription, DataCategory category, String requester) throws StorageException
    Store data of any type for given tenant on storage offers associated to given strategy
    Parameters:
      `strategyId` - id of the strategy
      `objectId` - the workspace URI of the data to be retrieve (and stored in offer)
      `createObjectDescription` - object additional informations
      `category` - the category of the data to store (unit, object...)
      `requester` - the requester information
    Returns:
      a StoredInfoResult containing informations about the created Data
    Throws:
      `StorageException` - StorageException

  - ### storeDataInOffers

    StoredInfoResult storeDataInOffers(String strategyId, String origin, String objectId, DataCategory category, String requester, List<String> offerIds, jakarta.ws.rs.core.Response response) throws StorageException
    Store data of any type for given tenant on the given storage offer.
    Parameters:
      `strategyId` - id of the strategy
      `origin` - origin of the transaction (normal, bulk, offer_sync)
      `objectId` - the workspace URI of the data to be retrieve (and stored in
      `category` - the category of the data to store (unit, object...)
      `requester` - the requester information
      `offerIds` - offer identifiers
      `response` - the response
    Returns:
      a StoredInfoResult containing information about the created Data
    Throws:
      `StorageException` - StorageException

  - ### storeDataInOffers

    StoredInfoResult storeDataInOffers(String strategyId, String origin, StreamAndInfo streamAndInfo, String objectId, DataCategory category, String requester, List<String> offerIds) throws StorageException
    Parameters:
      `strategyId` - id of the strategy
      `origin` - origin of the transaction (normal, bulk, offer_sync)
      `streamAndInfo` - streamAndInfo
      `objectId` - id of the object
      `category` - the object type to list
      `requester` - the requester information
      `offerIds` - offer identfiers
    Returns:
      StoredInfoResult
    Throws:
      `StorageException` - StorageException

  - ### getOfferIds

    List<String> getOfferIds(String strategyId) throws StorageException
    get offer ids list
    Parameters:
      `strategyId` - strategy id
    Returns:
      offers ids list
    Throws:
      `StorageException`

  - ### getContainerInformation

    com.fasterxml.jackson.databind.JsonNode getContainerInformation(String strategyId) throws StorageException
    Get Storage Information (availability and capacity) for the requested tenant + strategy
    Parameters:
      `strategyId` - id of the strategy
    Returns:
      a JsonNode containing informations about the storage
    Throws:
      `StorageNotFoundException` - Thrown if the Container does not exist
      `StorageTechnicalException` - Thrown in case of any technical problem
      `StorageException`

  - ### listContainerObjects

    CloseableIterator<ObjectEntry> listContainerObjects(String strategyId, DataCategory category) throws StorageException
    List container objects
    Parameters:
      `strategyId` - the strategy id to get offers
      `category` - the object type to list
    Returns:
      a response with object listing
    Throws:
      `StorageException` - thrown in case of any technical problem

  - ### listContainerObjectsForOffer

    CloseableIterator<ObjectEntry> listContainerObjectsForOffer(DataCategory category, String offerId, boolean includeDisabled) throws StorageException
    Throws:
      `StorageException`

  - ### getOfferLogs

    RequestResponse<OfferLog> getOfferLogs(String strategyId, DataCategory category, Long offset, int limit, Order order) throws StorageException
    Get offer log from referent
    Parameters:
      `strategyId` - the strategy id to get offers
      `category` - the object type to list
      `offset` - offset of the excluded object
      `limit` - the number of result wanted
      `order` - order
    Returns:
      list of offer log
    Throws:
      `StorageException` - thrown in case of any technical problem

  - ### getOfferLogsByOfferId

    RequestResponse<OfferLog> getOfferLogsByOfferId(String strategyId, String offerId, DataCategory category, Long offset, int limit, Order order) throws StorageException
    Get offer log from the given offer
    Parameters:
      `strategyId` - the strategy id to get offers
      `offerId` -
      `category` - the object type to list
      `offset` - offset of the excluded object
      `limit` - the number of result wanted
      `order` - order
    Returns:
      list of offer log
    Throws:
      `StorageException` - thrown in case of any technical problem

  - ### getContainerByCategory

    jakarta.ws.rs.core.Response getContainerByCategory(String strategyId, String origin, String objectId, DataCategory category, AccessLogInfoModel logInformation) throws StorageException
    Get a specific Object binary data as an input stream

    Parameters:
      `strategyId` - id of the strategy
      `origin` - origin
      `objectId` - id of the object
      `category` - category of the object
      `logInformation` - information for accessLog
    Returns:
      an object as a Response with an InputStream
    Throws:
      `StorageNotFoundException` - Thrown if the Container or the object does not exist
      `StorageTechnicalException` - thrown if a technical error happened
      `StorageException`

  - ### getContainerByCategory

    jakarta.ws.rs.core.Response getContainerByCategory(String strategyId, String origin, String objectId, DataCategory category, String offerId) throws StorageException
    Get a specific Object binary data as an input stream

    Parameters:
      `strategyId` - id of the strategy
      `origin` - origin
      `objectId` - id of the object
      `category` - category
      `offerId` - offer identfier
    Returns:
      an object as a Response with an InputStream
    Throws:
      `StorageNotFoundException` - Thrown if the Container or the object does not exist
      `StorageTechnicalException` - thrown if a technical error happened
      `StorageException`

  - ### getContainerInformation

    com.fasterxml.jackson.databind.JsonNode getContainerInformation(String strategyId, DataCategory type, String objectId, List<String> offerIds, boolean noCache) throws StorageException
    Get a specific Object information
    Parameters:
      `strategyId` - id of the strategy
      `type` - data category
      `objectId` - id of the object
      `offerIds` - list id of offers
    Returns:
      JsonNode containing informations about the requested object
    Throws:
      `StorageException`

  - ### checkObjectExisting

    Map<String,Boolean> checkObjectExisting(String strategyId, String objectId, DataCategory category, List<String> offerIds) throws StorageException
    Verify if object exists. If an offer is not in hot offers in strategy, it is considered as not existing.
    Parameters:
      `strategyId` - id of the strategy
      `objectId` - id of the object
      `category` - category
      `offerIds` - list id of offers
    Returns:
      list of result existence by offerId
    Throws:
      `StorageException` - StorageException

  - ### deleteObjectInAllOffers

    void deleteObjectInAllOffers(String strategyId, DataContext context) throws StorageException
    Delete an object
    Parameters:
      `strategyId` - id of the strategy
    Throws:
      `StorageNotFoundException` - Thrown if the Container or the object does not exist
      `StorageTechnicalException` - thrown if a technical error happened
      `StorageException`

  - ### deleteObjectInOffers

    void deleteObjectInOffers(String strategyId, DataContext context, List<String> offers) throws StorageException
    Delete an object in offers
    Parameters:
      `strategyId` - id of the strategy
      `context` - context
      `offers` - offers
    Throws:
      `StorageNotFoundException` - Thrown if the Container or the object does not exist
      `StorageTechnicalException` - thrown if a technical error happened
      `StorageException`

  - ### getBatchObjectInformation

    List<BatchObjectInformationResponse> getBatchObjectInformation(String strategyId, DataCategory type, List<String> objectIds, List<String> offerIds) throws StorageException
    Throws:
      `StorageException`

  - ### bulkCreateFromWorkspace

    BulkObjectStoreResponse bulkCreateFromWorkspace(String strategyId, BulkObjectStoreRequest bulkObjectStoreRequest, String requester) throws StorageException
    Throws:
      `StorageException`

  - ### getStrategies

    Map<String,StorageStrategy> getStrategies() throws StorageException
    Retrieve all the available storage strategies
    Returns:
      all storage strategies by id
    Throws:
      `StorageException` - if any unwanted technical issue happens

  - ### createAccessRequestIfRequired

    Optional<String> createAccessRequestIfRequired(String strategyId, String offerId, DataCategory dataCategory, List<String> objectsNames) throws StorageException
    Throws:
      `StorageException`

  - ### checkAccessRequestStatuses

    Map<String,AccessRequestStatus> checkAccessRequestStatuses(String strategyId, String offerId, List<String> accessRequestIds, boolean adminCrossTenantAccessRequestAllowed) throws StorageException
    Throws:
      `StorageException`

  - ### removeAccessRequest

    void removeAccessRequest(String strategyId, String offerId, String accessRequestId, boolean adminCrossTenantAccessRequestAllowed) throws StorageException
    Throws:
      `StorageException`

  - ### checkObjectAvailability

    boolean checkObjectAvailability(String strategyId, String offerId, DataCategory dataCategory, List<String> objectsNames) throws StorageException
    Throws:
      `StorageException`

  - ### getReferentOffer

    String getReferentOffer(String strategyId) throws StorageTechnicalException, StorageNotFoundException
    Throws:
      `StorageTechnicalException`
      `StorageNotFoundException`

  - ### launchOfferLogCompaction

    jakarta.ws.rs.core.Response launchOfferLogCompaction(String offerReferenceId, Integer tenantId) throws StorageException
    Throws:
      `StorageException`