Search in sources :

Example 1 with CatalogEventPayload

use of org.odpi.openmetadata.connector.sas.event.model.catalog.CatalogEventPayload in project egeria-connector-sas-viya by odpi.

the class RepositoryEventMapper method processEvent.

/**
 * Method to pass an event received on topic.
 *
 * @param event inbound event
 */
@Override
public void processEvent(String event) {
    log.info("Processing event: {}", event);
    CatalogEventPayload eventPayload;
    try {
        eventPayload = this.mapper.readValue(event, CatalogEventPayload.class);
    } catch (IOException e) {
        log.warn("Could not parse event payload", e);
        return;
    }
    log.info("Received integration event for Catalog operation: {}", eventPayload.getOperation());
    // Convert event payload into SASCatalogObject that rest of application uses
    SASCatalogObject catalogObject = new SASCatalogObject();
    String type;
    if (eventPayload.getType().equals(CatalogEventPayload.TYPE_INSTANCE)) {
        Instance instance = eventPayload.getInstance();
        Definition definition = eventPayload.getDefinition();
        type = instance.getInstanceType();
        catalogObject.guid = instance.getId();
        catalogObject.defId = instance.getDefinitionId();
        catalogObject.addInstance(instance);
        catalogObject.addDefinition(definition);
    } else if (eventPayload.getType().equals(CatalogEventPayload.TYPE_DEFINITION)) {
        Definition definition = eventPayload.getDefinition();
        type = definition.getDefinitionType();
        catalogObject.guid = definition.getId();
        catalogObject.defId = definition.getId();
        catalogObject.addDefinition(definition);
    } else {
        log.warn("Invalid catalog object type: " + eventPayload.getType());
        return;
    }
    if (eventPayload.getOperation().startsWith(CREATE) && type.equals(CatalogType.ENTITY)) {
        processNewEntity(catalogObject);
    } else if (eventPayload.getOperation().startsWith(UPDATE) && type.equals(CatalogType.ENTITY)) {
        processUpdatedEntity(catalogObject);
    } else if (eventPayload.getOperation().startsWith(DELETE) && type.equals(CatalogType.ENTITY)) {
        processRemovedEntity(catalogObject);
    } else if (eventPayload.getOperation().startsWith(CREATE) && type.equals(CatalogType.RELATIONSHIP)) {
        processNewRelationship(catalogObject);
    } else if (eventPayload.getOperation().startsWith(UPDATE) && type.equals(CatalogType.RELATIONSHIP)) {
        processUpdatedRelationship(catalogObject);
    } else if (eventPayload.getOperation().startsWith(DELETE) && type.equals(CatalogType.RELATIONSHIP)) {
        processRemovedRelationship(catalogObject);
    } else {
        log.info("Event processing does not support operation, {}, for type, {}", eventPayload.getOperation(), type);
    }
}
Also used : SASCatalogObject(org.odpi.openmetadata.connector.sas.repository.connector.mapping.SASCatalogObject) CatalogEventPayload(org.odpi.openmetadata.connector.sas.event.model.catalog.CatalogEventPayload) Instance(org.odpi.openmetadata.connector.sas.event.model.catalog.instance.Instance) Definition(org.odpi.openmetadata.connector.sas.event.model.catalog.definition.Definition) IOException(java.io.IOException)

Example 2 with CatalogEventPayload

use of org.odpi.openmetadata.connector.sas.event.model.catalog.CatalogEventPayload in project egeria-connector-sas-viya by odpi.

the class RepositoryEventMapper method start.

/**
 * {@inheritDoc}
 */
