private Item getBasicEpisode(ProgData progData, boolean isEpisode) { Item item = isEpisode ? new Episode() : new Item(); item.setCanonicalUri(PaHelper.getEpisodeUri(identifierFor(progData))); item.setCurie("pa:e-" + identifierFor(progData)); item.setPublisher(Publisher.PA); setBasicDetails(progData, item); return item; }
private Item getBasicEpisodeWithoutBroadcast(ProgData progData, boolean isEpisode) { String episodeUri = PaHelper.getEpisodeUri(identifierFor(progData)); Maybe<Identified> possiblePrevious = contentResolver.findByCanonicalUris(ImmutableList.of(episodeUri)).getFirstValue(); Item item; if (possiblePrevious.hasValue()) { Item previous = (Item) possiblePrevious.requireValue(); if (!(previous instanceof Episode) && isEpisode) { String message = String.format( "%s resolved as %s being ingested as Episode", episodeUri, previous.getClass().getSimpleName()); adapterLog.record(warnEntry().withSource(getClass()).withDescription(message)); log.info(message); item = convertItemToEpisode(previous); } else if (previous instanceof Episode && !isEpisode) { String message = String.format( "%s resolved as %s being ingested as Item", episodeUri, previous.getClass().getSimpleName()); adapterLog.record(errorEntry().withSource(getClass()).withDescription(message)); log.info(message); item = new Item(); Item.copyTo(previous, item); } else { item = previous; } } else { item = getBasicEpisode(progData, isEpisode); } if (SCHEDULED_ONLY_EPISODE.equals(episodeUri)) { item.setScheduleOnly(true); } item.addAlias(PaHelper.getEpisodeAlias(identifierFor(progData))); try { if (item instanceof Episode) { Episode episode = (Episode) item; episode.setSpecial(getBooleanValue(progData.getAttr().getSpecial())); episode.setEpisodeNumber(episodeNumber(progData)); episode.setSeriesNumber(seriesNumber(progData)); } } catch (NumberFormatException e) { // sometimes we don't get valid numbers log.warn("Failed to parse a numeric field for PA episode {}", episodeUri, e); } return item; }
private ItemAndBroadcast getEpisode( ProgData progData, Channel channel, DateTimeZone zone, boolean isEpisode, Timestamp updatedAt) { String episodeUri = PaHelper.getEpisodeUri(identifierFor(progData)); Maybe<Identified> possiblePrevious = contentResolver.findByCanonicalUris(ImmutableList.of(episodeUri)).getFirstValue(); Item item; if (possiblePrevious.hasValue()) { item = (Item) possiblePrevious.requireValue(); if (!(item instanceof Episode) && isEpisode) { log.record( warnEntry() .withSource(getClass()) .withDescription( "%s resolved as %s being ingested as Episode", episodeUri, item.getClass().getSimpleName())); item = convertItemToEpisode(item); } else if (item instanceof Episode && !isEpisode) { log.record( errorEntry() .withSource(getClass()) .withDescription( "%s resolved as %s being ingested as Item", episodeUri, item.getClass().getSimpleName())); } } else { item = getBasicEpisode(progData, isEpisode); } item.addAlias(PaHelper.getEpisodeAlias(identifierFor(progData))); Broadcast broadcast = setCommonDetails(progData, channel, zone, item, updatedAt); try { if (item instanceof Episode) { Episode episode = (Episode) item; episode.setSpecial(getBooleanValue(progData.getAttr().getSpecial())); episode.setEpisodeNumber(episodeNumber(progData)); episode.setSeriesNumber(seriesNumber(progData)); } } catch (NumberFormatException e) { // sometimes we don't get valid numbers // log. } return new ItemAndBroadcast(item, Maybe.just(broadcast)); }