public static void recordToMap(Map<String, String> map, ARecord record) throws AlgebricksException { String[] keys = record.getType().getFieldNames(); for (int i = 0; i < keys.length; i++) { String key = keys[i]; String value = aObjToString(record.getValueByPos(i)); map.put(key, value); } }
@Override public boolean deepEqual(IAObject obj) { return equals(obj); }
private CompactionPolicy createCompactionPolicyFromARecord(ARecord compactionPolicyRecord) { CompactionPolicy compactionPolicy = null; String dataverseName = ((AString) compactionPolicyRecord .getValueByPos(MetadataRecordTypes.COMPACTION_POLICY_ARECORD_DATAVERSE_NAME_FIELD_INDEX)) .getStringValue(); String policyName = ((AString) compactionPolicyRecord .getValueByPos(MetadataRecordTypes.COMPACTION_POLICY_ARECORD_POLICY_NAME_FIELD_INDEX)).getStringValue(); String className = ((AString) compactionPolicyRecord .getValueByPos(MetadataRecordTypes.COMPACTION_POLICY_ARECORD_CLASSNAME_FIELD_INDEX)).getStringValue(); compactionPolicy = new CompactionPolicy(dataverseName, policyName, className); return compactionPolicy; }
@Override public IAObject getIAObject() { // As the open part can be changed any time, we cannot pre-allocate the arrays. int numberOfOpenFields = openFields.size(); String[] openFieldNames = new String[numberOfOpenFields]; IAType[] openFieldTypes = new IAType[numberOfOpenFields]; IAObject[] openFieldValues = new IAObject[numberOfOpenFields]; IAObject[] closedFieldValues = new IAObject[fields.length]; int idx = 0; for (Map.Entry<String, IJObject> entry : openFields.entrySet()) { openFieldNames[idx] = entry.getKey(); openFieldTypes[idx] = entry.getValue().getIAObject().getType(); openFieldValues[idx] = entry.getValue().getIAObject(); } for (int iter1 = 0; iter1 < fields.length; iter1++) { closedFieldValues[iter1] = fields[iter1].getIAObject(); } ARecordType openPartRecType = new ARecordType(null, openFieldNames, openFieldTypes, true); ARecordType mergedRecordType = ARecordSerializerDeserializer.mergeRecordTypes(recordType, openPartRecType); IAObject[] mergedFields = ARecordSerializerDeserializer.mergeFields(closedFieldValues, openFieldValues); return new ARecord(mergedRecordType, mergedFields); }
private Library createLibraryFromARecord(ARecord libraryRecord) { String dataverseName = ((AString) libraryRecord.getValueByPos(MetadataRecordTypes.LIBRARY_ARECORD_DATAVERSENAME_FIELD_INDEX)) .getStringValue(); String libraryName = ((AString) libraryRecord.getValueByPos(MetadataRecordTypes.LIBRARY_ARECORD_NAME_FIELD_INDEX)) .getStringValue(); return new Library(dataverseName, libraryName); }
ARecordType mergedRecordType = mergeRecordTypes(this.recordType, openPartRecType); IAObject[] mergedFields = mergeFields(schemaFields, openFields); return new ARecord(mergedRecordType, mergedFields); } else { return new ARecord(openPartRecType, openFields); return new ARecord(this.recordType, schemaFields);
private long getRebalanceCount(ARecord datasetRecord) { // Read the rebalance count if there is one. int rebalanceCountIndex = datasetRecord.getType().getFieldIndex(MetadataRecordTypes.DATASET_ARECORD_REBALANCE_FIELD_NAME); return rebalanceCountIndex >= 0 ? ((AInt64) datasetRecord.getValueByPos(rebalanceCountIndex)).getLongValue() : 0; }
private void setFile(ARecord externalFileRecord, ExternalFile file) { file.setFileName( ((AString) externalFileRecord.getValueByPos(FilesIndexDescription.EXTERNAL_FILE_NAME_FIELD_INDEX)) .getStringValue()); file.setSize(((AInt64) externalFileRecord.getValueByPos(FilesIndexDescription.EXTERNAL_FILE_SIZE_FIELD_INDEX)) .getLongValue()); file.setLastModefiedTime(new Date( ((ADateTime) externalFileRecord.getValueByPos(FilesIndexDescription.EXTERNAL_FILE_MOD_DATE_FIELD_INDEX)) .getChrononTime())); }
public String recordToString(ARecord record) { StringBuilder sb = new StringBuilder(); sb.append("{ "); String[] fieldNames = record.getType().getFieldNames(); IAObject val; if (fieldNames != null) { for (int i = 0; i < fieldNames.length; i++) { if (i > 0) { sb.append(", "); } sb.append("\"").append(fieldNames[i]).append("\"").append(": "); val = record.getValueByPos(i); if (val instanceof ARecord) { sb.append(recordToString((ARecord) val)); } else if (val instanceof AOrderedList) { sb.append(listToString((AOrderedList) val)); } else { sb.append(val); } } } sb.append(" }"); return sb.toString(); }
protected Map<String, String> getDatasetHints(ARecord datasetRecord) { Map<String, String> hints = new HashMap<>(); String key; String value; AUnorderedList list = (AUnorderedList) datasetRecord.getValueByPos(MetadataRecordTypes.DATASET_ARECORD_HINTS_FIELD_INDEX); IACursor cursor = list.getCursor(); while (cursor.next()) { ARecord field = (ARecord) cursor.get(); key = ((AString) field.getValueByPos(MetadataRecordTypes.PROPERTIES_NAME_FIELD_INDEX)).getStringValue(); value = ((AString) field.getValueByPos(MetadataRecordTypes.PROPERTIES_VALUE_FIELD_INDEX)).getStringValue(); hints.put(key, value); } return hints; }
private String getCompressionScheme(ARecord datasetRecord) { final ARecordType datasetType = datasetRecord.getType(); final int compressionIndex = datasetType .getFieldIndex(MetadataRecordTypes.DATASET_ARECORD_BLOCK_LEVEL_STORAGE_COMPRESSION_FIELD_NAME); if (compressionIndex >= 0) { final ARecordType compressionType = (ARecordType) datasetType.getFieldTypes()[compressionIndex]; final int schemeIndex = compressionType .getFieldIndex(MetadataRecordTypes.DATASET_ARECORD_DATASET_COMPRESSION_SCHEME_FIELD_NAME); return ((AString) datasetRecord.getValueByPos(schemeIndex)).getStringValue(); } return CompressionManager.NONE; }
private ExternalFile createExternalFileFromARecord(ARecord externalFileRecord) { String dataverseName = ((AString) externalFileRecord .getValueByPos(MetadataRecordTypes.EXTERNAL_FILE_ARECORD_DATAVERSENAME_FIELD_INDEX)).getStringValue(); String datasetName = ((AString) externalFileRecord .getValueByPos(MetadataRecordTypes.EXTERNAL_FILE_ARECORD_DATASET_NAME_FIELD_INDEX)).getStringValue(); int fileNumber = ((AInt32) externalFileRecord .getValueByPos(MetadataRecordTypes.EXTERNAL_FILE_ARECORD_FILE_NUMBER_FIELD_INDEX)).getIntegerValue(); String fileName = ((AString) externalFileRecord .getValueByPos(MetadataRecordTypes.EXTERNAL_FILE_ARECORD_FILE_NAME_FIELD_INDEX)).getStringValue(); long fileSize = ((AInt64) externalFileRecord .getValueByPos(MetadataRecordTypes.EXTERNAL_FILE_ARECORD_FILE_SIZE_FIELD_INDEX)).getLongValue(); Date lastMoDifiedDate = new Date(((ADateTime) externalFileRecord .getValueByPos(MetadataRecordTypes.EXTERNAL_FILE_ARECORD_FILE_MOD_DATE_FIELD_INDEX)).getChrononTime()); ExternalFilePendingOp pendingOp = ExternalFilePendingOp.values()[((AInt32) externalFileRecord .getValueByPos(MetadataRecordTypes.EXTERNAL_FILE_ARECORD_FILE_PENDING_OP_FIELD_INDEX)) .getIntegerValue()]; return new ExternalFile(dataverseName, datasetName, fileNumber, fileName, lastMoDifiedDate, fileSize, pendingOp); }
private FeedConnection createFeedConnFromRecord(ARecord feedConnRecord) { String dataverseName = ((AString) feedConnRecord.getValueByPos(MetadataRecordTypes.FEED_CONN_DATAVERSE_NAME_FIELD_INDEX)) .getStringValue(); String feedName = ((AString) feedConnRecord.getValueByPos(MetadataRecordTypes.FEED_CONN_FEED_NAME_FIELD_INDEX)) .getStringValue(); String datasetName = ((AString) feedConnRecord.getValueByPos(MetadataRecordTypes.FEED_CONN_DATASET_NAME_FIELD_INDEX)) .getStringValue(); String outputType = ((AString) feedConnRecord.getValueByPos(MetadataRecordTypes.FEED_CONN_OUTPUT_TYPE_INDEX)) .getStringValue(); String policyName = ((AString) feedConnRecord.getValueByPos(MetadataRecordTypes.FEED_CONN_POLICY_FIELD_INDEX)) .getStringValue(); ArrayList<FunctionSignature> appliedFunctions = null; Object o = feedConnRecord.getValueByPos(MetadataRecordTypes.FEED_CONN_APPLIED_FUNCTIONS_FIELD_INDEX); IACursor cursor; FunctionSignature functionSignature; cursor = ((AUnorderedList) feedConnRecord .getValueByPos(MetadataRecordTypes.FEED_CONN_APPLIED_FUNCTIONS_FIELD_INDEX)).getCursor(); while (cursor.next()) { String[] functionFullName = ((AString) cursor.get()).getStringValue().split("\\."); int whereClauseIdx = feedConnRecord.getType().getFieldIndex(MetadataRecordTypes.FIELD_NAME_WHERE_CLAUSE); String whereClauseBody = whereClauseIdx >= 0 ? ((AString) feedConnRecord.getValueByPos(whereClauseIdx)).getStringValue() : "";
private FeedPolicyEntity createFeedPolicyFromARecord(ARecord feedPolicyRecord) { FeedPolicyEntity feedPolicy = null; String dataverseName = ((AString) feedPolicyRecord .getValueByPos(MetadataRecordTypes.FEED_POLICY_ARECORD_DATAVERSE_NAME_FIELD_INDEX)).getStringValue(); String policyName = ((AString) feedPolicyRecord .getValueByPos(MetadataRecordTypes.FEED_POLICY_ARECORD_POLICY_NAME_FIELD_INDEX)).getStringValue(); String description = ((AString) feedPolicyRecord .getValueByPos(MetadataRecordTypes.FEED_POLICY_ARECORD_DESCRIPTION_FIELD_INDEX)).getStringValue(); IACursor cursor = ((AUnorderedList) feedPolicyRecord .getValueByPos(MetadataRecordTypes.FEED_POLICY_ARECORD_PROPERTIES_FIELD_INDEX)).getCursor(); Map<String, String> policyParamters = new HashMap<>(); String key; String value; while (cursor.next()) { ARecord field = (ARecord) cursor.get(); key = ((AString) field.getValueByPos(MetadataRecordTypes.PROPERTIES_NAME_FIELD_INDEX)).getStringValue(); value = ((AString) field.getValueByPos(MetadataRecordTypes.PROPERTIES_VALUE_FIELD_INDEX)).getStringValue(); policyParamters.put(key, value); } feedPolicy = new FeedPolicyEntity(dataverseName, policyName, description, policyParamters); return feedPolicy; }
protected Dataset createDatasetFromARecord(ARecord datasetRecord) throws HyracksDataException { String dataverseName = ((AString) datasetRecord.getValueByPos(MetadataRecordTypes.DATASET_ARECORD_DATAVERSENAME_FIELD_INDEX)) .getStringValue(); String datasetName = ((AString) datasetRecord.getValueByPos(MetadataRecordTypes.DATASET_ARECORD_DATASETNAME_FIELD_INDEX)) .getStringValue(); String typeName = ((AString) datasetRecord.getValueByPos(MetadataRecordTypes.DATASET_ARECORD_DATATYPENAME_FIELD_INDEX)) .getStringValue(); String typeDataverseName = ((AString) datasetRecord .getValueByPos(MetadataRecordTypes.DATASET_ARECORD_DATATYPEDATAVERSENAME_FIELD_INDEX)).getStringValue(); DatasetType datasetType = DatasetType.valueOf( ((AString) datasetRecord.getValueByPos(MetadataRecordTypes.DATASET_ARECORD_DATASETTYPE_FIELD_INDEX)) .getStringValue()); IDatasetDetails datasetDetails = null; int datasetId = ((AInt32) datasetRecord.getValueByPos(MetadataRecordTypes.DATASET_ARECORD_DATASETID_FIELD_INDEX)) .getIntegerValue(); int pendingOp = ((AInt32) datasetRecord.getValueByPos(MetadataRecordTypes.DATASET_ARECORD_PENDINGOP_FIELD_INDEX)) .getIntegerValue(); String nodeGroupName = ((AString) datasetRecord.getValueByPos(MetadataRecordTypes.DATASET_ARECORD_GROUPNAME_FIELD_INDEX)) .getStringValue(); String compactionPolicy = ((AString) datasetRecord .getValueByPos(MetadataRecordTypes.DATASET_ARECORD_COMPACTION_POLICY_FIELD_INDEX)).getStringValue(); IACursor cursor = ((AOrderedList) datasetRecord .getValueByPos(MetadataRecordTypes.DATASET_ARECORD_COMPACTION_POLICY_PROPERTIES_FIELD_INDEX)) .getCursor();
private DatasourceAdapter createAdapterFromARecord(ARecord adapterRecord) { String dataverseName = ((AString) adapterRecord .getValueByPos(MetadataRecordTypes.DATASOURCE_ADAPTER_ARECORD_DATAVERSENAME_FIELD_INDEX)) .getStringValue(); String adapterName = ((AString) adapterRecord.getValueByPos(MetadataRecordTypes.DATASOURCE_ADAPTER_ARECORD_NAME_FIELD_INDEX)) .getStringValue(); String classname = ((AString) adapterRecord .getValueByPos(MetadataRecordTypes.DATASOURCE_ADAPTER_ARECORD_CLASSNAME_FIELD_INDEX)).getStringValue(); IDataSourceAdapter.AdapterType adapterType = IDataSourceAdapter.AdapterType.valueOf( ((AString) adapterRecord.getValueByPos(MetadataRecordTypes.DATASOURCE_ADAPTER_ARECORD_TYPE_FIELD_INDEX)) .getStringValue()); return new DatasourceAdapter(new AdapterIdentifier(dataverseName, adapterName), classname, adapterType); }
DataInput in = new DataInputStream(stream); ARecord rec = recordSerde.deserialize(in); String dvName = ((AString) rec.getValueByPos(MetadataRecordTypes.INDEX_ARECORD_DATAVERSENAME_FIELD_INDEX)) .getStringValue(); String dsName = ((AString) rec.getValueByPos(MetadataRecordTypes.INDEX_ARECORD_DATASETNAME_FIELD_INDEX)) .getStringValue(); String indexName = ((AString) rec.getValueByPos(MetadataRecordTypes.INDEX_ARECORD_INDEXNAME_FIELD_INDEX)).getStringValue(); IndexType indexStructure = IndexType .valueOf(((AString) rec.getValueByPos(MetadataRecordTypes.INDEX_ARECORD_INDEXSTRUCTURE_FIELD_INDEX)) .getStringValue()); IACursor fieldNameCursor = ((AOrderedList) rec.getValueByPos(MetadataRecordTypes.INDEX_ARECORD_SEARCHKEY_FIELD_INDEX)).getCursor(); List<List<String>> searchKey = new ArrayList<>(); AOrderedList fieldNameList; int indexKeyTypeFieldPos = rec.getType().getFieldIndex(INDEX_SEARCHKEY_TYPE_FIELD_NAME); IACursor fieldTypeCursor = new ACollectionCursor(); if (indexKeyTypeFieldPos > 0) { fieldTypeCursor = ((AOrderedList) rec.getValueByPos(indexKeyTypeFieldPos)).getCursor(); int isEnforcedFieldPos = rec.getType().getFieldIndex(INDEX_ISENFORCED_FIELD_NAME); Boolean isEnforcingKeys = false; if (isEnforcedFieldPos > 0) { isEnforcingKeys = ((ABoolean) rec.getValueByPos(isEnforcedFieldPos)).getBoolean(); ((ABoolean) rec.getValueByPos(MetadataRecordTypes.INDEX_ARECORD_ISPRIMARY_FIELD_INDEX)).getBoolean(); int pendingOp = ((AInt32) rec.getValueByPos(MetadataRecordTypes.INDEX_ARECORD_PENDINGOP_FIELD_INDEX)).getIntegerValue();
@Override public Dataverse getMetadataEntityFromTuple(ITupleReference frameTuple) throws HyracksDataException { byte[] serRecord = frameTuple.getFieldData(DATAVERSE_PAYLOAD_TUPLE_FIELD_INDEX); int recordStartOffset = frameTuple.getFieldStart(DATAVERSE_PAYLOAD_TUPLE_FIELD_INDEX); int recordLength = frameTuple.getFieldLength(DATAVERSE_PAYLOAD_TUPLE_FIELD_INDEX); ByteArrayInputStream stream = new ByteArrayInputStream(serRecord, recordStartOffset, recordLength); DataInput in = new DataInputStream(stream); ARecord dataverseRecord = recordSerDes.deserialize(in); return new Dataverse(((AString) dataverseRecord.getValueByPos(0)).getStringValue(), ((AString) dataverseRecord.getValueByPos(1)).getStringValue(), ((AInt32) dataverseRecord.getValueByPos(3)).getIntegerValue()); }
@SuppressWarnings({ "unchecked", "rawtypes" }) public static void serializeSchemalessRecord(ARecord record, DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException { ISerializerDeserializer<AString> stringSerde = SerializerDeserializerProvider.INSTANCE.getSerializerDeserializer(BuiltinType.ASTRING); RecordBuilder confRecordBuilder = new RecordBuilder(); confRecordBuilder.reset(RecordUtil.FULLY_OPEN_RECORD_TYPE); ArrayBackedValueStorage fieldNameBytes = new ArrayBackedValueStorage(); ArrayBackedValueStorage fieldValueBytes = new ArrayBackedValueStorage(); for (int i = 0; i < record.getType().getFieldNames().length; i++) { String fieldName = record.getType().getFieldNames()[i]; fieldValueBytes.reset(); fieldNameBytes.reset(); stringSerde.serialize(new AString(fieldName), fieldNameBytes.getDataOutput()); ISerializerDeserializer valueSerde = SerializerDeserializerProvider.INSTANCE .getSerializerDeserializer(record.getType().getFieldTypes()[i]); valueSerde.serialize(record.getValueByPos(i), fieldValueBytes.getDataOutput()); confRecordBuilder.addField(fieldNameBytes, fieldValueBytes); } confRecordBuilder.write(dataOutput, writeTypeTag); }
private Feed createFeedFromARecord(ARecord feedRecord) { Feed feed; String dataverseName = ((AString) feedRecord.getValueByPos(MetadataRecordTypes.FEED_ARECORD_DATAVERSE_NAME_FIELD_INDEX)) .getStringValue(); String feedName = ((AString) feedRecord.getValueByPos(MetadataRecordTypes.FEED_ARECORD_FEED_NAME_FIELD_INDEX)) .getStringValue(); AUnorderedList feedConfig = (AUnorderedList) feedRecord.getValueByPos(MetadataRecordTypes.FEED_ARECORD_ADAPTOR_CONFIG_INDEX); IACursor cursor = feedConfig.getCursor(); // restore configurations String key; String value; Map<String, String> adaptorConfiguration = new HashMap<>(); while (cursor.next()) { ARecord field = (ARecord) cursor.get(); key = ((AString) field.getValueByPos(MetadataRecordTypes.PROPERTIES_NAME_FIELD_INDEX)).getStringValue(); value = ((AString) field.getValueByPos(MetadataRecordTypes.PROPERTIES_VALUE_FIELD_INDEX)).getStringValue(); adaptorConfiguration.put(key, value); } feed = new Feed(dataverseName, feedName, adaptorConfiguration); return feed; }