List<Nicolive> nicolives = new LinkedList<Nicolive>();
@SuppressWarnings("unchecked")
List<SyndEntry> entries = (List<SyndEntry>) feed.getEntries();
for (SyndEntry entry : entries) {
// RSSフィードの「nicolive:***」部分を取得する。
NicoliveModule module = null;
@SuppressWarnings("unchecked")
List<Object> modules = entry.getModules();
for (Object o : modules) {
if (o instanceof NicoliveModule) {
module = (NicoliveModule) o;
break;
}
}
// 「nicolive:***」が取得できないエントリーは登録しない。
if (module != null) {
// 重複するリンクを持つエンティティがある場合は更新対象から外す。
Nicolive nicolive =
Datastore
.query(n)
.filter(n.link.equal(new Link(entry.getLink())))
.asSingle();
if (nicolive == null) {
nicolive = new Nicolive();
nicolive.setTitle(entry.getTitle());
nicolive.setDescription(new Text(entry
.getDescription()
.getValue()));
try {
Date openTime =
DateUtil.toDate(df.parse(module.getOpenTime()));
nicolive.setOpenTime(openTime);
Date startTime =
DateUtil
.toDate(df.parse(module.getStartTime()));
nicolive.setStartTime(startTime);
} catch (ParseException e) {
LOGGER.log(Level.WARNING, e.getMessage());
continue;
}
nicolive.setType(module.getType());
nicolive.setLink(new Link(entry.getLink()));
nicolives.add(nicolive);
}
}