/* * 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.status; import com.wordnik.swagger.annotations.ApiModelProperty; import org.apache.nifi.web.api.entity.ConnectionStatusSnapshotEntity; import org.apache.nifi.web.api.entity.PortStatusSnapshotEntity; import org.apache.nifi.web.api.entity.ProcessGroupStatusSnapshotEntity; import org.apache.nifi.web.api.entity.ProcessorStatusSnapshotEntity; import org.apache.nifi.web.api.entity.RemoteProcessGroupStatusSnapshotEntity; import javax.xml.bind.annotation.XmlType; import java.util.ArrayList; import java.util.Collection; import java.util.List; /** * The status for a process group in this NiFi. */ @XmlType(name = "processGroupStatusSnapshot") public class ProcessGroupStatusSnapshotDTO implements Cloneable { private String id; private String name; private Collection<ConnectionStatusSnapshotEntity> connectionStatusSnapshots; private Collection<ProcessorStatusSnapshotEntity> processorStatusSnapshots; private Collection<ProcessGroupStatusSnapshotEntity> processGroupStatusSnapshots; private Collection<RemoteProcessGroupStatusSnapshotEntity> remoteProcessGroupStatusSnapshots; private Collection<PortStatusSnapshotEntity> inputPortStatusSnapshots; private Collection<PortStatusSnapshotEntity> outputPortStatusSnapshots; private Integer flowFilesIn = 0; private Long bytesIn = 0L; private String input; private Integer flowFilesQueued = 0; private Long bytesQueued = 0L; private String queued; private String queuedCount; private String queuedSize; private Long bytesRead = 0L; private String read; private Long bytesWritten = 0L; private String written; private Integer flowFilesOut = 0; private Long bytesOut = 0L; private String output; private Integer flowFilesTransferred = 0; private Long bytesTransferred = 0L; private String transferred; private Long bytesReceived = 0L; private Integer flowFilesReceived = 0; private String received; private Long bytesSent = 0L; private Integer flowFilesSent = 0; private String sent; private Integer activeThreadCount = 0; /** * The id for the process group. * * @return The id for the process group */ @ApiModelProperty("The id of the process group.") public String getId() { return id; } public void setId(String id) { this.id = id; } /** * @return name of this process group */ @ApiModelProperty("The name of this process group.") public String getName() { return name; } public void setName(String name) { this.name = name; } /** * @return active thread count for this process group */ @ApiModelProperty("The active thread count for this process group.") public Integer getActiveThreadCount() { return activeThreadCount; } public void setActiveThreadCount(Integer activeThreadCount) { this.activeThreadCount = activeThreadCount; } /** * The status of all connections in this process group. * * @return The status of all connections */ @ApiModelProperty("The status of all conenctions in the process group.") public Collection<ConnectionStatusSnapshotEntity> getConnectionStatusSnapshots() { return connectionStatusSnapshots; } public void setConnectionStatusSnapshots(Collection<ConnectionStatusSnapshotEntity> connectionStatus) { this.connectionStatusSnapshots = connectionStatus; } /** * The status of all process groups in this process group. * * @return The status of all process groups */ @ApiModelProperty("The status of all process groups in the process group.") public Collection<ProcessGroupStatusSnapshotEntity> getProcessGroupStatusSnapshots() { return processGroupStatusSnapshots; } public void setProcessGroupStatusSnapshots(Collection<ProcessGroupStatusSnapshotEntity> processGroupStatus) { this.processGroupStatusSnapshots = processGroupStatus; } /** * The status of all remote process groups in this process group. * * @return The status of all remote process groups */ @ApiModelProperty("The status of all remote process groups in the process group.") public Collection<RemoteProcessGroupStatusSnapshotEntity> getRemoteProcessGroupStatusSnapshots() { return remoteProcessGroupStatusSnapshots; } public void setRemoteProcessGroupStatusSnapshots(final Collection<RemoteProcessGroupStatusSnapshotEntity> remoteProcessGroupStatus) { this.remoteProcessGroupStatusSnapshots = remoteProcessGroupStatus; } /** * The status of all processors in this process group. * * @return The status of all processors */ @ApiModelProperty("The status of all processors in the process group.") public Collection<ProcessorStatusSnapshotEntity> getProcessorStatusSnapshots() { return processorStatusSnapshots; } public void setProcessorStatusSnapshots(Collection<ProcessorStatusSnapshotEntity> processorStatus) { this.processorStatusSnapshots = processorStatus; } /** * The status of all input ports in this process group. * * @return The status of all input ports */ @ApiModelProperty("The status of all input ports in the process group.") public Collection<PortStatusSnapshotEntity> getInputPortStatusSnapshots() { return inputPortStatusSnapshots; } public void setInputPortStatusSnapshots(Collection<PortStatusSnapshotEntity> inputPortStatus) { this.inputPortStatusSnapshots = inputPortStatus; } /** * The status of all output ports in this process group. * * @return The status of all output ports */ @ApiModelProperty("The status of all output ports in the process group.") public Collection<PortStatusSnapshotEntity> getOutputPortStatusSnapshots() { return outputPortStatusSnapshots; } public void setOutputPortStatusSnapshots(Collection<PortStatusSnapshotEntity> outputPortStatus) { this.outputPortStatusSnapshots = outputPortStatus; } /** * The output stats for this process group. * * @return The output stats */ @ApiModelProperty("The output count/size for the process group in the last 5 minutes.") public String getOutput() { return output; } /** * The transferred stats for this process group. This represents the count/size of flowfiles transferred to/from queues. * * @return The transferred status for this process group */ @ApiModelProperty("The count/size transferred to/from queues in the process group in the last 5 minutes.") public String getTransferred() { return transferred; } /** * The received stats for this process group. This represents the count/size of flowfiles received. * * @return The received stats for this process group */ @ApiModelProperty("The count/size sent to the process group in the last 5 minutes.") public String getReceived() { return received; } /** * The sent stats for this process group. This represents the count/size of flowfiles sent. * * @return The sent stats for this process group */ @ApiModelProperty("The count/size sent from this process group in the last 5 minutes.") public String getSent() { return sent; } /** * The queued count for this process group. * * @return The queued count for this process group */ @ApiModelProperty("The count that is queued for the process group.") public String getQueuedCount() { return queuedCount; } /** * The queued size for this process group. * * @return The queued size for this process group */ @ApiModelProperty("The size that is queued for the process group.") public String getQueuedSize() { return queuedSize; } /** * The queued stats for this process group. * * @return The queued stats */ @ApiModelProperty("The count/size that is queued in the the process group.") public String getQueued() { return queued; } /** * The read stats for this process group. * * @return The read stats */ @ApiModelProperty("The number of bytes read in the last 5 minutes.") public String getRead() { return read; } /** * The written stats for this process group. * * @return The written stats */ @ApiModelProperty("The number of bytes written in the last 5 minutes.") public String getWritten() { return written; } /** * The input stats for this process group. * * @return The input stats */ @ApiModelProperty("The input count/size for the process group in the last 5 minutes (pretty printed).") public String getInput() { return input; } @ApiModelProperty("The number of FlowFiles that have come into this ProcessGroup in the last 5 minutes") public Integer getFlowFilesIn() { return flowFilesIn; } public void setFlowFilesIn(Integer flowFilesIn) { this.flowFilesIn = flowFilesIn; } @ApiModelProperty("The number of bytes that have come into this ProcessGroup in the last 5 minutes") public Long getBytesIn() { return bytesIn; } public void setBytesIn(Long bytesIn) { this.bytesIn = bytesIn; } @ApiModelProperty("The number of FlowFiles that are queued up in this ProcessGroup right now") public Integer getFlowFilesQueued() { return flowFilesQueued; } public void setFlowFilesQueued(Integer flowFilesQueued) { this.flowFilesQueued = flowFilesQueued; } @ApiModelProperty("The number of bytes that are queued up in this ProcessGroup right now") public Long getBytesQueued() { return bytesQueued; } public void setBytesQueued(Long bytesQueued) { this.bytesQueued = bytesQueued; } @ApiModelProperty("The number of bytes read by components in this ProcessGroup in the last 5 minutes") public Long getBytesRead() { return bytesRead; } public void setBytesRead(Long bytesRead) { this.bytesRead = bytesRead; } @ApiModelProperty("The number of bytes written by components in this ProcessGroup in the last 5 minutes") public Long getBytesWritten() { return bytesWritten; } public void setBytesWritten(Long bytesWritten) { this.bytesWritten = bytesWritten; } @ApiModelProperty("The number of FlowFiles transferred out of this ProcessGroup in the last 5 minutes") public Integer getFlowFilesOut() { return flowFilesOut; } public void setFlowFilesOut(Integer flowFilesOut) { this.flowFilesOut = flowFilesOut; } @ApiModelProperty("The number of bytes transferred out of this ProcessGroup in the last 5 minutes") public Long getBytesOut() { return bytesOut; } public void setBytesOut(Long bytesOut) { this.bytesOut = bytesOut; } @ApiModelProperty("The number of FlowFiles transferred in this ProcessGroup in the last 5 minutes") public Integer getFlowFilesTransferred() { return flowFilesTransferred; } public void setFlowFilesTransferred(Integer flowFilesTransferred) { this.flowFilesTransferred = flowFilesTransferred; } @ApiModelProperty("The number of bytes transferred in this ProcessGroup in the last 5 minutes") public Long getBytesTransferred() { return bytesTransferred; } public void setBytesTransferred(Long bytesTransferred) { this.bytesTransferred = bytesTransferred; } @ApiModelProperty("The number of bytes received from external sources by components within this ProcessGroup in the last 5 minutes") public Long getBytesReceived() { return bytesReceived; } public void setBytesReceived(Long bytesReceived) { this.bytesReceived = bytesReceived; } @ApiModelProperty("The number of bytes sent to an external sink by components within this ProcessGroup in the last 5 minutes") public Long getBytesSent() { return bytesSent; } public void setBytesSent(Long bytesSent) { this.bytesSent = bytesSent; } @ApiModelProperty("The number of FlowFiles sent to an external sink by components within this ProcessGroup in the last 5 minutes") public Integer getFlowFilesSent() { return flowFilesSent; } public void setFlowFilesSent(Integer flowFilesSent) { this.flowFilesSent = flowFilesSent; } @ApiModelProperty("The number of FlowFiles received from external sources by components within this ProcessGroup in the last 5 minutes") public Integer getFlowFilesReceived() { return flowFilesReceived; } public void setFlowFilesReceived(Integer flowFilesReceived) { this.flowFilesReceived = flowFilesReceived; } public void setInput(String input) { this.input = input; } public void setQueued(String queued) { this.queued = queued; } public void setQueuedCount(String queuedCount) { this.queuedCount = queuedCount; } public void setQueuedSize(String queuedSize) { this.queuedSize = queuedSize; } public void setRead(String read) { this.read = read; } public void setWritten(String written) { this.written = written; } public void setOutput(String output) { this.output = output; } public void setTransferred(String transferred) { this.transferred = transferred; } public void setReceived(String received) { this.received = received; } public void setSent(String sent) { this.sent = sent; } @Override public ProcessGroupStatusSnapshotDTO clone() { final ProcessGroupStatusSnapshotDTO other = new ProcessGroupStatusSnapshotDTO(); other.setId(getId()); other.setName(getName()); other.setBytesIn(getBytesIn()); other.setFlowFilesIn(getFlowFilesIn()); other.setInput(getInput()); other.setBytesQueued(getBytesQueued()); other.setFlowFilesQueued(getFlowFilesQueued()); other.setQueued(getQueued()); other.setQueuedCount(getQueuedCount()); other.setQueuedSize(getQueuedSize()); other.setBytesRead(getBytesRead()); other.setRead(getRead()); other.setBytesWritten(getBytesWritten()); other.setWritten(getWritten()); other.setBytesOut(getBytesOut()); other.setFlowFilesOut(getFlowFilesOut()); other.setOutput(getOutput()); other.setBytesTransferred(getBytesTransferred()); other.setFlowFilesTransferred(getFlowFilesTransferred()); other.setTransferred(getTransferred()); other.setBytesReceived(getBytesReceived()); other.setFlowFilesReceived(getFlowFilesReceived()); other.setReceived(getReceived()); other.setBytesSent(getBytesSent()); other.setFlowFilesSent(getFlowFilesSent()); other.setSent(getSent()); other.setActiveThreadCount(getActiveThreadCount()); other.setConnectionStatusSnapshots(copy(getConnectionStatusSnapshots())); other.setProcessorStatusSnapshots(copy(getProcessorStatusSnapshots())); other.setRemoteProcessGroupStatusSnapshots(copy(getRemoteProcessGroupStatusSnapshots())); other.setInputPortStatusSnapshots(copy(getInputPortStatusSnapshots())); other.setOutputPortStatusSnapshots(copy(getOutputPortStatusSnapshots())); if (processGroupStatusSnapshots != null) { final List<ProcessGroupStatusSnapshotEntity> childGroups = new ArrayList<>(); for (final ProcessGroupStatusSnapshotEntity procGroupStatus : processGroupStatusSnapshots) { childGroups.add(procGroupStatus.clone()); } other.setProcessGroupStatusSnapshots(childGroups); } return other; } private <T> Collection<T> copy(final Collection<T> original) { if (original == null) { return null; } return new ArrayList<T>(original); } }