/*
* Copyright 2015 herd contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.finra.herd.service;
import org.finra.herd.model.api.xml.BusinessObjectData;
import org.finra.herd.model.api.xml.BusinessObjectDataAvailability;
import org.finra.herd.model.api.xml.BusinessObjectDataAvailabilityCollectionRequest;
import org.finra.herd.model.api.xml.BusinessObjectDataAvailabilityCollectionResponse;
import org.finra.herd.model.api.xml.BusinessObjectDataAvailabilityRequest;
import org.finra.herd.model.api.xml.BusinessObjectDataCreateRequest;
import org.finra.herd.model.api.xml.BusinessObjectDataDdl;
import org.finra.herd.model.api.xml.BusinessObjectDataDdlCollectionRequest;
import org.finra.herd.model.api.xml.BusinessObjectDataDdlCollectionResponse;
import org.finra.herd.model.api.xml.BusinessObjectDataDdlRequest;
import org.finra.herd.model.api.xml.BusinessObjectDataInvalidateUnregisteredRequest;
import org.finra.herd.model.api.xml.BusinessObjectDataInvalidateUnregisteredResponse;
import org.finra.herd.model.api.xml.BusinessObjectDataKey;
import org.finra.herd.model.api.xml.BusinessObjectDataKeys;
import org.finra.herd.model.api.xml.BusinessObjectDataRetryStoragePolicyTransitionRequest;
import org.finra.herd.model.api.xml.BusinessObjectDataSearchRequest;
import org.finra.herd.model.api.xml.BusinessObjectDataSearchResult;
import org.finra.herd.model.api.xml.BusinessObjectDataVersions;
import org.finra.herd.model.api.xml.BusinessObjectDefinitionKey;
import org.finra.herd.model.api.xml.BusinessObjectFormatKey;
/**
* The business object data service.
*/
public interface BusinessObjectDataService
{
public final String MAX_PARTITION_VALUE_TOKEN = "${maximum.partition.value}";
public final String MIN_PARTITION_VALUE_TOKEN = "${minimum.partition.value}";
/**
* Creates a new business object data from the request information. Creates its own transaction.
*
* @param businessObjectDataCreateRequest the business object data create request
*
* @return the newly created and persisted business object data.
*/
public BusinessObjectData createBusinessObjectData(BusinessObjectDataCreateRequest businessObjectDataCreateRequest);
/**
* Retrieves existing business object data entry information. This method starts a new transaction.
*
* @param businessObjectDataKey the business object data key
* @param businessObjectFormatPartitionKey the business object format partition key
* @param businessObjectDataStatus the business object data status, may be null
* @param includeBusinessObjectDataStatusHistory specifies to include business object data status history in the response
*
* @return the retrieved business object data information
*/
public BusinessObjectData getBusinessObjectData(BusinessObjectDataKey businessObjectDataKey, String businessObjectFormatPartitionKey,
String businessObjectDataStatus, Boolean includeBusinessObjectDataStatusHistory);
/**
* Retrieves a list of existing business object data versions, if any.
*
* @param businessObjectDataKey the business object data key with possibly missing business object format and/or data version values
*
* @return the retrieved business object data versions
*/
public BusinessObjectDataVersions getBusinessObjectDataVersions(BusinessObjectDataKey businessObjectDataKey);
/**
* Deletes an existing business object data.
*
* @param businessObjectDataKey the business object data key
* @param deleteFiles specifies if data files should be deleted or not
*
* @return the deleted business object data information
*/
public BusinessObjectData deleteBusinessObjectData(BusinessObjectDataKey businessObjectDataKey, Boolean deleteFiles);
/**
* Performs a search and returns a list of business object data key values and relative statuses for a range of requested business object data. Creates its
* own transaction.
*
* @param businessObjectDataAvailabilityRequest the business object data availability request
*
* @return the business object data availability information
*/
public BusinessObjectDataAvailability checkBusinessObjectDataAvailability(BusinessObjectDataAvailabilityRequest businessObjectDataAvailabilityRequest);
/**
* Performs an availability check for a collection of business object data.
*
* @param request the business object data availability collection request
*
* @return the business object data availability information
*/
public BusinessObjectDataAvailabilityCollectionResponse checkBusinessObjectDataAvailabilityCollection(
BusinessObjectDataAvailabilityCollectionRequest request);
/**
* Retrieves the DDL to initialize the specified type of the database system to perform queries for a range of requested business object data in the
* specified storage. This method starts a new transaction.
*
* @param businessObjectDataDdlRequest the business object data DDL request
*
* @return the business object data DDL information
*/
public BusinessObjectDataDdl generateBusinessObjectDataDdl(BusinessObjectDataDdlRequest businessObjectDataDdlRequest);
/**
* Retrieves the DDL to initialize the specified type of the database system to perform queries for a collection of business object data in the specified
* storages. This method starts a new transaction.
*
* @param businessObjectDataDdlCollectionRequest the business object data DDL collection request
*
* @return the business object data DDL information
*/
public BusinessObjectDataDdlCollectionResponse generateBusinessObjectDataDdlCollection(
BusinessObjectDataDdlCollectionRequest businessObjectDataDdlCollectionRequest);
/**
* Creates business object data registrations in INVALID status if the S3 object exists, but no registration exists.
*
* @param businessObjectDataInvalidateUnregisteredRequest {@link BusinessObjectDataInvalidateUnregisteredRequest}
*
* @return {@link BusinessObjectDataInvalidateUnregisteredResponse}
*/
public BusinessObjectDataInvalidateUnregisteredResponse invalidateUnregisteredBusinessObjectData(
BusinessObjectDataInvalidateUnregisteredRequest businessObjectDataInvalidateUnregisteredRequest);
/**
* Retries a storage policy transition by forcing re-initiation of the archiving process for the specified business object data that is still in progress of
* a valid archiving operation.
*
* @param businessObjectDataKey the business object data key
* @param request the information needed to retry a storage policy transition
*
* @return the business object data information
*/
public BusinessObjectData retryStoragePolicyTransition(BusinessObjectDataKey businessObjectDataKey,
BusinessObjectDataRetryStoragePolicyTransitionRequest request);
/**
* Initiates a restore request for a currently archived business object data.
*
* @param businessObjectDataKey the business object data key
* @param expirationInDays the the time, in days, between when the business object data is restored to the S3 bucket and when it expires
*
* @return the business object data information
*/
public BusinessObjectData restoreBusinessObjectData(BusinessObjectDataKey businessObjectDataKey, Integer expirationInDays);
/**
* Search business object data based on the request
*
* @param request search request
*
* @return business data search result
*/
public BusinessObjectDataSearchResult searchBusinessObjectData(BusinessObjectDataSearchRequest request);
/**
* Retrieves a list of keys for all existing business object data up to the limit configured in the system per specified business object definition.
*
* @param businessObjectDefinitionKey the business object definition key (case-insensitive)
*
* @return the list of business object data keys
*/
public BusinessObjectDataKeys getAllBusinessObjectDataByBusinessObjectDefinition(BusinessObjectDefinitionKey businessObjectDefinitionKey);
/**
* Retrieves a list of keys for all existing business object data up to the limit configured in the system per specified business object format.
*
* @param businessObjectFormatKey the business object format key (case-insensitive)
*
* @return the list of business object data keys
*/
public BusinessObjectDataKeys getAllBusinessObjectDataByBusinessObjectFormat(BusinessObjectFormatKey businessObjectFormatKey);
}