Refactor messages to have priority

This commit is contained in:
SiboVG 2024-02-14 16:56:33 +01:00
parent 70717c3d17
commit ce507a6656
4 changed files with 94 additions and 46 deletions

View File

@ -2148,11 +2148,11 @@ Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING =
Warning.FILE_INVALID_PARAMETER = Invalid parameter encountered, ignoring.
Warning.PARALLEL_FINS = Too many parallel fins
Warning.SUPERSONIC = Body calculations may not be entirely accurate at supersonic speeds.
Warning.RECOVERY_LAUNCH_ROD = Recovery device device deployed while on the launch guide.
Warning.RECOVERY_LAUNCH_ROD = Recovery device deployed while on the launch guide.
Warning.RECOVERY_HIGH_SPEED = Recovery device deployment at high speed
Warning.NO_RECOVERY_DEVICE = No recovery device defined in the simulation.
Warning.TUMBLE_UNDER_THRUST = Stage began to tumble under thrust.
Warning.EVENT_AFTER_LANDING = Flight Event occurred after landing:
Warning.EVENT_AFTER_LANDING = Flight Event occurred after landing:
Warning.ZERO_VOLUME_BODY = Zero-volume bodies may not simulate accurately
Warning.TUBE_SEPARATION = Space between tube fins may not simulate accurately.
Warning.TUBE_OVERLAP = Overlapping tube fins may not simulate accurately.

View File

