gov.nasa.jpl.xdata.nba.impoexpo.parse.ParseUtil.java Source code

Java tutorial

Introduction

Here is the source code for gov.nasa.jpl.xdata.nba.impoexpo.parse.ParseUtil.java

Source

/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package gov.nasa.jpl.xdata.nba.impoexpo.parse;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.tika.Tika;
import org.apache.tika.exception.TikaException;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

import gov.nasa.jpl.xdata.nba.impoexpo.structs.AvailableVideo;
import gov.nasa.jpl.xdata.nba.impoexpo.structs.GameInfo;
import gov.nasa.jpl.xdata.nba.impoexpo.structs.GameStats;
import gov.nasa.jpl.xdata.nba.impoexpo.structs.GameSummary;
import gov.nasa.jpl.xdata.nba.impoexpo.structs.InactivePlayers;
import gov.nasa.jpl.xdata.nba.impoexpo.structs.LastMeeting;
import gov.nasa.jpl.xdata.nba.impoexpo.structs.LineScore;
import gov.nasa.jpl.xdata.nba.impoexpo.structs.Notebook;
import gov.nasa.jpl.xdata.nba.impoexpo.structs.Officials;
import gov.nasa.jpl.xdata.nba.impoexpo.structs.OtherStats;
import gov.nasa.jpl.xdata.nba.impoexpo.structs.PlayerStats;
import gov.nasa.jpl.xdata.nba.impoexpo.structs.Preview;
import gov.nasa.jpl.xdata.nba.impoexpo.structs.Recap;
import gov.nasa.jpl.xdata.nba.impoexpo.structs.SeasonSeries;
import gov.nasa.jpl.xdata.nba.impoexpo.structs.TeamStats;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 *
 * ParseUtil, amongst other things, contains static functions for
 * implementing dataset specific parse functions involved within
 * ETL.
 */
public class ParseUtil {

