/**
* Copyright 2013, WebGate Consulting AG
*
* Licensed 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 org.openntf.xpt.rss.datasource;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.ArrayList;
import java.util.List;
import org.openntf.xpt.core.utils.logging.LoggerFactory;
import org.openntf.xpt.rss.model.FeedReaderService;
import org.openntf.xpt.rss.model.RSSEntry;
import com.ibm.xsp.model.AbstractDataContainer;
public class RSSDataContainer extends AbstractDataContainer {
private List<FeedEntryData> m_FeedEntries;
private String m_FeedURL;
private RSSDataModel m_DataModel;
public RSSDataContainer() {
}
public RSSDataContainer(String strBeanID, String strUniqueID, String feedURL) {
super(strBeanID, strUniqueID);
setFeedURL(feedURL);
}
@SuppressWarnings("unchecked")
@Override
public void deserialize(ObjectInput in) throws IOException {
this.setFeedURL(readUTF(in));
try {
m_FeedEntries = (List<FeedEntryData>) in.readObject();
} catch (Exception e) {
LoggerFactory.logError(getClass(), "Error during desrialize", e);
}
}
@Override
public void serialize(ObjectOutput out) throws IOException {
writeUTF(out, m_FeedURL);
out.writeObject(m_FeedEntries);
}
public String getFeedURL() {
return m_FeedURL;
}
public void setFeedURL(String feedURL) {
m_FeedURL = feedURL;
}
public List<FeedEntryData> getRSSasList() {
if (m_FeedEntries == null) {
m_FeedEntries = buildEntries();
}
return m_FeedEntries;
}
private List<FeedEntryData> buildEntries() {
List<FeedEntryData> lstRC = new ArrayList<FeedEntryData>();
try {
List<RSSEntry> lstEntries = FeedReaderService.getInstance().getAllEntriesFromURL(m_FeedURL);
for (RSSEntry rssEntry : lstEntries) {
FeedEntryData fed = FeedEntryData.buildFromRSSEntry(rssEntry);
lstRC.add(fed);
}
} catch (Exception e) {
LoggerFactory.logError(getClass(), "buildEntries", e);
}
return lstRC;
}
public Object getData() {
if (m_DataModel == null) {
m_DataModel = new RSSDataModel(this);
}
return m_DataModel;
}
}