1# coding: utf-8
2# Copyright (c) 2016, 2021, Oracle and/or its affiliates.  All rights reserved.
3# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
4
5
6from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel  # noqa: F401
7from oci.decorators import init_model_state_from_kwargs
8
9
10@init_model_state_from_kwargs
11class CreateEntityDetails(object):
12    """
13    Properties used in data entity create operations.
14    """
15
16    #: A constant which can be used with the harvest_status property of a CreateEntityDetails.
17    #: This constant has a value of "COMPLETE"
18    HARVEST_STATUS_COMPLETE = "COMPLETE"
19
20    #: A constant which can be used with the harvest_status property of a CreateEntityDetails.
21    #: This constant has a value of "ERROR"
22    HARVEST_STATUS_ERROR = "ERROR"
23
24    #: A constant which can be used with the harvest_status property of a CreateEntityDetails.
25    #: This constant has a value of "IN_PROGRESS"
26    HARVEST_STATUS_IN_PROGRESS = "IN_PROGRESS"
27
28    #: A constant which can be used with the harvest_status property of a CreateEntityDetails.
29    #: This constant has a value of "DEFERRED"
30    HARVEST_STATUS_DEFERRED = "DEFERRED"
31
32    def __init__(self, **kwargs):
33        """
34        Initializes a new CreateEntityDetails object with values from keyword arguments.
35        The following keyword arguments are supported (corresponding to the getters/setters of this class):
36
37        :param display_name:
38            The value to assign to the display_name property of this CreateEntityDetails.
39        :type display_name: str
40
41        :param business_name:
42            The value to assign to the business_name property of this CreateEntityDetails.
43        :type business_name: str
44
45        :param type_key:
46            The value to assign to the type_key property of this CreateEntityDetails.
47        :type type_key: str
48
49        :param description:
50            The value to assign to the description property of this CreateEntityDetails.
51        :type description: str
52
53        :param time_external:
54            The value to assign to the time_external property of this CreateEntityDetails.
55        :type time_external: datetime
56
57        :param is_logical:
58            The value to assign to the is_logical property of this CreateEntityDetails.
59        :type is_logical: bool
60
61        :param is_partition:
62            The value to assign to the is_partition property of this CreateEntityDetails.
63        :type is_partition: bool
64
65        :param folder_key:
66            The value to assign to the folder_key property of this CreateEntityDetails.
67        :type folder_key: str
68
69        :param pattern_key:
70            The value to assign to the pattern_key property of this CreateEntityDetails.
71        :type pattern_key: str
72
73        :param realized_expression:
74            The value to assign to the realized_expression property of this CreateEntityDetails.
75        :type realized_expression: str
76
77        :param harvest_status:
78            The value to assign to the harvest_status property of this CreateEntityDetails.
79            Allowed values for this property are: "COMPLETE", "ERROR", "IN_PROGRESS", "DEFERRED"
80        :type harvest_status: str
81
82        :param last_job_key:
83            The value to assign to the last_job_key property of this CreateEntityDetails.
84        :type last_job_key: str
85
86        :param custom_property_members:
87            The value to assign to the custom_property_members property of this CreateEntityDetails.
88        :type custom_property_members: list[oci.data_catalog.models.CustomPropertySetUsage]
89
90        :param properties:
91            The value to assign to the properties property of this CreateEntityDetails.
92        :type properties: dict(str, dict(str, str))
93
94        """
95        self.swagger_types = {
96            'display_name': 'str',
97            'business_name': 'str',
98            'type_key': 'str',
99            'description': 'str',
100            'time_external': 'datetime',
101            'is_logical': 'bool',
102            'is_partition': 'bool',
103            'folder_key': 'str',
104            'pattern_key': 'str',
105            'realized_expression': 'str',
106            'harvest_status': 'str',
107            'last_job_key': 'str',
108            'custom_property_members': 'list[CustomPropertySetUsage]',
109            'properties': 'dict(str, dict(str, str))'
110        }
111
112        self.attribute_map = {
113            'display_name': 'displayName',
114            'business_name': 'businessName',
115            'type_key': 'typeKey',
116            'description': 'description',
117            'time_external': 'timeExternal',
118            'is_logical': 'isLogical',
119            'is_partition': 'isPartition',
120            'folder_key': 'folderKey',
121            'pattern_key': 'patternKey',
122            'realized_expression': 'realizedExpression',
123            'harvest_status': 'harvestStatus',
124            'last_job_key': 'lastJobKey',
125            'custom_property_members': 'customPropertyMembers',
126            'properties': 'properties'
127        }
128
129        self._display_name = None
130        self._business_name = None
131        self._type_key = None
132        self._description = None
133        self._time_external = None
134        self._is_logical = None
135        self._is_partition = None
136        self._folder_key = None
137        self._pattern_key = None
138        self._realized_expression = None
139        self._harvest_status = None
140        self._last_job_key = None
141        self._custom_property_members = None
142        self._properties = None
143
144    @property
145    def display_name(self):
146        """
147        **[Required]** Gets the display_name of this CreateEntityDetails.
148        A user-friendly display name. Does not have to be unique, and it's changeable.
149        Avoid entering confidential information.
150
151
152        :return: The display_name of this CreateEntityDetails.
153        :rtype: str
154        """
155        return self._display_name
156
157    @display_name.setter
158    def display_name(self, display_name):
159        """
160        Sets the display_name of this CreateEntityDetails.
161        A user-friendly display name. Does not have to be unique, and it's changeable.
162        Avoid entering confidential information.
163
164
165        :param display_name: The display_name of this CreateEntityDetails.
166        :type: str
167        """
168        self._display_name = display_name
169
170    @property
171    def business_name(self):
172        """
173        Gets the business_name of this CreateEntityDetails.
174        Optional user friendly business name of the data entity. If set, this supplements the harvested display name of the object.
175
176
177        :return: The business_name of this CreateEntityDetails.
178        :rtype: str
179        """
180        return self._business_name
181
182    @business_name.setter
183    def business_name(self, business_name):
184        """
185        Sets the business_name of this CreateEntityDetails.
186        Optional user friendly business name of the data entity. If set, this supplements the harvested display name of the object.
187
188
189        :param business_name: The business_name of this CreateEntityDetails.
190        :type: str
191        """
192        self._business_name = business_name
193
194    @property
195    def type_key(self):
196        """
197        Gets the type_key of this CreateEntityDetails.
198        The type of data entity object. Type key's can be found via the '/types' endpoint.
199
200
201        :return: The type_key of this CreateEntityDetails.
202        :rtype: str
203        """
204        return self._type_key
205
206    @type_key.setter
207    def type_key(self, type_key):
208        """
209        Sets the type_key of this CreateEntityDetails.
210        The type of data entity object. Type key's can be found via the '/types' endpoint.
211
212
213        :param type_key: The type_key of this CreateEntityDetails.
214        :type: str
215        """
216        self._type_key = type_key
217
218    @property
219    def description(self):
220        """
221        Gets the description of this CreateEntityDetails.
222        Detailed description of a data entity.
223
224
225        :return: The description of this CreateEntityDetails.
226        :rtype: str
227        """
228        return self._description
229
230    @description.setter
231    def description(self, description):
232        """
233        Sets the description of this CreateEntityDetails.
234        Detailed description of a data entity.
235
236
237        :param description: The description of this CreateEntityDetails.
238        :type: str
239        """
240        self._description = description
241
242    @property
243    def time_external(self):
244        """
245        **[Required]** Gets the time_external of this CreateEntityDetails.
246        Last modified timestamp of the object in the external system.
247
248
249        :return: The time_external of this CreateEntityDetails.
250        :rtype: datetime
251        """
252        return self._time_external
253
254    @time_external.setter
255    def time_external(self, time_external):
256        """
257        Sets the time_external of this CreateEntityDetails.
258        Last modified timestamp of the object in the external system.
259
260
261        :param time_external: The time_external of this CreateEntityDetails.
262        :type: datetime
263        """
264        self._time_external = time_external
265
266    @property
267    def is_logical(self):
268        """
269        Gets the is_logical of this CreateEntityDetails.
270        Property to indicate if the object is a physical materialized object or virtual. For example, View.
271
272
273        :return: The is_logical of this CreateEntityDetails.
274        :rtype: bool
275        """
276        return self._is_logical
277
278    @is_logical.setter
279    def is_logical(self, is_logical):
280        """
281        Sets the is_logical of this CreateEntityDetails.
282        Property to indicate if the object is a physical materialized object or virtual. For example, View.
283
284
285        :param is_logical: The is_logical of this CreateEntityDetails.
286        :type: bool
287        """
288        self._is_logical = is_logical
289
290    @property
291    def is_partition(self):
292        """
293        Gets the is_partition of this CreateEntityDetails.
294        Property to indicate if the object is a sub object of a parent physical object.
295
296
297        :return: The is_partition of this CreateEntityDetails.
298        :rtype: bool
299        """
300        return self._is_partition
301
302    @is_partition.setter
303    def is_partition(self, is_partition):
304        """
305        Sets the is_partition of this CreateEntityDetails.
306        Property to indicate if the object is a sub object of a parent physical object.
307
308
309        :param is_partition: The is_partition of this CreateEntityDetails.
310        :type: bool
311        """
312        self._is_partition = is_partition
313
314    @property
315    def folder_key(self):
316        """
317        Gets the folder_key of this CreateEntityDetails.
318        Key of the associated folder.
319
320
321        :return: The folder_key of this CreateEntityDetails.
322        :rtype: str
323        """
324        return self._folder_key
325
326    @folder_key.setter
327    def folder_key(self, folder_key):
328        """
329        Sets the folder_key of this CreateEntityDetails.
330        Key of the associated folder.
331
332
333        :param folder_key: The folder_key of this CreateEntityDetails.
334        :type: str
335        """
336        self._folder_key = folder_key
337
338    @property
339    def pattern_key(self):
340        """
341        Gets the pattern_key of this CreateEntityDetails.
342        Key of the associated pattern if this is a logical entity.
343
344
345        :return: The pattern_key of this CreateEntityDetails.
346        :rtype: str
347        """
348        return self._pattern_key
349
350    @pattern_key.setter
351    def pattern_key(self, pattern_key):
352        """
353        Sets the pattern_key of this CreateEntityDetails.
354        Key of the associated pattern if this is a logical entity.
355
356
357        :param pattern_key: The pattern_key of this CreateEntityDetails.
358        :type: str
359        """
360        self._pattern_key = pattern_key
361
362    @property
363    def realized_expression(self):
364        """
365        Gets the realized_expression of this CreateEntityDetails.
366        The expression realized after resolving qualifiers . Used in deriving this logical entity
367
368
369        :return: The realized_expression of this CreateEntityDetails.
370        :rtype: str
371        """
372        return self._realized_expression
373
374    @realized_expression.setter
375    def realized_expression(self, realized_expression):
376        """
377        Sets the realized_expression of this CreateEntityDetails.
378        The expression realized after resolving qualifiers . Used in deriving this logical entity
379
380
381        :param realized_expression: The realized_expression of this CreateEntityDetails.
382        :type: str
383        """
384        self._realized_expression = realized_expression
385
386    @property
387    def harvest_status(self):
388        """
389        Gets the harvest_status of this CreateEntityDetails.
390        Status of the object as updated by the harvest process. When an entity object is created , it's harvest status
391        will indicate if the entity's metadata has been fully harvested or not. The harvest process can perform
392        shallow harvesting to allow users to browse the metadata and can on-demand deep harvest on any object
393        This requires a harvest status indicator for catalog objects.
394
395        Allowed values for this property are: "COMPLETE", "ERROR", "IN_PROGRESS", "DEFERRED"
396
397
398        :return: The harvest_status of this CreateEntityDetails.
399        :rtype: str
400        """
401        return self._harvest_status
402
403    @harvest_status.setter
404    def harvest_status(self, harvest_status):
405        """
406        Sets the harvest_status of this CreateEntityDetails.
407        Status of the object as updated by the harvest process. When an entity object is created , it's harvest status
408        will indicate if the entity's metadata has been fully harvested or not. The harvest process can perform
409        shallow harvesting to allow users to browse the metadata and can on-demand deep harvest on any object
410        This requires a harvest status indicator for catalog objects.
411
412
413        :param harvest_status: The harvest_status of this CreateEntityDetails.
414        :type: str
415        """
416        allowed_values = ["COMPLETE", "ERROR", "IN_PROGRESS", "DEFERRED"]
417        if not value_allowed_none_or_none_sentinel(harvest_status, allowed_values):
418            raise ValueError(
419                "Invalid value for `harvest_status`, must be None or one of {0}"
420                .format(allowed_values)
421            )
422        self._harvest_status = harvest_status
423
424    @property
425    def last_job_key(self):
426        """
427        Gets the last_job_key of this CreateEntityDetails.
428        Key of the last harvest process to update this object.
429
430
431        :return: The last_job_key of this CreateEntityDetails.
432        :rtype: str
433        """
434        return self._last_job_key
435
436    @last_job_key.setter
437    def last_job_key(self, last_job_key):
438        """
439        Sets the last_job_key of this CreateEntityDetails.
440        Key of the last harvest process to update this object.
441
442
443        :param last_job_key: The last_job_key of this CreateEntityDetails.
444        :type: str
445        """
446        self._last_job_key = last_job_key
447
448    @property
449    def custom_property_members(self):
450        """
451        Gets the custom_property_members of this CreateEntityDetails.
452        The list of customized properties along with the values for this object
453
454
455        :return: The custom_property_members of this CreateEntityDetails.
456        :rtype: list[oci.data_catalog.models.CustomPropertySetUsage]
457        """
458        return self._custom_property_members
459
460    @custom_property_members.setter
461    def custom_property_members(self, custom_property_members):
462        """
463        Sets the custom_property_members of this CreateEntityDetails.
464        The list of customized properties along with the values for this object
465
466
467        :param custom_property_members: The custom_property_members of this CreateEntityDetails.
468        :type: list[oci.data_catalog.models.CustomPropertySetUsage]
469        """
470        self._custom_property_members = custom_property_members
471
472    @property
473    def properties(self):
474        """
475        Gets the properties of this CreateEntityDetails.
476        A map of maps that contains the properties which are specific to the entity type. Each entity type
477        definition defines it's set of required and optional properties. The map keys are category names and the
478        values are maps of property name to property value. Every property is contained inside of a category. Most
479        entities have required properties within the \"default\" category. To determine the set of required and
480        optional properties for an entity type, a query can be done on '/types?type=dataEntity' that returns a
481        collection of all entity types. The appropriate entity type, which includes definitions of all of
482        it's properties, can be identified from this collection.
483        Example: `{\"properties\": { \"default\": { \"key1\": \"value1\"}}}`
484
485
486        :return: The properties of this CreateEntityDetails.
487        :rtype: dict(str, dict(str, str))
488        """
489        return self._properties
490
491    @properties.setter
492    def properties(self, properties):
493        """
494        Sets the properties of this CreateEntityDetails.
495        A map of maps that contains the properties which are specific to the entity type. Each entity type
496        definition defines it's set of required and optional properties. The map keys are category names and the
497        values are maps of property name to property value. Every property is contained inside of a category. Most
498        entities have required properties within the \"default\" category. To determine the set of required and
499        optional properties for an entity type, a query can be done on '/types?type=dataEntity' that returns a
500        collection of all entity types. The appropriate entity type, which includes definitions of all of
501        it's properties, can be identified from this collection.
502        Example: `{\"properties\": { \"default\": { \"key1\": \"value1\"}}}`
503
504
505        :param properties: The properties of this CreateEntityDetails.
506        :type: dict(str, dict(str, str))
507        """
508        self._properties = properties
509
510    def __repr__(self):
511        return formatted_flat_dict(self)
512
513    def __eq__(self, other):
514        if other is None:
515            return False
516
517        return self.__dict__ == other.__dict__
518
519    def __ne__(self, other):
520        return not self == other
521