年度变更建库软件5.0版本
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

305 lines
6.2 KiB

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<AETable> 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<AETable> 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<AETable>();
}
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<AETable>();
}
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<AETable>();
}
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<AETable>();
}
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<AbstractField> 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<AbstractField> 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;
}
}
}