use of com.sun.syndication.feed.module.georss.GeoRSSModule in project pentaho-kettle by pentaho.
the class RssOutput method createEntry.
/**
* @param author
* : The author of the event
* @param title
* : The title of the event
* @param link
* : The link to the element in RES
* @param date
* : The event's date
* @param desc
* : The event's description
*/
@SuppressWarnings("unchecked")
public boolean createEntry(String author, String title, String link, Date date, String desc, String geopointLat, String geopointLong) {
boolean retval = false;
try {
// Add entry to the feed
SyndEntry entry = new SyndEntryImpl();
SyndContent description;
entry = new SyndEntryImpl();
if (title != null) {
entry.setTitle(title);
}
if (link != null) {
entry.setLink(link);
}
if (date != null) {
entry.setPublishedDate(date);
}
if (author != null) {
entry.setAuthor(author);
}
if (desc != null) {
description = new SyndContentImpl();
description.setType("text/plain");
description.setValue(desc);
entry.setDescription(description);
}
if (meta.AddGeoRSS() && geopointLat != null && geopointLong != null) {
// Add GeoRSS?
GeoRSSModule geoRSSModule = new SimpleModuleImpl();
if (meta.useGeoRSSGML()) {
geoRSSModule = new W3CGeoModuleImpl();
}
geoRSSModule.setPosition(new Position(Const.toDouble(geopointLat.replace(',', '.'), 0), Const.toDouble(geopointLong.replace(',', '.'), 0)));
entry.getModules().add(geoRSSModule);
}
data.entries.add(entry);
retval = true;
} catch (Exception e) {
logError(BaseMessages.getString(PKG, "RssOutput.Log.ErrorAddingEntry", e.getMessage()));
setErrors(1);
retval = false;
}
return retval;
}
use of com.sun.syndication.feed.module.georss.GeoRSSModule in project sis by apache.
the class LocationServlet method init.
/**
* Read GeoRSS data (location information provide sis-location-config.xml )
* and build quad-tree.
*
* @param config
* Servlet configuration file
* @exception ServletException
* General exception for servlet
*/
@SuppressWarnings("unchecked")
public void init(ServletConfig config) throws ServletException {
this.context = config.getServletContext();
long startTime = 0;
long endTime = 0;
int capacity = -1, depth = -1;
this.qtreeIdxPath = this.context.getInitParameter("org.apache.sis.services.config.qIndexPath");
this.georssStoragePath = this.context.getInitParameter("org.apache.sis.services.config.geodataPath");
if (!this.qtreeIdxPath.endsWith("/"))
this.qtreeIdxPath += "/";
if (!this.georssStoragePath.endsWith("/"))
this.georssStoragePath += "/";
InputStream indexStream = null;
try {
indexStream = new FileInputStream(qtreeIdxPath + "node_0.txt");
} catch (FileNotFoundException e) {
System.out.println("[INFO] Existing qtree index at: [" + qtreeIdxPath + "] not found. Creating new index.");
}
if (indexStream != null) {
startTime = System.currentTimeMillis();
this.tree = QuadTreeReader.readFromFile(qtreeIdxPath, "tree_config.txt", "node_0.txt");
try {
indexStream.close();
} catch (IOException e) {
e.printStackTrace();
}
endTime = System.currentTimeMillis();
this.timeToLoad = "Quad Tree fully loaded from index files in " + Double.toString((endTime - startTime) / 1000L) + " seconds";
System.out.println("[INFO] Finished loading tree from stored index");
} else {
startTime = System.currentTimeMillis();
WireFeedInput wf = new WireFeedInput(true);
// read quad tree properties set in config xml file
InputStream configStream = null;
try {
configStream = new FileInputStream(this.context.getInitParameter("org.apache.sis.services.config.filePath"));
} catch (Exception e) {
e.printStackTrace();
}
if (configStream != null) {
DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder docBuilder = dbfac.newDocumentBuilder();
Document configDoc = docBuilder.parse(configStream);
NodeList capacityNode = configDoc.getElementsByTagName("capacity");
if (capacityNode.item(0) != null) {
capacity = Integer.parseInt(capacityNode.item(0).getFirstChild().getNodeValue());
}
NodeList depthNode = configDoc.getElementsByTagName("depth");
if (depthNode.item(0) != null) {
depth = Integer.parseInt(depthNode.item(0).getFirstChild().getNodeValue());
}
// TODO make this
this.tree = new QuadTree(capacity, depth);
// configurable
NodeList urlNodes = configDoc.getElementsByTagName("url");
for (int i = 0; i < urlNodes.getLength(); i++) {
// read in georss and build tree
String georssUrlStr = urlNodes.item(i).getFirstChild().getNodeValue();
WireFeed feed = null;
try {
feed = wf.build(new XmlReader(new URL(georssUrlStr)));
} catch (Exception e) {
System.out.println("[ERROR] Error obtaining geodata url: [" + georssUrlStr + "]: Message: " + e.getMessage() + ": skipping and continuing");
continue;
}
Channel c = (Channel) feed;
List<Item> items = (List<Item>) c.getItems();
for (Item item : items) {
GeoRSSModule geoRSSModule = (GeoRSSModule) item.getModule(GeoRSSModule.GEORSS_GEORSS_URI);
if (geoRSSModule == null)
geoRSSModule = (GeoRSSModule) item.getModule(GeoRSSModule.GEORSS_GML_URI);
if (geoRSSModule == null)
geoRSSModule = (GeoRSSModule) item.getModule(GeoRSSModule.GEORSS_W3CGEO_URI);
// then discard it
if (geoRSSModule != null && geoRSSModule.getPosition() != null) {
String filename = "";
if (item.getGuid() != null)
filename = cleanStr(item.getGuid().getValue()) + ".txt";
else
filename = cleanStr(item.getLink()) + ".txt";
GeoRSSData data = new GeoRSSData(filename, new DirectPosition2D(geoRSSModule.getPosition().getLongitude(), geoRSSModule.getPosition().getLatitude()));
if (this.tree.insert(data)) {
data.saveToFile(item, geoRSSModule, georssStoragePath);
} else {
System.out.println("[INFO] Unable to store data at location " + data.getLatLon().y + ", " + data.getLatLon().x + " under filename " + data.getFileName());
}
}
}
}
configStream.close();
endTime = System.currentTimeMillis();
this.timeToLoad = "Quad Tree fully loaded from retrieving GeoRSS files over the network in " + Double.toString((endTime - startTime) / 1000L) + " seconds";
QuadTreeWriter.writeTreeToFile(tree, qtreeIdxPath);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
} else {
throw new ServletException("Unable to read location service XML config: null!");
}
}
}
Aggregations