示例#1
0
        public static EnumDataDefine Create(Type type, EnumFieldType fieldType, string fieldName)
        {
            EnumDataDefine mapping = CreateType(type, fieldType);

            mapping.FieldName = fieldName;
            return(mapping);
        }
示例#2
0
        private static EnumDataDefine CreateType(Type type, EnumFieldType fieldType)
        {
            Type rawType    = null;
            bool isNullable = false;

            if (type.IsGenericType)
            {
                Type frameType = type.GetGenericTypeDefinition();
                if (frameType.FullName == "System.Nullable`1")
                {
                    Type[] arguments = type.GetGenericArguments();
                    rawType    = arguments [0];
                    isNullable = true;
                }
            }
            if (rawType == null)
            {
                rawType = type;
            }
            if (!rawType.IsEnum)
            {
                throw new LightDataException(RE.SingleFieldSelectTypeError);
            }
            EnumDataDefine mapping = null;

            mapping            = new EnumDataDefine(type, rawType, fieldType);
            mapping.IsNullable = isNullable;
            return(mapping);
        }
示例#3
0
        public static EnumDataDefine Create(Type type, EnumFieldType fieldType, int fieldOrder)
        {
            EnumDataDefine mapping = CreateType(type, fieldType);

            mapping.FieldOrder = fieldOrder;
            return(mapping);
        }
示例#4
0
        public EnumFieldMapping(Type type, string fieldName, string indexName, DataMapping mapping, bool isNullable, string dbType)
            : base(type, fieldName, indexName, mapping, isNullable, dbType)
        {
//			ObjectType = type;
//			Name = fieldName;
//			IndexName = indexName;
//			TypeMapping = mapping;
            if (string.IsNullOrEmpty(dbType) || dbType.IndexOf("char", 0, StringComparison.OrdinalIgnoreCase) == -1)
            {
                EnumType = EnumFieldType.EnumToInt;
            }
            else
            {
                EnumType = EnumFieldType.EnumToString;
            }
//			DBType = dbType;

            Array values = Enum.GetValues(ObjectType);

            _defaultValue = values.GetValue(0);

            for (int i = 0; i < values.Length; i++)
            {
                object obj = values.GetValue(i);
                _dict.Add(Convert.ToInt32(obj), obj);
            }
        }
示例#5
0
        private EnumDataDefine(Type type, Type rawType, EnumFieldType enumType)
            : base(type)
        {
            _rawType  = rawType;
            _enumType = enumType;
            Array values = Enum.GetValues(_rawType);

            _defaultValue = values.GetValue(0);
            for (int i = 0; i < values.Length; i++)
            {
                object obj = values.GetValue(i);
                _dict.Add(obj.GetHashCode(), obj);
            }
        }
        private FieldDefinition CreateEnumFieldDefinition()
        {
            FieldDefinition fieldDefinition = new FieldDefinition();

            fieldDefinition.Name     = "enum-field";
            fieldDefinition.Required = true;
            fieldDefinition.Label    = new LocalizedString();
            fieldDefinition.Label.Add("en", "enum description");
            EnumFieldType enumType = new EnumFieldType();

            enumType.Values = new List <EnumValue>();
            enumType.Values.Add(new EnumValue()
            {
                Key = "enum-key-1", Label = "enum-label-1"
            });
            enumType.Values.Add(new EnumValue()
            {
                Key = "enum-key-2", Label = "enum-label-2"
            });
            fieldDefinition.Type = enumType;
            return(fieldDefinition);
        }
