public List <IObjectTemplate> GetTemplatesByDataset(string datasetName) { List <IObjectTemplate> templates = new List <IObjectTemplate>(); ITable pTemplateTable = _workspace.OpenTable("YT_TEMPLATE_FEATURECLASS"); IQueryFilter pFilter1 = new QueryFilter(); pFilter1.WhereClause = "Dataset='" + datasetName + "'"; ICursor pCursor = pTemplateTable.Search(pFilter1, false); int[] fieldIndexes = new int[6]; IRow pRow = pCursor.NextRow(); IQueryFilter pQueryFilter = new QueryFilter(); IObjectTemplate oneTemplate = null; while (pRow != null) { oneTemplate = new ObjectTemplate(pRow); templates.Add(oneTemplate); pRow = pCursor.NextRow(); } ComReleaser.ReleaseCOMObject(pFilter1); ComReleaser.ReleaseCOMObject(pCursor); ComReleaser.ReleaseCOMObject(pTemplateTable); return(templates); }
public bool DeleteTemplate(string templateName) { try { IObjectTemplate objectTemplate = _templates.FirstOrDefault(c => c.Name == templateName); if (objectTemplate == null || objectTemplate.ID <= 0) { return(true); } if (_workspace == null) { Connect(); } ITable pTable = _workspace.OpenTable("YT_TEMPLATE_FEATURECLASS"); IWorkspaceEdit pWksEdit = _workspace as IWorkspaceEdit; pWksEdit.StartEditing(true); pWksEdit.StartEditOperation(); IRow pRow = pTable.GetRow(objectTemplate.ID); if (pRow != null) { pRow.Delete(); } //pTable = _workspace.OpenTable("YT_TEMPLATE_FIELD"); //foreach (IYTField ytField in objectTemplate.Fields) //{ // if (ytField.ID > 0) // { // pRow = pTable.GetRow(ytField.ID); // if(pRow != null) pRow.Delete(); // } //} pWksEdit.StopEditOperation(); pWksEdit.StopEditing(true); DisConnect(); return(true); } catch (Exception ex) { MessageService.Current.Warn("系统发生错误:" + ex.Message); return(false); throw; } }
public bool AddTemplate(IObjectTemplate template) { try { IObjectTemplate objectTemplate = _templates.FirstOrDefault(c => c.Name == template.Name); if (objectTemplate == null) { MessageService.Current.Warn("该模板已经存在,请更换名字!"); return(false); } if (_workspace == null) { Connect(); } ITable pTable = _workspace.OpenTable("YT_TEMPLATE_FEATURECLASS"); IWorkspaceEdit pWksEdit = _workspace as IWorkspaceEdit; pWksEdit.StartEditing(true); pWksEdit.StartEditOperation(); IRow pRow = pTable.CreateRow(); template.UpdateRow(pRow); //pTable = _workspace.OpenTable("YT_TEMPLATE_FIELD"); //int tmpIndex = pTable.FindField("TemplateName"); //foreach (IYTField ytField in template.Fields) //{ // pRow = pTable.CreateRow(); // pRow.set_Value(tmpIndex,template.Name); // ytField.UpdateRow(pRow); //} pWksEdit.StopEditOperation(); pWksEdit.StopEditing(true); _templates.Add(template); ComReleaser.ReleaseCOMObject(pTable); DisConnect(); return(true); } catch (Exception ex) { MessageService.Current.Warn("系统发生错误:" + ex.Message); return(false); throw; } }
private void LoadObjectEdit() { TreeNode currentNode = trvDatabase.SelectedNode; if (currentNode.Parent.Text == "模板") { IObjectTemplate template = currentNode.Tag as IObjectTemplate; frmEditTemplate frm = new frmEditTemplate(); frm.SetTemplate(template); frm.SetDatabase(template.Database); frm.ShowDialog(); currentNode.Tag = frm.GetTemplate(); currentNode.Text = frm.GetTemplate().Name; } if (currentNode.Parent.Text == "数据字典") { IYTDomain domain = currentNode.Tag as IYTDomain; frmEditDomain frm = new frmEditDomain(); frm.SetDatabase(currentNode.Parent.Parent.Tag as ITemplateDatabase); frm.SetDomain(domain); DialogResult result = frm.ShowDialog(); if (result == DialogResult.OK) { TreeNode pNode = currentNode.Parent; pNode.Nodes.Clear(); LoadDomains(pNode.Parent.Tag as ITemplateDatabase, pNode); } currentNode.Tag = frm.GetDomain(); } if (currentNode.Parent.Text == "数据集") { IObjectDataset dataset = currentNode.Tag as IObjectDataset; frmEditDataset frm = new frmEditDataset(); frm.SetDatabase(currentNode.Parent.Parent.Tag as ITemplateDatabase); frm.Dataset = dataset; DialogResult result = frm.ShowDialog(); if (result == DialogResult.OK) { currentNode.Tag = frm.Dataset; currentNode.Text = frm.Dataset.Name; } } }
public IObject(Map a_map, DofusCell a_cell, int a_id) { _id = a_id; _map = a_map; _cell = a_cell; _state = (int)IObjectEnum.STATE_FULL; int respawnTime = 10000; _template = IObjectTemplateTable.Get(_id); if (_template != null) { respawnTime = _template.RespawnTime; } if (respawnTime != -1) { _respawnTimer = new Timer(respawnTime); _respawnTimer.Elapsed += new ElapsedEventHandler(_timer_Elapsed); _respawnTimer.Enabled = true; } }
//public void LoadTemplates() //{ // if (_workspace == null) // { // Connect(); // } // if (_templates!=null) // _templates.Clear(); // else // _templates=new List<IObjectTemplate>(); // ITable pTemplateTable = _workspace.OpenTable("YT_TEMPLATE_FEATURECLASS"); // ITable pTemplateFields= _workspace.OpenTable("YT_TEMPLATE_FIELD"); // ITableSort tableSort = new TableSort(); // tableSort.Table = pTemplateTable; // tableSort.Fields = "TemplateName"; // tableSort.Sort(null); // ICursor pCursor = tableSort.Rows; // int[] fieldIndexes = new int[6]; // IRow pRow = pCursor.NextRow(); // IQueryFilter pQueryFilter = new QueryFilter(); // IObjectTemplate oneTemplate = null; // while (pRow != null) // { // oneTemplate = new ObjectTemplate(pRow); // pQueryFilter.WhereClause = "TemplateName='" + oneTemplate.Name+"'"; // ICursor pCursor1 = pTemplateFields.Search(pQueryFilter, false); // IRow fieldRow = pCursor1.NextRow(); // while (fieldRow != null) // { // YTField ytField=new YTField(fieldRow); // oneTemplate.Fields.Add(ytField); // fieldRow = pCursor1.NextRow(); // } // ComReleaser.ReleaseCOMObject(pCursor1); // oneTemplate.Database = this; // _templates.Add(oneTemplate); // pRow = pCursor.NextRow(); // } // ComReleaser.ReleaseCOMObject(pCursor); // ComReleaser.ReleaseCOMObject(pTemplateTable); // ComReleaser.ReleaseCOMObject(pTemplateFields); //} public void LoadTemplates() { if (_workspace == null) { Connect(); } if (_templates != null) { _templates.Clear(); } else { _templates = new List <IObjectTemplate>(); } ITable pTemplateTable = _workspace.OpenTable("YT_TEMPLATE_FEATURECLASS"); ITableSort tableSort = new TableSort(); tableSort.Table = pTemplateTable; tableSort.Fields = "TemplateName"; tableSort.Sort(null); ICursor pCursor = tableSort.Rows; int[] fieldIndexes = new int[6]; IRow pRow = pCursor.NextRow(); IQueryFilter pQueryFilter = new QueryFilter(); IObjectTemplate oneTemplate = null; while (pRow != null) { oneTemplate = new ObjectTemplate(pRow); oneTemplate.Database = this; _templates.Add(oneTemplate); pRow = pCursor.NextRow(); } ComReleaser.ReleaseCOMObject(pCursor); ComReleaser.ReleaseCOMObject(pTemplateTable); }
private void DeleteObject() { TreeNode currentNode = trvDatabase.SelectedNode; ITemplateDatabase database = currentNode.Parent.Parent.Tag as ITemplateDatabase; if (currentNode.Parent.Text == "模板") { IObjectTemplate template = currentNode.Tag as IObjectTemplate; database.DeleteObject(template.ID, enumTemplateObjectType.FeatureClass); } if (currentNode.Parent.Text == "数据字典") { IYTDomain domain = currentNode.Tag as IYTDomain; database.DeleteObject(domain.ID, enumTemplateObjectType.Domain); } if (currentNode.Parent.Text == "数据集") { IObjectDataset dataset = currentNode.Tag as IObjectDataset; database.DeleteObject(dataset.ID, enumTemplateObjectType.FeatureDataset); } }
private void mnuCreateObject_Click(object sender, EventArgs e) { TreeNode currentNode = trvDatabase.SelectedNode; ITemplateDatabase templateDatabase = currentNode.Parent.Parent.Tag as ITemplateDatabase; if (currentNode.Parent.Text == "模板") { IObjectTemplate template = currentNode.Tag as IObjectTemplate; frmQuickCreateFeatureClass frm = new frmQuickCreateFeatureClass(_context, _plugin); frm.SingleTemplate = template; frm.ShowDialog(); } if (currentNode.Parent.Text == "数据字典") { } if (currentNode.Parent.Text == "数据集") { IObjectDataset dataset = currentNode.Tag as IObjectDataset; frmQuickCreateFeatureDataset frm = new frmQuickCreateFeatureDataset(_context, templateDatabase); frm.SetDataset(dataset.Name); frm.ShowDialog(); } }
private void simpleButton1_Click(object sender, EventArgs e) { if (Validate(true) == false) { return; } object createLoc; IWorkspace2 workspace2 = null; IObjectDataset dataset = _database.Datasets.FirstOrDefault(c => c.Name == cmbTemplate.SelectedItem.ToString()); if (dataset == null) { return; } IGxDatabase pDataset = txtDB.Tag as IGxDatabase; IWorkspace workspace = ((IGxObject)pDataset).InternalObjectName.Open(); workspace2 = workspace as IWorkspace2; string namePre = txtPreName.Text.Trim(); string nameNext = txtNameNext.Text.Trim(); string aliasPre = txtAliasPre.Text.Trim(); string aliasNext = txtAliasNext.Text.Trim(); if (!chkNamePre.Checked) { namePre = ""; aliasPre = ""; } if (!chkNameNext.Checked) { nameNext = ""; aliasNext = ""; } string dsName = CombineName(dataset.BaseName, namePre, nameNext); if (workspace == null) { return; } if (workspace2.NameExists[esriDatasetType.esriDTFeatureDataset, dsName]) { MessageService.Current.Warn("该名称已经存在,请重新输入!"); return; } ISpatialReference pSpatialReference = _map.SpatialReference; IFeatureDataset pNewDataset = WorkspaceOperator.CreateFeatureDataSet(workspace, dsName, pSpatialReference) as IFeatureDataset; string dsAliasName = CombineName(dataset.AliasName, aliasPre, aliasNext); //(pNewDataset as IClassSchemaEdit).AlterAliasName(dsAliasName); foreach (int selectedItem in chkFeatureClasses.CheckedIndices) { IObjectTemplate template = _templates[selectedItem]; string fcName = CombineName(template.BaseName, namePre, nameNext); string fcAliasName = CombineName(template.AliasName, aliasPre, aliasNext); if (template.FeatureType == esriFeatureType.esriFTAnnotation) { WorkspaceOperator.CreateAnnoFeatureClass(fcName, pNewDataset, 1000); } else { IFieldsEdit pFieldsEdit = new FieldsClass() as IFieldsEdit; IField pField = FieldHelper.CreateOIDField(); if (pFieldsEdit.FindField(pField.Name) < 0) { pFieldsEdit.AddField(pField); } pField = FieldHelper.CreateGeometryField(template.GeometryType, _map.SpatialReference); if (pFieldsEdit.FindField(pField.Name) < 0) { pFieldsEdit.AddField(pField); } string keyName = ""; foreach (YTField ytField in template.Fields) { pField = ytField.CreateField(); if (pFieldsEdit.FindField(pField.Name) < 0) { pFieldsEdit.AddField(pField); } if (ytField.IsKey) { keyName = ytField.Name; } } IFeatureClass pClass = WorkspaceOperator.CreateFeatureClass(pNewDataset, fcName, pSpatialReference, template.FeatureType, template.GeometryType, (IFields)pFieldsEdit, null, null, ""); (pClass as IClassSchemaEdit).AlterAliasName(fcAliasName); if (pClass == null) { MessageService.Current.Info(fcName + "创建失败!"); continue; } } } MapHelper.AddDataset(_map as IBasicMap, pNewDataset, dsAliasName); MessageService.Current.Info("创建成功层!"); DialogResult = DialogResult.OK; }
public ObjectTemplateInfo(IObjectTemplate template) { _Template = template; }
public bool SaveTemplate(IObjectTemplate template) { try { if (_workspace == null) { Connect(); } ITable pTable = _workspace.OpenTable("YT_TEMPLATE_FEATURECLASS"); IWorkspaceEdit pWksEdit = _workspace as IWorkspaceEdit; pWksEdit.StartEditing(true); pWksEdit.StartEditOperation(); IRow pRow; int oldID = template.ID; if (oldID > 0) { pRow = pTable.GetRow(template.ID); } else { pRow = pTable.CreateRow(); } template.UpdateRow(pRow); //pTable = _workspace.OpenTable("YT_TEMPLATE_FIELD"); //if (oldID > 0) //{ // //删除数据库中原有的字段定义 // IQueryFilter filter=new QueryFilterClass(); // filter.WhereClause = "TemplateName='" + template.Name + "'"; // ICursor pCursor = pTable.Search(filter, false); // pRow = pCursor.NextRow(); // while (pRow != null) // { // pRow.Delete(); // pRow = pCursor.NextRow(); // } // ComReleaser.ReleaseCOMObject(pCursor); //} //int tmpIndex = pTable.FindField("TemplateName"); //foreach (IYTField ytField in template.Fields) //{ // pRow = pTable.CreateRow(); // pRow.set_Value(tmpIndex, template.Name); // ytField.UpdateRow(pRow); //} pWksEdit.StopEditOperation(); pWksEdit.StopEditing(true); if (oldID <= 0) { _templates.Add(template); } ComReleaser.ReleaseCOMObject(pTable); DisConnect(); return(true); } catch (Exception ex) { MessageService.Current.Warn("系统发生错误:" + ex.Message); return(false); throw; } }
private void mnuPasteObject_Click(object sender, EventArgs e) { if (_copyObject == null) { return; } TreeNode currentNode = trvDatabase.SelectedNode; ITemplateDatabase database = currentNode.Tag as ITemplateDatabase; if (_copyObject.Parent.Text == "模板") { IObjectTemplate template = _copyObject.Tag as IObjectTemplate; template.ID = -1; template.Database = database; frmEditTemplate frm = new frmEditTemplate(); frm.SetTemplate(template); frm.SetDatabase(database); DialogResult result = frm.ShowDialog(); if (result == DialogResult.OK) { TreeNode pNode = currentNode.Nodes[0]; pNode.Nodes.Clear(); LoadTemplates(database, pNode); } } if (_copyObject.Parent.Text == "数据字典") { IYTDomain domain = _copyObject.Tag as IYTDomain; domain.ID = -1; frmEditDomain frm = new frmEditDomain(); frm.SetDatabase(database); frm.SetDomain(domain); DialogResult result = frm.ShowDialog(); if (result == DialogResult.OK) { TreeNode pNode = currentNode.Nodes[1]; pNode.Nodes.Clear(); LoadDomains(database, pNode); } //currentNode.Tag = frm.GetDomain(); } if (_copyObject.Parent.Text == "数据集") { IObjectDataset dataset = _copyObject.Tag as IObjectDataset; dataset.ID = -1; frmEditDataset frm = new frmEditDataset(); frm.SetDatabase(database); frm.Dataset = dataset; DialogResult result = frm.ShowDialog(); if (result == DialogResult.OK) { TreeNode pNode = currentNode.Nodes[2]; pNode.Nodes.Clear(); LoadDatasets(database, pNode); } } _copyObject = null; }
private void simpleButton1_Click(object sender, EventArgs e) { if (Validate(true) == false) { return; } string locType = label1.Tag != null?label1.Tag.ToString() : ""; if (string.IsNullOrEmpty(locType)) { return; } object createLoc; IWorkspace2 workspace2 = null; IObjectTemplate template = null; if (_isSingle) { template = _template; } else { template = _plugin.TemplateDatabase.Templates.FirstOrDefault(c => c.Name == cmbTemplate.SelectedItem.ToString()); } if (template == null) { return; } if (locType.Contains("Dataset")) { IGxDataset pDataset = txtDB.Tag as IGxDataset; IFeatureDataset fDataset = ((IGxObject)pDataset).InternalObjectName.Open(); workspace2 = fDataset.Workspace as IWorkspace2; createLoc = fDataset; } else { IGxDatabase pDatabase = txtDB.Tag as IGxDatabase; IFeatureWorkspace workspace = ((IGxObject)pDatabase).InternalObjectName.Open(); workspace2 = workspace as IWorkspace2; createLoc = workspace; } if (createLoc == null) { return; } string fcName = txtName.EditValue.ToString().Trim(); IWorkspace2 workSpace2 = createLoc is IFeatureDataset ? ((IFeatureDataset)createLoc).Workspace as IWorkspace2 : createLoc as IWorkspace2; if (workSpace2.NameExists[esriDatasetType.esriDTFeatureClass, fcName]) { MessageService.Current.Warn("该名称已经存在,请重新输入!"); return; } ISpatialReference pSpatialReference = _map.SpatialReference; IFieldsEdit pFieldsEdit = new Fields() as IFieldsEdit; IField pField = FieldHelper.CreateOIDField(); pFieldsEdit.AddField(pField); if (locType.Contains("Dataset")) { IGeoDataset pFDataset = createLoc as IGeoDataset; pField = FieldHelper.CreateGeometryField(template.GeometryType, pFDataset.SpatialReference); pSpatialReference = pFDataset.SpatialReference; pFieldsEdit.AddField(pField); } else { pField = FieldHelper.CreateGeometryField(template.GeometryType, _map.SpatialReference); pFieldsEdit.AddField(pField); } string keyName = ""; foreach (YTField ytField in template.Fields) { pField = ytField.CreateField(); pFieldsEdit.AddField(pField); if (ytField.IsKey) { keyName = ytField.Name; } } IFeatureClass pClass = WorkspaceOperator.CreateFeatureClass(createLoc, txtName.Text, pSpatialReference, template.FeatureType, template.GeometryType, (IFields)pFieldsEdit, null, null, ""); if (pClass == null) { MessageService.Current.Info("创建失败!"); return; } if (pClass != null && chkIndex.Checked == false) { MapHelper.AddFeatureLayer((IBasicMap)_map, pClass); MessageService.Current.Info("创建成功并已经加载图层!"); DialogResult = DialogResult.OK; return; } IEnvelope pEnv = new Envelope() as IEnvelope; pEnv.PutCoords(Convert.ToDouble(txtXMin.Text), Convert.ToDouble(txtYMin.Text), Convert.ToDouble(txtXMax.Text), Convert.ToDouble(txtYMax.Text)); IWorkspaceEdit pWksEdit = ((IDataset)pClass).Workspace as IWorkspaceEdit; pWksEdit.StartEditing(false); pWksEdit.StartEditOperation(); IndexHelper.CreateGridIndex(pClass, pEnv, Convert.ToDouble(txtWidth.Text), Convert.ToDouble(txtHeight.Text), keyName); pWksEdit.StopEditOperation(); pWksEdit.StopEditing(true); MapHelper.AddFeatureLayer((IBasicMap)_map, pClass); MessageService.Current.Info("创建成功并已经加载图层!"); DialogResult = DialogResult.OK; }
private bool SaveTemplate() { _tmpTemplate = new ObjectTemplate(); _tmpTemplate.Name = txtName.EditValue == null?"": txtName.EditValue.ToString().Trim(); _tmpTemplate.AliasName = txtAliasName.EditValue == null?"": txtAliasName.EditValue.ToString().Trim(); _tmpTemplate.BaseName = txtBaseName.EditValue == null?"": txtBaseName.EditValue.ToString().Trim(); _tmpTemplate.FeatureTypeName = cmbFeatureType.SelectedValue.ToString(); _tmpTemplate.GeometryTypeName = cmbGeometryTypes.SelectedValue.ToString(); _tmpTemplate.DatasetName = cmbDatasets.SelectedValue == null ? "":cmbDatasets.SelectedValue.ToString(); string msg = ""; for (int i = 0; i < _fieldTable.Rows.Count; i++) { DataRow row = _fieldTable.Rows[i]; YTField pField = new YTField() { Name = row["FieldName"].ToString(), AliasName = row["AliasName"].ToString(), FieldTypeName = row["FieldType"].ToString(), AllowNull = (bool)row["AllowNull"], IsKey = (bool)row["IsKey"], Length = (int)row["FieldLength"], Precision = (int)row["Precision"], DomainName = row["DomainName"].ToString() }; if (pField.IsValid(out msg) == false) { MessageBox.Show(msg, "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); return(false); } _tmpTemplate.Fields.Add(pField); } int oid = _database.GetObjectID(_tmpTemplate.Name, enumTemplateObjectType.FeatureClass); if (_template.ID > 0) { if (_template.ID != oid) { MessageBox.Show("已经有同名称的模板存在,请修改名称!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); return(false); } } else { if (oid > 0) { MessageBox.Show("已经有同名称的模板存在,请修改名称!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); return(false); } } try { _tmpTemplate.ID = _template.ID; _tmpTemplate.Database = _template.Database; _template.Database.SaveTemplate(_tmpTemplate); _template = _tmpTemplate; } catch (Exception ex) { MessageBox.Show("程序发生错误" + ex.Message, "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); return(false); } return(true); }
public void SetTemplate(IObjectTemplate template) { _template = template; LoadTemplateValues(); }