Skip to content

Commit

Permalink
[#118] Updated model statuses to use name/description. Added status c…
Browse files Browse the repository at this point in the history
…ategories too.
  • Loading branch information
susanw1 committed Oct 11, 2023
1 parent e30474a commit c606cce
Show file tree
Hide file tree
Showing 14 changed files with 332 additions and 241 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,17 @@

import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;

import net.zscript.ascii.AnsiCharacterStylePrinter;
import net.zscript.ascii.AsciiFrame;
import net.zscript.ascii.CharacterStyle;
import net.zscript.ascii.TextBox;
import net.zscript.ascii.TextCanvas;
import net.zscript.ascii.TextColor;
import net.zscript.model.ZscriptModel;
import net.zscript.model.components.Zchars;
import net.zscript.model.datamodel.IntrinsicsDataModel.StatusModel;
import net.zscript.model.datamodel.ZscriptDataModel;

public class StandardCommandGrapher implements CommandGrapher {
Expand Down Expand Up @@ -182,9 +180,9 @@ private void explainStatus(ZscriptModel model, CommandPrintSettings settings, Zs
box.append("0x");
box.appendHex(value, 1);
box.append(" (");
Optional<ZscriptDataModel.StatusModel> optStatus = model.getStatus(value);
Optional<StatusModel> optStatus = model.getStatus(value);
if (optStatus.isPresent()) {
box.append(upperFirst(optStatus.get().getCode()));
box.append(upperFirst(optStatus.get().getName()));
} else {
box.append("Unknown");
}
Expand All @@ -195,16 +193,16 @@ private void explainStatus(ZscriptModel model, CommandPrintSettings settings, Zs
box.startNewLine(3);
boolean hasSpecificDesc = false;
if (value != -1) {
Optional<ZscriptDataModel.StatusModel> optStatus = model.getStatus(value);
Optional<StatusModel> optStatus = model.getStatus(value);
if (optStatus.isPresent()) {
for (ZscriptDataModel.StatusModel specific : command.getStatus()) {
if (specific.getCode().equals(optStatus.get().getCode())) {
for (ZscriptDataModel.CommandStatusModel specific : command.getStatus()) {
if (specific.getName().equals(optStatus.get().getName())) {
hasSpecificDesc = true;
box.append(toSentence(specific.getMeaning()));
box.append(toSentence(specific.getDescription()));
}
}
if (!hasSpecificDesc) {
box.append(toSentence(optStatus.get().getMeaning()));
box.append(toSentence(optStatus.get().getDescription()));
hasSpecificDesc = true;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import com.fasterxml.jackson.annotation.JsonProperty;

import net.zscript.model.datamodel.IntrinsicsDataModel.Intrinsics;
import net.zscript.model.datamodel.IntrinsicsDataModel.StatusModel;
import net.zscript.model.datamodel.ModelValidator;
import net.zscript.model.datamodel.ZscriptDataModel;
import net.zscript.model.datamodel.ZscriptDataModel.ModuleModel;
Expand Down Expand Up @@ -98,9 +99,9 @@ public Optional<ZscriptDataModel.NotificationModel> getNotification(int id) {
.flatMap(m -> m.getNotificationById((id & 0xF)));
}

public Optional<ZscriptDataModel.StatusModel> getStatus(int value) {
public Optional<StatusModel> getStatus(int value) {
Intrinsics intrinsics = getIntrinsics();
for (ZscriptDataModel.StatusModel status : intrinsics.getStatus()) {
for (StatusModel status : intrinsics.getStatus()) {
if (status.getId() == value) {
return Optional.of(status);
} else if (status.getId() > value) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

import java.util.List;

import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;

import net.zscript.model.datamodel.ZscriptDataModel.RequestFieldModel;
import net.zscript.model.datamodel.ZscriptDataModel.ResponseFieldModel;
import net.zscript.model.datamodel.ZscriptDataModel.StatusModel;

public interface IntrinsicsDataModel {
Intrinsics getIntrinsics();
Expand All @@ -17,11 +19,11 @@ interface Intrinsics {
List<ZcharDefs> getZchars();

List<StatusModel> getStatus();
}

interface ZcharDefs {
String getName();
List<StatusCategoryModel> getStatusCategories();
}

interface ZcharDefs extends ZscriptDataModel.ModelComponent {
char getCh();

default String getChEscapedAsC() {
Expand All @@ -39,8 +41,6 @@ default String getChEscapedAsC() {
return String.valueOf(ch);
}

String getDescription();

boolean isSeparator();

boolean isMustEscape();
Expand All @@ -53,4 +53,15 @@ default String getChEscapedAsC() {

boolean isBigField();
}

@JsonIdentityInfo(generator = ObjectIdGenerators.StringIdGenerator.class)
interface StatusCategoryModel extends ZscriptDataModel.ModelComponent {
int getBaseId();
}

interface StatusModel extends ZscriptDataModel.ModelComponent {
int getId();

StatusCategoryModel getCategory();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@

public interface ZscriptDataModel {

/** */
/**
* Most components of the Model have a name/description/longDescription - this defines them in one place.
*/
interface ModelComponent {
@JsonProperty(required = true)
String getName();
Expand Down Expand Up @@ -122,7 +124,7 @@ default String getCommandName() {
List<ResponseFieldModel> getResponseFields();

@JsonManagedReference
List<StatusModel> getStatus();
List<CommandStatusModel> getStatus();

default int getFullCommand() {
return getModule().getModuleBank().getId() << 8 | getModule().getId() << 4 | (getCommand() & 0xf);
Expand Down Expand Up @@ -326,14 +328,11 @@ interface NotificationFieldModel extends GenericField {
NotificationSectionModel getNotificationSection();
}

interface StatusModel {
/**
* Specifically a Status object that is associated with a Command, as opposed to an intrinsic one
*/
interface CommandStatusModel extends IntrinsicsDataModel.StatusModel {
@JsonBackReference
CommandModel getCommand();

String getCode();

int getId();

String getMeaning();
}
}
Loading

0 comments on commit c606cce

Please sign in to comment.