示例#7
0
        private void buttonOK_Click(object sender, EventArgs e)
        {
            string fieldName = textBoxFieldName.Text.Trim();

            if (fieldName.Equals(string.Empty))
            {
                MessageBox.Show("字段名不能为空!", "提示");
                return;
            }
            int firstChar = 0;

            if (int.TryParse(fieldName.Substring(0, 1), out firstChar))
            {
                MessageBox.Show("字段名不能以数字开头!", "提示");
                return;
            }
            if (fieldName.Length > 10)
            {
                MessageBox.Show("字段名长度不能大于10!", "提示");
                return;
            }

            EnumFieldType fieldType  = EnumFieldType.None;
            int           fieldWidth = 0;
            string        type       = comboBoxFieldType.Text.Trim();

            if (string.IsNullOrEmpty(type))
            {
                MessageBox.Show("字段类型不能为空!", "提示");
                return;
            }
            else
            {
                switch (type)
                {
                case "Date":
                    fieldType  = EnumFieldType.Date;
                    fieldWidth = 10;
                    break;

                case "Double":
                    fieldType  = EnumFieldType.Double;
                    fieldWidth = 8;
                    break;

                case "INT32":
                    fieldType  = EnumFieldType.INT32;
                    fieldWidth = 4;
                    break;

                case "Text":
                    fieldType  = EnumFieldType.Text;
                    fieldWidth = 8000;
                    break;

                default:
                    MessageBox.Show("字段类型不匹配!", "提示");
                    return;
                }
            }

            if (layer != null)
            {
                GSOFieldDefn fieldDef = new GSOFieldDefn()
                {
                    //设置字段名称
                    Name = fieldName,
                    //设置字段类型
                    Type = fieldType,
                    //设置字段长度
                    Width = fieldWidth
                };

                var features = layer.GetAllFeatures();
                //遍历图层将字段信息添加到每个feature中
                for (int i = 0; i < features.Length; i++)
                {
                    var feature = features[i];
                    feature.AddField(fieldDef);
                }

                //保存图层
                layer.Save();

                //将新建列添加到数据表中
                dataGridView1.Columns.Add(fieldName, fieldName);
            }
            this.Close();
        }
