package de.micromata.borgbutler.json.borg; /** * Output of borg option --progress. * See https://borgbackup.readthedocs.io/en/stable/internals/frontends.html, */ public class ProgressInfo implements Cloneable { // {"message": "Calculating statistics... 0%", "current": 1, "total": 2497, "info": null, "operation": 1, "msgid": null, "type": "progress_percent", "finished": false, "time": 1546640510.116256} /** * e. g. Calculating statistics... 5% */ private String message; /** * Current counter of total. */ private long current; private long total; /** * Array that describes the current item, may be null, contents depend on msgid. */ private String[] info; /** * unique, opaque integer ID of the operation. */ private int operation; private String msgid; /** * e. g. progress_percent */ private String type; private boolean finished; /** * Unix timestamp (float). */ private double time; public ProgressInfo incrementCurrent() { ++current; return this; } @Override public ProgressInfo clone() { ProgressInfo clone = null; try { clone = (ProgressInfo) super.clone(); } catch (CloneNotSupportedException ex) { throw new UnsupportedOperationException(this.getClass().getCanonicalName() + " isn't cloneable: " + ex.getMessage(), ex); } return clone; } public String getMessage() { return this.message; } public long getCurrent() { return this.current; } public long getTotal() { return this.total; } public String[] getInfo() { return this.info; } public int getOperation() { return this.operation; } public String getMsgid() { return this.msgid; } public String getType() { return this.type; } public boolean isFinished() { return this.finished; } public double getTime() { return this.time; } public ProgressInfo setMessage(String message) { this.message = message; return this; } public ProgressInfo setCurrent(long current) { this.current = current; return this; } public ProgressInfo setTotal(long total) { this.total = total; return this; } }