package ru.hflabs.rcd.model.task;
import lombok.Getter;
import javax.xml.bind.annotation.XmlTransient;
import java.io.Serializable;
import java.util.Arrays;
/**
* Класс <class>TaskProgress</class> описывает прогресс выполнения задачи
*/
@Getter
public class TaskProgress implements Serializable {
private static final long serialVersionUID = 6116292542038279743L;
/** Неопределенный прогресс выпонения */
public static final int MIN_PROGRESS = 0;
public static final int MAX_PROGRESS = 100;
public static final int INFINITE_PROGRESS = -1;
/** Шаги выполения по умолчанию */
public static final String PENDING_STEP = "TaskProgress.pending";
public static final String EXECUTING_STEP = "TaskProgress.executing";
/** Процент выполнения */
private int percent;
/** Текущий шаг выполнения */
private String step;
/** Код текущего шага */
private String code;
/** Аргумерты локализации */
private Object[] arguments;
public TaskProgress(String step) {
this(INFINITE_PROGRESS, step, step);
}
public TaskProgress(int percent, String step, String code, Object... arguments) {
this.percent = percent;
this.step = step;
this.code = code;
this.arguments = arguments;
}
@XmlTransient
public String getCode() {
return code;
}
@XmlTransient
public Object[] getArguments() {
return arguments;
}
@Override
public int hashCode() {
int result = percent;
result = 31 * result + step.hashCode();
result = 31 * result + code.hashCode();
return result;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
TaskProgress progress = (TaskProgress) o;
if (percent != progress.percent) {
return false;
}
// Probably incorrect - comparing Object[] arrays with Arrays.equals
if (!Arrays.equals(arguments, progress.arguments)) {
return false;
}
if (!code.equals(progress.code)) {
return false;
}
if (!step.equals(progress.step)) {
return false;
}
return true;
}
}