package org.zend.sdkcli.internal.monitor; import java.io.PrintWriter; import org.zend.sdkcli.monitor.ProgressMonitor; import org.zend.sdkcli.monitor.TextProgressMonitor; import org.zend.webapi.core.progress.IStatus; import org.zend.webapi.core.progress.IStatusChangeEvent; import org.zend.webapi.core.progress.IStatusChangeListener; public class StatusChangeListener implements IStatusChangeListener { private IStatus status; private ProgressMonitor monitor; public StatusChangeListener() { monitor = new TextProgressMonitor(new PrintWriter(System.out)); } public void statusChanged(IStatusChangeEvent event) { status = event.getStatus(); switch (status.getCode()) { case STARTING: if (status.getTotalWork() == -1) { monitor.beginTask(status.getMessage(), ProgressMonitor.UNKNOWN); } else { monitor.beginTask(status.getMessage(), status.getTotalWork()); } break; case STOPPING: monitor.endTask(); break; case PROCESSING: monitor.update(status.getTotalWork()); break; case ERROR: monitor.endTask(); break; default: break; } } public IStatus getStatus() { return status; } }