blob: 2df4a39d7c1d1faa296d5d4a66aa9294cf996c8b [file] [log] [blame]
#!/usr/bin/env/python
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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 applicabwle 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.
import enum
from apache_atlas.model.enums import QueryType
from apache_atlas.model.instance import AtlasEntityHeader
from apache_atlas.model.misc import AtlasBase
from apache_atlas.model.misc import AtlasBaseModelObject
from apache_atlas.utils import non_null
from apache_atlas.utils import type_coerce
from apache_atlas.utils import type_coerce_dict
from apache_atlas.utils import type_coerce_dict_list
from apache_atlas.utils import type_coerce_list
class AtlasAggregationEntry(AtlasBase):
def __init__(self, attrs={}):
AtlasBase.__init__(self, attrs)
self.name = attrs.get('name')
self.name = attrs.get('count')
class AtlasQuickSearchResult(AtlasBase):
def __init__(self, attrs={}):
AtlasBase.__init__(self, attrs)
self.searchResults = attrs.get('searchResults')
self.aggregationMetrics = attrs.get('aggregationMetrics')
def type_coerce_attrs(self):
super(AtlasQuickSearchResult, self).type_coerce_attrs()
self.searchResults = type_coerce(self.searchResults, AtlasSearchResult)
self.aggregationMetrics = type_coerce_dict_list(self.aggregationMetrics, AtlasAggregationEntry)
class AtlasSearchResult(AtlasBase):
def __init__(self, attrs={}):
AtlasBase.__init__(self, attrs)
self.queryType = non_null(attrs.get('queryType'), QueryType.BASIC.name)
self.searchParameters = attrs.get('searchParameters')
self.queryText = attrs.get('queryText')
self.type = attrs.get('type')
self.classification = attrs.get('classification')
self.entities = attrs.get('entities')
self.attributes = attrs.get('attributes')
self.fullTextResult = attrs.get('fullTextResult')
self.referredEntities = attrs.get('referredEntities')
self.approximateCount = non_null(attrs.get('approximateCount'), -1)
def type_coerce_attrs(self):
super(AtlasSearchResult, self).type_coerce_attrs()
self.entities = type_coerce_list(self.entities, AtlasEntityHeader)
self.attributes = type_coerce(self.attributes, AttributeSearchResult)
self.referredEntities = type_coerce_dict(self.referredEntities, AtlasEntityHeader)
class AttributeSearchResult(AtlasBase):
def __init__(self, attrs={}):
AtlasBase.__init__(self, attrs)
self.name = attrs.get('name')
self.values = attrs.get('values')
class AtlasFullTextResult(AtlasBase):
def __init__(self, attrs={}):
AtlasBase.__init__(self, attrs)
self.entity = attrs.get('entity')
self.score = attrs.get('score')
def type_coerce_attrs(self):
super(AtlasFullTextResult, self).type_coerce_attrs()
self.entity = type_coerce(self.criterion, AtlasEntityHeader)
class AtlasSuggestionsResult(AtlasBase):
def __init__(self, attrs={}):
AtlasBase.__init__(self, attrs)
self.suggestions = attrs.get('suggestions')
self.prefixString = attrs.get('prefixString')
self.fieldName = attrs.get('fieldName')
class QuickSearchParameters(AtlasBase):
def __init__(self, attrs={}):
AtlasBase.__init__(self, attrs)
self.query = attrs.get('query')
self.typeName = attrs.get('typeName')
self.entityFilters = attrs.get('entityFilters')
self.includeSubTypes = attrs.get('includeSubTypes')
self.excludeDeletedEntities = attrs.get('excludeDeletedEntities')
self.offset = attrs.get('offset')
self.limit = attrs.get('limit')
self.attributes = attrs.get('attributes')
def type_coerce_attrs(self):
super(QuickSearchParameters, self).type_coerce_attrs()
self.entityFilters = type_coerce(self.entityFilters, FilterCriteria)
class SearchParameters(AtlasBase):
def __init__(self, attrs={}):
AtlasBase.__init__(self, attrs)
self.query = attrs.get('query')
self.typeName = attrs.get('typeName')
self.classification = attrs.get('classification')
self.termName = attrs.get('termName')
self.sortBy = attrs.get('sortBy')
self.excludeDeletedEntities = attrs.get('excludeDeletedEntities')
self.includeClassificationAttributes = attrs.get('includeClassificationAttributes')
self.includeSubTypes = non_null(attrs.get('includeSubTypes'), True)
self.includeSubClassifications = non_null(attrs.get('includeSubClassifications'), True)
self.limit = attrs.get('limit')
self.offset = attrs.get('offset')
self.entityFilters = attrs.get('entityFilters')
self.tagFilters = attrs.get('tagFilters')
self.attributes = attrs.get('attributes')
self.sortOrder = attrs.get('sortOrder')
def type_coerce_attrs(self):
super(SearchParameters, self).type_coerce_attrs()
self.entityFilters = type_coerce(self.entityFilters, FilterCriteria)
self.tagFilters = type_coerce(self.tagFilters, FilterCriteria)
class FilterCriteria(AtlasBase):
def __init__(self, attrs={}):
AtlasBase.__init__(self, attrs)
self.attributeName = attrs.get('attributeName')
self.operator = attrs.get('operator')
self.attributeValue = attrs.get('attributeValue')
self.condition = attrs.get('condition')
self.criterion = attrs.get('criterion')
def type_coerce_attrs(self):
super(FilterCriteria, self).type_coerce_attrs()
self.criterion = type_coerce(self.criterion, FilterCriteria)
class AtlasUserSavedSearch(AtlasBaseModelObject):
def __init__(self, attrs={}):
AtlasBaseModelObject.__init__(self, attrs)
self.ownerName = attrs.get('ownerName')
self.name = attrs.get('name')
self.searchType = attrs.get('searchType')
self.searchParameters = attrs.get('searchParameters')
self.uiParameters = attrs.get('uiParameters')
def type_coerce_attrs(self):
super(AtlasUserSavedSearch, self).type_coerce_attrs()
self.searchParameters = type_coerce(self.searchParameters, SearchParameters)
class Operator(enum.Enum):
LT = ("<", "lt")
GT = ('>', 'gt')
LTE = ('<=', 'lte')
GTE = ('>=', 'gte')
EQ = ('=', 'eq')
NEQ = ('!=', 'neq')
IN = ('in', 'IN')
LIKE = ('like', 'LIKE')
STARTS_WITH = ('startsWith', 'STARTSWITH', 'begins_with', 'BEGINS_WITH')
ENDS_WITH = ('endsWith', 'ENDSWITH', 'ends_with', 'ENDS_WITH')
CONTAINS = ('contains', 'CONTAINS')
NOT_CONTAINS = ('not_contains', 'NOT_CONTAINS')
CONTAINS_ANY = ('containsAny', 'CONTAINSANY', 'contains_any', 'CONTAINS_ANY')
CONTAINS_ALL = ('containsAll', 'CONTAINSALL', 'contains_all', 'CONTAINS_ALL')
IS_NULL = ('isNull', 'ISNULL', 'is_null', 'IS_NULL')
NOT_NULL = ('notNull', 'NOTNULL', 'not_null', 'NOT_NULL')
class SortOrder(enum.Enum):
sort_order = enum.Enum('sort_order', 'ASCENDING DESCENDING', module=__name__)