using System; using System.Collections.Generic; using ESRI.ArcGIS.Geodatabase; using ESRI.ArcGIS.Geometry; using KGIS.Plugin.LayerProperty2.Enum; using KGIS.Plugin.LayerProperty2.Interface; using KGIS.Plugin.LayerProperty2.Utils; namespace KGIS.Plugin.LayerProperty2.Model { public class AETable : AbstractTable { private IMapSet mapSet; private esriDatasetType m_DatasetType; private esriGeometryType m_GeometryType; private esriFeatureType m_FeatureType; private string m_Icon; private string m_Key; private AETable m_parent; private string m_WorkspaceKey; private List subTables; private ISchemeLayerSource layerSource; private object openedObject; private object tag; private string parentKey; public IMapSet MapSet { get { return this.mapSet; } set { this.mapSet = value; } } public esriDatasetType DatasetType { get { return this.m_DatasetType; } set { this.m_DatasetType = value; } } public esriGeometryType GeometryType { get { return this.m_GeometryType; } set { this.m_GeometryType = value; } } public esriFeatureType FeatureType { get { return this.m_FeatureType; } set { this.m_FeatureType = value; } } public string Icon { get { return this.m_Icon; } set { this.m_Icon = value; } } public string Key { get { return this.m_Key; } set { this.m_Key = value; } } public AETable Parent { get { return this.m_parent; } set { this.m_parent = value; if (this.m_parent != null) { this.m_parent.SubTables.Add(this); } } } public string WorkspaceKey { get { return this.m_WorkspaceKey; } set { this.m_WorkspaceKey = value; } } public List SubTables { get { return this.subTables; } } public ISchemeLayerSource LayerSource { get { return this.layerSource; } internal set { this.layerSource = value; } } public object OpenedObject { get { return this.openedObject; } internal set { this.openedObject = value; } } public object Tag { get { return this.tag; } set { this.tag = value; } } internal string ParentKey { get { return this.parentKey; } set { this.parentKey = value; } } internal AETable(DataSourceGeneric dataSource, string name, string aliasName, string category, string description) : base(dataSource, name, aliasName, category, description) { this.subTables = new List(); } internal AETable(DataSourceGeneric dataSource, string name, string aliasName, string category, string description, esriDatasetType DatasetType) : base(dataSource, name, aliasName, category, description) { this.m_DatasetType = DatasetType; this.subTables = new List(); } internal AETable(DataSourceGeneric dataSource, string name, string aliasName, string category, string description, esriDatasetType DatasetType, esriGeometryType GeometryType) : base(dataSource, name, aliasName, category, description) { this.m_DatasetType = DatasetType; this.m_GeometryType = GeometryType; this.subTables = new List(); } internal AETable(DataSourceGeneric dataSource, string name, string aliasName, string category, string description, esriDatasetType DatasetType, esriGeometryType GeometryType, esriFeatureType featureType) : base(dataSource, name, aliasName, category, description) { this.m_DatasetType = DatasetType; this.m_GeometryType = GeometryType; this.m_FeatureType = featureType; this.subTables = new List(); } public void LoadSubTables() { try { this.subTables = SpatialDataOptFactory.GetSubTables(this); } catch (Exception ex) { //RdbUtil.AddException(ex); } } public override AbstractField Create(string name, string aliasName, DBDataType dbType, IKgisDictionary dictionary, FieldKeyType fieldKeyType, string defaultValue, int length, string description) { AEField aEField = new AEField(this, name, aliasName, dbType, dictionary, fieldKeyType, defaultValue, length, description); base.Add(aEField); return aEField; } public object OpenDataSource() { return this.mapSet.OpenAETable(this); } public bool Update() { return RDBOpt.UpdateAETable(this); } public void TranslateFields() { try { bool flag = false; using (IEnumerator enumerator = base.Collection.GetEnumerator()) { while (enumerator.MoveNext()) { AEField aEField = (AEField)enumerator.Current; aEField.Translate(); flag = true; } } if (flag) { this.UpdateAEFields(); } } catch (Exception ex) { RdbUtil.AddException(ex); } } public bool UpdateAEFields() { return RDBOpt.UpdateAEFields(this); } public bool TranslateDataSourceFields() { try { IObjectClass objectClass = this.OpenDataSource() as IObjectClass; bool result; if (objectClass == null) { result = false; return result; } IFields fields = objectClass.Fields; IClassSchemaEdit classSchemaEdit = objectClass as IClassSchemaEdit; for (int i = 0; i < fields.FieldCount; i++) { IField field = fields.get_Field(i); AEField fieldByName = this.GetFieldByName(field.Name); if (fieldByName != null && !(fieldByName.AliasName == "") && !field.AliasName.Equals(fieldByName.AliasName)) { try { classSchemaEdit.AlterFieldAliasName(field.Name, fieldByName.AliasName); } catch (Exception ex) { RdbUtil.AddException(ex); } } } result = true; return result; } catch (Exception ex2) { RdbUtil.AddException(ex2); } return false; } public AEField GetFieldByName(string name) { try { using (IEnumerator enumerator = base.Collection.GetEnumerator()) { while (enumerator.MoveNext()) { AEField aEField = (AEField)enumerator.Current; if (aEField.Name.Equals(name)) { return aEField; } } } } catch (Exception ex) { RdbUtil.AddException(ex); } return null; } } }