public IGroupLayer getGroupLayerName(com.esri.arcgis.carto.Map map, AGSConnection agsconn){ ILayer layer = null; try { UID id = (UID) agsconn.getContext().createObject(UID.getClsid()); id.setValue(com.esri.arcgis.carto.IGroupLayer.class); // getLayers(UID, true) uses recursion to the get the layer name in a GroupLayer IEnumLayer enumLayer = map.getLayers(id, true); enumLayer.reset(); layer = enumLayer.next(); while(!(layer == null)){ if(layer.getName().equalsIgnoreCase("Transportation")){ break; } else { layer = enumLayer.next(); } } } catch (AutomationException ae) { ae.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { System.out.println(layer.getName()); } catch (AutomationException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return (IGroupLayer) layer; }
public IRasterLayer getRasterLayerName(com.esri.arcgis.carto.Map map, AGSConnection agsconn){ ILayer layer = null; try { UID id = (UID) agsconn.getContext().createObject(UID.getClsid()); id.setValue(com.esri.arcgis.carto.IRasterLayer.class); // getLayers(UID, true) uses recursion to the get the layer name in a GroupLayer IEnumLayer enumLayer = map.getLayers(id, true); enumLayer.reset(); layer = enumLayer.next(); while(!(layer == null)){ if(layer.getName().equalsIgnoreCase("Image")){ break; } else { layer = enumLayer.next(); } } } catch (AutomationException ae) { ae.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return (IRasterLayer) layer; }
System.out.println(agsconn.getMap().getLayer(1).getName());
public void printMosaicLayerName(com.esri.arcgis.carto.Map map, AGSConnection agsconn){ ILayer2 layer = null; try { UID id = (UID) agsconn.getContext().createObject(UID.getClsid()); id.setValue(com.esri.arcgis.carto.ILayer2.class); // getLayers(UID, true) uses recursion to the get the layer name in a GroupLayer IEnumLayer enumLayer = map.getLayers(id, true); enumLayer.reset(); layer = (ILayer2) enumLayer.next(); while(!(layer == null)){ System.out.println(layer.getClass().getName() + " " + layer.getName()); // this is line #93 if(layer instanceof IMosaicDataset){ MosaicDataset md = (MosaicDataset)layer; System.out.println(md.getRelativePath().toString()); } layer = (ILayer2) enumLayer.next(); } } catch (AutomationException ae) { ae.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
The output:
*Note: all the lines prior to the "Caused by:" are related to the UI not loading becuase of this ClassCastException. I expected to see this in the log.Jul 31, 2013 7:37:43 AM org.apache.catalina.startup.Catalina start INFO: Server startup in 23085 ms com.esri.arcgis.carto.FeatureLayer Zoning Case com.esri.arcgis.carto.GroupLayer Transportation // The next 5 layers are part of the Transporation GroupLayer com.esri.arcgis.carto.FeatureLayer Residential Streets com.esri.arcgis.carto.FeatureLayer Major Roads com.esri.arcgis.carto.FeatureLayer State Highway com.esri.arcgis.carto.FeatureLayer US Highway com.esri.arcgis.carto.FeatureLayer Interstates com.esri.arcgis.carto.FeatureLayer County Boundary com.esri.arcgis.carto.FeatureLayer Parcels // Right after this layer is the mosaic Jul 31, 2013 7:38:16 AM com.sun.faces.application.ActionListenerImpl processAction SEVERE: java.lang.ClassCastException: A COM object reference via iid 34c20002-4d3c-11d0-92d8-00805f7c28b0 does not support COM interface edad6644-1810-11d1-86ae-0000f8751720 javax.faces.el.EvaluationException: java.lang.ClassCastException: A COM object reference via iid 34c20002-4d3c-11d0-92d8-00805f7c28b0 does not support COM interface edad6644-1810-11d1-86ae-0000f8751720 at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:98) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:98) at javax.faces.component.UICommand.broadcast(UICommand.java:311) at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:781) at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1246) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:77) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.ClassCastException: A COM object reference via iid 34c20002-4d3c-11d0-92d8-00805f7c28b0 does not support COM interface edad6644-1810-11d1-86ae-0000f8751720 at com.esri.arcgis.interop.Dispatch.c(Unknown Source) at com.esri.arcgis.interop.Dispatch.vtblInvoke(Unknown Source) at com.esri.arcgis.carto.ILayerProxy.getName(Unknown Source) at com.esri.arcgis.carto.GroupLayer.getName(Unknown Source) at blah.blah.blah.printMosaicLayerName(MyClassName.java:93)
Caused by: java.lang.ClassCastException: A COM object reference via iid 34c20002-4d3c-11d0-92d8-00805f7c28b0 does not support COM interface edad6644-1810-11d1-86ae-0000f8751720
com.esri.arcgis.carto
Class MosaicLayer
java.lang.Objectcom.esri.arcgis.carto.MosaicLayer
All Implemented Interfaces: IAttributeTable, ICompositeLayer, ICompositeLayer2, IDataLayer, IDataLayer2, IIdentify, IIdentify2, ILayer, ILayer2, ILayerDrawingProperties, ILayerEffects, ILayerExtensions, ILayerGeneralProperties, ILayerInfo, ILayerMasking, ILayerPosition, ILayerSymbologyExtents, IMosaicLayer, IPublishLayer, ITableDefinition, ITimeData, ITimeDataDisplay, ITimeTableDefinition, IRasterDataManagementEvents, IConnectionPointContainer, IDisplayAdmin, IDisplayAdmin2, IDisplayFilterManager, IDataset, IGeoDataset, IWorkspaceEditEvents, com.esri.arcgis.interop.RemoteObjRef, IClassID, IPersist, IPersistStream, ISupportErrorInfo, Externalizable, Serializable, EventListener
That's all I've got...
Wayne
public void printMosaicLayerName(com.esri.arcgis.carto.Map map, AGSConnection agsconn){ ILayer layer = null; try { UID id = (UID) agsconn.getContext().createObject(UID.getClsid()); id.setValue(ILayer.class); // getLayers(UID, true) uses recursion to the get the layer name in a GroupLayer IEnumLayer enumLayer = map.getLayers(id, true); enumLayer.reset(); layer = enumLayer.next(); while(!(layer == null)){ System.out.println(layer.getClass().getName()); //System.out.println(layer.getName()); System.out.println("ILayer?: " + (layer instanceof ILayer)); System.out.println("IGroupLayer?: " + (layer instanceof IGroupLayer)); System.out.println("IMosaicLayer?: " + (layer instanceof IMosaicLayer)); System.out.println("------------------------------------"); layer = enumLayer.next(); } } catch (AutomationException ae) { ae.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }