blob: 02c142446152bc3cf0d099a984cf45a6a32ee894 [file] [log] [blame]
package com.intellij.updater;
import java.util.Arrays;
import java.util.List;
public class ValidationResult implements Comparable<ValidationResult> {
public enum Kind {
INFO, CONFLICT, ERROR
}
public enum Action {
CREATE("Create"), UPDATE("Update"), DELETE("Delete"), NO_ACTION("");
private final String myDisplayString;
Action(String displayString) {
myDisplayString = displayString;
}
@Override
public String toString() {
return myDisplayString;
}
}
public enum Option {
IGNORE, KEEP, REPLACE, DELETE
}
public static final String ABSENT_MESSAGE = "Absent";
public static final String MODIFIED_MESSAGE = "Modified";
public static final String ACCESS_DENIED_MESSAGE = "Access denied";
public static final String ALREADY_EXISTS_MESSAGE = "Already exists";
public final Kind kind;
public final String path;
public final Action action;
public final String message;
public final List<Option> options;
public ValidationResult(Kind kind, String path, Action action, String message, Option... options) {
this.kind = kind;
this.path = path;
this.action = action;
this.message = message;
this.options = Arrays.asList(options);
}
@Override
public String toString() {
String prefix;
switch (kind) {
case CONFLICT:
prefix = "?";
break;
case ERROR:
prefix = "!";
break;
default:
prefix = "";
}
return prefix + action + " " + path + ": " + message + " (" + options + ")";
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ValidationResult result = (ValidationResult)o;
if (action != result.action) return false;
if (kind != result.kind) return false;
if (message != null ? !message.equals(result.message) : result.message != null) return false;
if (options != null ? !options.equals(result.options) : result.options != null) return false;
if (path != null ? !path.equals(result.path) : result.path != null) return false;
return true;
}
@Override
public int hashCode() {
int result = kind != null ? kind.hashCode() : 0;
result = 31 * result + (path != null ? path.hashCode() : 0);
result = 31 * result + (action != null ? action.hashCode() : 0);
result = 31 * result + (message != null ? message.hashCode() : 0);
result = 31 * result + (options != null ? options.hashCode() : 0);
return result;
}
public int compareTo(ValidationResult o) {
return path.compareToIgnoreCase(o.path);
}
}