⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jitktocrenderer.java

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 JAVA
字号:
package com.esri.solutions.jitk.web.tasks.filter;

import java.util.Map;
import java.util.Set;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

import com.esri.adf.web.data.WebToc;
import com.esri.adf.web.faces.component.TocControl;
import com.esri.adf.web.faces.renderkit.xml.ajax.TocRenderer;
import com.esri.adf.web.util.XMLUtil;
import com.esri.aims.mtier.model.map.layer.Layer;
import com.esri.arcgisws.MapLayerInfo;
import com.esri.solutions.jitk.common.personalization.IPersonalizable;
import com.esri.solutions.jitk.common.personalization.IPersonalizationContext;
import com.esri.solutions.jitk.web.tasks.mapcomp.ISaveMapComposition;

public class JitkTocRenderer extends TocRenderer implements IPersonalizable {
	private static final Logger _loggner = LogManager.getLogger(JitkTocRenderer.class);
	
	private IPersonalizationContext personalCtx = null;
	
	public void setSaveMapComposition(ISaveMapComposition saver) {
	}
	
	public void setPersonalizationContext(IPersonalizationContext ctx) {
		personalCtx = ctx;
	}

	public Class<TocControl> getControlClass() {
	    return TocControl.class;
	}
 
	public Object getOriginalState(UIComponent component) {        
        Document xmlDoc = XMLUtil.newDocument();
        renderOurOwnXML(XMLUtil.createElement(xmlDoc, "root", null, null), (TocControl) component);
        return XMLUtil.transform(xmlDoc, null);
	}

	public void renderAjaxResponse(final FacesContext facesContext,
	                                 final UIComponent component,
	                                 final Object previousState,
	                                 final boolean b,
	                                 Element parentElement) {
		  
		if (! (((TocControl) component).getTocModel() instanceof WebToc))
		      return;

	    Document xmlDoc = XMLUtil.newDocument();
	    boolean filteredLayers = renderOurOwnXML(XMLUtil.createElement(xmlDoc, "root", null, null), component);
	    String newState = XMLUtil.transform(xmlDoc, null);

	    // if we have filtered layers then append the response
	    if (filteredLayers)
	    	parentElement.appendChild(parentElement.getOwnerDocument().importNode(xmlDoc.getElementsByTagName("root").item(0).getFirstChild(), true));

	    _loggner.debug("JitkTocRenderer xml output: " + newState);	      
	}    

	@SuppressWarnings("unchecked")
	public boolean renderOurOwnXML(Element parentElement, final UIComponent aComponent) {
		try {  
			boolean FilteredLayers = false;
			
			if (personalCtx != null) {
		    	Map mapFilterExpressions = (Map)personalCtx.getAttribute("FilterExpression");
				if (mapFilterExpressions != null){
					Set set = mapFilterExpressions.keySet();
					Object[] setVals = set.toArray();

				    Element anElement = XMLUtil.createElement("filtered-layers", null, parentElement);
				    
				    MapLayerInfo mapLayerInfo = null;
				    Layer layer = null;
				    
				    for( Object obj : setVals){
				    //while (iter.hasNext()) {
				      Object lInfo = obj;
				      if (lInfo instanceof MapLayerInfo)
				    	  mapLayerInfo = (MapLayerInfo)lInfo;
				      else
				    	  layer = (Layer)lInfo;
				      
				      String layerName = "";
				      if (mapLayerInfo != null){
				    	  layerName = mapLayerInfo.getName();
				      }
				      else if (layer != null){
				    	  layerName = layer.getName();
				      }
				      
				      if (layerName != ""){
				    	  XMLUtil.createElement("Layer", layerName, anElement);
					      FilteredLayers = true;
				      } 
				    }
				} 
			}
			
			return FilteredLayers;
		} catch (Exception e) {
		     _loggner.debug(e.toString());
		     return false;
		}    
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -