Create an error message & set

This commit is contained in:
SiboVG 2023-03-27 00:05:03 +02:00
parent 2bc93530bc
commit c5a2fc44df
2 changed files with 91 additions and 0 deletions

View File

@ -0,0 +1,59 @@
package net.sf.openrocket.logging;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.startup.Application;
/**
* An error message wrapper.
*/
public abstract class Error extends Message {
private static final Translator trans = Application.getTranslator();
/**
* @return an Error with the specific text.
*/
public static Error fromString(String text) {
return new Error.Other(text);
}
///////////// Specific Error classes /////////////
/**
* An unspecified error type. This error type holds a <code>String</code>
* describing it. Two errors of this type are considered equal if the strings
* are identical.
*/
public static class Other extends Error {
private final String description;
public Other(String description) {
this.description = description;
}
@Override
public String toString() {
return description;
}
@Override
public boolean equals(Object other) {
if (!(other instanceof Other))
return false;
Other o = (Other) other;
return (o.description.equals(this.description));
}
@Override
public int hashCode() {
return description.hashCode();
}
@Override
public boolean replaceBy(Message other) {
return false;
}
}
}

View File

@ -0,0 +1,32 @@
package net.sf.openrocket.logging;
import net.sf.openrocket.util.BugException;
public class ErrorSet extends MessageSet<Error> {
/**
* Add an <code>Error</code> with the specified text to the set. The Error object
* is created using the {@link Error#fromString(String)} method. If an error of the
* same type exists in the set, the error that is left in the set is defined by the
* method {@link Error#replaceBy(Message)}.
*
* @param s the message text.
* @throws IllegalStateException if this message set has been made immutable.
*/
public boolean add(String s) {
mutable.check();
return add(Error.fromString(s));
}
@Override
public ErrorSet clone() {
try {
ErrorSet newSet = (ErrorSet) super.clone();
newSet.messages = this.messages.clone();
newSet.mutable = this.mutable.clone();
return newSet;
} catch (CloneNotSupportedException e) {
throw new BugException("CloneNotSupportedException occurred, report bug!", e);
}
}
}