Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ public static Comment entityToComment(Entity entity) {
String name = (String) entity.getProperty(ENTITY_NAME_PARAM);
String text = (String) entity.getProperty(ENTITY_TEXT_PARAM);
long timePosted = (long) entity.getProperty(ENTITY_TIME_PARAM);

return Comment.builder()
.setName(name)
.setText(text)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,67 @@
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;

public final class FindMeetingQuery {
public Collection<TimeRange> query(Collection<Event> 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<Event> eventsArray = new ArrayList<>(events);

// comparator to sort events by starting time
Comparator<Event> compareByEventStart = new Comparator<Event>() {
@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<TimeRange> 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<String> requestedEventAttendees = request.getAttendees();
Set<String> 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;

}
}