Common_CustomDataSource_CSharp\REXMLDataSource_CSharp\GISDataSource.cs
// Copyright 2011 ESRI // // All rights reserved under the copyright laws of the United States // and applicable international laws, treaties, and conventions. // // You may freely redistribute and use this sample code, with or // without modification, provided you include the original copyright // notice and use restrictions. // // See the use restrictions. // namespace REXMLDataSource_CSharp { // IGISDataSource is the foundation of a Web ADF Common Data Source implementation. The class // implementing this interface will be reponsible for creating resources, which in turn will be // responsible for creating functionalities. IGISDataSource defines a data source connection, // including the identity and state of that connection. So when any of the data source // functionality defined in this assembly is needed - programmatically, by a Web ADF Control, or // otherwise - instantiating this class is the first step in accessing the required functionality. // // Put more succinctly, an IGISDataSource implementation can be thought of as describing how the // data can be accessed. public class GISDataSource : ESRI.ArcGIS.ADF.Web.DataSources.IGISDataSource { #region Instance Variables private System.Collections.Hashtable m_stateHashTable; private string m_name = string.Empty; private string m_dataSourceDefinition = string.Empty; private string m_identity = string.Empty; private System.Web.UI.Page m_page = null; private ESRI.ArcGIS.ADF.Web.DataSources.GISResourceCollection m_gisResourceCollection = new ESRI.ArcGIS.ADF.Web.DataSources.GISResourceCollection(); private bool m_initialized = false; #endregion #region Constructors // Allow instantiation without defining any properties public GISDataSource() { } // Handle the instantiation case where identity is undefined via inheritance public GISDataSource(string name, string dataSourceDefinition) : this(name, string.Empty, dataSourceDefinition) { } // Explicitly set instance properties in cases where the class is instantiated with // data source name, identity, and definition public GISDataSource(string name, string identity, string dataSourceDefinition) { m_name = name; m_identity = identity; m_dataSourceDefinition = dataSourceDefinition; } #endregion #region IGISDataSource Members #region IGISDataSource Properties // Name of the data source public string Name { get { return m_name; } set { m_name = value; } } // Definition of the data source. In this case, this will be the location of the // REXML file. public string DataSourceDefinition { get { return m_dataSourceDefinition; } set { if (m_dataSourceDefinition != value) { m_dataSourceDefinition = value; } } } // Identity for connecting to the data source public string Identity { get { return m_identity; } set { m_identity = value; } } // Page containing the web control referencing the data source public System.Web.UI.Page Page { get { return m_page; } set { m_page = value; } } // Resources made available via this data source. These must implement IGISResource // and provide access to the data source's functionality classes public ESRI.ArcGIS.ADF.Web.DataSources.GISResourceCollection Resources { get { return m_gisResourceCollection; } set { m_gisResourceCollection = value; } } // Whether the data source has been initialized public bool Initialized { get { return m_initialized; } } // Retrieves object state public System.Collections.Hashtable State { get { return m_stateHashTable; } } #endregion #region IGISDataSource Methods // Loads the passed-in state of the data source into the object. State retrieval // from external sources would also be performed here, if needed. public void LoadState(System.Collections.Hashtable state) { m_stateHashTable = state; } // Sets the initalized flag of the data source to true. Any needed initialization // logic (e.g. initializing a connection) would be inserted here. public void Initialize() { m_initialized = true; } // Saves the state of the data source. If something in the object's state needed // to be persisted elsewhere, it would be done here. public System.Collections.Hashtable SaveState() { return m_stateHashTable; } // Sets the initalized flag of the data source to false. Any logic needed to release // or reset objects manipulated in Initialize would be inserted here. public void Dispose() { m_initialized = false; } // Function to find resource objects that use the data source and return their // definition strings public string[] GetAvailableResourceDefinitions(System.Type resourceType) { throw new System.Exception("The method or operation is not implemented."); } // Function to create a resource based on the passed-in resource definition string and name public ESRI.ArcGIS.ADF.Web.DataSources.IGISResource CreateResource(string resourceDefinition, string name) { throw new System.Exception("The method or operation is not implemented."); } #endregion #endregion } }