    private static Logger LOG = LoggerFactory.getLogger(ParseUtil.class);

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

    }

    /**
     * Simply reads in a String path to a Preview file, parses the File, populates
     * a Preview object and returns that object.
     * @param preview
     * @param string
     * @return
     */
    public static Preview parsePreview(Preview preview, String string) {
        preview.setPreviewText(parseTextFile(string));
        return preview;

    }

    /**
     * Simply reads in a String path to a Recap file, parses the File, populates
     * a Recap object and returns that object.
     * @param recap
     * @param string
     * @return
     */
    public static Recap parseRecap(Recap recap, String string) {
        recap.setRecapText(parseTextFile(string));
        return recap;
    }

    /**
     * Simply reads in a String path to a Notebook file, parses the File, populates
     * a Notebook object and returns that object.
     * TODO the {@link }
     * @param string
     * @return
     * @throws IOException
     */
    public static Notebook parseNotebook(Notebook notebook, String string) throws IOException {
        LOG.info("Parsing Notebook: {}", string);
        BufferedReader reader = new BufferedReader(new FileReader(string));
        try {
            String line = reader.readLine();
            do {
                if (line.contains("Notebook:")) {
                    notebook.setTeamNotebook(line);
                } else if (line.contains("Posted")) {
                    notebook.setPostedDate(line);
                } else if (line.contains("THE FACT:")) {
                    notebook.setTheFacts(line);
                } else if (line.contains("THE LEAD:")) {
                    notebook.setTheLead(line);
                } else if (line.contains("QUOTABLE:") || line.contains("QUOTABLE II:")
                        || line.contains("QUOTABLE III:")) {
                    notebook.getTheQuotes().add(line);
                } else if (line.contains("THE STAT")) {
                    notebook.setTheStat(line);
                } else if (line.contains("TURNING POINT:")) {
                    notebook.setTheTurningPoint(line);
                } else if (line.contains("HOT:")) {
                    notebook.setHot(line);
                } else if (line.contains("NOT:")) {
                    notebook.setNot(line);
                } else if (line.contains("GOOD MOVE:")) {
                    notebook.setGoodMove(line);
                } else if (line.contains("BAD MOVE:")) {
                    notebook.setBadMove(line);
                } else if (line.contains("NEXT:")) {
                    notebook.setUpNext(line);
                }

                line = reader.readLine();
            } while (line != null);

        } finally {
            reader.close();
        }
        return notebook;
    }

    public static GameStats parseGameStats(GameStats.Builder gameStats, String string)
            throws IOException, ParseException {
        LOG.info("Parsing GameStats: {}", string);
        FileReader reader = new FileReader(string);

        // Pare with JSON simple parser
        JSONParser jsonParser = new JSONParser();
        JSONObject jsonObject = (JSONObject) jsonParser.parse(reader);

        GameSummary summary = parseGameSummary(jsonObject);
        List<LineScore> score = parseLineScore(jsonObject);
        SeasonSeries series = parseSeasonSeries(jsonObject);
        LastMeeting meeting = parseLastMeeting(jsonObject);
        List<PlayerStats> playerStats = parsePlayerStats(jsonObject);
        List<TeamStats> teamStats = parseTeamStats(jsonObject);
        List<OtherStats> otherStats = parseOtherStats(jsonObject);
        List<Officials> officials = parseOfficials(jsonObject);
        GameInfo info = parseInfo(jsonObject);
        List<InactivePlayers> inactivePlayers = parseInactivePlayers(jsonObject);
        AvailableVideo video = parseAvailableVideo(jsonObject);

        gameStats.setGameSummary(summary).setLineScore(score).setSeasonSeries(series).setLastMeeting(meeting)
                .setPlayerStats(playerStats).setTeamStats(teamStats).setOtherStats(otherStats)
                .setOfficials(officials).setGameInfo(info).setInactivePlayers(inactivePlayers)
                .setAvailableVideo(video).build();

        return gameStats.build();

    }

    public static GameSummary parseGameSummary(JSONObject jsonObject) {
        JSONArray resultSets = (JSONArray) jsonObject.get("resultSets");
        JSONObject infoObject = (JSONObject) resultSets.get(0);
        JSONArray rowSet = (JSONArray) infoObject.get("rowSet");
        JSONArray row = (JSONArray) rowSet.get(0);
        String gameSummaryDateEst = (String) row.get(0);
        long gameSummarySequence = (Long) row.get(1);
        long gameSummaryId = Long.parseLong(row.get(2).toString().trim());
        long gameStatusId = (Long) row.get(3);
        String gameStatusText = (String) row.get(4);
        String gameCode = (String) row.get(5);
        long homeTeamId = Long.parseLong(row.get(6).toString().trim());
        long visitorTeamId = (Long) row.get(7);
        long season = Long.parseLong(row.get(8).toString().trim());
        long livePeriod = (Long) row.get(9);
        String livePcTimeString = row.get(10).toString();
        long livePcTime = livePcTimeString.isEmpty() ? 0 : Long.parseLong(livePcTimeString);
        String broadcasterAbbrev = (String) row.get(11);
        String livePeriodTimeBcast = (String) row.get(12);
        long whStatus = (Long) row.get(13);

        return GameSummary.newBuilder().setGameSummaryDateEst(gameSummaryDateEst)
                .setGameSummarySequence(gameSummarySequence).setGameGameSummaryId(gameSummaryId)
                .setGameStatusId(gameStatusId).setGameStatusText(gameStatusText).setGameCode(gameCode)
                .setGameSummaryHomeTeamId(homeTeamId).setGameSummaryVisitorTeamId(visitorTeamId).setSeason(season)
                .setLivePeriod(livePeriod).setLivePcTime(livePcTime)
                .setNatlTvBroadcasterAbbreviation(broadcasterAbbrev).setLivePeriodTimeBcast(livePeriodTimeBcast)
                .setWhStatus(whStatus).build();
    }

    public static List<LineScore> parseLineScore(JSONObject jsonObject) {
        JSONArray resultSets = (JSONArray) jsonObject.get("resultSets");
        JSONObject infoObject = (JSONObject) resultSets.get(1);
        JSONArray rowSet = (JSONArray) infoObject.get("rowSet");
        List<LineScore> result = new ArrayList<LineScore>();
        for (int i = 0; i < 2; i++) {
            JSONArray row = (JSONArray) rowSet.get(i);
            result.add(LineScore.newBuilder().setGameLineScoreDateEst((String) row.get(0))
                    .setGameLineScoreSequence((Long) row.get(1))
                    .setGameLineScoreId(Long.parseLong((String) row.get(2))).setLineScoreTeamId((Long) row.get(3))
                    .setLineScoreTeamAbbreviation((String) row.get(4)).setTeamCityName((String) row.get(5))
                    .setTeamWinsLosses((String) row.get(6)).setPtsQtr1((Long) row.get(7))
                    .setPtsQtr2((Long) row.get(8)).setPtsQtr3((Long) row.get(9)).setPtsQtr4((Long) row.get(10))
                    .setPtsOt1((Long) row.get(11)).setPtsOt2((Long) row.get(12)).setPtsOt3((Long) row.get(13))
                    .setPtsOt4((Long) row.get(14)).setPtsOt5((Long) row.get(15)).setPtsOt6((Long) row.get(16))
                    .setPtsOt7((Long) row.get(17)).setPtsOt8((Long) row.get(18)).setPtsOt9((Long) row.get(19))
                    .setPtsOt10((Long) row.get(20)).setLineScorePts((Long) row.get(21)).build());
        }
        return result;
    }

    public static SeasonSeries parseSeasonSeries(JSONObject jsonObject) {
        JSONArray resultSets = (JSONArray) jsonObject.get("resultSets");
        JSONObject infoObject = (JSONObject) resultSets.get(2);
        JSONArray rowSet = (JSONArray) infoObject.get("rowSet");
        JSONArray row = (JSONArray) rowSet.get(0);
        long seriesId = Long.parseLong(row.get(0).toString().trim());
        long homeTeamId = (Long) row.get(1);
        long visitorTeamId = (Long) row.get(2);
        String seriesDateEst = (String) row.get(3);
        long homeTeamWins = (Long) row.get(4);
        long homeTeamLosses = (Long) row.get(5);
        String seriesLeader = (String) row.get(6);
        return SeasonSeries.newBuilder().setGameSeasonSeriesId(seriesId).setSeasonSeriesHomeTeamId(homeTeamId)
                .setSeasonSeriesVisitorTeamId(visitorTeamId).setGameSeasonSeriesDateEst(seriesDateEst)
                .setHomeTeamWins(homeTeamWins).setHomeTeamLosses(homeTeamLosses).setSeriesLeader(seriesLeader)
                .build();
    }

    public static LastMeeting parseLastMeeting(JSONObject jsonObject) {
        JSONArray resultSets = (JSONArray) jsonObject.get("resultSets");
        JSONObject infoObject = (JSONObject) resultSets.get(3);
        JSONArray rowSet = (JSONArray) infoObject.get("rowSet");
        JSONArray row = (JSONArray) rowSet.get(0);
        long gameLastMeetingId = Long.parseLong(row.get(0).toString().trim());
        long lastGameId = Long.parseLong(row.get(1).toString().trim());
        String lastGameDate = (String) row.get(2);
        long lastGameHomeTeamId = (Long) row.get(3);
        String lastGameHomeTeamCity = (String) row.get(4);
        String lastGameHomeTeamName = (String) row.get(5);
        String lastGameHomeTeamAbbreviation = (String) row.get(6);
        long lastGameHomeTeamPoints = (Long) row.get(7);
        long lastGameVisitorId = (Long) row.get(8);
        String lastGameVisitorCity = (String) row.get(9);
        String lastGameVisitorName = (String) row.get(10);
        String lastGameVisitorCity1 = (String) row.get(11);
        long lastGameVisitorPoints = (Long) row.get(12);
        return LastMeeting.newBuilder().setGameLastMeetingId(gameLastMeetingId).setLastGameId(lastGameId)
                .setLastGameDateEst(lastGameDate).setLastGameHomeTeamId(lastGameHomeTeamId)
                .setLastGameHomeTeamCity(lastGameHomeTeamCity).setLastGameHomeTeamName(lastGameHomeTeamName)
                .setLastGameHomeTeamAbbreviation(lastGameHomeTeamAbbreviation)
                .setLastGameHomeTeamPoints(lastGameHomeTeamPoints).setLastGameHomeTeamId(lastGameHomeTeamId)
                .setLastGameVisitorTeamId(lastGameVisitorId).setLastGameVisitorTeamCity(lastGameVisitorCity)
                .setLastGameVisitorTeamName(lastGameVisitorName).setLastGameVisitorTeamCity1(lastGameVisitorCity1)
                .setLastGameVisitorTeamPoints(lastGameVisitorPoints).build();
    }

    public static List<PlayerStats> parsePlayerStats(JSONObject jsonObject) {
        JSONArray resultSets = (JSONArray) jsonObject.get("resultSets");
        JSONObject infoObject = (JSONObject) resultSets.get(4);
        JSONArray rowSet = (JSONArray) infoObject.get("rowSet");
        List<PlayerStats> result = new ArrayList<PlayerStats>();
        for (Object rowObject : rowSet) {
            JSONArray row = (JSONArray) rowObject;
            result.add(PlayerStats.newBuilder()
                    .setGamePlayerStatsId(row.get(0) == null ? -1 : Long.parseLong((String) row.get(0)))
                    .setPlayerStatsTeamId(row.get(1) == null ? -1 : (Long) row.get(1))
                    .setPlayerStatsTeamAbbreviation(row.get(2) == null ? "" : (String) row.get(2))
                    .setPlayerStatsTeamCity(row.get(3) == null ? "" : (String) row.get(3))
                    .setPlayerStatsPlayerId(row.get(4) == null ? -1 : (Long) row.get(4))
                    .setPlayerName(row.get(5) == null ? "" : (String) row.get(5))
                    .setStartPosition(row.get(6) == null ? "" : (String) row.get(6))
                    .setComment(row.get(7) == null ? "" : (String) row.get(7))
                    .setPlayerStatsMin(row.get(8) == null ? "" : (String) row.get(8))
                    .setPlayerStatsFgm(row.get(9) == null ? -1 : (Long) row.get(9))
                    .setPlayerStatsFga(row.get(10) == null ? -1 : (Long) row.get(10))
                    .setPlayerStatsfgPct(row.get(11) == null ? -1
                            : Math.round((Double.parseDouble(row.get(11).toString().trim())) * 100))
                    .setPlayerStatsfg3m(row.get(12) == null ? -1 : (Long) row.get(12))
                    .setPlayerStatsfg3a(row.get(13) == null ? -1 : (Long) row.get(13))
                    .setPlayerStatsfg3Pct(row.get(14) == null ? -1
                            : Math.round((Double.parseDouble(row.get(14).toString().trim())) * 100))
                    .setPlayerStatsftm(row.get(15) == null ? -1 : (Long) row.get(15))
                    .setPlayerStatsfta(row.get(16) == null ? -1 : (Long) row.get(16))
                    .setPlayerStatsftPct(row.get(17) == null ? -1
                            : Math.round((Double.parseDouble(row.get(17).toString().trim())) * 100))
                    .setPlayerStatsoreb(row.get(18) == null ? -1 : (Long) row.get(18))
                    .setPlayerStatsdreb(row.get(19) == null ? -1 : (Long) row.get(19))
                    .setPlayerStatsreb(row.get(20) == null ? -1 : (Long) row.get(20))
                    .setPlayerStatsast(row.get(21) == null ? -1 : (Long) row.get(21))
                    .setPlayerStatsstl(row.get(22) == null ? -1 : (Long) row.get(22))
                    .setPlayerStatsblk(row.get(23) == null ? -1 : (Long) row.get(23))
                    .setPlayerStatsto(row.get(24) == null ? -1 : (Long) row.get(24))
                    .setPlayerStatspf(row.get(25) == null ? -1 : (Long) row.get(25))
                    .setPlayerStatsPts(row.get(26) == null ? -1 : (Long) row.get(26))
                    .setPlayerStatsPlusMinus(row.get(27) == null ? -1 : (Long) row.get(27)).build());
        }
        return result;
    }

    public static List<TeamStats> parseTeamStats(JSONObject jsonObject) {
        JSONArray resultSets = (JSONArray) jsonObject.get("resultSets");
        JSONObject infoObject = (JSONObject) resultSets.get(5);
        JSONArray rowSet = (JSONArray) infoObject.get("rowSet");
        List<TeamStats> result = new ArrayList<TeamStats>();
        for (Object rowObject : rowSet) {
            JSONArray row = (JSONArray) rowObject;
            result.add(TeamStats.newBuilder()
                    .setGameTeamStatsId(row.get(0) == null ? -1 : Long.parseLong((String) row.get(0)))
                    .setTeamStatsTeamId(row.get(1) == null ? -1 : (Long) row.get(1))
                    .setTeamStatsTeamName(row.get(2) == null ? "" : (String) row.get(2))
                    .setTeamStatsTeamAbbreviation(row.get(3) == null ? "" : (String) row.get(3))
                    .setTeamStatsTeamCity(row.get(4) == null ? "" : (String) row.get(4))
                    .setTeamStatsMin(row.get(5) == null ? "" : (String) row.get(5))
                    .setTeamStatsFgm(row.get(6) == null ? -1 : (Long) row.get(6))
                    .setTeamStatsFga(row.get(7) == null ? -1 : (Long) row.get(7))
                    .setTeamStatsfgPct(row.get(8) == null ? -1
                            : Math.round((Double.parseDouble(row.get(8).toString().trim())) * 100))
                    .setTeamStatsfg3m(row.get(9) == null ? -1 : (Long) row.get(9))
                    .setTeamStatsfg3a(row.get(10) == null ? -1 : (Long) row.get(10))
                    .setTeamStatsfg3Pct(row.get(11) == null ? -1
                            : Math.round((Double.parseDouble(row.get(11).toString().trim())) * 100))
                    .setTeamStatsftm(row.get(12) == null ? -1 : (Long) row.get(12))
                    .setTeamStatsfta(row.get(13) == null ? -1 : (Long) row.get(13))
                    .setTeamStatsftPct(row.get(14) == null ? -1
                            : Math.round((Double.parseDouble(row.get(14).toString().trim())) * 100))
                    .setTeamStatsoreb(row.get(15) == null ? -1 : (Long) row.get(15))
                    .setTeamStatsdreb(row.get(16) == null ? -1 : (Long) row.get(16))
                    .setTeamStatsreb(row.get(17) == null ? -1 : (Long) row.get(17))
                    .setTeamStatsast(row.get(18) == null ? -1 : (Long) row.get(18))
                    .setTeamStatsstl(row.get(19) == null ? -1 : (Long) row.get(19))
                    .setTeamStatsblk(row.get(20) == null ? -1 : (Long) row.get(20))
                    .setTeamStatsto(row.get(21) == null ? -1 : (Long) row.get(21))
                    .setTeamStatspf(row.get(22) == null ? -1 : (Long) row.get(22))
                    .setTeamStatsPts(row.get(23) == null ? -1 : (Long) row.get(23))
                    .setTeamStatsPlusMinus(row.get(24) == null ? -1 : (Long) row.get(24)).build());
        }
        return result;
    }

    public static List<OtherStats> parseOtherStats(JSONObject jsonObject) {
        JSONArray resultSets = (JSONArray) jsonObject.get("resultSets");
        JSONObject infoObject = (JSONObject) resultSets.get(6);
        JSONArray rowSet = (JSONArray) infoObject.get("rowSet");
        List<OtherStats> result = new ArrayList<OtherStats>();
        for (Object rowObject : rowSet) {
            JSONArray row = (JSONArray) rowObject;
            result.add(OtherStats.newBuilder()
                    .setLeagueId(row.get(0) == null ? -1 : Long.parseLong(row.get(0).toString().trim()))
                    .setSeasonId(row.get(1) == null ? -1 : Long.parseLong(row.get(1).toString().trim()))
                    .setOtherStatsTeamId(row.get(2) == null ? -1 : (Long) row.get(2))
                    .setOtherStatsTeamAbbreviation(row.get(3) == null ? "" : (String) row.get(3))
                    .setOtherStatsTeamCity(row.get(4) == null ? "" : (String) row.get(4))
                    .setPtsPaint(row.get(5) == null ? -1 : (Long) row.get(5))
                    .setPts2ndChance(row.get(6) == null ? -1 : (Long) row.get(6))
                    .setPtsFb(row.get(7) == null ? -1 : (Long) row.get(7))
                    .setLargestLead(row.get(8) == null ? -1 : (Long) row.get(8))
                    .setLeadChanges(row.get(9) == null ? -1 : (Long) row.get(9))
                    .setTimesTied(row.get(10) == null ? -1 : (Long) row.get(10)).build());
        }
        return result;
    }

    public static List<Officials> parseOfficials(JSONObject jsonObject) {
        JSONArray resultSets = (JSONArray) jsonObject.get("resultSets");
        JSONObject infoObject = (JSONObject) resultSets.get(7);
        JSONArray rowSet = (JSONArray) infoObject.get("rowSet");
        List<Officials> result = new ArrayList<Officials>();
        for (Object rowObject : rowSet) {
            JSONArray row = (JSONArray) rowObject;
            result.add(Officials.newBuilder().setOfficialId(row.get(0) == null ? -1 : (Long) row.get(0))
                    .setOfficialFirstName(row.get(1) == null ? "" : (String) row.get(1))
                    .setOfficialLastName(row.get(2) == null ? "" : (String) row.get(2))
                    .setOfficialJerseyNum(row.get(3) == null ? -1 : Long.parseLong(row.get(3).toString().trim()))
                    .build());
        }
        return result;
    }

    public static GameInfo parseInfo(JSONObject jsonObject) {
        JSONArray resultSets = (JSONArray) jsonObject.get("resultSets");
        JSONObject infoObject = (JSONObject) resultSets.get(8);
        JSONArray rowSet = (JSONArray) infoObject.get("rowSet");
        JSONArray row = (JSONArray) rowSet.get(0);
        String gameDate = (String) row.get(0);
        long attendance = (Long) row.get(1);
        String gameTime = (String) row.get(2);
        return GameInfo.newBuilder().setGameDate(gameDate).setAttendance(attendance).setGameTime(gameTime).build();
    }

    public static List<InactivePlayers> parseInactivePlayers(JSONObject jsonObject) {
        JSONArray resultSets = (JSONArray) jsonObject.get("resultSets");
        JSONObject inactivePlayersObject = (JSONObject) resultSets.get(9);
        JSONArray rowSet = (JSONArray) inactivePlayersObject.get("rowSet");
        List<InactivePlayers> result = new ArrayList<InactivePlayers>();
        for (Object rowObject : rowSet) {
            JSONArray row = (JSONArray) rowObject;
            result.add(InactivePlayers.newBuilder()
                    .setInactivePlayersPlayerId(row.get(0) == null ? -1 : (Long) row.get(0))
                    .setInactivePlayersFirstName(row.get(1) == null ? "" : (String) row.get(1))
                    .setInactivePlayersLastName(row.get(2) == null ? "" : (String) row.get(2))
                    .setInactivePlayersJerseyNum(
                            row.get(3) == null ? -1 : Long.parseLong(row.get(3).toString().trim()))
                    .setInactivePlayersTeamId(row.get(4) == null ? -1 : (Long) row.get(4))
                    .setInactivePLayersTeamCity(row.get(5) == null ? "" : (String) row.get(5))
                    .setInactivePlayersTeamName(row.get(6) == null ? "" : (String) row.get(6))
                    .setInactivePlayersTeamAbbreviation(row.get(7) == null ? "" : (String) row.get(7)).build());
        }
        return result;
    }

    public static AvailableVideo parseAvailableVideo(JSONObject jsonObject) {
        JSONArray resultSets = (JSONArray) jsonObject.get("resultSets");
        JSONObject availableVideoObject = (JSONObject) resultSets.get(10);
        JSONArray rowSet = (JSONArray) availableVideoObject.get("rowSet");
        JSONArray row = (JSONArray) rowSet.get(0);
        return AvailableVideo.newBuilder().setVideoAvailableFlag((Long) row.get(0)).build();
    }

    private static String parseTextFile(String textString) {
        LOG.info("Parsing Text: {}", textString);
        InputStream is = null;
        try {
            is = new FileInputStream(textString);
        } catch (Exception e) {
            // TODO: handle exception
        }
        Tika tika = new Tika();
        String text = null;
        try {
            text = tika.parseToString(is);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (TikaException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                is.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return text;
    }

}