@Override public AtlasVertex preCreate(AtlasEnumDef enumDef) throws AtlasBaseException { if (LOG.isDebugEnabled()) { LOG.debug("==> AtlasEnumDefStoreV2.preCreate({})", enumDef); } validateType(enumDef); AtlasVertex vertex = typeDefStore.findTypeVertexByName(enumDef.getName()); if (vertex != null) { throw new AtlasBaseException(AtlasErrorCode.TYPE_ALREADY_EXISTS, enumDef.getName()); } vertex = typeDefStore.createTypeVertex(enumDef); toVertex(enumDef, vertex); if (LOG.isDebugEnabled()) { LOG.debug("<== AtlasEnumDefStoreV2.preCreate({}): {}", enumDef, vertex); } return vertex; }
@Override public AtlasEnumDef create(AtlasEnumDef enumDef, AtlasVertex preCreateResult) throws AtlasBaseException { if (LOG.isDebugEnabled()) { LOG.debug("==> AtlasEnumDefStoreV2.create({}, {})", enumDef, preCreateResult); } AtlasAuthorizationUtils.verifyAccess(new AtlasTypeAccessRequest(AtlasPrivilege.TYPE_CREATE, enumDef), "create enum-def ", enumDef.getName()); AtlasVertex vertex = (preCreateResult == null) ? preCreate(enumDef) : preCreateResult; AtlasEnumDef ret = toEnumDef(vertex); if (LOG.isDebugEnabled()) { LOG.debug("<== AtlasEntityDefStoreV2.create({}, {}): {}", enumDef, preCreateResult, ret); } return ret; }
@Override public AtlasEnumDef create(AtlasEnumDef enumDef, AtlasVertex preCreateResult) throws AtlasBaseException { if (LOG.isDebugEnabled()) { LOG.debug("==> AtlasEnumDefStoreV2.create({}, {})", enumDef, preCreateResult); } AtlasAuthorizationUtils.verifyAccess(new AtlasTypeAccessRequest(AtlasPrivilege.TYPE_CREATE, enumDef), "create enum-def ", enumDef.getName()); AtlasVertex vertex = (preCreateResult == null) ? preCreate(enumDef) : preCreateResult; AtlasEnumDef ret = toEnumDef(vertex); if (LOG.isDebugEnabled()) { LOG.debug("<== AtlasEntityDefStoreV2.create({}, {}): {}", enumDef, preCreateResult, ret); } return ret; }
@Override public AtlasEnumDef update(AtlasEnumDef enumDef) throws AtlasBaseException { if (LOG.isDebugEnabled()) { LOG.debug("==> AtlasEnumDefStoreV2.update({})", enumDef); } validateType(enumDef); AtlasEnumDef ret = StringUtils.isNotBlank(enumDef.getGuid()) ? updateByGuid(enumDef.getGuid(), enumDef) : updateByName(enumDef.getName(), enumDef); if (LOG.isDebugEnabled()) { LOG.debug("<== AtlasEnumDefStoreV2.update({}): {}", enumDef, ret); } return ret; }
@Override public AtlasVertex preCreate(AtlasEnumDef enumDef) throws AtlasBaseException { if (LOG.isDebugEnabled()) { LOG.debug("==> AtlasEnumDefStoreV2.preCreate({})", enumDef); } validateType(enumDef); AtlasVertex vertex = typeDefStore.findTypeVertexByName(enumDef.getName()); if (vertex != null) { throw new AtlasBaseException(AtlasErrorCode.TYPE_ALREADY_EXISTS, enumDef.getName()); } vertex = typeDefStore.createTypeVertex(enumDef); toVertex(enumDef, vertex); if (LOG.isDebugEnabled()) { LOG.debug("<== AtlasEnumDefStoreV2.preCreate({}): {}", enumDef, vertex); } return vertex; }
@Override public AtlasEnumDef update(AtlasEnumDef enumDef) throws AtlasBaseException { if (LOG.isDebugEnabled()) { LOG.debug("==> AtlasEnumDefStoreV2.update({})", enumDef); } validateType(enumDef); AtlasEnumDef ret = StringUtils.isNotBlank(enumDef.getGuid()) ? updateByGuid(enumDef.getGuid(), enumDef) : updateByName(enumDef.getName(), enumDef); if (LOG.isDebugEnabled()) { LOG.debug("<== AtlasEnumDefStoreV2.update({}): {}", enumDef, ret); } return ret; }
private void updateEnumDef(AtlasTypesDef typeDefinitionMap, AtlasImportResult result) throws AtlasBaseException { for (AtlasEnumDef def : typeDefinitionMap.getEnumDefs()) { AtlasEnumDef existing = typeRegistry.getEnumDefByName(def.getName()); if (existing != null && addElements(existing, def)) { typeDefStore.updateEnumDefByName(existing.getName(), existing); result.incrementMeticsCounter("typedef:enum:update"); } } }
@Override public AtlasEnumDef updateByGuid(String guid, AtlasEnumDef enumDef) throws AtlasBaseException { if (LOG.isDebugEnabled()) { LOG.debug("==> AtlasEnumDefStoreV2.updateByGuid({})", guid); } AtlasEnumDef existingDef = typeRegistry.getEnumDefByGuid(guid); AtlasAuthorizationUtils.verifyAccess(new AtlasTypeAccessRequest(AtlasPrivilege.TYPE_UPDATE, existingDef), "update enum-def ", (existingDef != null ? existingDef.getName() : guid)); validateType(enumDef); AtlasVertex vertex = typeDefStore.findTypeVertexByGuidAndCategory(guid, TypeCategory.ENUM); if (vertex == null) { throw new AtlasBaseException(AtlasErrorCode.TYPE_GUID_NOT_FOUND, guid); } typeDefStore.updateTypeVertex(enumDef, vertex); toVertex(enumDef, vertex); AtlasEnumDef ret = toEnumDef(vertex); if (LOG.isDebugEnabled()) { LOG.debug("<== AtlasEnumDefStoreV2.updateByGuid({}): {}", guid, ret); } return ret; }
@Override public AtlasVertex preDeleteByGuid(String guid) throws AtlasBaseException { AtlasVertex vertex = typeDefStore.findTypeVertexByGuidAndCategory(guid, TypeCategory.ENUM); if (vertex == null) { throw new AtlasBaseException(AtlasErrorCode.TYPE_GUID_NOT_FOUND, guid); } AtlasEnumDef existingDef = typeRegistry.getEnumDefByGuid(guid); AtlasAuthorizationUtils.verifyAccess(new AtlasTypeAccessRequest(AtlasPrivilege.TYPE_DELETE, existingDef), "delete enum-def ", (existingDef != null ? existingDef.getName() : guid)); return vertex; }
@Override public AtlasVertex preDeleteByName(String name) throws AtlasBaseException { AtlasVertex vertex = typeDefStore.findTypeVertexByNameAndCategory(name, TypeCategory.ENUM); if (vertex == null) { throw new AtlasBaseException(AtlasErrorCode.TYPE_NAME_NOT_FOUND, name); } AtlasEnumDef existingDef = typeRegistry.getEnumDefByName(name); AtlasAuthorizationUtils.verifyAccess(new AtlasTypeAccessRequest(AtlasPrivilege.TYPE_DELETE, existingDef), "delete enum-def ", (existingDef != null ? existingDef.getName() : name)); return vertex; }
private static TypesDef enumToTypesDef(AtlasEnumType enumType) { AtlasEnumDef enumDef = enumType.getEnumDef(); String enumName = enumDef.getName(); String enumDesc = enumDef.getDescription(); String enumVersion = enumDef.getTypeVersion(); List<EnumValue> enumValues = getEnumValues(enumDef.getElementDefs()); EnumTypeDefinition enumTypeDef = new EnumTypeDefinition(enumName, enumDesc, enumVersion, enumValues); TypesDef ret = new TypesDef(Arrays.asList(enumTypeDef), null, null, null); return ret; }
@Override public AtlasVertex preDeleteByGuid(String guid) throws AtlasBaseException { AtlasVertex vertex = typeDefStore.findTypeVertexByGuidAndCategory(guid, TypeCategory.ENUM); if (vertex == null) { throw new AtlasBaseException(AtlasErrorCode.TYPE_GUID_NOT_FOUND, guid); } AtlasEnumDef existingDef = typeRegistry.getEnumDefByGuid(guid); AtlasAuthorizationUtils.verifyAccess(new AtlasTypeAccessRequest(AtlasPrivilege.TYPE_DELETE, existingDef), "delete enum-def ", (existingDef != null ? existingDef.getName() : guid)); return vertex; }
@Override public AtlasEnumDef updateByGuid(String guid, AtlasEnumDef enumDef) throws AtlasBaseException { if (LOG.isDebugEnabled()) { LOG.debug("==> AtlasEnumDefStoreV2.updateByGuid({})", guid); } AtlasEnumDef existingDef = typeRegistry.getEnumDefByGuid(guid); AtlasAuthorizationUtils.verifyAccess(new AtlasTypeAccessRequest(AtlasPrivilege.TYPE_UPDATE, existingDef), "update enum-def ", (existingDef != null ? existingDef.getName() : guid)); validateType(enumDef); AtlasVertex vertex = typeDefStore.findTypeVertexByGuidAndCategory(guid, TypeCategory.ENUM); if (vertex == null) { throw new AtlasBaseException(AtlasErrorCode.TYPE_GUID_NOT_FOUND, guid); } typeDefStore.updateTypeVertex(enumDef, vertex); toVertex(enumDef, vertex); AtlasEnumDef ret = toEnumDef(vertex); if (LOG.isDebugEnabled()) { LOG.debug("<== AtlasEnumDefStoreV2.updateByGuid({}): {}", guid, ret); } return ret; }
@Override public AtlasVertex preDeleteByName(String name) throws AtlasBaseException { AtlasVertex vertex = typeDefStore.findTypeVertexByNameAndCategory(name, TypeCategory.ENUM); if (vertex == null) { throw new AtlasBaseException(AtlasErrorCode.TYPE_NAME_NOT_FOUND, name); } AtlasEnumDef existingDef = typeRegistry.getEnumDefByName(name); AtlasAuthorizationUtils.verifyAccess(new AtlasTypeAccessRequest(AtlasPrivilege.TYPE_DELETE, existingDef), "delete enum-def ", (existingDef != null ? existingDef.getName() : name)); return vertex; }
private void updateEnumDef(AtlasTypesDef typeDefinitionMap, AtlasImportResult result) throws AtlasBaseException { for (AtlasEnumDef def: typeDefinitionMap.getEnumDefs()) { AtlasEnumDef existing = typeRegistry.getEnumDefByName(def.getName()); if(existing != null && addElements(existing, def)) { typeDefStore.updateEnumDefByName(existing.getName(), existing); result.incrementMeticsCounter("typedef:enum:update"); } } }
private void updateStructDef(AtlasTypesDef typeDefinitionMap, AtlasImportResult result) throws AtlasBaseException { for (AtlasStructDef def: typeDefinitionMap.getStructDefs()) { AtlasStructDef existing = typeRegistry.getStructDefByName(def.getName()); if(existing != null && addAttributes(existing, def)) { typeDefStore.updateStructDefByName(existing.getName(), existing); result.incrementMeticsCounter("typedef:struct:update"); } } }
private void toVertex(AtlasEnumDef enumDef, AtlasVertex vertex) throws AtlasBaseException { if (CollectionUtils.isEmpty(enumDef.getElementDefs())) { throw new AtlasBaseException(AtlasErrorCode.MISSING_MANDATORY_ATTRIBUTE, enumDef.getName(), "values"); } List<String> values = new ArrayList<>(enumDef.getElementDefs().size()); for (AtlasEnumElementDef element : enumDef.getElementDefs()) { // Validate the enum element if (StringUtils.isEmpty(element.getValue()) || null == element.getOrdinal()) { throw new AtlasBaseException(AtlasErrorCode.MISSING_MANDATORY_ATTRIBUTE, enumDef.getName(), "elementValue"); } String elemKey = AtlasGraphUtilsV2.getTypeDefPropertyKey(enumDef, element.getValue()); AtlasGraphUtilsV2.setProperty(vertex, elemKey, element.getOrdinal()); if (StringUtils.isNotBlank(element.getDescription())) { String descKey = AtlasGraphUtilsV2.getTypeDefPropertyKey(elemKey, "description"); AtlasGraphUtilsV2.setProperty(vertex, descKey, element.getDescription()); } values.add(element.getValue()); } AtlasGraphUtilsV2.setProperty(vertex, AtlasGraphUtilsV2.getTypeDefPropertyKey(enumDef), values); String defaultValueKey = AtlasGraphUtilsV2.getTypeDefPropertyKey(enumDef, "defaultValue"); AtlasGraphUtilsV2.setProperty(vertex, defaultValueKey, enumDef.getDefaultValue()); }
private void toVertex(AtlasEnumDef enumDef, AtlasVertex vertex) throws AtlasBaseException { if (CollectionUtils.isEmpty(enumDef.getElementDefs())) { throw new AtlasBaseException(AtlasErrorCode.MISSING_MANDATORY_ATTRIBUTE, enumDef.getName(), "values"); } List<String> values = new ArrayList<>(enumDef.getElementDefs().size()); for (AtlasEnumElementDef element : enumDef.getElementDefs()) { // Validate the enum element if (StringUtils.isEmpty(element.getValue()) || null == element.getOrdinal()) { throw new AtlasBaseException(AtlasErrorCode.MISSING_MANDATORY_ATTRIBUTE, enumDef.getName(), "elementValue"); } String elemKey = AtlasGraphUtilsV2.getTypeDefPropertyKey(enumDef, element.getValue()); AtlasGraphUtilsV2.setProperty(vertex, elemKey, element.getOrdinal()); if (StringUtils.isNotBlank(element.getDescription())) { String descKey = AtlasGraphUtilsV2.getTypeDefPropertyKey(elemKey, "description"); AtlasGraphUtilsV2.setProperty(vertex, descKey, element.getDescription()); } values.add(element.getValue()); } AtlasGraphUtilsV2.setProperty(vertex, AtlasGraphUtilsV2.getTypeDefPropertyKey(enumDef), values); String defaultValueKey = AtlasGraphUtilsV2.getTypeDefPropertyKey(enumDef, "defaultValue"); AtlasGraphUtilsV2.setProperty(vertex, defaultValueKey, enumDef.getDefaultValue()); }
public static AtlasEnumDef newEnumDef(AtlasTypeRegistry typesRegistry, boolean hasDefaultValue) { int enumDefIdx = IDX_ENUM_DEF.getAndIncrement(); AtlasEnumDef ret = new AtlasEnumDef(); ret.setName(PREFIX_ENUM_DEF + enumDefIdx); ret.setDescription(ret.getName()); int numElements = ThreadLocalRandom.current().nextInt(1, MAX_ENUM_ELEMENT_COUNT); for (int i = 0; i < numElements; i++) { String elementName = "element-" + i; ret.addElement(new AtlasEnumElementDef(elementName, elementName.toUpperCase(), i)); } if (hasDefaultValue) { int idxDefault = ThreadLocalRandom.current().nextInt(0, numElements); ret.setDefaultValue(ret.getElementDefs().get(idxDefault).getValue()); } AtlasTransientTypeRegistry ttr = null; boolean commit = false; try { ttr = typesRegistry.lockTypeRegistryForUpdate(); ttr.addType(ret); commit = true; } catch (AtlasBaseException excp) { LOG.error("failed to create enum-def", excp); ret = null; } finally { typesRegistry.releaseTypeRegistryForUpdate(ttr, commit); } return ret; }
public static AtlasEnumDef newEnumDef(AtlasTypeRegistry typesRegistry, boolean hasDefaultValue) { int enumDefIdx = IDX_ENUM_DEF.getAndIncrement(); AtlasEnumDef ret = new AtlasEnumDef(); ret.setName(PREFIX_ENUM_DEF + enumDefIdx); ret.setDescription(ret.getName()); int numElements = ThreadLocalRandom.current().nextInt(1, MAX_ENUM_ELEMENT_COUNT); for (int i = 0; i < numElements; i++) { String elementName = "element-" + i; ret.addElement(new AtlasEnumElementDef(elementName, elementName.toUpperCase(), i)); } if (hasDefaultValue) { int idxDefault = ThreadLocalRandom.current().nextInt(0, numElements); ret.setDefaultValue(ret.getElementDefs().get(idxDefault).getValue()); } AtlasTransientTypeRegistry ttr = null; boolean commit = false; try { ttr = typesRegistry.lockTypeRegistryForUpdate(); ttr.addType(ret); commit = true; } catch (AtlasBaseException excp) { LOG.error("failed to create enum-def", excp); ret = null; } finally { typesRegistry.releaseTypeRegistryForUpdate(ttr, commit); } return ret; }