package de.micromata.borgbutler.json.borg; import lombok.Getter; import lombok.Setter; /** * 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% */ @Getter @Setter private String message; /** * Current counter of total. */ @Getter @Setter private long current; @Getter @Setter private long total; /** * Array that describes the current item, may be null, contents depend on msgid. */ @Getter private String[] info; /** * unique, opaque integer ID of the operation. */ @Getter private int operation; @Getter private String msgid; /** * e. g. progress_percent */ @Getter private String type; @Getter private boolean finished; /** * Unix timestamp (float). */ @Getter 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; } }