示例#8
0
        /// <summary>
        /// 获取表中的字段信息(没有做版本判断)
        /// </summary>
        /// <param name="pFieldAtrrCollection"></param>
        /// <returns></returns>
        private MetaDataField GetMetaTableFieldByXMLAtr(XmlAttributeCollection pFieldAtrrCollection)
        {
            if (pFieldAtrrCollection == null || pFieldAtrrCollection.Count <= 0)
            {
                return(null);
            }
            MetaDataField pMetaDataField = new MetaDataField();

            ///获取表名称
            XmlAttribute pAttribute = pFieldAtrrCollection["Name"];

            if (pAttribute != null)
            {
                pMetaDataField.Name = pAttribute.Value;
            }

            ///获取要素代码
            pAttribute = pFieldAtrrCollection["Code"];
            if (pAttribute != null)
            {
                pMetaDataField.Code = pAttribute.Value;
            }

            ///获取字段类型
            pAttribute = pFieldAtrrCollection["Type"];
            if (pAttribute != null)
            {
                pMetaDataField.Type = pAttribute.Value;
            }

            ///获取字段长度
            pAttribute = pFieldAtrrCollection["Length"];
            if (pAttribute != null)
            {
                if (pAttribute.Value != "" && pAttribute.Value != null)
                {
                    int nLength = -1;
                    if (VCTFile.ConvertToInt32(pAttribute.Value, out nLength))
                    {
                        pMetaDataField.Length = nLength;
                    }
                }
            }

            ///获取字段精度
            pAttribute = pFieldAtrrCollection["Precision"];
            if (pAttribute != null)
            {
                int nPresion = -1;
                if (pAttribute.Value != "" && pAttribute.Value != null)
                {
                    if (VCTFile.ConvertToInt32(pAttribute.Value, out nPresion))
                    {
                        pMetaDataField.Presion = nPresion;
                    }
                }
            }

            ///获取要素代码字段
            pAttribute = pFieldAtrrCollection["FieldType"];
            if (pAttribute != null)
            {
                EnumFieldType pEnumType = EnumFieldType.Other;
                switch (pAttribute.Value)
                {
                case "bsm":
                    pEnumType = EnumFieldType.EntityID;
                    break;

                case "ysdm":
                    pEnumType = EnumFieldType.YSDM;
                    break;

                case "other":
                    pEnumType = EnumFieldType.Other;
                    break;

                default:
                    break;
                }
                pMetaDataField.FiledType = pEnumType;
            }

            ///获取约束条件 与值域 对照表 暂时不需要
            return(pMetaDataField);
        }
        private void btnCreateModel_Click(object sender, EventArgs e)
        {
            if (comboBoxDataSourceList.SelectedItem == null)
            {
                MessageBox.Show("请选择一个数据源!", "提示");
                return;
            }
            GSODataSource ds = Utility.getDataSourceByFullName(globeControl1, comboBoxDataSourceList.SelectedItem.ToString().Trim());

            if (ds == null)
            {
                MessageBox.Show("数据源不能为空!", "提示");
                return;
            }
            string newLayerName = textboxNewLayerName.Text.Trim();

            if (newLayerName == "")
            {
                MessageBox.Show("新建图层的名称不能为空!", "提示");
                return;
            }
            GSOFeatureDataset newFeatureDataset = ds.CreateFeatureDataset(newLayerName);

            if (newFeatureDataset == null)
            {
                MessageBox.Show("新建图层的名称不符合要求!", "提示");
                return;
            }
            if (radioButtonUseTemplate.Checked == true)
            {
                string   shpLayerName = comboBoxShpLayerList.Text;
                GSOLayer shpLayer     = globeControl1.Globe.Layers.GetLayerByCaption(shpLayerName);
                if (shpLayer == null)
                {
                    MessageBox.Show("您选择的图层模板不存在!", "提示");
                    return;
                }
                if (shpLayer.Dataset != null && shpLayer.Dataset is GSOFeatureDataset)
                {
                    GSOFeatureDataset shpFeatureDataset = shpLayer.Dataset as GSOFeatureDataset;
                    for (int i = 0; i < shpFeatureDataset.FieldCount; i++)
                    {
                        GSOFieldAttr fielddef = shpFeatureDataset.GetField(i);

                        GSOFieldAttr field = new GSOFieldAttr();
                        field.Name      = fielddef.Name;
                        field.Type      = fielddef.Type;
                        field.Width     = fielddef.Width;
                        field.Precision = fielddef.Precision;
                        bool res = newFeatureDataset.AddField(field);
                    }

                    newFeatureDataset.Save();
                    MessageBox.Show("图层创建成功!", "提示");
                }
                else
                {
                    MessageBox.Show("您选择的图层模板不是矢量图层!", "提示");
                    return;
                }
            }
            else if (radioButtonUseCustom.Checked == true)
            {
                int rowCount = dataGridView1.Rows.Count;
                for (int i = 0; i < rowCount; i++)
                {
                    string        fieldName         = dataGridView1.Rows[i].Cells[0].Value.ToString();
                    string        fieldType         = dataGridView1.Rows[i].Cells[1].Value.ToString();
                    string        fieldWidth        = dataGridView1.Rows[i].Cells[2].Value.ToString();
                    string        fieldPrecision    = dataGridView1.Rows[i].Cells[3].Value.ToString();
                    EnumFieldType enumFieldType     = EnumFieldType.Text;
                    int           intFieldWidth     = 2000;
                    int           intFieldPrecision = 0;
                    if (fieldType == "Double")
                    {
                        enumFieldType = EnumFieldType.Double;
                        intFieldWidth = 8;
                        if (int.TryParse(fieldPrecision, out intFieldPrecision) == false)
                        {
                            intFieldPrecision = 2;
                        }
                    }
                    else if (fieldType == "Int32")
                    {
                        enumFieldType = EnumFieldType.INT32;
                        intFieldWidth = 4;
                    }
                    else if (fieldType == "Date")
                    {
                        enumFieldType = EnumFieldType.Date;
                        intFieldWidth = 7;
                    }
                    else
                    {
                        int.TryParse(fieldWidth, out intFieldWidth);
                    }


                    GSOFieldAttr field = new GSOFieldAttr();
                    field.Name  = fieldName;
                    field.Type  = enumFieldType;
                    field.Width = intFieldWidth;
                    if (field.Type == EnumFieldType.Double)
                    {
                        field.Precision = intFieldPrecision;
                    }
                    bool res = newFeatureDataset.AddField(field);
                }
                newFeatureDataset.Save();
                MessageBox.Show("图层创建成功!", "提示");
            }
        }
