From d95a9ec9e1d673f34640eee5eb0866c2afa780ef Mon Sep 17 00:00:00 2001 From: Jeff Lamb Date: Fri, 3 Mar 2017 22:12:18 -0500 Subject: [PATCH] Add web service function to get the schedule. --- .../com/moparisthebest/rcrdit/RcrdIt.java | 37 +++++- .../requestbeans/GetScheduleRequest.java | 112 ++++++++++++++++++ .../moparisthebest/rcrdit/xmltv/Channel.java | 13 ++ 3 files changed, 158 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/moparisthebest/rcrdit/requestbeans/GetScheduleRequest.java diff --git a/src/main/java/com/moparisthebest/rcrdit/RcrdIt.java b/src/main/java/com/moparisthebest/rcrdit/RcrdIt.java index 163a314..100fc0b 100644 --- a/src/main/java/com/moparisthebest/rcrdit/RcrdIt.java +++ b/src/main/java/com/moparisthebest/rcrdit/RcrdIt.java @@ -27,6 +27,7 @@ import com.moparisthebest.rcrdit.autorec.ProgramAutoRec; import com.moparisthebest.rcrdit.tuner.HDHomerun; import com.moparisthebest.rcrdit.tuner.Tuner; import com.moparisthebest.rcrdit.tuner.Tuners; +import com.moparisthebest.rcrdit.xmltv.Channel; import com.moparisthebest.rcrdit.xmltv.Program; import com.moparisthebest.rcrdit.xmltv.Tv; import net.fortuna.ical4j.data.CalendarOutputter; @@ -49,8 +50,10 @@ import org.slf4j.LoggerFactory; import javax.ws.rs.ApplicationPath; import javax.ws.rs.GET; +import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; +import javax.ws.rs.Consumes; import javax.ws.rs.core.MediaType; import java.io.File; import java.io.FileOutputStream; @@ -64,10 +67,13 @@ import java.sql.DriverManager; import java.sql.SQLException; import java.time.Duration; import java.time.Instant; +import java.time.LocalDateTime; import java.time.ZoneId; +import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.util.*; import java.util.stream.Collectors; +import com.moparisthebest.rcrdit.requestbeans.GetScheduleRequest; /** * Created by mopar on 2/16/17. @@ -135,7 +141,7 @@ public class RcrdIt extends ResourceConfig implements AutoCloseable { System.out.print("\"" + name + "\", "); */ } - + private static void addMeeting(final Calendar calendar, final VTimeZone tz, final Instant start, final Instant stop, final ProgramAutoRec prog, final MessageDigest md, final boolean skipped) { @@ -426,12 +432,34 @@ public class RcrdIt extends ResourceConfig implements AutoCloseable { return "pong"; } - @GET + @POST @Path("getSchedule") @Produces(MediaType.APPLICATION_JSON) - public Tv getSchedule() { - return schedule; + @Consumes(MediaType.APPLICATION_JSON) + //List + public List getSchedule(GetScheduleRequest scheduleRequest) { + List channelList = new ArrayList<>(); + try{ + int firstItemToLoad = ((scheduleRequest.getPageNum()-1) * scheduleRequest.getChannelsPerPage()); + if(schedule.getChannels().size() > firstItemToLoad){ + for(int i=firstItemToLoad; i programs = new ArrayList<>(); private final List finalPrograms = Collections.unmodifiableList(programs); + + public Channel(Channel fromChannel, Instant startTime, Instant stopTime){ + this.displayName = fromChannel.displayName; + this.displayNames = fromChannel.displayNames; + this.id = fromChannel.id; + List programsForNewChannel = new ArrayList<>(); + fromChannel.getPrograms().stream().filter((program) -> ((program.getStop().isAfter(startTime) && program.getStop().isBefore(stopTime)) || (program.getStart().isBefore(stopTime) && program.getStart().isAfter(startTime) ) || program.getStart().equals(startTime) || program.getStop().equals(stopTime) )).forEach((program) -> { + programsForNewChannel.add(program); + }); + this.programs.addAll(programsForNewChannel); + } + public Channel(final String id, final Set displayNames) { this.id = id; this.displayNames = Collections.unmodifiableSet(displayNames);