示例#1
0
        /// <summary>
        /// </summary>
        /// <param name="writer"></param>
        /// <param name="objectClass"></param>
        /// <param name="table"></param>
        /// <param name="row"></param>
        private static void ExportRow(XmlWriter writer, ObjectClass objectClass, IDisplayTable table, IRow row)
        {
            writer.WriteStartElement("ObjectClassRow");
            if (row.HasOID)
                writer.WriteAttributeString(row.Table.OIDFieldName, Convert.ToString(row.OID));

            foreach (FieldNameAndAlias alias in GetObjectClassFields(objectClass, table))
            {
                int index = row.Fields.FindField(alias.name);
                if (index == -1)
                    continue;

                writer.WriteStartElement("ObjectClassField");
                writer.WriteAttributeString("name", alias.alias);
                object obj2 = row.get_Value(index);
                if ((obj2 != null) && (obj2 != DBNull.Value))
                {
                    string str = Convert.ToString(obj2).Trim();
                    if (row.Fields.get_Field(index).Type == esriFieldType.esriFieldTypeDate)
                        str = Convert.ToDateTime(str).ToString("MM/dd/yyyy");
                    writer.WriteString(str);
                }
                else
                {
                    writer.WriteString("");
                }

                writer.WriteEndElement();
            }

            writer.WriteEndElement();
        }
示例#2
0
        /// <summary>
        ///     Export the object class
        /// </summary>
        /// <param name="writer"></param>
        /// <param name="objectClass"></param>
        /// <param name="cursor"></param>
        /// <param name="table"></param>
        private static void ExportObjectClass(XmlWriter writer, ObjectClass objectClass, ICursor cursor,
            IDisplayTable table)
        {
            StartExportObjectClass(writer, objectClass, table);

            for (IRow row = cursor.NextRow(); row != null; row = cursor.NextRow())
                ExportRow(writer, objectClass, table, row);

            EndExportObjectClass(writer);
        }
示例#3
0
        /// <summary>
        /// </summary>
        /// <param name="objectClass"></param>
        /// <param name="table"></param>
        /// <returns></returns>
        private static string GetDisplayTableName(ObjectClass objectClass, IDisplayTable table)
        {
            if (table is IFeatureLayer)
                return ((IFeatureLayer) table).Name;

            if (table is IStandaloneTable)
                return ((IStandaloneTable) table).Name;

            string name = objectClass.name;
            return name;
        }
示例#4
0
        /// <summary>
        ///     return the FieldName and Alias data as an array of data objects
        /// </summary>
        /// <param name="objectClass"></param>
        /// <param name="displayTable"></param>
        /// <returns></returns>
        private static FieldNameAndAlias[] GetObjectClassFields(ObjectClass objectClass, IDisplayTable displayTable)
        {
            // if the fields to return are identified in the config xml file
            if (objectClass.Fields != null)
            {
                var aliasArray = new FieldNameAndAlias[objectClass.Fields.Length];
                for (int j = 0; j < objectClass.Fields.Length; j++)
                {
                    var alias = new FieldNameAndAlias
                    {
                        alias = (objectClass.Fields[j].alias.Length == 0
                            ? GetFieldAliasFromDisplayTable(displayTable, objectClass.Fields[j])
                            : objectClass.Fields[j].alias),
                        name = objectClass.Fields[j].name
                    };

                    // * If alias defined in xml config, use it, otherwise use the display alias..?

                    aliasArray[j] = alias;
                }

                return aliasArray;
            }

            // otherwise return all of the fields in the table as named
            int fieldCount = displayTable.DisplayTable.Fields.FieldCount;
            var aliasArray2 = new FieldNameAndAlias[fieldCount];
            for (int i = 0; i < fieldCount; i++)
            {
                var alias2 = new FieldNameAndAlias();
                IField field = displayTable.DisplayTable.Fields.get_Field(i);
                alias2.alias = GetFieldAliasFromDisplayTable(displayTable, field.Name, field.AliasName);
                alias2.name = displayTable.DisplayTable.Fields.get_Field(i).Name;
                aliasArray2[i] = alias2;
            }

            return aliasArray2;
        }
示例#5
0
        /// <summary>
        /// </summary>
        /// <param name="writer"></param>
        /// <param name="objectClass"></param>
        /// <param name="table"></param>
        private static void StartExportObjectClass(XmlWriter writer, ObjectClass objectClass, IDisplayTable table)
        {
            try
            {
                writer.WriteStartElement("ObjectClass");
                writer.WriteAttributeString("name", GetDisplayTableName(objectClass, table));
                writer.WriteStartElement("ObjectClassFieldDefinition");
                FieldNameAndAlias[] objectClassFields = GetObjectClassFields(objectClass, table);
                if (objectClassFields != null)
                {
                    foreach (FieldNameAndAlias alias in objectClassFields)
                    {
                        writer.WriteElementString("FieldDefinition", alias.alias);
                    }
                }

                writer.WriteEndElement();
                writer.WriteStartElement("ObjectClassRows");
            }
            catch (Exception ex)
            {
                HandleError(ex);
            }
        }
示例#6
0
        /// <summary>
        /// </summary>
        /// <param name="writer"></param>
        /// <param name="objectClass"></param>
        /// <param name="relClasses"></param>
        /// <param name="parentCursor"></param>
        private void ExportRelatedObjects(XmlWriter writer, ObjectClass objectClass, IEnumRelationshipClass relClasses,
            ICursor parentCursor)
        {
            IRelationshipClass class2 = relClasses.Next();
            IDataset originClass = null;
            while (class2 != null)
            {
                originClass = (IDataset) class2.OriginClass;
                if (originClass.Name == objectClass.name)
                    break;

                originClass = (IDataset) class2.DestinationClass;
                if (originClass.Name == objectClass.name)
                    break;

                class2 = relClasses.Next();
            }

            if (class2 == null)
                return;

            IDisplayTable displayTableFromDatasetName = GetDisplayTableFromDatasetName(originClass.Name);
            StartExportObjectClass(writer, objectClass, displayTableFromDatasetName);
            for (IRow row = parentCursor.NextRow(); row != null; row = parentCursor.NextRow())
            {
                ISet objectsRelatedToObject = class2.GetObjectsRelatedToObject(row as IObject);
                for (var row2 = objectsRelatedToObject.Next() as IRow;
                    row2 != null;
                    row2 = objectsRelatedToObject.Next() as IRow)
                {
                    ExportRow(writer, objectClass, displayTableFromDatasetName, row2);
                }
            }

            EndExportObjectClass(writer);
        }