示例#10
0
        //查询
        private void buttonConditionSelect_Click(object sender, EventArgs e)
        {
            if (layer == null)
            {
                MessageBox.Show("请选择一个图层!");
                return;
            }
            if (comboBoxConditionFieldName.Text == "" || comboBoxConditionFieldValue.Text == "" || comboBoxCondition.Text == "")
            {
                MessageBox.Show("请输入完整的查询条件!", "提示");
                return;
            }
            GSOFeatureDataset featureDataset   = layer.Dataset as GSOFeatureDataset;
            EnumFieldType     currentFieldType = EnumFieldType.Text;

            if (featureDataset != null)
            {
                GSOFieldAttr field = featureDataset.GetField(comboBoxConditionFieldName.Text);
                if (field != null)
                {
                    switch (field.Type)
                    {
                    case EnumFieldType.Double:
                    case EnumFieldType.INT32:
                        currentFieldType = EnumFieldType.Double;
                        break;

                    case EnumFieldType.Date:
                        currentFieldType = EnumFieldType.Date;
                        break;
                    }
                }
            }

            try
            {
                switch (comboBoxCondition.Text)
                {
                case "=":
                    for (int i = 0; i < layer.GetAllFeatures().Length; i++)
                    {
                        GSOFeature feature = layer.GetAt(i);
                        if (feature != null && feature.GetValue(comboBoxConditionFieldName.Text).ToString() == comboBoxConditionFieldValue.Text)
                        {
                            features.Add(feature);
                        }
                    }
                    break;

                case ">=":
                    for (int i = 0; i < layer.GetAllFeatures().Length; i++)
                    {
                        GSOFeature feature = layer.GetAt(i);
                        if (currentFieldType == EnumFieldType.Double)
                        {
                            if (feature != null && Double.Parse(feature.GetFieldAsDataTime(comboBoxConditionFieldName.Text).ToString()) >= Double.Parse(comboBoxConditionFieldValue.Text))
                            {
                                features.Add(feature);
                            }
                        }
                        else if (currentFieldType == EnumFieldType.Date)
                        {
                            if (feature != null && DateTime.Parse(feature.GetFieldAsDataTime(comboBoxConditionFieldName.Text).ToString()) >= DateTime.Parse(comboBoxConditionFieldValue.Text))
                            {
                                features.Add(feature);
                            }
                        }
                    }
                    break;

                case "<=":
                    for (int i = 0; i < layer.GetAllFeatures().Length; i++)
                    {
                        GSOFeature feature = layer.GetAt(i);
                        if (currentFieldType == EnumFieldType.Double)
                        {
                            if (feature != null && Double.Parse(feature.GetFieldAsDataTime(comboBoxConditionFieldName.Text).ToString()) <= Double.Parse(comboBoxConditionFieldValue.Text))
                            {
                                features.Add(feature);
                            }
                        }
                        else if (currentFieldType == EnumFieldType.Date)
                        {
                            if (feature != null && DateTime.Parse(feature.GetFieldAsDataTime(comboBoxConditionFieldName.Text).ToString()) <= DateTime.Parse(comboBoxConditionFieldValue.Text))
                            {
                                features.Add(feature);
                            }
                        }
                    }
                    break;

                case ">":
                    for (int i = 0; i < layer.GetAllFeatures().Length; i++)
                    {
                        GSOFeature feature = layer.GetAt(i);
                        if (currentFieldType == EnumFieldType.Double)
                        {
                            if (feature != null && Double.Parse(feature.GetFieldAsDataTime(comboBoxConditionFieldName.Text).ToString()) > Double.Parse(comboBoxConditionFieldValue.Text))
                            {
                                features.Add(feature);
                            }
                        }
                        else if (currentFieldType == EnumFieldType.Date)
                        {
                            if (feature != null && DateTime.Parse(feature.GetFieldAsDataTime(comboBoxConditionFieldName.Text).ToString()) > DateTime.Parse(comboBoxConditionFieldValue.Text))
                            {
                                features.Add(feature);
                            }
                        }
                    }
                    break;

                case "<":
                    for (int i = 0; i < layer.GetAllFeatures().Length; i++)
                    {
                        GSOFeature feature = layer.GetAt(i);
                        if (currentFieldType == EnumFieldType.Double)
                        {
                            if (feature != null && Double.Parse(feature.GetFieldAsDataTime(comboBoxConditionFieldName.Text).ToString()) < Double.Parse(comboBoxConditionFieldValue.Text))
                            {
                                features.Add(feature);
                            }
                        }
                        else if (currentFieldType == EnumFieldType.Date)
                        {
                            if (feature != null && DateTime.Parse(feature.GetFieldAsDataTime(comboBoxConditionFieldName.Text).ToString()) < DateTime.Parse(comboBoxConditionFieldValue.Text))
                            {
                                features.Add(feature);
                            }
                        }
                    }
                    break;
                }
                if (features == null)
                {
                    MessageBox.Show("请重新输入查询条件!", "提示");
                    return;
                }
                if (features.Length == 0)
                {
                    MessageBox.Show("没有找到符合查询条件的对象!", "提示");
                    return;
                }
                SetDataTable(features);
            }
            catch (Exception ex)
            {
                Log.PublishTxt(ex);
                MessageBox.Show(ex.Message, "提示");
                return;
            }
        }
