📄 georsstask.java
字号:
package com.esri.solutions.jitk.web.tasks.feed;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import com.esri.adf.web.data.WebContext;
import com.esri.adf.web.data.WebMap;
import com.esri.adf.web.data.geometry.WebExtent;
import com.esri.adf.web.data.geometry.WebGeometry;
import com.esri.adf.web.data.geometry.WebPoint;
import com.esri.adf.web.data.results.WebResults;
import com.esri.adf.web.data.tasks.TaskInfo;
import com.esri.adf.web.faces.event.MapEvent;
import com.esri.adf.web.faces.event.TaskEvent;
import com.esri.solutions.jitk.web.tasks.FeatureSelectionTask;
import com.sun.syndication.io.FeedException;
@SuppressWarnings("serial")
public class GeorssTask extends FeatureSelectionTask {
private static final Logger _logger = Logger.getLogger(GeorssTask.class);
private GeorssTaskInfo _taskInfo = null;
private String _url = "";
private Map<String, String> _urls = null;
private List<Feed> _feeds = null;
private String footerNote = null;
/**
* Get footer note
*/
public String getFooterNote(){
return this.footerNote;
}
/**
* Set footer note
*/
public void setFooterNote(String footerNote){
this.footerNote = footerNote;
}
public GeorssTask() {
super();
setTaskInfo(new GeorssTaskInfo());
this._feeds = new ArrayList<Feed>();
}
public TaskInfo getTaskInfo() {
if (this.getContext() == null) {
_taskInfo.getTaskDescriptor().setDisabled(true);
_logger.warn("WebContext not set, disabling");
}
return this._taskInfo;
}
public void setTaskInfo(TaskInfo taskInfo) {
this._taskInfo = (GeorssTaskInfo) taskInfo;
super.setTaskInfo(this._taskInfo);
}
public String getUrl() {
return _url;
}
public void setUrl(String url) {
this._url = url;
}
public void doNotSetUrl(String url) {
}
public void setUrls(Map<String, String> urls) {
this._urls = urls;
}
public Map<String, String> getUrls() {
return this._urls;
}
public void add(TaskEvent event) {
try {
_logger.info("Adding GeoRSS feed");
super.requestTaskRender();
WebContext webContext = event.getWebContext();
setContext(webContext);
Feed feed = new Feed(this._url, webContext);
feed.read();
_feeds.add(feed);
this._url = "";
webContext.refresh();
} catch(FeedException ex) {
_logger.error("Can't parse/generate feed content.", ex);
this.renderResourceMessage("jitk.task.addGeoRssFeed.ui.feedUrl.reading.error", messageType.ERROR);
} catch(IOException ex) {
_logger.error("IOException thrown while reading feed.", ex);
this.renderResourceMessage("jitk.task.addGeoRssFeed.ui.feedUrl.reading.error", messageType.ERROR);
}
}
public void removeAll(TaskEvent event) {
try {
_logger.info("Removing GeoRSS feeds from map");
super.requestTaskRender();
WebContext webContext = event.getWebContext();
setContext(webContext);
for(Feed feed : _feeds) { feed.destroy(); }
_feeds.clear();
webContext.refresh();
}
catch (Exception ex) {
_logger.error("Could not remove GeoRSS feed from map");
}
}
public void identify(MapEvent event) {
try {
_logger.info("Performing identify on GeoRSS layer");
super.requestTaskRender();
WebContext webContext = event.getWebContext();
setContext(webContext);
WebResults webResults = webContext.getWebResults();
WebMap webMap = webContext.getWebMap();
WebGeometry geometry = event.getWebGeometry().toMapGeometry(webMap);
WebExtent extent = null;
if (geometry instanceof WebPoint) {
double d = webMap.getCurrentExtent().getWidth() / webMap.getWidth() * 6;
WebPoint pt = (WebPoint) geometry;
extent = new WebExtent(pt.getX() - d, pt.getY() - d, pt.getX() + d, pt.getY() + d, pt.getSpatialReference());
}
for(Feed feed : _feeds) {
List<GeorssQueryResult> entries = feed.identifyEntries(extent);
if(entries != null && !entries.isEmpty()) {
webResults.addResultsWithActionMap("Identify Feed on " + feed.getName(), entries, "getName", "getDetails", super.getActions(), "clearGraphic");
}
}
webContext.refresh(webContext.getWebMap());
}
catch (Exception ex) {
_logger.error("Could not perform identify on GeoRSS layer", ex);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -