diff options
Diffstat (limited to 'src/main/java/bjc/everge/ReplParseException.java')
| -rw-r--r-- | src/main/java/bjc/everge/ReplParseException.java | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/main/java/bjc/everge/ReplParseException.java b/src/main/java/bjc/everge/ReplParseException.java new file mode 100644 index 0000000..0091b83 --- /dev/null +++ b/src/main/java/bjc/everge/ReplParseException.java @@ -0,0 +1,58 @@ +package bjc.everge; + +import java.util.ArrayList; +import java.util.List; + +public class ReplParseException extends RuntimeException { + public List<ReplError> errs; + + public ReplParseException(String msg) { + this(msg, new ArrayList<>()); + } + + public ReplParseException(String msg, List<ReplError> errs) { + super(msg); + + this.errs = errs; + } + + @Override + public String toString() { + String errString; + if (errs.size() == 0) errString = "An error"; + else errString = "Errors"; + + return String.format("%s occured parsing replacement pairs: %s\n%s", + errString, getMessage(), errs); + } + + public String toPrintString() { + StringBuilder errString = new StringBuilder("[ERROR] "); + + if (errs.size() == 0) { + errString.append("No specific errors"); + } else if (errs.size() == 1) { + errString.append("An error"); + } else { + errString.append(errs.size()); + errString.append(" errors"); + } + + errString.append(" occured parsing replacement pairs:"); + if (!getMessage().equals("")) { + errString.append(" "); + errString.append(getMessage()); + } + + if (errs.size() > 0) { + errString.append("\n\t"); + + for (ReplError err : errs) { + errString.append(err.toPrintString("\t")); + errString.append("\n\t"); + } + } + + return errString.toString().trim(); + } +} |
