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.
306 lines
6.2 KiB
306 lines
6.2 KiB
6 months ago
|
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;
|
||
|
}
|
||
|
}
|
||
|
}
|