Skip to content

Commit

Permalink
Merge pull request #7783 from mandy-chessell/code2023
Browse files Browse the repository at this point in the history
Extend Apache Atlas integration connector to perform 2-way sync of glossaries.
  • Loading branch information
mandy-chessell authored Jul 16, 2023
2 parents 3cbf742 + 7478621 commit ed5f273
Show file tree
Hide file tree
Showing 347 changed files with 10,343 additions and 1,680 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ dependencies {
implementation project(':open-metadata-implementation:adapters:open-connectors:configuration-store-connectors:configuration-file-store-connector')
implementation project(':open-metadata-implementation:adapters:open-connectors:integration-connectors:files-integration-connectors')
implementation project(':open-metadata-implementation:adapters:open-connectors:integration-connectors:kafka-integration-connector')
implementation project(':open-metadata-implementation:adapters:open-connectors:integration-connectors:atlas-integration-connector')
implementation project(':open-metadata-implementation:adapters:open-connectors:integration-connectors:openapi-integration-connector')
implementation project(':open-metadata-implementation:adapters:open-connectors:integration-connectors:openlineage-integration-connectors')
implementation project(':open-metadata-implementation:adapters:open-connectors:integration-connectors:elasticsearch-integration-connector')
Expand Down Expand Up @@ -139,6 +140,7 @@ distributions {
from { project(':open-metadata-implementation:adapters:open-connectors:dynamic-archiver-connectors').jar }
from { project(':open-metadata-implementation:adapters:open-connectors:governance-action-connectors').jar }
from { project(':open-metadata-implementation:adapters:open-connectors:integration-connectors:files-integration-connectors').jar }
from { project(':open-metadata-implementation:adapters:open-connectors:integration-connectors:atlas-integration-connector').jar }
from { project(':open-metadata-implementation:adapters:open-connectors:integration-connectors:kafka-integration-connector').jar }
from { project(':open-metadata-implementation:adapters:open-connectors:integration-connectors:openapi-integration-connector').jar }
from { project(':open-metadata-implementation:adapters:open-connectors:integration-connectors:openlineage-integration-connectors').jar }
Expand Down Expand Up @@ -181,6 +183,7 @@ distributions {
from { project(':open-metadata-implementation:adapters:open-connectors:dynamic-archiver-connectors').jar }
from { project(':open-metadata-implementation:adapters:open-connectors:governance-action-connectors').jar }
from { project(':open-metadata-implementation:adapters:open-connectors:integration-connectors:files-integration-connectors').jar }
from { project(':open-metadata-implementation:adapters:open-connectors:integration-connectors:atlas-integration-connector').jar }
from { project(':open-metadata-implementation:adapters:open-connectors:integration-connectors:kafka-integration-connector').jar }
from { project(':open-metadata-implementation:adapters:open-connectors:integration-connectors:openapi-integration-connector').jar }
from { project(':open-metadata-implementation:adapters:open-connectors:integration-connectors:openlineage-integration-connectors').jar }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,8 @@
* GlossaryExchangeInterface defines the client side interface for the Asset Manager OMAS that is
* relevant for managing glossaries. It provides the ability to
* define and maintain the content of glossary as well as govern it.
*
* Glossaries have a top-level root object that describe the purpose, language and intended usage of its
* content. Linked to the glossary's root object are the terms, categories and relationships it contains.
*
* In addition to the content, the glossary can be augmented with classifications and linked to
* external glossary definitions.
*/
Expand Down Expand Up @@ -61,7 +59,6 @@ String createGlossary(String userId,
/**
* Create a new metadata element to represent a glossary using an existing metadata element as a template.
* The template defines additional classifications and relationships that should be added to the new glossary.
*
* All categories and terms are linked to a single glossary. They are owned by this glossary and if the
* glossary is deleted, any linked terms and categories are deleted as well.
*
Expand Down Expand Up @@ -246,7 +243,6 @@ void clearGlossaryAsStagingGlossary(String userId,
* Classify the glossary to indicate that it can be used as a taxonomy.
* This means each term is attached to one, and only one category and the categories are organized as a hierarchy
* with a single root category.
*
* Taxonomies are used as a way of organizing assets and other related metadata. The terms in the taxonomy
* are linked to the assets etc. and as such they are logically categorized by the linked category.
*
Expand Down Expand Up @@ -309,7 +305,6 @@ void clearGlossaryAsTaxonomy(String userId,
* Classify a glossary to declare that it has no two GlossaryTerm definitions with
* the same name. This means there is only one definition for each term. Typically, the terms are also of a similar
* level of granularity and are limited to a specific scope of use.
*
* Canonical vocabularies are used to semantically classify assets in an unambiguous way.
*
* @param userId calling user
Expand Down Expand Up @@ -519,6 +514,61 @@ GlossaryElement getGlossaryByGUID(String userId,
UserNotAuthorizedException,
PropertyServerException;

/**
* Retrieve the glossary metadata element for the requested glossary category.
*
* @param userId calling user
* @param assetManagerGUID unique identifier of software capability representing the caller
* @param assetManagerName unique name of software capability representing the caller
* @param glossaryCategoryGUID unique identifier of the glossary category
* @param effectiveTime the time that the retrieved elements must be effective for
* @param forLineage return elements marked with the Memento classification?
* @param forDuplicateProcessing do not merge elements marked as duplicates?
*
* @return matching metadata element
*
* @throws InvalidParameterException one of the parameters is invalid
* @throws UserNotAuthorizedException the user is not authorized to issue this request
* @throws PropertyServerException there is a problem reported in the open metadata server(s)
*/
GlossaryElement getGlossaryForCategory(String userId,
String assetManagerGUID,
String assetManagerName,
String glossaryCategoryGUID,
Date effectiveTime,
boolean forLineage,
boolean forDuplicateProcessing) throws InvalidParameterException,
UserNotAuthorizedException,
PropertyServerException;


/**
* Retrieve the glossary metadata element for the requested glossary term.
*
* @param userId calling user
* @param assetManagerGUID unique identifier of software capability representing the caller
* @param assetManagerName unique name of software capability representing the caller
* @param glossaryTermGUID unique identifier of the glossary term
* @param effectiveTime the time that the retrieved elements must be effective for
* @param forLineage return elements marked with the Memento classification?
* @param forDuplicateProcessing do not merge elements marked as duplicates?
*
* @return matching metadata element
*
* @throws InvalidParameterException one of the parameters is invalid
* @throws UserNotAuthorizedException the user is not authorized to issue this request
* @throws PropertyServerException there is a problem reported in the open metadata server(s)
*/
GlossaryElement getGlossaryForTerm(String userId,
String assetManagerGUID,
String assetManagerName,
String glossaryTermGUID,
Date effectiveTime,
boolean forLineage,
boolean forDuplicateProcessing) throws InvalidParameterException,
UserNotAuthorizedException,
PropertyServerException;


/* =====================================================================================================================
* A glossary may host one or more glossary categories depending on its capability
Expand Down Expand Up @@ -743,6 +793,38 @@ List<GlossaryCategoryElement> findGlossaryCategories(String userId,
PropertyServerException;


/**
* Return the list of categories associated with a glossary term.
*
* @param userId calling user
* @param assetManagerGUID unique identifier of software capability representing the caller
* @param assetManagerName unique name of software capability representing the caller
* @param glossaryTermGUID unique identifier of the glossary term to query
* @param startFrom paging start point
* @param pageSize maximum results that can be returned
* @param effectiveTime the time that the retrieved elements must be effective for
* @param forLineage return elements marked with the Memento classification?
* @param forDuplicateProcessing do not merge elements marked as duplicates?
*
* @return list of metadata elements describing the categories associated with the requested term
*
* @throws InvalidParameterException one of the parameters is invalid
* @throws UserNotAuthorizedException the user is not authorized to issue this request
* @throws PropertyServerException there is a problem reported in the open metadata server(s)
*/
List<GlossaryCategoryElement> getCategoriesForTerm(String userId,
String assetManagerGUID,
String assetManagerName,
String glossaryTermGUID,
int startFrom,
int pageSize,
Date effectiveTime,
boolean forLineage,
boolean forDuplicateProcessing) throws InvalidParameterException,
UserNotAuthorizedException,
PropertyServerException;


/**
* Return the list of categories associated with a glossary.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -421,6 +421,54 @@ GlossaryElement getGlossaryByGUID(String userId,
PropertyServerException;


/**
* Retrieve the glossary metadata element for the requested category.
*
* @param userId calling user
* @param glossaryCategoryGUID unique identifier of the requested metadata element
* @param effectiveTime the time that the retrieved elements must be effective for
* @param forLineage return elements marked with the Memento classification?
* @param forDuplicateProcessing do not merge elements marked as duplicates?
*
* @return matching metadata element
*
* @throws InvalidParameterException one of the parameters is invalid
* @throws UserNotAuthorizedException the user is not authorized to issue this request
* @throws PropertyServerException there is a problem reported in the open metadata server(s)
*/
GlossaryElement getGlossaryForCategory(String userId,
String glossaryCategoryGUID,
Date effectiveTime,
boolean forLineage,
boolean forDuplicateProcessing) throws InvalidParameterException,
UserNotAuthorizedException,
PropertyServerException;


/**
* Retrieve the glossary metadata element for the requested term.
*
* @param userId calling user
* @param glossaryTermGUID unique identifier of the requested metadata element
* @param effectiveTime the time that the retrieved elements must be effective for
* @param forLineage return elements marked with the Memento classification?
* @param forDuplicateProcessing do not merge elements marked as duplicates?
*
* @return matching metadata element
*
* @throws InvalidParameterException one of the parameters is invalid
* @throws UserNotAuthorizedException the user is not authorized to issue this request
* @throws PropertyServerException there is a problem reported in the open metadata server(s)
*/
GlossaryElement getGlossaryForTerm(String userId,
String glossaryTermGUID,
Date effectiveTime,
boolean forLineage,
boolean forDuplicateProcessing) throws InvalidParameterException,
UserNotAuthorizedException,
PropertyServerException;


/* =====================================================================================================================
* A glossary may host one or more glossary categories depending on its capability
*/
Expand Down Expand Up @@ -632,6 +680,34 @@ List<GlossaryCategoryElement> getCategoriesForGlossary(String userId,
PropertyServerException;


/**
* Return the list of categories associated with a glossary term.
*
* @param userId calling user
* @param glossaryTermGUID unique identifier of the glossary term to query
* @param startFrom paging start point
* @param pageSize maximum results that can be returned
* @param effectiveTime the time that the retrieved elements must be effective for
* @param forLineage return elements marked with the Memento classification?
* @param forDuplicateProcessing do not merge elements marked as duplicates?
*
* @return list of metadata elements describing the categories associated with the requested term
*
* @throws InvalidParameterException one of the parameters is invalid
* @throws UserNotAuthorizedException the user is not authorized to issue this request
* @throws PropertyServerException there is a problem reported in the open metadata server(s)
*/
List<GlossaryCategoryElement> getCategoriesForTerm(String userId,
String glossaryTermGUID,
int startFrom,
int pageSize,
Date effectiveTime,
boolean forLineage,
boolean forDuplicateProcessing) throws InvalidParameterException,
UserNotAuthorizedException,
PropertyServerException;


/**
* Retrieve the list of glossary category metadata elements with a matching qualified or display name.
* There are no wildcards supported on this request.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import org.odpi.openmetadata.accessservices.assetmanager.properties.DerivedSchemaTypeQueryTargetProperties;
import org.odpi.openmetadata.accessservices.assetmanager.properties.SchemaTypeProperties;

import java.io.Serializable;
import java.util.List;
import java.util.Objects;

Expand Down
Loading

0 comments on commit ed5f273

Please sign in to comment.