Search in sources :

Example 1 with Record

use of org.apache.nifi.repository.schema.Record in project nifi by apache.

the class EventIdFirstSchemaRecordReader method readHeader.

@Override
@SuppressWarnings("unchecked")
protected synchronized void readHeader(final DataInputStream in, final int serializationVersion) throws IOException {
    verifySerializationVersion(serializationVersion);
    final int eventSchemaLength = in.readInt();
    final byte[] buffer = new byte[eventSchemaLength];
    StreamUtils.fillBuffer(in, buffer);
    try (final ByteArrayInputStream bais = new ByteArrayInputStream(buffer)) {
        schema = RecordSchema.readFrom(bais);
    }
    recordReader = SchemaRecordReader.fromSchema(schema);
    final int headerSchemaLength = in.readInt();
    final byte[] headerSchemaBuffer = new byte[headerSchemaLength];
    StreamUtils.fillBuffer(in, headerSchemaBuffer);
    final RecordSchema headerSchema;
    try (final ByteArrayInputStream bais = new ByteArrayInputStream(headerSchemaBuffer)) {
        headerSchema = RecordSchema.readFrom(bais);
    }
    final SchemaRecordReader headerReader = SchemaRecordReader.fromSchema(headerSchema);
    final Record headerRecord = headerReader.readRecord(in);
    componentIds = (List<String>) headerRecord.getFieldValue(EventIdFirstHeaderSchema.FieldNames.COMPONENT_IDS);
    componentTypes = (List<String>) headerRecord.getFieldValue(EventIdFirstHeaderSchema.FieldNames.COMPONENT_TYPES);
    queueIds = (List<String>) headerRecord.getFieldValue(EventIdFirstHeaderSchema.FieldNames.QUEUE_IDS);
    eventTypes = (List<String>) headerRecord.getFieldValue(EventIdFirstHeaderSchema.FieldNames.EVENT_TYPES);
    firstEventId = (Long) headerRecord.getFieldValue(EventIdFirstHeaderSchema.FieldNames.FIRST_EVENT_ID);
    systemTimeOffset = (Long) headerRecord.getFieldValue(EventIdFirstHeaderSchema.FieldNames.TIMESTAMP_OFFSET);
}
Also used : ByteArrayInputStream(java.io.ByteArrayInputStream) Record(org.apache.nifi.repository.schema.Record) LookupTableEventRecord(org.apache.nifi.provenance.schema.LookupTableEventRecord) RecordSchema(org.apache.nifi.repository.schema.RecordSchema) SchemaRecordReader(org.apache.nifi.repository.schema.SchemaRecordReader)

Example 2 with Record

use of org.apache.nifi.repository.schema.Record in project nifi by apache.

the class EventRecord method getEvent.

