From 75901a9ca0bc79353d122393d13fc9064ed739e6 Mon Sep 17 00:00:00 2001 From: Cindy Li Date: Mon, 15 Jun 2020 21:46:13 +0000 Subject: [PATCH 1/4] trim greet, wrote query function --- .../src/main/java/com/google/sps/Greeter.java | 2 +- .../test/java/com/google/sps/GreeterTest.java | 10 +++ .../java/com/google/sps/FindMeetingQuery.java | 61 ++++++++++++++++++- 3 files changed, 71 insertions(+), 2 deletions(-) diff --git a/walkthroughs/week-5-tdd/intro/src/main/java/com/google/sps/Greeter.java b/walkthroughs/week-5-tdd/intro/src/main/java/com/google/sps/Greeter.java index 0f7371a..0ccd35e 100644 --- a/walkthroughs/week-5-tdd/intro/src/main/java/com/google/sps/Greeter.java +++ b/walkthroughs/week-5-tdd/intro/src/main/java/com/google/sps/Greeter.java @@ -22,6 +22,6 @@ public class Greeter { * Returns a greeting for the given name. */ public String greet(String name) { - return "Hello " + name; + return "Hello " + name.trim(); } } diff --git a/walkthroughs/week-5-tdd/intro/src/test/java/com/google/sps/GreeterTest.java b/walkthroughs/week-5-tdd/intro/src/test/java/com/google/sps/GreeterTest.java index f0fe7bc..2519f1c 100644 --- a/walkthroughs/week-5-tdd/intro/src/test/java/com/google/sps/GreeterTest.java +++ b/walkthroughs/week-5-tdd/intro/src/test/java/com/google/sps/GreeterTest.java @@ -30,4 +30,14 @@ public void testGreeting() { Assert.assertEquals("Hello Ada", greeting); } + + @Test + public void testGreetingTrimsWhitespace() { + Greeter greeter = new Greeter(); + + String greeting = greeter.greet(" Ada "); + + // Whitespace should be trimmed + Assert.assertEquals("Hello Ada", greeting); + } } diff --git a/walkthroughs/week-5-tdd/project/src/main/java/com/google/sps/FindMeetingQuery.java b/walkthroughs/week-5-tdd/project/src/main/java/com/google/sps/FindMeetingQuery.java index dadf069..4efaf63 100644 --- a/walkthroughs/week-5-tdd/project/src/main/java/com/google/sps/FindMeetingQuery.java +++ b/walkthroughs/week-5-tdd/project/src/main/java/com/google/sps/FindMeetingQuery.java @@ -15,9 +15,68 @@ package com.google.sps; import java.util.Collection; +import java.util.Collections; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.Comparator; +import java.util.stream.Collectors; public final class FindMeetingQuery { public Collection query(Collection events, MeetingRequest request) { - throw new UnsupportedOperationException("TODO: Implement this method."); + //throw new UnsupportedOperationException("TODO: Implement this method."); + + // convert collection of events to list of events for sorting + List eventsArray = new ArrayList<>(events); + + // comparator to sort events by starting time + Comparator compareByEventStart = new Comparator() { + @Override + public int compare(Event a, Event b) { + return Long.compare(a.getWhen().start(), b.getWhen().start()); + } + }; + + Collections.sort(eventsArray, compareByEventStart); + + // collection of available meeting times + Collection openTimes = new ArrayList<>(); + + // initial available time: the entire day + int start = TimeRange.START_OF_DAY; + int end = TimeRange.END_OF_DAY; + + for (Event event: eventsArray) { + TimeRange tryTime = TimeRange.fromStartEnd(start, end, true); + + if (tryTime.overlaps(event.getWhen())) { + // get lists of event attendees + Collection requestedEventAttendees = request.getAttendees(); + Set scheduledEventAttendees = event.getAttendees(); + + for (String attendee: requestedEventAttendees) { + // check for overlapping attendees + if (scheduledEventAttendees.contains(attendee)) { + int newEnd = event.getWhen().start(); + + // see if meeting can be scheduled between start and conflicting event + if (newEnd - start >= request.getDuration()) { + openTimes.add(TimeRange.fromStartEnd(start, newEnd, false)); + } + + start = event.getWhen().end(); + break; + } + } + } + } + + // see if meeting can be scheduled from start to end of day + if (end - start >= request.getDuration()) { + openTimes.add(TimeRange.fromStartEnd(start, end, true)); + } + + return openTimes; + } } From 17a52be2fa1d9019e03c45e865c16ad434e72f9b Mon Sep 17 00:00:00 2001 From: Cindy Li Date: Mon, 15 Jun 2020 21:49:33 +0000 Subject: [PATCH 2/4] fix formatting --- .../com/google/sps/storage/DatastoreCommentStorage.java | 6 +----- portfolio/src/main/webapp/script.js | 9 ++++----- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/portfolio/src/main/java/com/google/sps/storage/DatastoreCommentStorage.java b/portfolio/src/main/java/com/google/sps/storage/DatastoreCommentStorage.java index 8b73e27..412c99a 100644 --- a/portfolio/src/main/java/com/google/sps/storage/DatastoreCommentStorage.java +++ b/portfolio/src/main/java/com/google/sps/storage/DatastoreCommentStorage.java @@ -76,10 +76,6 @@ public static Comment entityToComment(Entity entity) { String text = (String) entity.getProperty(ENTITY_TEXT_PARAM); long timePosted = (long) entity.getProperty(ENTITY_TIME_PARAM); - return Comment.builder - .setName(name) - .setText(text) - .setTimePosted(timePosted) - .build(); + return Comment.builder.setName(name).setText(text).setTimePosted(timePosted).build(); } } diff --git a/portfolio/src/main/webapp/script.js b/portfolio/src/main/webapp/script.js index 5c6f199..bd1fe3c 100644 --- a/portfolio/src/main/webapp/script.js +++ b/portfolio/src/main/webapp/script.js @@ -99,7 +99,7 @@ async function setComments() { const errString = 'Invalid input for num-comments: please enter an integer between ' + minComments + ' and ' + maxComments; - + const errMssg = createErrorMssg(errString); commentContainer.appendChild(errMssg); return; @@ -174,9 +174,8 @@ function shouldHideElement(container, hide) { function initMap() { console.log('here'); - const map = new google.maps.Map(document.getElementById('map'), { - center: { lat: 35.668, lng: 139.723 }, - zoom: 12 - }); + const map = new google.maps.Map( + document.getElementById('map'), + {center: {lat: 35.668, lng: 139.723}, zoom: 12}); console.log('done'); } From a47ccc4496dcbd1c9b33bde810f478d897151855 Mon Sep 17 00:00:00 2001 From: Cindy Li Date: Mon, 15 Jun 2020 21:50:08 +0000 Subject: [PATCH 3/4] remove console.log statments --- portfolio/src/main/webapp/script.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/portfolio/src/main/webapp/script.js b/portfolio/src/main/webapp/script.js index bd1fe3c..2f6b07a 100644 --- a/portfolio/src/main/webapp/script.js +++ b/portfolio/src/main/webapp/script.js @@ -173,9 +173,7 @@ function shouldHideElement(container, hide) { } function initMap() { - console.log('here'); const map = new google.maps.Map( document.getElementById('map'), {center: {lat: 35.668, lng: 139.723}, zoom: 12}); - console.log('done'); } From ee87f998410092a0dd24ce2fb4ed2ccc4ab5f49b Mon Sep 17 00:00:00 2001 From: Cindy Li Date: Thu, 18 Jun 2020 12:42:30 +0000 Subject: [PATCH 4/4] remove unnecessary imports --- .../project/src/main/java/com/google/sps/FindMeetingQuery.java | 1 - 1 file changed, 1 deletion(-) diff --git a/walkthroughs/week-5-tdd/project/src/main/java/com/google/sps/FindMeetingQuery.java b/walkthroughs/week-5-tdd/project/src/main/java/com/google/sps/FindMeetingQuery.java index 4efaf63..405bba8 100644 --- a/walkthroughs/week-5-tdd/project/src/main/java/com/google/sps/FindMeetingQuery.java +++ b/walkthroughs/week-5-tdd/project/src/main/java/com/google/sps/FindMeetingQuery.java @@ -20,7 +20,6 @@ import java.util.List; import java.util.Set; import java.util.Comparator; -import java.util.stream.Collectors; public final class FindMeetingQuery { public Collection query(Collection events, MeetingRequest request) {