diff --git a/src/main/java/seedu/address/logic/commands/AddCommand.java b/src/main/java/seedu/address/logic/commands/AddCommand.java index 123e36ed7dbb..c6e41a64b5c2 100644 --- a/src/main/java/seedu/address/logic/commands/AddCommand.java +++ b/src/main/java/seedu/address/logic/commands/AddCommand.java @@ -5,7 +5,6 @@ import static seedu.address.logic.parser.CliSyntax.PREFIX_BIKE; import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; import static seedu.address.logic.parser.CliSyntax.PREFIX_LOANRATE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_LOANTIME; import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC; import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; @@ -32,7 +31,6 @@ public class AddCommand extends Command { + PREFIX_ADDRESS + "ADDRESS " + PREFIX_BIKE + "BIKE " + PREFIX_LOANRATE + "LOANRATE " - + PREFIX_LOANTIME + "LOANTIME " + "[" + PREFIX_TAG + "TAG]...\n" + "Example: " + COMMAND_WORD + " " + PREFIX_NAME + "John Doe " @@ -42,7 +40,6 @@ public class AddCommand extends Command { + PREFIX_ADDRESS + "311, Clementi Ave 2, #02-25 " + PREFIX_BIKE + "Bike001 " + PREFIX_LOANRATE + "3.5 " - + PREFIX_LOANTIME + "2018-10-01 12:00 " + PREFIX_TAG + "friends " + PREFIX_TAG + "owesMoney"; diff --git a/src/main/java/seedu/address/logic/commands/EditCommand.java b/src/main/java/seedu/address/logic/commands/EditCommand.java index a95e765ab61b..055f79274199 100644 --- a/src/main/java/seedu/address/logic/commands/EditCommand.java +++ b/src/main/java/seedu/address/logic/commands/EditCommand.java @@ -5,7 +5,6 @@ import static seedu.address.logic.parser.CliSyntax.PREFIX_BIKE; import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; import static seedu.address.logic.parser.CliSyntax.PREFIX_LOANRATE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_LOANTIME; import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC; import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; @@ -54,7 +53,6 @@ public class EditCommand extends Command { + "[" + PREFIX_ADDRESS + "ADDRESS] " + "[" + PREFIX_BIKE + "BIKE] " + "[" + PREFIX_LOANRATE + "LOANRATE] " - + "[" + PREFIX_LOANTIME + "LOANTIME] " + "[" + PREFIX_TAG + "TAG]...\n" + "Example: " + COMMAND_WORD + " 1 " + PREFIX_PHONE + "91234567 " @@ -115,7 +113,8 @@ private static Loan createEditedLoan(Loan loanToEdit, EditLoanDescriptor editLoa Address updatedAddress = editLoanDescriptor.getAddress().orElse(loanToEdit.getAddress()); Bike updatedBike = editLoanDescriptor.getBike().orElse(loanToEdit.getBike()); LoanRate updatedRate = editLoanDescriptor.getLoanRate().orElse(loanToEdit.getLoanRate()); - LoanTime updatedTime = editLoanDescriptor.getLoanTime().orElse(loanToEdit.getLoanTime()); + LoanTime updatedStartTime = editLoanDescriptor.getLoanStartTime().orElse(loanToEdit.getLoanStartTime()); + LoanTime updatedEndTime = editLoanDescriptor.getLoanEndTime().orElse(loanToEdit.getLoanEndTime()); Set updatedTags = editLoanDescriptor.getTags().orElse(loanToEdit.getTags()); LoanStatus updatedLoanStatus = editLoanDescriptor.getLoanStatus().orElse(loanToEdit.getLoanStatus()); @@ -126,8 +125,10 @@ private static Loan createEditedLoan(Loan loanToEdit, EditLoanDescriptor editLoa updatedAddress, updatedBike, updatedRate, - updatedTime, - updatedLoanStatus, updatedTags + updatedStartTime, + updatedEndTime, + updatedLoanStatus, + updatedTags ); } @@ -161,7 +162,8 @@ public static class EditLoanDescriptor { private Address address; private Bike bike; private LoanRate rate; - private LoanTime time; + private LoanTime startTime; + private LoanTime endTime; private Set tags; private LoanStatus loanStatus; @@ -179,7 +181,8 @@ public EditLoanDescriptor(EditLoanDescriptor toCopy) { setAddress(toCopy.address); setBike(toCopy.bike); setLoanRate(toCopy.rate); - setLoanTime(toCopy.time); + setLoanStartTime(toCopy.startTime); + setLoanEndTime(toCopy.endTime); setTags(toCopy.tags); setLoanStatus(toCopy.loanStatus); } @@ -247,12 +250,20 @@ public Optional getLoanRate() { return Optional.ofNullable(rate); } - public void setLoanTime(LoanTime time) { - this.time = time; + public void setLoanStartTime(LoanTime time) { + this.startTime = time; } - public Optional getLoanTime() { - return Optional.ofNullable(time); + public Optional getLoanStartTime() { + return Optional.ofNullable(startTime); + } + + public void setLoanEndTime(LoanTime time) { + this.endTime = time; + } + + public Optional getLoanEndTime() { + return Optional.ofNullable(endTime); } /** @@ -302,7 +313,6 @@ && getEmail().equals(e.getEmail()) && getAddress().equals(e.getAddress()) && getBike().equals(e.getBike()) && getLoanRate().equals(e.getLoanRate()) - && getLoanTime().equals(e.getLoanTime()) && getTags().equals(e.getTags()); } } diff --git a/src/main/java/seedu/address/logic/parser/AddCommandParser.java b/src/main/java/seedu/address/logic/parser/AddCommandParser.java index 846928a347f5..62f72f118776 100644 --- a/src/main/java/seedu/address/logic/parser/AddCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/AddCommandParser.java @@ -5,7 +5,6 @@ import static seedu.address.logic.parser.CliSyntax.PREFIX_BIKE; import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; import static seedu.address.logic.parser.CliSyntax.PREFIX_LOANRATE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_LOANTIME; import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC; import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; @@ -21,7 +20,6 @@ import seedu.address.model.loan.Email; import seedu.address.model.loan.Loan; import seedu.address.model.loan.LoanRate; -import seedu.address.model.loan.LoanTime; import seedu.address.model.loan.Name; import seedu.address.model.loan.Nric; import seedu.address.model.loan.Phone; @@ -47,7 +45,6 @@ public AddCommand parse(String args) throws ParseException { PREFIX_ADDRESS, PREFIX_BIKE, PREFIX_LOANRATE, - PREFIX_LOANTIME, PREFIX_TAG); if (!arePrefixesPresent(argMultimap, @@ -57,8 +54,7 @@ public AddCommand parse(String args) throws ParseException { PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_BIKE, - PREFIX_LOANRATE, - PREFIX_LOANTIME) + PREFIX_LOANRATE) || !argMultimap.getPreamble().isEmpty()) { throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE)); } @@ -70,10 +66,9 @@ public AddCommand parse(String args) throws ParseException { Address address = ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()); Bike bike = ParserUtil.parseBike(argMultimap.getValue(PREFIX_BIKE).get()); LoanRate rate = ParserUtil.parseLoanRate(argMultimap.getValue(PREFIX_LOANRATE).get()); - LoanTime time = ParserUtil.parseLoanTime(argMultimap.getValue(PREFIX_LOANTIME).get()); Set tagList = ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG)); - Loan loan = new Loan(name, nric, phone, email, address, bike, rate, time, tagList); + Loan loan = new Loan(name, nric, phone, email, address, bike, rate, tagList); return new AddCommand(loan); } diff --git a/src/main/java/seedu/address/logic/parser/CliSyntax.java b/src/main/java/seedu/address/logic/parser/CliSyntax.java index 44eb56c24e63..d77270213dbd 100644 --- a/src/main/java/seedu/address/logic/parser/CliSyntax.java +++ b/src/main/java/seedu/address/logic/parser/CliSyntax.java @@ -15,7 +15,6 @@ public class CliSyntax { public static final Prefix PREFIX_ADDRESS = new Prefix("a/"); public static final Prefix PREFIX_BIKE = new Prefix("b/"); public static final Prefix PREFIX_LOANRATE = new Prefix("lr/"); - public static final Prefix PREFIX_LOANTIME = new Prefix("lt/"); public static final Prefix PREFIX_TAG = new Prefix("t/"); } diff --git a/src/main/java/seedu/address/logic/parser/EditCommandParser.java b/src/main/java/seedu/address/logic/parser/EditCommandParser.java index 8532454939ed..3c70b5efdcf3 100644 --- a/src/main/java/seedu/address/logic/parser/EditCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/EditCommandParser.java @@ -6,7 +6,6 @@ import static seedu.address.logic.parser.CliSyntax.PREFIX_BIKE; import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; import static seedu.address.logic.parser.CliSyntax.PREFIX_LOANRATE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_LOANTIME; import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC; import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; @@ -37,7 +36,7 @@ public EditCommand parse(String args) throws ParseException { requireNonNull(args); ArgumentMultimap argMultimap = ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_NRIC, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, - PREFIX_BIKE, PREFIX_LOANRATE, PREFIX_LOANTIME, PREFIX_TAG); + PREFIX_BIKE, PREFIX_LOANRATE, PREFIX_TAG); Index index; @@ -69,9 +68,6 @@ public EditCommand parse(String args) throws ParseException { if (argMultimap.getValue(PREFIX_LOANRATE).isPresent()) { editLoanDescriptor.setLoanRate(ParserUtil.parseLoanRate(argMultimap.getValue(PREFIX_LOANRATE).get())); } - if (argMultimap.getValue(PREFIX_LOANTIME).isPresent()) { - editLoanDescriptor.setLoanTime(ParserUtil.parseLoanTime(argMultimap.getValue(PREFIX_LOANTIME).get())); - } parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editLoanDescriptor::setTags); if (!editLoanDescriptor.isAnyFieldEdited()) { diff --git a/src/main/java/seedu/address/model/loan/Loan.java b/src/main/java/seedu/address/model/loan/Loan.java index e64cb0223b2d..5a950077b8e2 100644 --- a/src/main/java/seedu/address/model/loan/Loan.java +++ b/src/main/java/seedu/address/model/loan/Loan.java @@ -27,7 +27,8 @@ public class Loan implements UniqueListItem { // Data fields private final LoanRate rate; - private final LoanTime time; + private final LoanTime startTime; + private final LoanTime endTime; // Note that endTime can be null private final Phone phone; private final Email email; private final Address address; @@ -45,13 +46,30 @@ public Loan(Name name, Address address, Bike bike, LoanRate rate, - LoanTime time, + LoanTime startTime, + LoanTime endTime, + LoanStatus loanStatus, Set tags) { - this(name, nric, phone, email, address, bike, rate, time, LoanStatus.ONGOING, tags); + // Note that endTime can be null. This loans in progress do not have an endTime. + requireAllNonNull(name, nric, phone, email, address, bike, rate, startTime, tags); + this.name = name; + this.nric = nric; + this.phone = phone; + this.email = email; + this.address = address; + this.bike = bike; + this.rate = rate; + this.startTime = startTime; + this.endTime = endTime; + this.tags.addAll(tags); + + // Initialise the loan to be ongoing. + this.loanStatus = loanStatus; } /** * Every field must be present and not null. + * This constructor is used for the add command */ public Loan(Name name, Nric nric, @@ -60,21 +78,28 @@ public Loan(Name name, Address address, Bike bike, LoanRate rate, - LoanTime time, - LoanStatus loanStatus, Set tags) { - requireAllNonNull(name, nric, phone, email, address, bike, rate, time, tags, loanStatus); - this.name = name; - this.nric = nric; - this.phone = phone; - this.email = email; - this.address = address; - this.bike = bike; - this.rate = rate; - this.time = time; - this.tags.addAll(tags); + Set tags) { + this(name, nric, phone, email, address, bike, rate, + new LoanTime(), null, LoanStatus.ONGOING, tags); + } - // Initialise the loan to be ongoing. - this.loanStatus = loanStatus; + /** + * Every field must be present and not null. + * This constructor is used when you know the start and end times. + * If you know the end time, then the loan would be returned. + */ + public Loan(Name name, + Nric nric, + Phone phone, + Email email, + Address address, + Bike bike, + LoanRate rate, + LoanTime startTime, + LoanTime endTime, + Set tags) { + this(name, nric, phone, email, address, bike, rate, + startTime, endTime, LoanStatus.RETURNED, tags); } public Name getName() { @@ -109,8 +134,12 @@ public LoanRate getLoanRate() { return rate; } - public LoanTime getLoanTime() { - return time; + public LoanTime getLoanStartTime() { + return startTime; + } + + public LoanTime getLoanEndTime() { + return endTime; } /** @@ -151,7 +180,7 @@ public boolean isSame(Loan other) { && other.getNric().equals(getNric()) && other.getBike().equals(getBike()) && (other.getEmail().equals(getEmail()) || other.getPhone().equals(getPhone()) - || other.getLoanRate().equals(getLoanRate()) || other.getLoanTime().equals(getLoanTime())); + || other.getLoanRate().equals(getLoanRate()) || other.getLoanStartTime().equals(getLoanStartTime())); } /** @@ -177,14 +206,13 @@ public boolean equals(Object other) { && otherLoan.getLoanStatus().equals(getLoanStatus()) && otherLoan.getBike().equals(getBike()) && otherLoan.getLoanRate().equals(getLoanRate()) - && otherLoan.getLoanTime().equals(getLoanTime()) && otherLoan.getTags().equals(getTags()); } @Override public int hashCode() { // use this method for custom fields hashing instead of implementing your own - return Objects.hash(name, nric, phone, email, address, bike, rate, time, tags, loanStatus); + return Objects.hash(name, nric, phone, email, address, bike, rate, startTime, endTime, loanStatus, tags); } @Override @@ -205,8 +233,10 @@ public String toString() { .append(getBike()) .append(" LoanRate: ") .append(getLoanRate()) - .append(" LoanTime: ") - .append(getLoanTime()) + .append(" LoanStartTime: ") + .append(getLoanStartTime()) + .append(" LoanEndTime: ") + .append(getLoanEndTime()) .append(" Tags: "); getTags().forEach(builder::append); return builder.toString(); diff --git a/src/main/java/seedu/address/model/loan/LoanTime.java b/src/main/java/seedu/address/model/loan/LoanTime.java index cd8c440380d1..963261fe083d 100644 --- a/src/main/java/seedu/address/model/loan/LoanTime.java +++ b/src/main/java/seedu/address/model/loan/LoanTime.java @@ -227,4 +227,18 @@ public String toString() { return dateTimeFormatter.format(value); } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + + if (!(other instanceof LoanTime)) { + return false; + } + + return this.value.getEpochSecond() == ((LoanTime) other).value.getEpochSecond(); + + } } diff --git a/src/main/java/seedu/address/model/util/SampleDataUtil.java b/src/main/java/seedu/address/model/util/SampleDataUtil.java index afc2ea88b877..8038f4e3f8bb 100644 --- a/src/main/java/seedu/address/model/util/SampleDataUtil.java +++ b/src/main/java/seedu/address/model/util/SampleDataUtil.java @@ -26,27 +26,27 @@ public static Loan[] getSampleLoans() { new Loan(new Name("Alex Yeoh"), new Nric("S9013904E"), new Phone("87438807"), new Email("alexyeoh@example.com"), new Address("Blk 30 Geylang Street 29, #06-40"), new Bike(new Name("Bike001")), new LoanRate("12.9"), new LoanTime("2010-12-25 04:09"), - getTagSet("friends")), + new LoanTime("2010-12-25 05:09"), getTagSet("friends")), new Loan(new Name("Bernice Yu"), new Nric("T0213176A"), new Phone("99272758"), new Email("berniceyu@example.com"), new Address("Blk 30 Lorong 3 Serangoon Gardens, #07-18"), new Bike(new Name("Bike002")), new LoanRate("1.95"), new LoanTime("2010-12-25 14:09"), - getTagSet("colleagues", "friends")), + new LoanTime("2010-12-26 08:34"), getTagSet("colleagues", "friends")), new Loan(new Name("Charlotte Oliveiro"), new Nric("F9576390K"), new Phone("93210283"), new Email("charlotte@example.com"), new Address("Blk 11 Ang Mo Kio Street 74, #11-04"), new Bike(new Name("Silver Surfer")), new LoanRate("3.90"), new LoanTime("04:55"), - getTagSet("neighbours")), + new LoanTime("09:42"), getTagSet("neighbours")), new Loan(new Name("David Li"), new Nric("G0846554T"), new Phone("91031282"), new Email("lidavid@example.com"), new Address("Blk 436 Serangoon Gardens Street 26, #16-43"), new Bike(new Name("Blue Ocean")), new LoanRate("33"), new LoanTime("12:21"), - getTagSet("family")), + new LoanTime("19:21"), getTagSet("family")), new Loan(new Name("Irfan Ibrahim"), new Nric("S8830104H"), new Phone("92492021"), new Email("irfan@example.com"), new Address("Blk 47 Tampines Street 20, #17-35"), new Bike(new Name("Bike013")), new LoanRate("6.7"), new LoanTime("2018-01-30 15:10"), - getTagSet("classmates")), + new LoanTime("2018-01-31 15:10"), getTagSet("classmates")), new Loan(new Name("Roy Balakrishnan"), new Nric("S7588900C"), new Phone("92624417"), new Email("royb@example.com"), new Address("Blk 45 Aljunied Street 85, #11-31"), new Bike(new Name("Bike099")), new LoanRate("3.95"), new LoanTime("2018-10-20 20:10"), - getTagSet("colleagues")) + new LoanTime("2018-01-30 11:17"), getTagSet("colleagues")) }; } diff --git a/src/main/java/seedu/address/storage/XmlAdaptedLoan.java b/src/main/java/seedu/address/storage/XmlAdaptedLoan.java index a2efd2a4fcb7..2fc1597156ec 100644 --- a/src/main/java/seedu/address/storage/XmlAdaptedLoan.java +++ b/src/main/java/seedu/address/storage/XmlAdaptedLoan.java @@ -47,7 +47,9 @@ public class XmlAdaptedLoan { @XmlElement(required = true) private String rate; @XmlElement(required = true) - private String time; + private String startTime; + @XmlElement + private String endTime; @XmlElement private List tagged = new ArrayList<>(); @@ -68,7 +70,8 @@ public XmlAdaptedLoan(String name, String address, String bike, String rate, - String time, + String startTime, + String endTime, String loanStatus, List tagged) { this.name = name; @@ -78,7 +81,9 @@ public XmlAdaptedLoan(String name, this.address = address; this.bike = bike; this.rate = rate; - this.time = time; + this.startTime = startTime; + this.endTime = endTime; + this.loanStatus = loanStatus; if (tagged != null) { this.tagged = new ArrayList<>(tagged); } @@ -101,6 +106,23 @@ public XmlAdaptedLoan(String name, this(name, nric, phone, email, address, bike, rate, time, "ONGOING", tagged); } + /** + * Constructs an {@code XmlAdaptedLoan} with the given loan details. + * This constructor is called if no loanStatus is given + */ + public XmlAdaptedLoan(String name, + String nric, + String phone, + String email, + String address, + String bike, + String rate, + String startTime, + String endTime, + List tagged) { + this(name, nric, phone, email, address, bike, rate, startTime, endTime, "ONGOING", tagged); + } + /** * Converts a given Loan into this class for JAXB use. * @@ -114,7 +136,8 @@ public XmlAdaptedLoan(Loan source) { address = source.getAddress().value; bike = source.getBike().getName().value; rate = source.getLoanRate().toString(); - time = source.getLoanTime().toString(); + startTime = source.getLoanStartTime().toString(); + endTime = source.getLoanEndTime() == null ? null : source.getLoanEndTime().toString(); tagged = source.getTags().stream() .map(XmlAdaptedTag::new) .collect(Collectors.toList()); @@ -143,6 +166,34 @@ private void checkFieldValid( throw new IllegalValueException(msgConstraints); } } + /** + * Throws an {@code IllegalValueException} if {@code startTime} does not exist or is not valid. + * + * @throws IllegalValueException + */ + private void checkLoanStartTimeValid() throws IllegalValueException { + if (startTime == null) { + throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, + LoanTime.class.getSimpleName())); + } + if (!LoanTime.isValidLoanTime(startTime)) { + throw new IllegalValueException(LoanTime.MESSAGE_LOANTIME_CONSTRAINTS); + } + } + + /** + * Throws an {@code IllegalValueException} if {@code endTime} does not exist or is not valid. + * + * @throws IllegalValueException + */ + private void checkLoanEndTimeValid() throws IllegalValueException { + if (endTime == null) { + return; // Because endTime can be null + } + if (!LoanTime.isValidLoanTime(endTime)) { + throw new IllegalValueException(LoanTime.MESSAGE_LOANTIME_CONSTRAINTS); + } + } /** * Converts this jaxb-friendly adapted loan object into the model's Loan object. @@ -180,8 +231,11 @@ public Loan toModelType() throws IllegalValueException { checkFieldValid(rate, LoanRate.class, LoanRate::isValidRate, LoanRate.MESSAGE_LOANRATE_CONSTRAINTS); final LoanRate modelRate = new LoanRate(rate); - checkFieldValid(time, LoanTime.class, LoanTime::isValidLoanTime, LoanTime.MESSAGE_LOANTIME_CONSTRAINTS); - final LoanTime modelTime = new LoanTime(time); + checkLoanStartTimeValid(); + final LoanTime modelStartTime = new LoanTime(startTime); + + checkLoanEndTimeValid(); + final LoanTime modelEndTime = endTime == null ? null : new LoanTime(endTime); final Set modelTags = new HashSet<>(loanTags); return new Loan(modelName, @@ -191,11 +245,11 @@ public Loan toModelType() throws IllegalValueException { modelAddress, modelBike, modelRate, - modelTime, + modelStartTime, + modelEndTime, modelLoanStatus, modelTags ); - } @Override @@ -216,7 +270,8 @@ public boolean equals(Object other) { && Objects.equals(address, otherLoan.address) && Objects.equals(bike, otherLoan.bike) && Objects.equals(rate, otherLoan.rate) - && Objects.equals(time, otherLoan.time) + && Objects.equals(startTime, otherLoan.startTime) + && Objects.equals(endTime, otherLoan.endTime) && tagged.equals(otherLoan.tagged); } } diff --git a/src/main/java/seedu/address/ui/LoanCard.java b/src/main/java/seedu/address/ui/LoanCard.java index 574ab0f4a467..c2a185c49d92 100644 --- a/src/main/java/seedu/address/ui/LoanCard.java +++ b/src/main/java/seedu/address/ui/LoanCard.java @@ -43,7 +43,9 @@ public class LoanCard extends UiPart { @FXML private Label rate; @FXML - private Label time; + private Label startTime; + @FXML + private Label endTime; @FXML private FlowPane tags; @@ -57,7 +59,9 @@ public LoanCard(Loan loan, int displayedIndex) { email.setText(loan.getEmail().getCensored()); bike.setText(loan.getBike().getName().value); rate.setText(loan.getLoanRate().toString()); - time.setText(loan.getLoanTime().toString()); + startTime.setText(loan.getLoanStartTime().toString()); + // TODO Set the endtime to display correctly here + endTime.setText("PLACEHOLDER"); initTags(loan); } diff --git a/src/main/resources/view/LoanListCard.fxml b/src/main/resources/view/LoanListCard.fxml index 20279ceccf2c..635b7c390bcb 100644 --- a/src/main/resources/view/LoanListCard.fxml +++ b/src/main/resources/view/LoanListCard.fxml @@ -71,10 +71,16 @@ - - + + + + + diff --git a/src/test/data/XmlSerializableLoanBookTest/duplicateLoanLoanBook.xml b/src/test/data/XmlSerializableLoanBookTest/duplicateLoanLoanBook.xml index 9bd60049ed7d..afbcdabe821f 100644 --- a/src/test/data/XmlSerializableLoanBookTest/duplicateLoanLoanBook.xml +++ b/src/test/data/XmlSerializableLoanBookTest/duplicateLoanLoanBook.xml @@ -10,7 +10,8 @@ ONGOING BIKE001 19.0 - + 2018-05-20 12:00 + 2018-05-20 22:00 friends @@ -24,7 +25,8 @@ ONGOING BIKE001 20.0 - + 12:00 + 22:00 diff --git a/src/test/data/XmlSerializableLoanBookTest/typicalLoanBook.xml b/src/test/data/XmlSerializableLoanBookTest/typicalLoanBook.xml index 8f45e347d434..cb14c79376ec 100644 --- a/src/test/data/XmlSerializableLoanBookTest/typicalLoanBook.xml +++ b/src/test/data/XmlSerializableLoanBookTest/typicalLoanBook.xml @@ -22,7 +22,8 @@ ONGOING Bike001 1.1 - + 12:33 + 14:13 friends @@ -34,7 +35,8 @@ ONGOING Bike002 0.15 - + 2017-10-12 12:08 + 2017-10-12 06:08 owesMoney friends @@ -47,7 +49,8 @@ ONGOING Bike003 23.9 - + 14:20 + 18:22 Daniel Meier @@ -58,7 +61,8 @@
10th street
Bike004 9.0 - + 17:56 + 18:22 friends
@@ -70,7 +74,8 @@
michegan ave
Bike005 5.55 - + 2010-12-30 10:30 + 2011-12-30 12:30
Fiona Kunz @@ -81,7 +86,8 @@
little tokyo
Bike006 33.3 - + 01:01 + 21:01
George Best @@ -92,6 +98,7 @@
4th street
Bike007 5.05 - + 2013-03-13 12:08 + 2013-05-14 12:18
diff --git a/src/test/data/XmlUtilTest/invalidLoanField.xml b/src/test/data/XmlUtilTest/invalidLoanField.xml index 8cba226bf58d..e7178e76d5d2 100644 --- a/src/test/data/XmlUtilTest/invalidLoanField.xml +++ b/src/test/data/XmlUtilTest/invalidLoanField.xml @@ -8,6 +8,7 @@
4th street
BIKE001 30.6 - + 2018-01-01 10:10 + 2018-01-01 17:10 friends
diff --git a/src/test/data/XmlUtilTest/missingLoanField.xml b/src/test/data/XmlUtilTest/missingLoanField.xml index c5703dad3e79..93ecb1cd0daa 100644 --- a/src/test/data/XmlUtilTest/missingLoanField.xml +++ b/src/test/data/XmlUtilTest/missingLoanField.xml @@ -7,6 +7,7 @@
4th street
BIKE001 30.6 - + 2018-01-01 10:10 + 2018-01-01 17:10 friends diff --git a/src/test/data/XmlUtilTest/validLoan.xml b/src/test/data/XmlUtilTest/validLoan.xml index 905cf3850459..e6626d940bfc 100644 --- a/src/test/data/XmlUtilTest/validLoan.xml +++ b/src/test/data/XmlUtilTest/validLoan.xml @@ -7,7 +7,8 @@
4th street
BIKE001 30.6 - + 2018-01-01 10:10 + 2018-01-01 17:10 friends ONGOING diff --git a/src/test/data/XmlUtilTest/validLoanBook.xml b/src/test/data/XmlUtilTest/validLoanBook.xml index d939e0f43464..bb212e3cfdff 100644 --- a/src/test/data/XmlUtilTest/validLoanBook.xml +++ b/src/test/data/XmlUtilTest/validLoanBook.xml @@ -9,7 +9,8 @@ ONGOING BIKE001 30.6 - + 2018-01-01 10:10 + 2018-01-01 17:10 Ruth Mueller @@ -20,7 +21,8 @@ ONGOING Bike01 12 - + 2018-01-01 10:10 + 2018-01-01 17:10 Heinz Kurz @@ -31,7 +33,8 @@ ONGOING Bike01 12.0 - + 2018-01-01 10:10 + 2018-01-01 17:10 Cornelia Meier @@ -42,7 +45,8 @@ ONGOING Bike01 12.0 - + 2018-01-01 10:10 + 2018-01-01 17:10 Werner Meyer @@ -53,7 +57,8 @@ ONGOING Bike01 12.0 - + 2018-01-01 10:10 + 2018-01-01 17:10 Lydia Kunz @@ -64,7 +69,8 @@ ONGOING Bike01 12.0 - + 2018-01-01 10:10 + 2018-01-01 17:10 Anna Best @@ -75,7 +81,8 @@ ONGOING Bike01 12.0 - + 2018-01-01 10:10 + 2018-01-01 17:10 Stefan Meier @@ -86,7 +93,8 @@ ONGOING Bike01 12.0 - + 2018-01-01 10:10 + 2018-01-01 17:10 Martin Mueller @@ -97,6 +105,7 @@ ONGOING Bike01 12.0 - + 2018-01-01 10:10 + 2018-01-01 17:10 diff --git a/src/test/java/guitests/guihandles/LoanCardHandle.java b/src/test/java/guitests/guihandles/LoanCardHandle.java index a2807f11d3fa..73fd340d31fc 100644 --- a/src/test/java/guitests/guihandles/LoanCardHandle.java +++ b/src/test/java/guitests/guihandles/LoanCardHandle.java @@ -21,7 +21,8 @@ public class LoanCardHandle extends NodeHandle { private static final String EMAIL_FIELD_ID = "#email"; private static final String BIKE_FIELD_ID = "#bike"; private static final String LOANRATE_FIELD_ID = "#rate"; - private static final String LOANTIME_FIELD_ID = "#time"; + private static final String LOANSTARTTIME_FIELD_ID = "#startTime"; + private static final String LOANENDTIME_FIELD_ID = "#endTime"; private static final String TAGS_FIELD_ID = "#tags"; private final Label idLabel; @@ -31,7 +32,8 @@ public class LoanCardHandle extends NodeHandle { private final Label emailLabel; private final Label bikeLabel; private final Label rateLabel; - private final Label timeLabel; + private final Label startTimeLabel; + private final Label endTimeLabel; private final List