51 lines
1.3 KiB
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();
|
|
}
|
|
}
|
|
}
|