@ -10,12 +10,7 @@ public abstract class Message implements Cloneable {
/** The rocket component(s) that are the source of this message **/
private RocketComponent[] sources = null;
/**
* @return a Message with the specific text.
*/
public static Message fromString(String text) {
return new Warning.Other(text);
}
private MessagePriority priority = MessagePriority.NORMAL;
/**
* Returns the message text + message source objects.
@ -75,6 +70,21 @@ public abstract class Message implements Cloneable {
this.sources = sources;
}
/**
* Return the priority of this message.
* @return the priority of this message.
*/
public MessagePriority getPriority() {
return priority;
}
/**
* Set the priority of this message.
* @param priority the priority of this message.
*/
public void setPriority(MessagePriority priority) {
this.priority = priority;
}
/**
* Two <code>Message</code>s are by default considered equal if they are of
@ -84,7 +94,8 @@ public abstract class Message implements Cloneable {
*/
@Override
public boolean equals(Object o) {
return o != null && (o.getClass() == this.getClass() && sourcesEqual(((Message) o).sources, sources));
return o != null && (o.getClass() == this.getClass() && sourcesEqual(((Message) o).sources, sources))
&& ((Message) o).priority == priority;
}
/**
@ -109,6 +120,7 @@ public abstract class Message implements Cloneable {
protected Object clone() throws CloneNotSupportedException {
Message clone = (Message) super.clone();
clone.sources = this.sources;
clone.priority = this.priority;
return clone;
}
}

View File

@ -0,0 +1,10 @@
package net.sf.openrocket.logging;
/**
* The priority of a message.
*/
public enum MessagePriority {
LOW,
NORMAL,
HIGH
}

View File

@ -16,10 +16,17 @@ public abstract class Warning extends Message {
private static final Translator trans = Application.getTranslator();
/**
* @return a Warning with the specific text.
* @return a Message with the specific text and priority.
*/
public static Warning fromString(String text, MessagePriority priority) {
return new Warning.Other(text, priority);
}
/**
* @return a Message with the specific text.
*/
public static Warning fromString(String text) {
return new Warning.Other(text);
return fromString(text, MessagePriority.NORMAL);
}
@ -42,6 +49,7 @@ public abstract class Warning extends Message {
*/
public LargeAOA(double aoa) {
this.aoa = aoa;
setPriority(MessagePriority.NORMAL);
}
@Override
@ -93,6 +101,7 @@ public abstract class Warning extends Message {
*/
public HighSpeedDeployment(double speed) {
this.recoverySpeed = speed;
setPriority(MessagePriority.NORMAL);
}
@Override
@ -135,6 +144,7 @@ public abstract class Warning extends Message {
*/
public EventAfterLanding(FlightEvent _event) {
this.event = _event;
setPriority(MessagePriority.HIGH);
}
// I want a warning on every event that occurs after we land,
@ -172,7 +182,11 @@ public abstract class Warning extends Message {
private double diameter = Double.NaN;
private double length = Double.NaN;
private double delay = Double.NaN;
public MissingMotor() {
setPriority(MessagePriority.HIGH);
}
@Override
public String getMessageDescription() {
String str = "No motor with designation '" + designation + "'";
@ -345,8 +359,13 @@ public abstract class Warning extends Message {
public static class Other extends Warning {
private String description;
public Other(String description) {
public Other(String description, MessagePriority priority) {
this.description = description;
setPriority(priority);
}
public Other(String description) {
this(description, MessagePriority.NORMAL);
}
@Override
@ -379,68 +398,75 @@ public abstract class Warning extends Message {
/** A <code>Warning</code> that the body diameter is discontinuous. */
////Discontinuity in rocket body diameter.
public static final Warning DIAMETER_DISCONTINUITY = new Other(trans.get("Warning.DISCONTINUITY"));
public static final Warning DIAMETER_DISCONTINUITY = new Other(trans.get("Warning.DISCONTINUITY"), MessagePriority.NORMAL);
/** A <code>Warning</code> that a ComponentAssembly has an open forward end */
public static final Warning OPEN_AIRFRAME_FORWARD = new Other(trans.get("Warning.OPEN_AIRFRAME_FORWARD"));
public static final Warning OPEN_AIRFRAME_FORWARD = new Other(trans.get("Warning.OPEN_AIRFRAME_FORWARD"), MessagePriority.NORMAL);
/** A <code>Warning</code> that there is a gap in the airframe */
public static final Warning AIRFRAME_GAP = new Other(trans.get("Warning.AIRFRAME_GAP"));
public static final Warning AIRFRAME_GAP = new Other(trans.get("Warning.AIRFRAME_GAP"), MessagePriority.NORMAL);
/** A <code>Warning</code> that there are overlapping airframe components */
public static final Warning AIRFRAME_OVERLAP = new Other(trans.get("Warning.AIRFRAME_OVERLAP"));
public static final Warning AIRFRAME_OVERLAP = new Other(trans.get("Warning.AIRFRAME_OVERLAP"), MessagePriority.NORMAL);
/** A <code>Warning</code> that an inline podset is completely forward of its parent component */
public static final Warning PODSET_FORWARD = new Other(trans.get("Warning.PODSET_FORWARD"));
public static final Warning PODSET_FORWARD = new Other(trans.get("Warning.PODSET_FORWARD"), MessagePriority.NORMAL);
/** A <code>Warning</code> that an inline podset overlaps its parent component */
public static final Warning PODSET_OVERLAP = new Other(trans.get("Warning.PODSET_OVERLAP"));
public static final Warning PODSET_OVERLAP = new Other(trans.get("Warning.PODSET_OVERLAP"), MessagePriority.NORMAL);
/** A <code>Warning</code> that the fins are thick compared to the rocket body. */
////Thick fins may not be modeled accurately.
public static final Warning THICK_FIN = new Other(trans.get("Warning.THICK_FIN"));
public static final Warning THICK_FIN = new Other(trans.get("Warning.THICK_FIN"), MessagePriority.NORMAL);
/** A <code>Warning</code> that the fins have jagged edges. */
////Jagged-edged fin predictions may be inaccurate.
public static final Warning JAGGED_EDGED_FIN = new Other(trans.get("Warning.JAGGED_EDGED_FIN"));
public static final Warning JAGGED_EDGED_FIN = new Other(trans.get("Warning.JAGGED_EDGED_FIN"), MessagePriority.NORMAL);
/** A <code>Warning</code> that the fins have a zero area. */
////Fins with no area will not affect aerodynamics
public static final Warning ZERO_AREA_FIN = new Other(trans.get("Warning.ZERO_AREA_FIN"));
public static final Warning ZERO_AREA_FIN = new Other(trans.get("Warning.ZERO_AREA_FIN"), MessagePriority.NORMAL);
/** A <code>Warning</code> that simulation listeners have affected the simulation */
////Listeners modified the flight simulation
public static final Warning LISTENERS_AFFECTED = new Other(trans.get("Warning.LISTENERS_AFFECTED"));
public static final Warning LISTENERS_AFFECTED = new Other(trans.get("Warning.LISTENERS_AFFECTED"), MessagePriority.LOW);
////No recovery device for simulation
public static final Warning NO_RECOVERY_DEVICE = new Other(trans.get("Warning.NO_RECOVERY_DEVICE"));
/** No recovery device defined in the simulation. */
public static final Warning NO_RECOVERY_DEVICE = new Other(trans.get("Warning.NO_RECOVERY_DEVICE"), MessagePriority.HIGH);
//// Invalid parameter encountered, ignoring.
public static final Warning FILE_INVALID_PARAMETER = new Other(trans.get("Warning.FILE_INVALID_PARAMETER"));
public static final Warning PARALLEL_FINS = new Other(trans.get("Warning.PARALLEL_FINS"));
/** Invalid parameter encountered, ignoring. */
public static final Warning FILE_INVALID_PARAMETER = new Other(trans.get("Warning.FILE_INVALID_PARAMETER"), MessagePriority.NORMAL);
public static final Warning SUPERSONIC = new Other(trans.get("Warning.SUPERSONIC"));
public static final Warning RECOVERY_LAUNCH_ROD = new Other(trans.get("Warning.RECOVERY_LAUNCH_ROD"));
public static final Warning TUMBLE_UNDER_THRUST = new Other(trans.get("Warning.TUMBLE_UNDER_THRUST"));
/** Too many parallel fins */
public static final Warning PARALLEL_FINS = new Other(trans.get("Warning.PARALLEL_FINS"), MessagePriority.NORMAL);
public static final Warning EVENT_AFTER_LANDING = new Other(trans.get("Warning.EVENT_AFTER_LANDING"));
/** Body calculations may not be entirely accurate at supersonic speeds. */
public static final Warning SUPERSONIC = new Other(trans.get("Warning.SUPERSONIC"), MessagePriority.NORMAL);
public static final Warning ZERO_VOLUME_BODY = new Other(trans.get("Warning.ZERO_VOLUME_BODY"));
/** Recovery device deployed while on the launch guide. */
public static final Warning RECOVERY_LAUNCH_ROD = new Other(trans.get("Warning.RECOVERY_LAUNCH_ROD"), MessagePriority.HIGH);
public static final Warning TUBE_SEPARATION = new Other(trans.get("Warning.TUBE_SEPARATION"));
public static final Warning TUBE_OVERLAP = new Other(trans.get("Warning.TUBE_OVERLAP"));
/** Stage began to tumble under thrust. */
public static final Warning TUMBLE_UNDER_THRUST = new Other(trans.get("Warning.TUMBLE_UNDER_THRUST"), MessagePriority.HIGH);
public static final Warning OBJ_ZERO_THICKNESS = new Other(trans.get("Warning.OBJ_ZERO_THICKNESS"));
/** Flight Event occurred after landing: */
public static final Warning EVENT_AFTER_LANDING = new Other(trans.get("Warning.EVENT_AFTER_LANDING"), MessagePriority.NORMAL);
/** Zero-volume bodies may not simulate accurately */
public static final Warning ZERO_VOLUME_BODY = new Other(trans.get("Warning.ZERO_VOLUME_BODY"), MessagePriority.NORMAL);
/** Space between tube fins may not simulate accurately. */
public static final Warning TUBE_SEPARATION = new Other(trans.get("Warning.TUBE_SEPARATION"), MessagePriority.NORMAL);
/** Overlapping tube fins may not simulate accurately. */
public static final Warning TUBE_OVERLAP = new Other(trans.get("Warning.TUBE_OVERLAP"), MessagePriority.NORMAL);
/** Zero-thickness component can cause issues for 3D printing */
public static final Warning OBJ_ZERO_THICKNESS = new Other(trans.get("Warning.OBJ_ZERO_THICKNESS"), MessagePriority.NORMAL);
/** A <code>Warning</code> that stage separation occurred at other than the last stage */
public static final Warning SEPARATION_ORDER = new Other(trans.get("Warning.SEPARATION_ORDER"));
public static final Warning SEPARATION_ORDER = new Other(trans.get("Warning.SEPARATION_ORDER"), MessagePriority.NORMAL);
/** A <code>Warning</code> that stage separation occurred before the rocket cleared the launch rod or rail */
public static final Warning EARLY_SEPARATION = new Other(trans.get("Warning.EARLY_SEPARATION"));
public static final Warning EARLY_SEPARATION = new Other(trans.get("Warning.EARLY_SEPARATION"), MessagePriority.HIGH);
public static final Warning EMPTY_BRANCH = new Other(trans.get("Warning.EMPTY_BRANCH"));
/** Simulation branch contains no data */
public static final Warning EMPTY_BRANCH = new Other(trans.get("Warning.EMPTY_BRANCH"), MessagePriority.HIGH);
}