@Override
public void start() throws ConnectorCheckedException {
    super.start();
    final String methodName = "start";
    auditLog.logMessage(methodName, AuditCode.EVENT_MAPPER_STARTING.getMessageDefinition());
    if (!(repositoryConnector instanceof RepositoryConnector)) {
        raiseConnectorCheckedException(ErrorCode.EVENT_MAPPER_IMPROPERLY_INITIALIZED, methodName, null, repositoryConnector.getServerName());
    }
    this.catalogOMRSRepositoryConnector = (RepositoryConnector) this.repositoryConnector;
    try {
        this.catalogOMRSMetadataCollection = (MetadataCollection) catalogOMRSRepositoryConnector.getMetadataCollection();
    } catch (RepositoryErrorException e) {
        raiseConnectorCheckedException(ErrorCode.REST_CLIENT_FAILURE, methodName, e, catalogOMRSRepositoryConnector.getServerName());
    }
    this.typeDefStore = catalogOMRSMetadataCollection.getTypeDefStore();
    catalogOMRSMetadataCollection.setEventMapper(this);
    this.metadataCollectionId = catalogOMRSRepositoryConnector.getMetadataCollectionId();
    this.originatorServerName = catalogOMRSRepositoryConnector.getServerName();
    this.originatorServerType = catalogOMRSRepositoryConnector.getServerType();
    DeliverCallback deliverCallback = (consumerTag, delivery) -> {
        String message = new String(delivery.getBody(), "UTF-8");
        log.debug("SAS Catalog Event received: '{}':'{}'", delivery.getEnvelope().getRoutingKey(), message);
        try {
            Event<CatalogEventPayload> event = this.mapper.readValue(message, Event.class);
            String eventPayload = event.getPayloadAsString();
            try {
                processEvent(eventPayload);
            } catch (Exception e) {
                log.error("Could not process event payload.", e);
                return;
            }
        } catch (IOException e) {
            log.warn("Could not parse event payload. Reason: {}", e.getLocalizedMessage());
            return;
        }
    };
    try {
        channel.basicConsume(queueName, true, deliverCallback, consumerTag -> {
        });
    } catch (Exception e) {
        log.error("RabbitMQ basic consumer failed to start", e);
    }
}
Also used : CatalogType(org.odpi.openmetadata.connector.sas.event.model.catalog.CatalogType) ErrorCode(org.odpi.openmetadata.connector.sas.auditlog.ErrorCode) OMRSRepositoryConnector(org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.repositoryconnector.OMRSRepositoryConnector) DeliverCallback(com.rabbitmq.client.DeliverCallback) RepositoryConnector(org.odpi.openmetadata.connector.sas.repository.connector.RepositoryConnector) CatalogEventPayload(org.odpi.openmetadata.connector.sas.event.model.catalog.CatalogEventPayload) LoggerFactory(org.slf4j.LoggerFactory) SASCatalogGuid(org.odpi.openmetadata.connector.sas.repository.connector.model.SASCatalogGuid) Relationship(org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.instances.Relationship) Event(org.odpi.openmetadata.connector.sas.event.model.Event) AttributeTypeDef(org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.typedefs.AttributeTypeDef) Connection(com.rabbitmq.client.Connection) StringUtils(org.apache.commons.lang3.StringUtils) ArrayList(java.util.ArrayList) MapperFeature(com.fasterxml.jackson.databind.MapperFeature) SASCatalogObject(org.odpi.openmetadata.connector.sas.repository.connector.mapping.SASCatalogObject) EntityMappingSASCatalog2OMRS(org.odpi.openmetadata.connector.sas.repository.connector.mapping.EntityMappingSASCatalog2OMRS) Instance(org.odpi.openmetadata.connector.sas.event.model.catalog.instance.Instance) EntityDetail(org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.instances.EntityDetail) Map(java.util.Map) Definition(org.odpi.openmetadata.connector.sas.event.model.catalog.definition.Definition) TypeDef(org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.typedefs.TypeDef) RelationshipMapping(org.odpi.openmetadata.connector.sas.repository.connector.mapping.RelationshipMapping) AuditCode(org.odpi.openmetadata.connector.sas.auditlog.AuditCode) ConnectionProperties(org.odpi.openmetadata.frameworks.connectors.properties.ConnectionProperties) Logger(org.slf4j.Logger) ConnectionFactory(com.rabbitmq.client.ConnectionFactory) OMRSRepositoryEventMapperBase(org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.repositoryeventmapper.OMRSRepositoryEventMapperBase) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) MetadataCollection(org.odpi.openmetadata.connector.sas.repository.connector.MetadataCollection) IOException(java.io.IOException) ConnectorCheckedException(org.odpi.openmetadata.frameworks.connectors.ffdc.ConnectorCheckedException) TypeDefStore(org.odpi.openmetadata.connector.sas.repository.connector.stores.TypeDefStore) List(java.util.List) RepositoryErrorException(org.odpi.openmetadata.repositoryservices.ffdc.exception.RepositoryErrorException) Channel(com.rabbitmq.client.Channel) EndpointProperties(org.odpi.openmetadata.frameworks.connectors.properties.EndpointProperties) OpenMetadataTopicListener(org.odpi.openmetadata.repositoryservices.connectors.openmetadatatopic.OpenMetadataTopicListener) RepositoryErrorException(org.odpi.openmetadata.repositoryservices.ffdc.exception.RepositoryErrorException) OMRSRepositoryConnector(org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.repositoryconnector.OMRSRepositoryConnector) RepositoryConnector(org.odpi.openmetadata.connector.sas.repository.connector.RepositoryConnector) Event(org.odpi.openmetadata.connector.sas.event.model.Event) DeliverCallback(com.rabbitmq.client.DeliverCallback) IOException(java.io.IOException) IOException(java.io.IOException) ConnectorCheckedException(org.odpi.openmetadata.frameworks.connectors.ffdc.ConnectorCheckedException) RepositoryErrorException(org.odpi.openmetadata.repositoryservices.ffdc.exception.RepositoryErrorException)

Aggregations

IOException (java.io.IOException)2 CatalogEventPayload (org.odpi.openmetadata.connector.sas.event.model.catalog.CatalogEventPayload)2 Definition (org.odpi.openmetadata.connector.sas.event.model.catalog.definition.Definition)2 Instance (org.odpi.openmetadata.connector.sas.event.model.catalog.instance.Instance)2 SASCatalogObject (org.odpi.openmetadata.connector.sas.repository.connector.mapping.SASCatalogObject)2 MapperFeature (com.fasterxml.jackson.databind.MapperFeature)1 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)1 Channel (com.rabbitmq.client.Channel)1 Connection (com.rabbitmq.client.Connection)1 ConnectionFactory (com.rabbitmq.client.ConnectionFactory)1 DeliverCallback (com.rabbitmq.client.DeliverCallback)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Map (java.util.Map)1 StringUtils (org.apache.commons.lang3.StringUtils)1 AuditCode (org.odpi.openmetadata.connector.sas.auditlog.AuditCode)1 ErrorCode (org.odpi.openmetadata.connector.sas.auditlog.ErrorCode)1 Event (org.odpi.openmetadata.connector.sas.event.model.Event)1 CatalogType (org.odpi.openmetadata.connector.sas.event.model.catalog.CatalogType)1 MetadataCollection (org.odpi.openmetadata.connector.sas.repository.connector.MetadataCollection)1