📄 webresultstablemodel.java
字号:
package com.esri.solutions.jitk.web.data.results;
import org.apache.log4j.Logger;
import com.esri.adf.web.data.WebContext;
import com.esri.adf.web.data.WebContextInitialize;
import com.esri.adf.web.data.results.ResultNode;
import com.esri.adf.web.data.results.WebResults;
import com.esri.adf.web.data.results.WebResultsObserver;
@SuppressWarnings("serial")
public class WebResultsTableModel extends AbstractTableModel implements
WebContextInitialize {
private static Logger _logger = Logger.getLogger(WebResultsTableModel.class.getName());
/**
* The current row index (0-based).
*/
private int rowIndex = -1;
/**
* The {@link WebResults} containing all the result data.
*/
private WebResults webResults;
/**
* The {@link ResultNode} containing the data to be displayed.
*/
private ResultNode results;
/**
* Observes {@link WebResults} events.
*/
private WebResultsObserver observer = new InnerWebResultsModel();
private EntityInfo entityInfo;
/**
* <p>
* Construct a new {@link ListTableModel} with no specified bound data.
* </p>
*/
public WebResultsTableModel() {
this(null);
}
/**
* <p>
* Construct a new {@link ListTableModel} binding the specified list.
* </p>
*
* @param webResults
* the {@link WebResults} containing the result data to be
* displayed
*/
public WebResultsTableModel(WebResults webResults) {
super();
this.results = null;
setWebResults(webResults);
}
public boolean isRowAvailable() {
if (results == null) {
return (false);
} else if (rowIndex >= 0 && results.getChildren() != null
&& rowIndex < results.getChildren().size()) {
return (true);
} else {
return (false);
}
}
public int getRowCount() {
if (results == null) {
return (-1);
}
if (results.getChildren() == null) {
return 0;
}
return (results.getChildren().size());
}
public Object getRowData() throws DataBindingException {
if (results == null) {
return (null);
} else if (!isRowAvailable()) {
throw new IllegalArgumentException("no row available");
} else {
return results.getChildren().get(rowIndex);
}
}
public Object getRowData(int rowIndex) throws DataBindingException {
if (results == null) {
return (null);
} else if (results.getChildren() == null) {
throw new IllegalArgumentException("no row available");
} else if (rowIndex < 0) {
throw new IllegalArgumentException("rowIndex < 0");
} else if (rowIndex >= results.getChildren().size()) {
throw new IllegalArgumentException("rowIndex >= getRowCount()");
} else {
return results.getChildren().get(rowIndex);
}
}
public int getRowIndex() {
return rowIndex;
}
public void setRowIndex(int rowIndex) {
if (rowIndex < -1) {
throw new IllegalArgumentException();
}
int oldIndex = this.rowIndex;
this.rowIndex = rowIndex;
if (results == null) {
return;
}
if (oldIndex != rowIndex) {
Object rowData = null;
if (isRowAvailable()) {
rowData = getRowData();
}
RowSelectionEvent event =
new RowSelectionEvent(this, rowIndex, rowData);
fireRowSelectedEvent(event);
}
}
public Object getData() {
return results;
}
public void setData(Object data) {
// does nothing
}
public WebResults getWebResults() {
return webResults;
}
public void setWebResults(WebResults webResults) {
if (this.webResults != null) {
this.webResults.removeObserver(observer);
}
this.webResults = webResults;
if (this.webResults != null) {
this.webResults.addObserver(observer);
}
refresh();
}
public EntityInfo getEntityInfo() {
return entityInfo;
}
public void setEntityInfo(EntityInfo entityInfo) {
this.entityInfo = entityInfo;
}
private void refresh() {
if (getRowIndex() > -1) {
rowIndex = -1;
}
if (getPageIndex() > -1) {
pageIndex = -1;
}
DataBindingEvent event = new DataBindingEvent(this, this.results);
fireDataBoundEvent(event);
}
class InnerWebResultsModel implements WebResultsObserver {
public void webResultsUpdate(WebResults source, int updateType,
ResultNode affectedNode, Object args) {
if (affectedNode == null) {
results = null;
if (updateType == WebResultsObserver.ALL_RESULTS_CLEARED) {
setShouldRender(true);
}
}
else {
_logger.debug("Tabular Results WebResultsObserver triggered, requesting tabular results re-render");
setShouldRender(true);
switch (updateType) {
case WebResultsObserver.RESULT_ADDED:
results = affectedNode;
break;
case WebResultsObserver.RESULT_REMOVED:
if (affectedNode == results) {
results = null;
}
break;
case WebResultsObserver.RESULT_MODIFIED: // (e.g. GP async)
if (affectedNode == results) {
results = affectedNode;
}
break;
case WebResultsObserver.RESULT_REPLACED: // (e.g. GP
// re-execute)
if (args == null || !(args instanceof ResultNode)) {
results = null;
}
if (affectedNode == results) {
results = (ResultNode) args;
}
break;
case WebResultsObserver.ALL_RESULTS_CLEARED:
results = null;
break;
}
}
refresh();
}
}
/**
* Implements {@link com.esri.adf.web.data.WebContextInitialize#destroy()}
*/
public void destroy() {
setWebResults(null);
}
/**
* Implements
* {@link com.esri.adf.web.data.WebContextInitialize#init(WebContext)}
*/
public void init(WebContext context) {
setWebResults(context.getWebResults());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -