protected void registerProperty(AttributeDefinition propertyDefinition) { try { propertyDefs.put(propertyDefinition.name, propertyDefinition); properties.put(propertyDefinition.name, new AttributeInfo(typeSystem, propertyDefinition, null)); } catch (AtlasException e) { throw new CatalogRuntimeException("Unable to create attribute: " + propertyDefinition.name, e); } }
if (i.dataType() == DataTypes.BIGINTEGER_TYPE) { bigIntegers[pos] = null; } else if (i.dataType() == DataTypes.BIGDECIMAL_TYPE) { bigDecimals[pos] = null; } else if (i.dataType() == DataTypes.DATE_TYPE) { dates[pos] = null; } else if (i.dataType() == DataTypes.INT_TYPE) { ints[pos] = 0; } else if (i.dataType() == DataTypes.BOOLEAN_TYPE) { bools[pos] = false; } else if (i.dataType() == DataTypes.BYTE_TYPE) { bytes[pos] = 0; } else if (i.dataType() == DataTypes.SHORT_TYPE) { shorts[pos] = 0; } else if (i.dataType() == DataTypes.LONG_TYPE) { longs[pos] = 0; } else if (i.dataType() == DataTypes.FLOAT_TYPE) { floats[pos] = 0; } else if (i.dataType() == DataTypes.DOUBLE_TYPE) { doubles[pos] = 0; } else if (i.dataType() == DataTypes.STRING_TYPE) { strings[pos] = null; } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.ENUM) { ints[pos] = 0; } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.ARRAY) { arrays[pos] = null; } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.MAP) { maps[pos] = null; } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.STRUCT
@Override public String toString() { StringBuilder buf = new StringBuilder(); try { output(buf, new HashSet<String>()); } catch (AtlasException e) { throw new RuntimeException(e); } return buf.toString(); }
private AttributeInfo constructAttributeInfo(AttributeDefinition attrDef) throws AtlasException { AttributeInfo info = new AttributeInfo(this, attrDef, null); if (transientTypes.keySet().contains(attrDef.dataTypeName)) { recursiveRefs.add(info); } if (info.dataType().getTypeCategory() == DataTypes.TypeCategory.ARRAY) { DataTypes.ArrayType arrType = (DataTypes.ArrayType) info.dataType(); if (transientTypes.keySet().contains(arrType.getElemType().getName())) { recursiveArrayTypes.add(arrType); } } if (info.dataType().getTypeCategory() == DataTypes.TypeCategory.MAP) { DataTypes.MapType mapType = (DataTypes.MapType) info.dataType(); if (transientTypes.keySet().contains(mapType.getKeyType().getName())) { recursiveMapTypes.add(mapType); } else if (transientTypes.keySet().contains(mapType.getValueType().getName())) { recursiveMapTypes.add(mapType); } } if (info.multiplicity.upper > 1 && !(info.dataType().getTypeCategory() == DataTypes.TypeCategory.MAP || info.dataType().getTypeCategory() == DataTypes.TypeCategory.ARRAY)) { throw new AtlasException( String.format("A multiplicty of more than one requires a collection type for attribute '%s'", info.name)); } return info; }
private void setupRecursiveTypes() throws AtlasException { for (AttributeInfo info : recursiveRefs) { info.setDataType(dataType(info.dataType().getName())); } for (DataTypes.ArrayType arrType : recursiveArrayTypes) { arrType.setElemType(dataType(arrType.getElemType().getName())); } for (DataTypes.MapType mapType : recursiveMapTypes) { mapType.setKeyType(dataType(mapType.getKeyType().getName())); mapType.setValueType(dataType(mapType.getValueType().getName())); } }
AttributeInfo newAttribute = newFields.get(attribute.name); if (!newAttribute.equals(attribute)) { if (attribute.multiplicity == Multiplicity.REQUIRED && newAttribute.multiplicity == Multiplicity.OPTIONAL) {
public static AttributeDefinition fromJson(String jsonStr) throws JSONException { JSONObject json = new JSONObject(jsonStr); String reverseAttr = null; boolean isSoftRef = false; if (json.has("reverseAttributeName")) { reverseAttr = json.getString("reverseAttributeName"); } AttributeDefinition attributeDefinition = new AttributeDefinition(json.getString("name"), json.getString("dataType"), Multiplicity.fromJson(json.getString("multiplicity")), json.getBoolean("isComposite"), json.getBoolean("isUnique"), json.getBoolean("isIndexable"), reverseAttr); if (json.has("options")) { isSoftRef = getSoftRef(json); attributeDefinition.setSoftRef(isSoftRef); } return attributeDefinition; }
private AttributeInfo constructAttributeInfo(AttributeDefinition attrDef) throws AtlasException { AttributeInfo info = new AttributeInfo(this, attrDef, null); if (transientTypes.keySet().contains(attrDef.dataTypeName)) { recursiveRefs.add(info); } if (info.dataType().getTypeCategory() == DataTypes.TypeCategory.ARRAY) { DataTypes.ArrayType arrType = (DataTypes.ArrayType) info.dataType(); if (transientTypes.keySet().contains(arrType.getElemType().getName())) { recursiveArrayTypes.add(arrType); } } if (info.dataType().getTypeCategory() == DataTypes.TypeCategory.MAP) { DataTypes.MapType mapType = (DataTypes.MapType) info.dataType(); if (transientTypes.keySet().contains(mapType.getKeyType().getName())) { recursiveMapTypes.add(mapType); } else if (transientTypes.keySet().contains(mapType.getValueType().getName())) { recursiveMapTypes.add(mapType); } } if (info.multiplicity.upper > 1 && !(info.dataType().getTypeCategory() == DataTypes.TypeCategory.MAP || info.dataType().getTypeCategory() == DataTypes.TypeCategory.ARRAY)) { throw new AtlasException( String.format("A multiplicty of more than one requires a collection type for attribute '%s'", info.name)); } return info; }
private void setupRecursiveTypes() throws AtlasException { for (AttributeInfo info : recursiveRefs) { info.setDataType(dataType(info.dataType().getName())); } for (DataTypes.ArrayType arrType : recursiveArrayTypes) { arrType.setElemType(dataType(arrType.getElemType().getName())); } for (DataTypes.MapType mapType : recursiveMapTypes) { mapType.setKeyType(dataType(mapType.getKeyType().getName())); mapType.setValueType(dataType(mapType.getValueType().getName())); } }
AttributeInfo newAttribute = newFields.get(attribute.name); if (!newAttribute.equals(attribute)) { if (attribute.multiplicity == Multiplicity.REQUIRED && newAttribute.multiplicity == Multiplicity.OPTIONAL) {
if (i.dataType() == DataTypes.BIGINTEGER_TYPE) { bigIntegers[pos] = null; } else if (i.dataType() == DataTypes.BIGDECIMAL_TYPE) { bigDecimals[pos] = null; } else if (i.dataType() == DataTypes.DATE_TYPE) { dates[pos] = null; } else if (i.dataType() == DataTypes.INT_TYPE) { ints[pos] = 0; } else if (i.dataType() == DataTypes.BOOLEAN_TYPE) { bools[pos] = false; } else if (i.dataType() == DataTypes.STRING_TYPE) { strings[pos] = null; } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.ARRAY) { arrays[pos] = null; } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.MAP) { maps[pos] = null; } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.STRUCT || i.dataType().getTypeCategory() == DataTypes.TypeCategory.TRAIT) { structs[pos] = null; } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.CLASS) { ids[pos] = null; referenceables[pos] = null; } else { throw new AtlasException(String.format("Unknown datatype %s", i.dataType()));
/** * construct a temporary StructType for a Query Result. This is not registered in the * typeSystem. * The attributes in the typeDefinition can only reference permanent types. * @param name struct type name * @param attrDefs struct type definition * @return temporary struct type * @throws AtlasException */ public StructType defineQueryResultType(String name, Map<String, IDataType> tempTypes, AttributeDefinition... attrDefs) throws AtlasException { AttributeInfo[] infos = new AttributeInfo[attrDefs.length]; for (int i = 0; i < attrDefs.length; i++) { infos[i] = new AttributeInfo(this, attrDefs[i], tempTypes); } return new StructType(this, name, null, infos); }
@Override public String toString() { StringBuilder buf = new StringBuilder(); try { output(buf, new HashSet<String>()); } catch (AtlasException e) { throw new RuntimeException(e); } return buf.toString(); }
if ( i.dataType().getTypeCategory() == DataTypes.TypeCategory.PRIMITIVE) { return ((DataTypes.PrimitiveType) i.dataType()).nullValue(); } else { return null; if (i.dataType() == DataTypes.BOOLEAN_TYPE) { return bools[pos]; } else if (i.dataType() == DataTypes.BYTE_TYPE) { return bytes[pos]; } else if (i.dataType() == DataTypes.SHORT_TYPE) { return shorts[pos]; } else if (i.dataType() == DataTypes.INT_TYPE) { return ints[pos]; } else if (i.dataType() == DataTypes.LONG_TYPE) { return longs[pos]; } else if (i.dataType() == DataTypes.FLOAT_TYPE) { return floats[pos]; } else if (i.dataType() == DataTypes.DOUBLE_TYPE) { return doubles[pos]; } else if (i.dataType() == DataTypes.BIGINTEGER_TYPE) { return bigIntegers[pos]; } else if (i.dataType() == DataTypes.BIGDECIMAL_TYPE) { return bigDecimals[pos]; } else if (i.dataType() == DataTypes.DATE_TYPE) { return dates[pos]; } else if (i.dataType() == DataTypes.STRING_TYPE) { return strings[pos]; } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.ENUM) { return ((EnumType) i.dataType()).fromOrdinal(ints[pos]);
/** * construct a temporary StructType for a Query Result. This is not registered in the * typeSystem. * The attributes in the typeDefinition can only reference permanent types. * @param name struct type name * @param attrDefs struct type definition * @return temporary struct type * @throws AtlasException */ public StructType defineQueryResultType(String name, Map<String, IDataType> tempTypes, AttributeDefinition... attrDefs) throws AtlasException { AttributeInfo[] infos = new AttributeInfo[attrDefs.length]; for (int i = 0; i < attrDefs.length; i++) { infos[i] = new AttributeInfo(this, attrDefs[i], tempTypes); } return new StructType(this, name, null, infos); }
while (it.hasNext()) { AttributeInfo attrInfo = it.next(); attrInfo.output(buf, typesInProcess); if (it.hasNext()) { buf.append(", ");
if ( i.dataType().getTypeCategory() == DataTypes.TypeCategory.PRIMITIVE) { return ((DataTypes.PrimitiveType) i.dataType()).nullValue(); } else { return null; if (i.dataType() == DataTypes.BOOLEAN_TYPE) { return bools[pos]; } else if (i.dataType() == DataTypes.BYTE_TYPE) { return bytes[pos]; } else if (i.dataType() == DataTypes.SHORT_TYPE) { return shorts[pos]; } else if (i.dataType() == DataTypes.INT_TYPE) { return ints[pos]; } else if (i.dataType() == DataTypes.LONG_TYPE) { return longs[pos]; } else if (i.dataType() == DataTypes.FLOAT_TYPE) { return floats[pos]; } else if (i.dataType() == DataTypes.DOUBLE_TYPE) { return doubles[pos]; } else if (i.dataType() == DataTypes.BIGINTEGER_TYPE) { return bigIntegers[pos]; } else if (i.dataType() == DataTypes.BIGDECIMAL_TYPE) { return bigDecimals[pos]; } else if (i.dataType() == DataTypes.DATE_TYPE) { return dates[pos]; } else if (i.dataType() == DataTypes.STRING_TYPE) { return strings[pos]; } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.ENUM) { return ((EnumType) i.dataType()).fromOrdinal(ints[pos]);
public static AttributeInfo newAttributeInfo(String attribute, IDataType type) { try { return new AttributeInfo(ts, new AttributeDefinition(attribute, type.getName(), Multiplicity.REQUIRED, false, null), null); } catch (AtlasException e) { throw new RuntimeException(e); } }
while (it.hasNext()) { AttributeInfo attrInfo = it.next(); attrInfo.output(buf, typesInProcess); if (it.hasNext()) { buf.append(", ");
@Override public void updateSignatureHash(MessageDigest digester, Object val) throws AtlasException { if( !(val instanceof ITypedStruct)) { throw new IllegalArgumentException("Unexpected value type " + val.getClass().getSimpleName() + ". Expected instance of ITypedStruct"); } digester.update(getName().getBytes(Charset.forName("UTF-8"))); if(fieldMapping.fields != null && val != null) { IStruct typedValue = (IStruct) val; for (AttributeInfo aInfo : fieldMapping.fields.values()) { Object attrVal = typedValue.get(aInfo.name); if(attrVal != null) { aInfo.dataType().updateSignatureHash(digester, attrVal); } } } }