/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.nifi.web.api.dto.provenance;
import com.wordnik.swagger.annotations.ApiModelProperty;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.apache.nifi.web.api.dto.util.TimestampAdapter;
/**
* A provenance event.
*/
@XmlType(name = "provenanceEvent")
public class ProvenanceEventDTO {
private String id;
// in search results table
private Long eventId;
private Date eventTime;
private Long eventDuration;
private Long lineageDuration;
private String eventType;
private String flowFileUuid;
private String fileSize;
private Long fileSizeBytes;
private String clusterNodeId; // include when clustered
private String clusterNodeAddress; // include when clustered
private String groupId;
private String componentId;
private String componentType;
private String componentName;
private String sourceSystemFlowFileId;
private String alternateIdentifierUri;
private Collection<AttributeDTO> attributes;
private List<String> parentUuids;
private List<String> childUuids;
private String transitUri;
private String relationship;
private String details;
// content
private Boolean contentEqual;
private Boolean inputContentAvailable;
private String inputContentClaimSection;
private String inputContentClaimContainer;
private String inputContentClaimIdentifier;
private Long inputContentClaimOffset;
private String inputContentClaimFileSize;
private Long inputContentClaimFileSizeBytes;
private Boolean outputContentAvailable;
private String outputContentClaimSection;
private String outputContentClaimContainer;
private String outputContentClaimIdentifier;
private Long outputContentClaimOffset;
private String outputContentClaimFileSize;
private Long outputContentClaimFileSizeBytes;
// replay
private Boolean replayAvailable;
private String replayExplanation;
private String sourceConnectionIdentifier;
/**
* @return event uuid
*/
@ApiModelProperty(
value = "The event uuid."
)
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
/**
* @return event id
*/
@ApiModelProperty(
value = "The event id. This is a one up number thats unique per node."
)
public Long getEventId() {
return eventId;
}
public void setEventId(Long eventId) {
this.eventId = eventId;
}
/**
* @return time the event occurred
*/
@XmlJavaTypeAdapter(TimestampAdapter.class)
@ApiModelProperty(
value = "The timestamp of the event.",
dataType = "string"
)
public Date getEventTime() {
return eventTime;
}
public void setEventTime(Date eventTime) {
this.eventTime = eventTime;
}
/**
* @return UUID of the FlowFile for this event
*/
@ApiModelProperty(
value = "The uuid of the flowfile for the event."
)
public String getFlowFileUuid() {
return flowFileUuid;
}
public void setFlowFileUuid(String flowFileUuid) {
this.flowFileUuid = flowFileUuid;
}
/**
* @return size of the FlowFile for this event
*/
@ApiModelProperty(
value = "The size of the flowfile for the event."
)
public String getFileSize() {
return fileSize;
}
public void setFileSize(String fileSize) {
this.fileSize = fileSize;
}
/**
* @return size of the FlowFile in bytes for this event
*/
@ApiModelProperty(
value = "The size of the flowfile in bytes for the event."
)
public Long getFileSizeBytes() {
return fileSizeBytes;
}
public void setFileSizeBytes(Long fileSizeBytes) {
this.fileSizeBytes = fileSizeBytes;
}
/**
* @return type of this event
*/
@ApiModelProperty(
value = "The type of the event."
)
public String getEventType() {
return eventType;
}
public void setEventType(String eventType) {
this.eventType = eventType;
}
/**
* @return attributes for the FlowFile for this event
*/
@ApiModelProperty(
value = "The attributes of the flowfile for the event."
)
public Collection<AttributeDTO> getAttributes() {
return attributes;
}
public void setAttributes(Collection<AttributeDTO> attributes) {
this.attributes = attributes;
}
/**
* @return id of the group that this component resides in. If the component is no longer in the flow, the group id will not be set
*/
@ApiModelProperty(
value = "The id of the group that the component resides in. If the component is no longer in the flow, the group id will not be set."
)
public String getGroupId() {
return groupId;
}
public void setGroupId(String groupId) {
this.groupId = groupId;
}
/**
* @return id of the component that generated this event
*/
@ApiModelProperty(
value = "The id of the component that generated the event."
)
public String getComponentId() {
return componentId;
}
public void setComponentId(String componentId) {
this.componentId = componentId;
}
/**
* @return name of the component that generated this event
*/
@ApiModelProperty(
value = "The name of the component that generated the event."
)
public String getComponentName() {
return componentName;
}
public void setComponentName(String componentName) {
this.componentName = componentName;
}
/**
* @return type of the component that generated this event
*/
@ApiModelProperty(
value = "The type of the component that generated the event."
)
public String getComponentType() {
return componentType;
}
public void setComponentType(String componentType) {
this.componentType = componentType;
}
/**
* @return source/destination system URI if the event was a RECEIVE/SEND
*/
@ApiModelProperty(
value = "The source/destination system uri if the event was a RECEIVE/SEND."
)
public String getTransitUri() {
return transitUri;
}
public void setTransitUri(String transitUri) {
this.transitUri = transitUri;
}
/**
* @return alternate identifier URI for the FlowFile for this event
*/
@ApiModelProperty(
value = "The alternate identifier uri for the fileflow for the event."
)
public String getAlternateIdentifierUri() {
return alternateIdentifierUri;
}
public void setAlternateIdentifierUri(String alternateIdentifierUri) {
this.alternateIdentifierUri = alternateIdentifierUri;
}
/**
* @return identifier of the node where this event originated
*/
@ApiModelProperty(
value = "The identifier for the node where the event originated."
)
public String getClusterNodeId() {
return clusterNodeId;
}
public void setClusterNodeId(String clusterNodeId) {
this.clusterNodeId = clusterNodeId;
}
/**
* @return label to use to show which node this event originated from
*/
@ApiModelProperty(
value = "The label for the node where the event originated."
)
public String getClusterNodeAddress() {
return clusterNodeAddress;
}
public void setClusterNodeAddress(String clusterNodeAddress) {
this.clusterNodeAddress = clusterNodeAddress;
}
/**
* @return parent uuids for this event
*/
@ApiModelProperty(
value = "The parent uuids for the event."
)
public List<String> getParentUuids() {
return parentUuids;
}
public void setParentUuids(List<String> parentUuids) {
this.parentUuids = parentUuids;
}
/**
* @return child uuids for this event
*/
@ApiModelProperty(
value = "The child uuids for the event."
)
public List<String> getChildUuids() {
return childUuids;
}
public void setChildUuids(List<String> childUuids) {
this.childUuids = childUuids;
}
/**
* @return duration of the event, in milliseconds
*/
@ApiModelProperty(
value = "The event duration in milliseconds."
)
public Long getEventDuration() {
return eventDuration;
}
public void setEventDuration(Long eventDuration) {
this.eventDuration = eventDuration;
}
/**
* @return duration since the lineage began, in milliseconds
*/
@ApiModelProperty(
value = "The duration since the lineage began, in milliseconds."
)
public Long getLineageDuration() {
return lineageDuration;
}
public void setLineageDuration(Long lineageDuration) {
this.lineageDuration = lineageDuration;
}
/**
* @return source system FlowFile id
*/
@ApiModelProperty(
value = "The source system flowfile id."
)
public String getSourceSystemFlowFileId() {
return sourceSystemFlowFileId;
}
public void setSourceSystemFlowFileId(String sourceSystemFlowFileId) {
this.sourceSystemFlowFileId = sourceSystemFlowFileId;
}
/**
* @return If this represents a route event, this is the relationship to which the flowfile was routed
*/
@ApiModelProperty(
value = "The relationship to which the flowfile was routed if the event is of type ROUTE."
)
public String getRelationship() {
return relationship;
}
public void setRelationship(String relationship) {
this.relationship = relationship;
}
/**
* @return event details
*/
@ApiModelProperty(
value = "The event details."
)
public String getDetails() {
return details;
}
public void setDetails(String details) {
this.details = details;
}
/**
* @return whether or not the input and output content claim is the same
*/
@ApiModelProperty(
value = "Whether the input and output content claim is the same."
)
public Boolean getContentEqual() {
return contentEqual;
}
public void setContentEqual(Boolean contentEqual) {
this.contentEqual = contentEqual;
}
/**
* @return whether or not the output content is still available
*/
@ApiModelProperty(
value = "Whether the output content is still available."
)
public Boolean getOutputContentAvailable() {
return outputContentAvailable;
}
public void setOutputContentAvailable(Boolean outputContentAvailable) {
this.outputContentAvailable = outputContentAvailable;
}
/**
* @return the Section in which the output Content Claim lives, or <code>null</code> if no Content Claim exists
*/
@ApiModelProperty(
value = "The section in which the output content claim lives."
)
public String getOutputContentClaimSection() {
return outputContentClaimSection;
}
public void setOutputContentClaimSection(String contentClaimSection) {
this.outputContentClaimSection = contentClaimSection;
}
/**
* @return the Container in which the output Content Claim lives, or <code>null</code> if no Content Claim exists
*/
@ApiModelProperty(
value = "The container in which the output content claim lives."
)
public String getOutputContentClaimContainer() {
return outputContentClaimContainer;
}
public void setOutputContentClaimContainer(String outputContentClaimContainer) {
this.outputContentClaimContainer = outputContentClaimContainer;
}
/**
* @return the Identifier of the output Content Claim, or <code>null</code> if no Content Claim exists
*/
@ApiModelProperty(
value = "The identifier of the output content claim."
)
public String getOutputContentClaimIdentifier() {
return outputContentClaimIdentifier;
}
public void setOutputContentClaimIdentifier(String outputContentClaimIdentifier) {
this.outputContentClaimIdentifier = outputContentClaimIdentifier;
}
/**
* @return the offset into the the output Content Claim where the FlowFile's content begins, or <code>null</code> if no Content Claim exists
*/
@ApiModelProperty(
value = "The offset into the output content claim where the flowfiles content begins."
)
public Long getOutputContentClaimOffset() {
return outputContentClaimOffset;
}
public void setOutputContentClaimOffset(Long outputContentClaimOffset) {
this.outputContentClaimOffset = outputContentClaimOffset;
}
/**
* @return the formatted file size of the input content claim
*/
@ApiModelProperty(
value = "The file size of the output content claim formatted."
)
public String getOutputContentClaimFileSize() {
return outputContentClaimFileSize;
}
public void setOutputContentClaimFileSize(String outputContentClaimFileSize) {
this.outputContentClaimFileSize = outputContentClaimFileSize;
}
/**
* @return the number of bytes of the input content claim
*/
@ApiModelProperty(
value = "The file size of the output content claim in bytes."
)
public Long getOutputContentClaimFileSizeBytes() {
return outputContentClaimFileSizeBytes;
}
public void setOutputContentClaimFileSizeBytes(Long outputContentClaimFileSizeBytes) {
this.outputContentClaimFileSizeBytes = outputContentClaimFileSizeBytes;
}
/**
* @return whether or not the input content is still available
*/
@ApiModelProperty(
value = "Whether the input content is still available."
)
public Boolean getInputContentAvailable() {
return inputContentAvailable;
}
public void setInputContentAvailable(Boolean inputContentAvailable) {
this.inputContentAvailable = inputContentAvailable;
}
/**
* @return the Section in which the input Content Claim lives, or <code>null</code> if no Content Claim exists
*/
@ApiModelProperty(
value = "The section in which the input content claim lives."
)
public String getInputContentClaimSection() {
return inputContentClaimSection;
}
public void setInputContentClaimSection(String inputContentClaimSection) {
this.inputContentClaimSection = inputContentClaimSection;
}
/**
* @return the Container in which the input Content Claim lives, or <code>null</code> if no Content Claim exists
*/
@ApiModelProperty(
value = "The container in which the input content claim lives."
)
public String getInputContentClaimContainer() {
return inputContentClaimContainer;
}
public void setInputContentClaimContainer(String inputContentClaimContainer) {
this.inputContentClaimContainer = inputContentClaimContainer;
}
/**
* @return the Identifier of the input Content Claim, or <code>null</code> if no Content Claim exists
*/
@ApiModelProperty(
value = "The identifier of the input content claim."
)
public String getInputContentClaimIdentifier() {
return inputContentClaimIdentifier;
}
public void setInputContentClaimIdentifier(String inputContentClaimIdentifier) {
this.inputContentClaimIdentifier = inputContentClaimIdentifier;
}
/**
* @return the offset into the the input Content Claim where the FlowFile's content begins, or <code>null</code> if no Content Claim exists
*/
@ApiModelProperty(
value = "The offset into the input content claim where the flowfiles content begins."
)
public Long getInputContentClaimOffset() {
return inputContentClaimOffset;
}
public void setInputContentClaimOffset(Long inputContentClaimOffset) {
this.inputContentClaimOffset = inputContentClaimOffset;
}
/**
* @return the formatted file size of the input content claim
*/
@ApiModelProperty(
value = "The file size of the input content claim formatted."
)
public String getInputContentClaimFileSize() {
return inputContentClaimFileSize;
}
public void setInputContentClaimFileSize(String inputContentClaimFileSize) {
this.inputContentClaimFileSize = inputContentClaimFileSize;
}
/**
* @return the number of bytes of the input content claim
*/
@ApiModelProperty(
value = "The file size of the intput content claim in bytes."
)
public Long getInputContentClaimFileSizeBytes() {
return inputContentClaimFileSizeBytes;
}
public void setInputContentClaimFileSizeBytes(Long inputContentClaimFileSizeBytes) {
this.inputContentClaimFileSizeBytes = inputContentClaimFileSizeBytes;
}
/**
* @return whether or not replay is available
*/
@ApiModelProperty(
value = "Whether or not replay is available."
)
public Boolean getReplayAvailable() {
return replayAvailable;
}
public void setReplayAvailable(Boolean replayAvailable) {
this.replayAvailable = replayAvailable;
}
/**
* @return the explanation as to why replay is unavailable
*/
@ApiModelProperty(
value = "Explanation as to why replay is unavailable."
)
public String getReplayExplanation() {
return replayExplanation;
}
public void setReplayExplanation(String replayExplanation) {
this.replayExplanation = replayExplanation;
}
/**
* @return identifier of the FlowFile Queue / Connection from which the FlowFile was pulled to generate this event, or <code>null</code> if either the queue is unknown or the FlowFile was created
* by this event
*/
@ApiModelProperty(
value = "The identifier of the queue/connection from which the flowfile was pulled to genereate this event. May be null if the queue/connection is unknown or the "
+ "flowfile was generated from this event."
)
public String getSourceConnectionIdentifier() {
return sourceConnectionIdentifier;
}
public void setSourceConnectionIdentifier(String sourceConnectionIdentifier) {
this.sourceConnectionIdentifier = sourceConnectionIdentifier;
}
}