public AtlasClassification(AtlasClassification other) { if (other != null) { setTypeName(other.getTypeName()); setAttributes(other.getAttributes()); setEntityGuid(other.getEntityGuid()); setEntityStatus(other.getEntityStatus()); setPropagate(other.isPropagate()); setValidityPeriods(other.getValidityPeriods()); setRemovePropagationsOnEntityDelete(other.getRemovePropagationsOnEntityDelete()); } }
AtlasClassificationType classificationType = typeRegistry.getClassificationTypeByName(classification.getTypeName()); Set<String> superTypeNames = classificationType != null ? classificationType.getAllSuperTypes() : null; AtlasClassification superTypeClassification = new AtlasClassification(superTypeName); superTypeClassification.setEntityGuid(classification.getEntityGuid()); superTypeClassification.setPropagate(classification.isPropagate()); if (MapUtils.isNotEmpty(classification.getAttributes())) { AtlasClassificationType superType = typeRegistry.getClassificationTypeByName(superTypeName); Map<String, Object> superTypeClassificationAttributes = new HashMap<>(); for (Map.Entry<String, Object> attrEntry : classification.getAttributes().entrySet()) { String attrName = attrEntry.getKey(); superTypeClassification.setAttributes(superTypeClassificationAttributes);
public AtlasClassification(AtlasClassification other) { if (other != null) { setTypeName(other.getTypeName()); setAttributes(other.getAttributes()); } }
private boolean validateTimeBoundaries(Object classificationObj, List<String> messages) { boolean ret = true; AtlasClassification classification = null; if (classificationObj instanceof AtlasClassification) { classification = (AtlasClassification) classificationObj; } else if (classificationObj instanceof Map) { classification = new AtlasClassification((Map) classificationObj); } if (classification != null && classification.getValidityPeriods() != null) { for (TimeBoundary timeBoundary : classification.getValidityPeriods()) { if (timeBoundary != null) { ret = validateTimeBoundry(timeBoundary, messages) && ret; } } } return ret; }
AtlasClassification classification = new AtlasClassification(c); String classificationName = classification.getTypeName(); Boolean propagateTags = classification.isPropagate(); Boolean removePropagations = classification.getRemovePropagationsOnEntityDelete(); classification.getEntityGuid() != null && !StringUtils.equals(classification.getEntityGuid(), guid)) { continue; if(context.isImport()) { propagateTags = false; classification.setPropagate(propagateTags); } else { propagateTags = true; removePropagations = getDefaultRemovePropagations(); classification.setRemovePropagationsOnEntityDelete(removePropagations); if (classification.getEntityGuid() == null) { classification.setEntityGuid(guid); if (classification.getEntityStatus() == null) { classification.setEntityStatus(ACTIVE);
private boolean hasPropagatedEntry(Map<String, List<AtlasClassification>> propagationsMap, String guid, AtlasClassification classification) { boolean ret = false; if (MapUtils.isNotEmpty(propagationsMap) && propagationsMap.containsKey(guid) && CollectionUtils.isNotEmpty(propagationsMap.get(guid))) { List<AtlasClassification> classifications = propagationsMap.get(guid); String classificationName = classification.getTypeName(); String entityGuid = classification.getEntityGuid(); for (AtlasClassification c : classifications) { if (StringUtils.equals(c.getTypeName(), classificationName) && StringUtils.equals(c.getEntityGuid(), entityGuid)) { ret = true; break; } } } return ret; }
String classificationName = classification.getTypeName(); String classificationEntityGuid = classification.getEntityGuid(); classification.setEntityGuid(guid); Map<String, Object> updatedAttributes = classification.getAttributes(); currentClassification.setAttribute(attributeName, updatedAttributes.get(attributeName)); List<TimeBoundary> currentValidityPeriods = currentClassification.getValidityPeriods(); List<TimeBoundary> updatedValidityPeriods = classification.getValidityPeriods(); currentClassification.setValidityPeriods(updatedValidityPeriods); Boolean currentRemovePropagations = currentClassification.getRemovePropagationsOnEntityDelete(); Boolean updatedRemovePropagations = classification.getRemovePropagationsOnEntityDelete(); Boolean currentTagPropagation = currentClassification.isPropagate(); Boolean updatedTagPropagation = classification.isPropagate();
AtlasEntity employees2 = getEntity(EMPLOYEES2_TABLE); AtlasClassification PII_tag1 = new AtlasClassification("PII"); PII_tag1.setPropagate(true); PII_tag1.setEntityGuid(hdfs_path.getGuid()); PII_tag1.setAttribute("type", "from hdfs_path entity"); PII_tag1.setAttribute("valid", true); AtlasClassification PII_tag2 = new AtlasClassification("PII"); PII_tag2.setPropagate(true); PII_tag2.setEntityGuid(employees1.getGuid()); PII_tag2.setAttribute("type", "from employees1 entity"); PII_tag2.setAttribute("valid", true); AtlasClassification PII_tag3 = new AtlasClassification("PII"); PII_tag3.setPropagate(true); PII_tag3.setEntityGuid(employees2.getGuid()); PII_tag3.setAttribute("type", "from employees2 entity"); PII_tag3.setAttribute("valid", true);
@Test(dependsOnMethods = {"updateClassification_PropagateTrueToFalse"}) public void deleteClassification_PropagateTrue() throws AtlasBaseException { AtlasEntity hdfs_employees = getEntity(HDFS_PATH_EMPLOYEES); AtlasClassification tag1 = new AtlasClassification("tag1"); tag1.setPropagate(true); tag1.setEntityGuid(hdfs_employees.getGuid()); deleteClassification(hdfs_employees, tag1); List<String> propagatedToEntities = Arrays.asList(EMPLOYEES1_PROCESS, EMPLOYEES2_PROCESS, EMPLOYEES1_TABLE, EMPLOYEES2_TABLE, EMPLOYEES_UNION_PROCESS, EMPLOYEES_UNION_TABLE); assertClassificationNotExistInEntities(propagatedToEntities, tag1); }
AtlasClassification tag1 = new AtlasClassification("tag1"); tag1.setPropagate(true); tag1.setEntityGuid(hdfs_employees.getGuid()); tag1 = new AtlasClassification("tag1"); tag1.setPropagate(true); tag1.setEntityGuid(employees2_table.getGuid()); assertEquals(classifications.get(0).getTypeName(), tag1.getTypeName()); assertEquals(classifications.get(1).getTypeName(), tag1.getTypeName()); if (classifications.get(0).getEntityGuid().equals(hdfs_employees.getGuid())) { assertEquals(classifications.get(1).getEntityGuid(), employees2_table.getGuid()); if (classifications.get(0).getEntityGuid().equals(employees2_table.getGuid())) { assertEquals(classifications.get(1).getEntityGuid(), hdfs_employees.getGuid());
@Test(dependsOnMethods = {"removeBlockedPropagatedClassifications"}) public void addClassification_removePropagationsTrue_DeleteCase() throws AtlasBaseException { AtlasEntity orders = getEntity(ORDERS_TABLE); AtlasClassification tag2 = new AtlasClassification("tag2"); tag2.setEntityGuid(orders.getGuid()); tag2.setPropagate(true); tag2.setRemovePropagationsOnEntityDelete(true); addClassification(orders, tag2); List<String> propagatedEntities = Arrays.asList(EMPLOYEES_PROCESS, US_EMPLOYEES_TABLE); assertClassificationExistInEntities(propagatedEntities, tag2); AtlasEntity orders_process = getEntity(ORDERS_PROCESS); AtlasEntity us_orders = getEntity(US_ORDERS_TABLE); deletePropagatedClassificationExpectFail(orders_process, tag2); deletePropagatedClassificationExpectFail(us_orders, tag2); deleteEntity(ORDERS_TABLE); assertClassificationNotExistInEntity(ORDERS_PROCESS, tag2); assertClassificationNotExistInEntity(US_ORDERS_TABLE, tag2); }
private V findFrom(List<V> reference, V check) { return (V) CollectionUtils.find(reference, ox -> ((V) ox).getTypeName().equals(check.getTypeName())); }
public AtlasClassification toAtlasClassification(AtlasVertex classificationVertex) throws AtlasBaseException { AtlasClassification ret = new AtlasClassification(getTypeName(classificationVertex)); ret.setEntityGuid(AtlasGraphUtilsV2.getEncodedProperty(classificationVertex, CLASSIFICATION_ENTITY_GUID, String.class)); ret.setEntityStatus(getClassificationEntityStatus(classificationVertex)); ret.setPropagate(isPropagationEnabled(classificationVertex)); ret.setRemovePropagationsOnEntityDelete(getRemovePropagations(classificationVertex)); String strValidityPeriods = AtlasGraphUtilsV2.getEncodedProperty(classificationVertex, CLASSIFICATION_VALIDITY_PERIODS_KEY, String.class); if (strValidityPeriods != null) { ret.setValidityPeriods(AtlasJson.fromJson(strValidityPeriods, TIME_BOUNDARIES_LIST_TYPE)); } mapAttributes(classificationVertex, ret, null); return ret; }
addedClassifications.add(new AtlasClassification(TAG_NAME, TAG_ATTRIBUTE_NAME, TAG_ATTRIBUTE_VALUE)); AtlasEntity tblEntityFromDb = getEntityFromStore(tblEntityGuid); Set<String> actualDBClassifications = new HashSet<>(CollectionUtils.collect(dbEntityFromDb.getClassifications(), o -> ((AtlasClassification) o).getTypeName())); Set<String> actualTblClassifications = new HashSet<>(CollectionUtils.collect(tblEntityFromDb.getClassifications(), o -> ((AtlasClassification) o).getTypeName())); Set<String> actualDBAssociatedEntityGuid = new HashSet<>(CollectionUtils.collect(dbEntityFromDb.getClassifications(), o -> ((AtlasClassification) o).getEntityGuid())); Set<String> actualTblAssociatedEntityGuid = new HashSet<>(CollectionUtils.collect(tblEntityFromDb.getClassifications(), o -> ((AtlasClassification) o).getEntityGuid()));
private void assertClassificationEquals(Set<AtlasClassification> propagatedClassifications, AtlasClassification expected) { String expectedTypeName = expected.getTypeName(); for (AtlasClassification c : propagatedClassifications) { if(c.getTypeName().equals(expectedTypeName)) { assertTrue(c.isPropagate() == expected.isPropagate(), "isPropgate does not match"); assertTrue(c.getValidityPeriods() == expected.getValidityPeriods(), "validityPeriods do not match"); return; } } fail(expectedTypeName + " could not be found"); }
@Override public void apply(AtlasTransformableEntity transformableEntity) { AtlasEntity entity = transformableEntity.getEntity(); if (entity.getClassifications() == null) { entity.setClassifications(new ArrayList<>()); } boolean hasClassification = false; for (AtlasClassification c : entity.getClassifications()) { hasClassification = c.getTypeName().equals(classificationName); if (hasClassification) { break; } } if (!hasClassification) { entity.getClassifications().add(new AtlasClassification(classificationName)); } }
private AtlasVertex createClassificationVertex(AtlasClassification classification) { if (LOG.isDebugEnabled()) { LOG.debug("==> createVertex({})", classification.getTypeName()); } AtlasClassificationType classificationType = typeRegistry.getClassificationTypeByName(classification.getTypeName()); AtlasVertex ret = createStructVertex(classification); AtlasGraphUtilsV2.addEncodedProperty(ret, SUPER_TYPES_PROPERTY_KEY, classificationType.getAllSuperTypes()); AtlasGraphUtilsV2.setEncodedProperty(ret, CLASSIFICATION_ENTITY_GUID, classification.getEntityGuid()); AtlasGraphUtilsV2.setEncodedProperty(ret, CLASSIFICATION_ENTITY_STATUS, classification.getEntityStatus().name()); return ret; }
private static HashMap getNestedTraitDetails(final AtlasClassification atlasClassification) { return new HashMap<String, Object>() {{ put("$typeName$", atlasClassification.getTypeName()); if (MapUtils.isNotEmpty(atlasClassification.getAttributes())) { putAll(atlasClassification.getAttributes()); } }}; }
private AtlasEdge mapClassification(EntityOperation operation, final EntityMutationContext context, AtlasClassification classification, AtlasEntityType entityType, AtlasVertex parentInstanceVertex, AtlasVertex traitInstanceVertex) throws AtlasBaseException { if (classification.getValidityPeriods() != null) { String strValidityPeriods = AtlasJson.toJson(classification.getValidityPeriods()); AtlasGraphUtilsV2.setEncodedProperty(traitInstanceVertex, CLASSIFICATION_VALIDITY_PERIODS_KEY, strValidityPeriods); } else { // if 'null', don't update existing value in the classification } if (classification.isPropagate() != null) { AtlasGraphUtilsV2.setEncodedProperty(traitInstanceVertex, CLASSIFICATION_VERTEX_PROPAGATE_KEY, classification.isPropagate()); } if (classification.getRemovePropagationsOnEntityDelete() != null) { AtlasGraphUtilsV2.setEncodedProperty(traitInstanceVertex, CLASSIFICATION_VERTEX_REMOVE_PROPAGATIONS_KEY, classification.getRemovePropagationsOnEntityDelete()); } // map all the attributes to this newly created AtlasVertex mapAttributes(classification, traitInstanceVertex, operation, context); AtlasEdge ret = getClassificationEdge(parentInstanceVertex, traitInstanceVertex); if (ret == null) { ret = graphHelper.addClassificationEdge(parentInstanceVertex, traitInstanceVertex, false); } return ret; }
private List<AtlasClassification> toAtlasClassifications(String[] traitNames) { List<AtlasClassification> ret = new ArrayList<>(); List<String> traits = Arrays.asList(traitNames); if (CollectionUtils.isNotEmpty(traits)) { for (String trait : traits) { ret.add(new AtlasClassification(trait)); } } return ret; }