@SuppressWarnings("unchecked")
public static StandardProvenanceEventRecord getEvent(final Record record, final String storageFilename, final long storageByteOffset, final int maxAttributeLength) {
    final StandardProvenanceEventRecord.Builder builder = new StandardProvenanceEventRecord.Builder();
    builder.setAlternateIdentifierUri((String) record.getFieldValue(EventFieldNames.ALTERNATE_IDENTIFIER));
    builder.setChildUuids((List<String>) record.getFieldValue(EventFieldNames.CHILD_UUIDS));
    builder.setComponentId((String) record.getFieldValue(EventFieldNames.COMPONENT_ID));
    builder.setComponentType((String) record.getFieldValue(EventFieldNames.COMPONENT_TYPE));
    builder.setDetails((String) record.getFieldValue(EventFieldNames.EVENT_DETAILS));
    builder.setEventDuration((Long) record.getFieldValue(EventFieldNames.EVENT_DURATION));
    builder.setEventTime((Long) record.getFieldValue(EventFieldNames.EVENT_TIME));
    builder.setEventType(ProvenanceEventType.valueOf((String) record.getFieldValue(EventFieldNames.EVENT_TYPE)));
    builder.setFlowFileEntryDate((Long) record.getFieldValue(EventFieldNames.FLOWFILE_ENTRY_DATE));
    builder.setFlowFileUUID((String) record.getFieldValue(EventFieldNames.FLOWFILE_UUID));
    builder.setLineageStartDate((Long) record.getFieldValue(EventFieldNames.LINEAGE_START_DATE));
    builder.setParentUuids((List<String>) record.getFieldValue(EventFieldNames.PARENT_UUIDS));
    builder.setPreviousAttributes(truncateAttributes((Map<String, String>) record.getFieldValue(EventFieldNames.PREVIOUS_ATTRIBUTES), maxAttributeLength));
    builder.setRelationship((String) record.getFieldValue(EventFieldNames.RELATIONSHIP));
    builder.setSourceQueueIdentifier((String) record.getFieldValue(EventFieldNames.SOURCE_QUEUE_IDENTIFIER));
    builder.setSourceSystemFlowFileIdentifier((String) record.getFieldValue(EventFieldNames.SOURCE_SYSTEM_FLOWFILE_IDENTIFIER));
    builder.setTransitUri((String) record.getFieldValue(EventFieldNames.TRANSIT_URI));
    builder.setUpdatedAttributes(truncateAttributes((Map<String, String>) record.getFieldValue(EventFieldNames.UPDATED_ATTRIBUTES), maxAttributeLength));
    final Long eventId = (Long) record.getFieldValue(EventFieldNames.EVENT_IDENTIFIER);
    if (eventId != null) {
        builder.setEventId(eventId);
    }
    builder.setStorageLocation(storageFilename, storageByteOffset);
    final Record currentClaimRecord = (Record) record.getFieldValue(EventFieldNames.CONTENT_CLAIM);
    if (currentClaimRecord == null) {
        builder.setCurrentContentClaim(null, null, null, null, 0L);
    } else {
        builder.setCurrentContentClaim((String) currentClaimRecord.getFieldValue(EventFieldNames.CONTENT_CLAIM_CONTAINER), (String) currentClaimRecord.getFieldValue(EventFieldNames.CONTENT_CLAIM_SECTION), (String) currentClaimRecord.getFieldValue(EventFieldNames.CONTENT_CLAIM_IDENTIFIER), (Long) currentClaimRecord.getFieldValue(EventFieldNames.CONTENT_CLAIM_OFFSET), (Long) currentClaimRecord.getFieldValue(EventFieldNames.CONTENT_CLAIM_SIZE));
    }
    final Record previousClaimRecord = (Record) record.getFieldValue(EventFieldNames.PREVIOUS_CONTENT_CLAIM);
    if (previousClaimRecord != null) {
        builder.setPreviousContentClaim((String) previousClaimRecord.getFieldValue(EventFieldNames.CONTENT_CLAIM_CONTAINER), (String) previousClaimRecord.getFieldValue(EventFieldNames.CONTENT_CLAIM_SECTION), (String) previousClaimRecord.getFieldValue(EventFieldNames.CONTENT_CLAIM_IDENTIFIER), (Long) previousClaimRecord.getFieldValue(EventFieldNames.CONTENT_CLAIM_OFFSET), (Long) previousClaimRecord.getFieldValue(EventFieldNames.CONTENT_CLAIM_SIZE));
    }
    return builder.build();
}
Also used : StandardProvenanceEventRecord(org.apache.nifi.provenance.StandardProvenanceEventRecord) Record(org.apache.nifi.repository.schema.Record) ProvenanceEventRecord(org.apache.nifi.provenance.ProvenanceEventRecord) StandardProvenanceEventRecord(org.apache.nifi.provenance.StandardProvenanceEventRecord) FieldMapRecord(org.apache.nifi.repository.schema.FieldMapRecord) Map(java.util.Map) HashMap(java.util.HashMap)

Example 3 with Record

use of org.apache.nifi.repository.schema.Record in project nifi by apache.

the class LookupTableEventRecord method createLookupValue.

private NamedValue createLookupValue(final String literalValue, final Map<String, Integer> lookup) {
    if (literalValue == null) {
        final Map<RecordField, Object> lookupValues = Collections.singletonMap(LookupTableEventRecordFields.NO_VALUE, EventFieldNames.NO_VALUE);
        final Record record = new FieldMapRecord(lookupValues, LookupTableEventSchema.NO_VALUE_SCHEMA);
        final NamedValue namedValue = new NamedValue(EventFieldNames.NO_VALUE, record);
        return namedValue;
    }
    final Integer index = lookup.get(literalValue);
    if (index == null) {
        final Map<RecordField, Object> lookupValues = Collections.singletonMap(LookupTableEventRecordFields.EXPLICIT_STRING, literalValue);
        final Record record = new FieldMapRecord(lookupValues, LookupTableEventSchema.EXPLICIT_STRING_SCHEMA);
        final NamedValue namedValue = new NamedValue(EventFieldNames.EXPLICIT_VALUE, record);
        return namedValue;
    } else {
        final Map<RecordField, Object> lookupValues = Collections.singletonMap(LookupTableEventRecordFields.LOOKUP_VALUE, index);
        final Record record = new FieldMapRecord(lookupValues, LookupTableEventSchema.LOOKUP_VALUE_SCHEMA);
        final NamedValue namedValue = new NamedValue(EventFieldNames.LOOKUP_VALUE, record);
        return namedValue;
    }
}
Also used : FieldMapRecord(org.apache.nifi.repository.schema.FieldMapRecord) RecordField(org.apache.nifi.repository.schema.RecordField) Record(org.apache.nifi.repository.schema.Record) StandardProvenanceEventRecord(org.apache.nifi.provenance.StandardProvenanceEventRecord) FieldMapRecord(org.apache.nifi.repository.schema.FieldMapRecord) ProvenanceEventRecord(org.apache.nifi.provenance.ProvenanceEventRecord) NamedValue(org.apache.nifi.repository.schema.NamedValue)

