private static List<AtlasEnumDef> toAtlasEnumDefs(List<EnumTypeDefinition> enumTypeDefinitions) { List<AtlasEnumDef> ret = new ArrayList<AtlasEnumDef>(); for (EnumTypeDefinition enumType : enumTypeDefinitions) { AtlasEnumDef enumDef = new AtlasEnumDef(); enumDef.setName(enumType.name); enumDef.setDescription(enumType.description); enumDef.setTypeVersion(enumType.version); enumDef.setElementDefs(getAtlasEnumElementDefs(enumType.enumValues)); ret.add(enumDef); } return ret; }
public AtlasEnumDef(AtlasEnumDef other) { super(other); if (other != null) { setElementDefs(other.getElementDefs()); setDefaultValue(other.getDefaultValue()); } }
private AtlasEnumDef getAtlasEnumWithAttributes(String... elements) { AtlasEnumDef enumDef = new AtlasEnumDef(); for (AtlasEnumDef.AtlasEnumElementDef ed : getEnumElementDefs(0, elements)) { enumDef.addElement(ed); } return enumDef; }
public AtlasEnumDef(String name, String description, String typeVersion, List<AtlasEnumElementDef> elementDefs, String defaultValue, Map<String, String> options) { super(TypeCategory.ENUM, name, description, typeVersion, options); setElementDefs(elementDefs); setDefaultValue(defaultValue); }
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 createEnumTypeDef(String name, String description, AtlasEnumElementDef... enumValues) { return new AtlasEnumDef(name, description, "1.0", Arrays.asList(enumValues)); }
AtlasEnumDef oldEnumDef = typeRegistry.getEnumDefByName(newEnumDef.getName()); if (CollectionUtils.isNotEmpty(oldEnumDef.getElementDefs())) { for (AtlasEnumElementDef oldEnumElem : oldEnumDef.getElementDefs()) { if (!newEnumDef.hasElement(oldEnumElem.getValue())) { newEnumDef.addElement(oldEnumElem);
@Test public void testEnumDefAddElement() { AtlasEnumDef enumDef = ModelTestUtil.newEnumDef(); String newElement = "newElement-abcd-1234"; enumDef.addElement(new AtlasEnumElementDef(newElement, "A new element", enumDef.getElementDefs().size())); assertTrue(enumDef.hasElement(newElement)); }
@Test public void testEnumDefSetElementDefs() { AtlasEnumDef enumDef = ModelTestUtil.newEnumDef(); List<AtlasEnumElementDef> oldElements = enumDef.getElementDefs(); List<AtlasEnumElementDef> newElements = new ArrayList<>(); newElements.add(new AtlasEnumElementDef("newElement", "new Element", 100)); enumDef.setElementDefs(newElements); for (AtlasEnumElementDef elementDef : oldElements) { assertFalse(enumDef.hasElement(elementDef.getValue())); } for (AtlasEnumElementDef elementDef : newElements) { assertTrue(enumDef.hasElement(elementDef.getValue())); } } }
private static AtlasEnumDef toEnumDef(AtlasVertex vertex, AtlasEnumDef enumDef, AtlasTypeDefGraphStoreV2 typeDefStore) { AtlasEnumDef ret = enumDef != null ? enumDef : new AtlasEnumDef(); typeDefStore.vertexToTypeDef(vertex, ret); List<AtlasEnumElementDef> elements = new ArrayList<>(); List<String> elemValues = vertex.getProperty(AtlasGraphUtilsV2.getTypeDefPropertyKey(ret), List.class); for (String elemValue : elemValues) { String elemKey = AtlasGraphUtilsV2.getTypeDefPropertyKey(ret, elemValue); String descKey = AtlasGraphUtilsV2.getTypeDefPropertyKey(elemKey, "description"); Integer ordinal = AtlasGraphUtilsV2.getProperty(vertex, elemKey, Integer.class); String desc = AtlasGraphUtilsV2.getProperty(vertex, descKey, String.class); elements.add(new AtlasEnumElementDef(elemValue, desc, ordinal)); } ret.setElementDefs(elements); String defaultValueKey = AtlasGraphUtilsV2.getTypeDefPropertyKey(ret, "defaultValue"); String defaultValue = AtlasGraphUtilsV2.getProperty(vertex, defaultValueKey, String.class); ret.setDefaultValue(defaultValue); 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; }
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()); }
@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; }
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; }
@Test public void testEnumDefRemoveElement() { AtlasEnumDef enumDef = ModelTestUtil.newEnumDef(); if (enumDef.getElementDefs().size() > 0) { String elementValue = enumDef.getElementDefs().get(0).getValue(); assertTrue(enumDef.hasElement(elementValue)); enumDef.removeElement(elementValue); assertFalse(enumDef.hasElement(elementValue)); } }
AtlasClassificationDef oldClassifDef = typeRegistry.getClassificationDefByName(newClassifDef.getName()); if (CollectionUtils.isNotEmpty(oldEnumDef.getElementDefs())) { for (AtlasEnumElementDef oldEnumElem : oldEnumDef.getElementDefs()) { if (!newEnumDef.hasElement(oldEnumElem.getValue())) { newEnumDef.addElement(oldEnumElem);
@Test public void testEnumDefHasElement() { AtlasEnumDef enumDef = ModelTestUtil.getEnumDef(); for (AtlasEnumElementDef elementDef : enumDef.getElementDefs()) { assertTrue(enumDef.hasElement(elementDef.getValue())); } assertFalse(enumDef.hasElement("01234-xyzabc-;''-)(")); }
@VisibleForTesting List<AtlasEnumDef.AtlasEnumElementDef> getElementsAbsentInExisting(AtlasEnumDef existing, AtlasEnumDef incoming) throws AtlasBaseException { List<AtlasEnumDef.AtlasEnumElementDef> difference = new ArrayList<>(); for (AtlasEnumDef.AtlasEnumElementDef ed : incoming.getElementDefs()) { updateCollectionWithDifferingAttributes(existing, difference, ed); } return difference; }
public AtlasEnumType(AtlasEnumDef enumDef) { super(enumDef); Map<String, AtlasEnumElementDef> e = new HashMap<>(); for (AtlasEnumElementDef elementDef : enumDef.getElementDefs()) { e.put(elementDef.getValue().toLowerCase(), elementDef); } String d = enumDef.getDefaultValue(); if (d == null) { AtlasEnumElementDef defElem = enumDef.getElementDefs().size() > 0 ? enumDef.getElementDefs().get(0) : null; if (defElem != null) { d = defElem.getValue(); } } this.enumDef = enumDef; this.elementDefs = Collections.unmodifiableMap(e); this.defaultValue = d; }
private List<AtlasEnumDef.AtlasEnumElementDef> getElementsAbsentInExisting(AtlasEnumDef existing, AtlasEnumDef incoming) { List<AtlasEnumDef.AtlasEnumElementDef> difference = new ArrayList<>(); for (AtlasEnumDef.AtlasEnumElementDef ed : incoming.getElementDefs()) { if(existing.getElement(ed.getValue()) == null) { difference.add(ed); } } return difference; }