From fe72345a235912b5e8d3578f2cf6b59d6bb06aa0 Mon Sep 17 00:00:00 2001 From: LiuXuanIan Date: Mon, 15 Apr 2019 13:55:26 +0800 Subject: [PATCH 1/4] Modify ui. --- .../logic/commands/AddWorkListCommand.java | 2 +- .../equipment/model/UniqueWorkListList.java | 6 + .../storage/JsonAdaptedWorkList.java | 104 ++++++++++++++++++ .../JsonSerializableEquipmentManager.java | 3 - .../seedu/equipment/ui/EquipmentCard.java | 10 +- .../guihandles/EquipmentCardHandle.java | 16 ++- .../equipment/ui/testutil/GuiTestAssert.java | 11 +- 7 files changed, 135 insertions(+), 17 deletions(-) create mode 100644 src/main/java/seedu/equipment/storage/JsonAdaptedWorkList.java diff --git a/src/main/java/seedu/equipment/logic/commands/AddWorkListCommand.java b/src/main/java/seedu/equipment/logic/commands/AddWorkListCommand.java index 6be2fd204f75..dba004238995 100644 --- a/src/main/java/seedu/equipment/logic/commands/AddWorkListCommand.java +++ b/src/main/java/seedu/equipment/logic/commands/AddWorkListCommand.java @@ -23,7 +23,7 @@ public class AddWorkListCommand extends Command { + CliSyntax.PREFIX_ID + "ID \n" + "Example: " + COMMAND_WORD + " " + CliSyntax.PREFIX_DATE + "12-12-2019 " - + CliSyntax.PREFIX_ASSIGNEE + "Mei Yen " + + CliSyntax.PREFIX_ASSIGNEE + "Mary " + CliSyntax.PREFIX_ID + "13 "; public static final String MESSAGE_SUCCESS = "New WorkList created: %1$s"; diff --git a/src/main/java/seedu/equipment/model/UniqueWorkListList.java b/src/main/java/seedu/equipment/model/UniqueWorkListList.java index 92c47d6e5dcc..fb1b731d4423 100644 --- a/src/main/java/seedu/equipment/model/UniqueWorkListList.java +++ b/src/main/java/seedu/equipment/model/UniqueWorkListList.java @@ -50,6 +50,12 @@ public void add(WorkList toAdd) { throw new DuplicateEquipmentException(); } internalList.add(toAdd); + internalList.sort(new Comparator() { + @Override + public int compare(WorkList o1, WorkList o2) { + return Integer.compare(Integer.valueOf(o1.getId().value), Integer.valueOf(o2.getId().value)); + } + }); } /** diff --git a/src/main/java/seedu/equipment/storage/JsonAdaptedWorkList.java b/src/main/java/seedu/equipment/storage/JsonAdaptedWorkList.java new file mode 100644 index 000000000000..30845019730d --- /dev/null +++ b/src/main/java/seedu/equipment/storage/JsonAdaptedWorkList.java @@ -0,0 +1,104 @@ +package seedu.equipment.storage; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; + +import seedu.equipment.commons.exceptions.IllegalValueException; +import seedu.equipment.model.WorkList; +import seedu.equipment.model.WorkListId; +import seedu.equipment.model.equipment.Date; +import seedu.equipment.model.equipment.Equipment; +import seedu.equipment.model.equipment.Name; + +/** + * Jackson-friendly version of {@link WorkList}. + */ +class JsonAdaptedWorkList { + + public static final String MISSING_FIELD_MESSAGE_FORMAT = "Equipment's %s field is missing!"; + + private final String assignee; + private final String workListId; + private final String date; + private final List equipments = new ArrayList<>(); + + /** + * Constructs a {@code JsonAdaptedWorkList} with the given WorkList details. + */ + @JsonCreator + public JsonAdaptedWorkList(@JsonProperty("assignee") String assignee, @JsonProperty("workListId") String workListId, + @JsonProperty("date") String date, + @JsonProperty("equipments") List equipments) { + this.assignee = assignee; + this.workListId = workListId; + this.date = date; + if (equipments != null) { + this.equipments.addAll(equipments); + } + } + + /** + * Converts a given {@code WorkList} into this class for Jackson use. + */ + public JsonAdaptedWorkList(WorkList source) { + assignee = source.getAssignee(); + workListId = source.getId().value; + date = source.getDate(); + equipments.addAll(source.getEquipments().stream() + .map(JsonAdaptedEquipment::new) + .collect(Collectors.toList())); + } + + /** + * Converts this Jackson-friendly adapted WorkList object into the model's {@code WorkList} object. + * + * @throws IllegalValueException if there were any data constraints violated in the adapted WorkList. + */ + public WorkList toModelType() throws IllegalValueException { + final List equipmentInside = new ArrayList<>(); + for (JsonAdaptedEquipment equip : equipments) { + equipmentInside.add(equip.toModelType()); + } + + if (assignee == null) { + throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName())); + } + final String modelAssignee = new String(assignee); + + if (workListId == null) { + throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, + WorkListId.class.getSimpleName())); + } + if (!WorkListId.isValidWorkListId(workListId)) { + throw new IllegalValueException(WorkListId.MESSAGE_CONSTRAINTS); + } + final WorkListId modelWorkListId = new WorkListId(workListId); + + if (date == null) { + throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Date.class.getSimpleName())); + } + if (!Date.isValidDate(date)) { + throw new IllegalValueException(Date.MESSAGE_CONSTRAINTS); + } + final Date modelDate = new Date(date); + + final Set modelEquipments = new HashSet<>(equipmentInside); + + WorkList thisWorkList = new WorkList(modelDate.toString(), modelAssignee, modelWorkListId); + + int numOfEquipments = modelEquipments.size(); + Iterator ir = modelEquipments.iterator(); + for(int i = 0; i < numOfEquipments; i++) { + thisWorkList.addEquipment(ir.next()); + } + return thisWorkList; + } + +} diff --git a/src/main/java/seedu/equipment/storage/JsonSerializableEquipmentManager.java b/src/main/java/seedu/equipment/storage/JsonSerializableEquipmentManager.java index 90f245fef8f2..550125142caa 100644 --- a/src/main/java/seedu/equipment/storage/JsonSerializableEquipmentManager.java +++ b/src/main/java/seedu/equipment/storage/JsonSerializableEquipmentManager.java @@ -22,13 +22,10 @@ class JsonSerializableEquipmentManager { public static final String MESSAGE_DUPLICATE_PERSON = "Persons list contains duplicate equipment(s)."; private final List persons = new ArrayList<>(); - /** * Constructs a {@code JsonSerializableEquipmentManager} with the given persons. */ @JsonCreator - - public JsonSerializableEquipmentManager(@JsonProperty("persons") List persons) { this.persons.addAll(persons); } diff --git a/src/main/java/seedu/equipment/ui/EquipmentCard.java b/src/main/java/seedu/equipment/ui/EquipmentCard.java index 4624e7b553d6..0d27bf4b1185 100644 --- a/src/main/java/seedu/equipment/ui/EquipmentCard.java +++ b/src/main/java/seedu/equipment/ui/EquipmentCard.java @@ -53,11 +53,11 @@ public EquipmentCard(Equipment equipment, int displayedIndex) { super(FXML); this.equipment = equipment; id.setText(displayedIndex + ". "); - name.setText(equipment.getName().name); - phone.setText(equipment.getPhone().value); - address.setText(equipment.getAddress().value); - serialNumber.setText(equipment.getSerialNumber().serialNumber); - date.setText(equipment.getDate().toString()); + name.setText("Client name: " + equipment.getName().name); + phone.setText("Phone: " + equipment.getPhone().value); + address.setText("Address: " + equipment.getAddress().value); + serialNumber.setText("Serial Number: " + equipment.getSerialNumber().serialNumber); + date.setText("Date: " + equipment.getDate().toString()); equipment.getTags().forEach(tag -> { String tagName = tag.tagName; tags.getChildren().add(new Label(tagName)); diff --git a/src/test/java/guitests/guihandles/EquipmentCardHandle.java b/src/test/java/guitests/guihandles/EquipmentCardHandle.java index 093c7962d1d3..36090684329c 100644 --- a/src/test/java/guitests/guihandles/EquipmentCardHandle.java +++ b/src/test/java/guitests/guihandles/EquipmentCardHandle.java @@ -20,12 +20,14 @@ public class EquipmentCardHandle extends NodeHandle { private static final String PHONE_FIELD_ID = "#phone"; private static final String DATE_FIELD_ID = "#date"; private static final String TAGS_FIELD_ID = "#tags"; + private static final String SERIALNUMBER_FIELD_ID = "#serialNumber"; private final Label idLabel; private final Label nameLabel; private final Label addressLabel; private final Label phoneLabel; private final Label dateLabel; + private final Label serialNumberLabel; private final List