ws-thredds/src/main/java/org/gcube/usecases/ws/thredds/engine/impl/ProcessStatus.java

51 lines
1.3 KiB
Java

package org.gcube.usecases.ws.thredds.engine.impl;
import java.util.concurrent.atomic.AtomicLong;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class ProcessStatus implements Cloneable{
public static enum Status{
INITIALIZING, // initial status
ONGOING, // synch in progress
WARNINGS, // errors occurred, still WORKING
STOPPED, // STOP received, waiting for request to finish
COMPLETED // FINISHED PROCESS
}
private AtomicLong queuedTransfers=new AtomicLong(0);
private AtomicLong servedTransfers=new AtomicLong(0);
private AtomicLong errorCount=new AtomicLong(0);
private Status status=Status.INITIALIZING;
private StringBuilder logBuilder=new StringBuilder();
private String currentMessage="Waiting to start..";
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
@Override
public String toString() {
return "ProcessStatus [queuedTransfers=" + queuedTransfers + ", servedTransfers=" + servedTransfers
+ ", errorCount=" + errorCount + ", status=" + status + ", currentMessage=" + currentMessage + "]";
}
public float getPercent() {
switch(status) {
case INITIALIZING : return 0;
case COMPLETED : return 1;
default : return queuedTransfers.get()==0?0:((float)(servedTransfers.get()+errorCount.get()))/queuedTransfers.get();
}
}
}