示例#11
0
        private void buttonOK_Click(object sender, EventArgs e)
        {
            string fieldName = textBoxFieldName.Text.Trim();

            if (fieldName == "")
            {
                MessageBox.Show("字段名不能为空!", "提示");
                return;
            }
            int firstChar = 0;

            if (int.TryParse(fieldName.Substring(0, 1), out firstChar))
            {
                MessageBox.Show("字段名不能以数字开头!", "提示");
                return;
            }
            //if (isContainChinese(fieldName))
            //{
            //    MessageBox.Show("字段名不能包含中文!", "提示");
            //    return;
            //}
            if (fieldName.Length > 10)
            {
                MessageBox.Show("字段名长度不能大于10!", "提示");
                return;
            }

            EnumFieldType fieldType  = EnumFieldType.None;
            int           fieldWidth = 0;
            string        type       = comboBoxFieldType.Text.Trim();

            if (type == "")
            {
                MessageBox.Show("字段类型不能为空!", "提示");
                return;
            }
            else
            {
                switch (type)
                {
                case "Date":
                    fieldType  = EnumFieldType.Date;
                    fieldWidth = 10;
                    break;

                case "Double":
                    fieldType  = EnumFieldType.Double;
                    fieldWidth = 8;
                    break;

                case "INT32":
                    fieldType  = EnumFieldType.INT32;
                    fieldWidth = 4;
                    break;

                case "Text":
                    fieldType  = EnumFieldType.Text;
                    fieldWidth = 8000;
                    break;
                }
            }

            if (layer != null && layer.GetAllFeatures().Length > 0)
            {
                //GSOFieldDefn field = new GSOFieldDefn();
                //field.Name = fieldName;
                //field.Type = fieldType;
                //field.Width = fieldWidth;
                //for (int i = 0; i < layer.GetAllFeatures().Length; i++)
                //{
                //    GSOFeature feature = layer.GetAt(i);
                //    feature.AddField(field);
                //}
                //dataGridView1.Columns.Add(fieldName, fieldName);

                GSOFieldAttr field = new GSOFieldAttr();
                field.Name  = fieldName;
                field.Type  = fieldType;
                field.Width = fieldWidth;
                GSOFeatureDataset dataset = layer.Dataset as GSOFeatureDataset;
                if (dataset != null)
                {
                    dataset.AddField(field);
                    dataGridView1.Columns.Add(fieldName, fieldName);
                }
            }
            this.Close();
        }