Example 4 with Record

use of org.apache.nifi.repository.schema.Record in project nifi by apache.

the class ByteArraySchemaRecordWriter method writeRecord.

@Override
protected void writeRecord(final ProvenanceEventRecord event, final long eventId, final DataOutputStream out) throws IOException {
    try (final ByteArrayOutputStream baos = new ByteArrayOutputStream(256)) {
        final Record eventRecord = createRecord(event, eventId);
        recordWriter.writeRecord(eventRecord, baos);
        out.writeInt(baos.size());
        baos.writeTo(out);
    }
}
Also used : Record(org.apache.nifi.repository.schema.Record) EventRecord(org.apache.nifi.provenance.schema.EventRecord) ByteArrayOutputStream(java.io.ByteArrayOutputStream)

Example 5 with Record

use of org.apache.nifi.repository.schema.Record in project nifi by apache.

the class EncryptedSchemaRecordReader method readRecord.

private StandardProvenanceEventRecord readRecord(final DataInputStream inputStream, final long eventId, final long startOffset, final int recordLength) throws IOException {
    try {
        final InputStream limitedIn = new LimitingInputStream(inputStream, recordLength);
        byte[] encryptedSerializedBytes = new byte[recordLength];
        DataInputStream encryptedInputStream = new DataInputStream(limitedIn);
        encryptedInputStream.readFully(encryptedSerializedBytes);
        byte[] plainSerializedBytes = decrypt(encryptedSerializedBytes, Long.toString(eventId));
        InputStream plainStream = new ByteArrayInputStream(plainSerializedBytes);
        final Record eventRecord = getRecordReader().readRecord(plainStream);
        if (eventRecord == null) {
            return null;
        }
        final StandardProvenanceEventRecord deserializedEvent = LookupTableEventRecord.getEvent(eventRecord, getFilename(), startOffset, getMaxAttributeLength(), getFirstEventId(), getSystemTimeOffset(), getComponentIds(), getComponentTypes(), getQueueIds(), getEventTypes());
        deserializedEvent.setEventId(eventId);
        return deserializedEvent;
    } catch (EncryptionException e) {
        logger.error("Encountered an error reading the record: ", e);
        throw new IOException(e);
    }
}
Also used : ByteArrayInputStream(java.io.ByteArrayInputStream) DataInputStream(java.io.DataInputStream) LimitingInputStream(org.apache.nifi.stream.io.LimitingInputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) LimitingInputStream(org.apache.nifi.stream.io.LimitingInputStream) Record(org.apache.nifi.repository.schema.Record) LookupTableEventRecord(org.apache.nifi.provenance.schema.LookupTableEventRecord) IOException(java.io.IOException) DataInputStream(java.io.DataInputStream)

Aggregations

Record (org.apache.nifi.repository.schema.Record)19 FieldMapRecord (org.apache.nifi.repository.schema.FieldMapRecord)7 ProvenanceEventRecord (org.apache.nifi.provenance.ProvenanceEventRecord)5 StandardProvenanceEventRecord (org.apache.nifi.provenance.StandardProvenanceEventRecord)5 RecordField (org.apache.nifi.repository.schema.RecordField)5 RecordSchema (org.apache.nifi.repository.schema.RecordSchema)5 ByteArrayInputStream (java.io.ByteArrayInputStream)4 HashMap (java.util.HashMap)4 Map (java.util.Map)4 FlowFileRecord (org.apache.nifi.controller.repository.FlowFileRecord)4 LookupTableEventRecord (org.apache.nifi.provenance.schema.LookupTableEventRecord)4 DataInputStream (java.io.DataInputStream)3 IOException (java.io.IOException)3 InputStream (java.io.InputStream)3 ArrayList (java.util.ArrayList)3 List (java.util.List)3 SwapSummary (org.apache.nifi.controller.repository.SwapSummary)3 ContentClaim (org.apache.nifi.controller.repository.claim.ContentClaim)3 ResourceClaim (org.apache.nifi.controller.repository.claim.ResourceClaim)3 SchemaRecordReader (org.apache.nifi.repository.schema.SchemaRecordReader)3