Newer
Older
GHFX_REFACTOR / FrmMetadata.cs
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Linq;
using DevComponents.DotNetBar;

namespace Cyberpipe
{
    public partial class FrmMetadata : Office2007Form
    {

        
        bool selectedLayer;
        
        public FrmMetadata()
        {
            InitializeComponent();
            loadTreeView(layerTree);
        }

        private void loadTreeView(TreeView tv)//构建图层树
        {
            //tv.ShowPlusMinus = false;
            //tv.Nodes.Clear();            
            // tv.ImageList = imageList1;
            tv.ShowLines = true;
            tv.CheckBoxes = false;
            TreeUtils.InitLayerTree(null, tv, null);
        }
        /// <summary>
        /// 点击父节点则展开,点击子节点则编辑元数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
         private void layerTree_AfterSelect(object sender, TreeViewEventArgs e)
         {
             String layername = e.Node.Text;
             if (e.Node.GetNodeCount(true) != 0)
             { //点击父节点,则展开               
                 e.Node.Expand();
                 return;
             }
             searchLayerInfo(layername);  
             selectedLayer = true;
             clearBtn.Hide();
             completeBtn.Hide();
         } 
        //查询元数据
         private void searchLayerInfo(String layername) {

             string sql = "select casic_metadatacontent.\"MDABSTRACT\",casic_metadatacontent.\"MDDESCRIPTION\",casic_metadatacontent.\"MDAUTHOR\",casic_metadatacontent.\"NT\" from casic_metadatacontent,"
                 + " casic_metadatalayer where casic_metadatacontent.\"LAYERID\"  = casic_metadatalayer.\"LAYERID\" and casic_metadatalayer.\"LAYERNAME\"='" 
                 + layername+"'";
             DataTable table = OledbHelper.QueryTable(sql);
             if (table != null && table.Rows.Count > 0)
             {
                 groupBox1.Text =  layername;
                 consLblC.Text = table.Rows[0][0].ToString();
                 descLblC.Text = table.Rows[0][1].ToString();
                 authorLblC.Text = table.Rows[0][2].ToString();
                 ntLblC.Text = table.Rows[0][3].ToString();
             }
             else
             {
                 groupBox1.Text = layername;
                 //MessageBox.Show("没有查到该图层的元数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                 consLblC.Text = "";
                 descLblC.Text = "";
                 authorLblC.Text = "";
                 ntLblC.Text = "";
             }
             consTxt.Visible = false;
             descTxt.Visible = false;
             authorTxt.Visible = false;
             ntTxt.Visible = false;
             consLblC.Visible = true;
             descLblC.Visible = true;
             authorLblC.Visible = true;
             ntLblC.Visible = true;
         }
        //导出元数据
         private void printBtn_Click(object sender, EventArgs e) {
             //printDialog1.ShowDialog();                               //用默认的所有者使用通用对话框 
             //printPreviewDialog1.Document = this.printDocument1;      //设置打印文档 
             //printPreviewDialog1.ShowDialog();
             //if (printDialog1.ShowDialog() == DialogResult.OK)
             //{
             //    printDocument1.Print();
             //}

             //导出xml文件 
             XDocument doc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"),
                 new XElement("metadata", new XElement("cons", consLblC.Text),
                     new XElement("desc", descLblC.Text),
                     new XElement("author", authorLblC.Text),
                     new XElement("nt", ntLblC.Text)));
              
             FrmMetadataOutput FrmOut = new FrmMetadataOutput(doc,groupBox1.Text);//实例化Frm_Folder窗体
             FrmSetUp(FrmOut);//调用自定义方法FrmSetUp,对Frm_Radical窗体进行设置
             if (FrmOut.ShowDialog() == DialogResult.OK)//显示窗体 
             {
                 MessageBox.Show("导出成功");
             } 
         }
         public void FrmSetUp(Form Frm)  //Form或MouseEventArgs添加命名空间using System.Windows.Forms;
         { 
             Frm.StartPosition = FormStartPosition.CenterScreen;//使窗体居中 
         }
        //导入元数据
         private void importBtn_Click(object sender, EventArgs e)
         {
             //日志记录 
             LogManager.saveLog(Utility.userName,"元数据"+ importBtn.Text); 

             //判断此时layerTree有没有选中的图层
             if (selectedLayer)//有选中的图层,获得其名
             {
                 OpenFileDialog dlg = new OpenFileDialog();
                 dlg.Filter = "支持格式(*.xml)|*.xml|XML数据(*.xml)|";
                 dlg.Multiselect = true;

                 if (dlg.ShowDialog() == DialogResult.OK)
                 {
                     AddXMLMDdata(dlg.FileName);
                 }
             }
             else {
                 MessageBox.Show("请选择一个要导入元数据的图层");
             }
              
         }
         //读入元数据 
         private void AddXMLMDdata(string strFilePath)
         {
             DataSet dataSet = new DataSet();
             dataSet.ReadXml(strFilePath);   //读取XML文件中的内容

             //string attrtitle = dataSet.Tables[0].Rows[0][0].ToString();
             string attrcons = dataSet.Tables[0].Rows[0][0].ToString();
             string attrdesc = dataSet.Tables[0].Rows[0][1].ToString();
             string attrauthor = dataSet.Tables[0].Rows[0][2].ToString();
             string attrnt = dataSet.Tables[0].Rows[0][3].ToString();

             //this.titleLbl.Text = attrtitle;
             consLblC.Text = attrcons;
             descLblC.Text = attrdesc;
             authorLblC.Text = attrauthor;
             ntLblC.Text = attrnt;
             //MessageBox.Show(attrtitle + "==" + attrcons + "==" + attrdesc + "==" + attrauthor + "==" + attrnt);

             completeBtn.Visible = true;
             //this.clearBtn.Visible = true;
         }
        //新建/编辑元数据
         private void editBtn_Click(object sender, EventArgs e)
         {
             consTxt.Visible = true;
             descTxt.Visible = true;
             authorTxt.Visible = true;
             ntTxt.Visible = true;
             completeBtn.Visible = true;
             clearBtn.Visible = true;

             consTxt.Text = consLblC.Text;
             descTxt.Text = descLblC.Text;
             authorTxt.Text = authorLblC.Text;
             ntTxt.Text = ntLblC.Text;

             consLblC.Visible = false;
             descLblC.Visible = false;
             authorLblC.Visible = false;
             ntLblC.Visible = false;

         }
        //提交新建/编辑
         private void completeBtn_Click(object sender, EventArgs e)
         {
             //判断是新建还是编辑
             if (searchLayer(groupBox1.Text))
             {
                 //MessageBox.Show("new");
                 if (consLblC.Visible && (consTxt.Visible == false))//提交xml文件时新建
                 {
                     saveData("new", groupBox1.Text, consLblC.Text, descLblC.Text, authorLblC.Text, ntLblC.Text);  
                 }
                 else {
                     saveData("new", groupBox1.Text, consTxt.Text, descTxt.Text, authorTxt.Text, ntTxt.Text);     
                 }        
             }else{
                 //MessageBox.Show("update");
                 if (consLblC.Visible && (consTxt.Visible == false))//提交xml文件时更新
                 {
                     saveData("update", groupBox1.Text, consLblC.Text, descLblC.Text, authorLblC.Text, ntLblC.Text);  
                 }
                 else { //直接修改更新
                     saveData("update", groupBox1.Text, consTxt.Text, descTxt.Text, authorTxt.Text, ntTxt.Text);  
                 }  
             }

             consTxt.Visible = false;
             descTxt.Visible = false;
             authorTxt.Visible = false;
             ntTxt.Visible = false;
             completeBtn.Visible = false;
             clearBtn.Visible = false;

             consLblC.Visible = true;
             descLblC.Visible = true;
             authorLblC.Visible = true;
             ntLblC.Visible = true;

         }
         //判断是新建还是编辑
         private bool searchLayer(string layername) {
             string sql = "select \"LAYERID\" from casic_metadatalayer where \"LAYERNAME\"  = '" + layername + "'";

             DataTable table = OledbHelper.QueryTable(sql);
             return table == null || table.Rows.Count <= 0;
         }
         //保存元数据
         private void saveData(String method,String layername,String cons,String desc,String author,String nt) {
             
             if (method.Equals("new"))//插入
             {
                 string searchSQL = "select \"LAYERID\" from casic_metadatalayer order by \"LAYERID\" desc";
 
                 DataTable table = OledbHelper.QueryTable(searchSQL);
                 int layerid = 0;

                 if (table.Rows.Count > 0)
                 { 
                     int num = Convert.ToInt32(table.Rows[0][0].ToString());
                     layerid = num + 1;
                 }
                 else
                 {
                     layerid = 1;
                 }

                 //MessageBox.Show(layerid.ToString());
                 string insertSQL = "insert into casic_metadatalayer values ('" + layerid + "','" + layername + "')";//+
                 string insertSQL2 = "insert into casic_metadatacontent values ('" + layerid + "','" + cons + "','" + desc + "','" + author + "','" + nt + "')";
                 // "insert into casic_metadatacontent values ('" + layerid + "','" + cons + "','"+desc+"','"+author+"','"+nt+"')";
                 if ((OledbHelper.sqlExecuteNonQuery(insertSQL) <= 0) ||
                     (OledbHelper.sqlExecuteNonQuery(insertSQL2) <= 0)) return;
                 MessageBox.Show("保存元数据成功!");

                 consLblC.Text = cons;
                 descLblC.Text = desc;
                 authorLblC.Text = author;
                 ntLblC.Text = nt;
                 //DialogResult = DialogResult.OK;
                 //Close(); 
             }
             else { //更新  
                 string layeridSQL = "select layerid from casic_metadatalayer where LAYERNAME='"+layername+"'";
                 DataTable table = OledbHelper.QueryTable(layeridSQL);
                 string layerid = table.Rows[0][0].ToString();

                 string updateSQL = "update casic_metadatacontent set casic_metadatacontent.MDABSTRACT ='"
                    + cons.Trim() + "',casic_metadatacontent.MDDESCRIPTION ='" + desc.Trim()
                    + "',casic_metadatacontent.MDAUTHOR ='" + author.Trim() + "',casic_metadatacontent.NT ='"
                    + nt.Trim() + "' where casic_metadatacontent.LAYERID='" + layerid + "'";

                 if (OledbHelper.sqlExecuteNonQuery(updateSQL) <= 0) return;
                 MessageBox.Show("更新元数据成功!");
                 consLblC.Text = cons;
                 descLblC.Text = desc;
                 authorLblC.Text = author;
                 ntLblC.Text = nt;
                 //DialogResult = DialogResult.OK;
                 //Close();
             }
         
         }
        //清空元数据内容,但不删除该图层
         private void clearBtn_Click(object sender, EventArgs e)
         {
             consTxt.Text = "";
             descTxt.Text = "";
             authorTxt.Text = "";
             ntTxt.Text = "";
             string layername = groupBox1.Text;//this.titleLbl.Text;


             string clearSQL = "update casic_metadatacontent set MDABSTRACT ='" + consTxt.Text.Trim() + "',MDDESCRIPTION ='" + descTxt.Text.Trim() +
                 "',MDAUTHOR ='" + authorTxt.Text.Trim() + "',NT ='" + ntTxt.Text.Trim()
                 + "' where LAYERID in (select LAYERID from casic_metadatalayer where LAYERNAME='" 
                 + layername + "')";
             if (OledbHelper.sqlExecuteNonQuery(clearSQL) > 0)
             {
                 MessageBox.Show("清空元数据成功!");
                 //DialogResult = DialogResult.OK;
                 //Close();
             } 
         }
        //设置打印窗口
         private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
         {
             //绘制label1中的内容 
             e.Graphics.DrawString(groupBox1.Text+"元数据", new Font("宋体", 20, FontStyle.Regular), Brushes.Black, 350, 10); 

             //绘制textBox1中的内容 
             e.Graphics.DrawString(consLbl.Text, new Font("宋体", 15, FontStyle.Bold), Brushes.Black, 10, 100);
             e.Graphics.DrawString(consLblC.Text, new Font("宋体", 15, FontStyle.Regular), Brushes.Black, 10, 120);

             //绘制label3中的内容 
             e.Graphics.DrawString(descLbl.Text, new Font("宋体", 15, FontStyle.Bold), Brushes.Black, 10, 200);
             e.Graphics.DrawString(descLblC.Text, new Font("宋体", 15, FontStyle.Regular), Brushes.Black,10, 220);

             //绘制textBox2中的内容 
             e.Graphics.DrawString(authorLbl.Text, new Font("宋体", 15, FontStyle.Bold), Brushes.Black, 10, 300);
             e.Graphics.DrawString(authorLblC.Text, new Font("宋体", 15, FontStyle.Regular), Brushes.Black, 10, 320);

             //绘制label3中的内容 
             e.Graphics.DrawString(ntLbl.Text, new Font("宋体", 15, FontStyle.Bold), Brushes.Black, 10, 400);
             e.Graphics.DrawString(ntLblC.Text, new Font("宋体", 15, FontStyle.Regular), Brushes.Black, 10, 420);

         }

         private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
         {
             consLblC.Text = "";
             descLblC.Text = "";
             authorLblC.Text = "";
             ntLblC.Text = "";
             string layername = groupBox1.Text;

             string clearSQL1 = "delete casic_metadatacontent where \"LAYERID\" in(select \"LAYERID\" from casic_metadatalayer where \"LAYERNAME\"= '" + layername + "')";
             string clearSQL2 = "delete casic_metadatalayer where \"LAYERNAME\"= '" + layername + "'";
             OledbHelper.getsqlcom(clearSQL1); 
             OledbHelper.getsqlcom(clearSQL2);
             MessageBox.Show("删除元数据成功!"); 
         }

         

        
          
    }

       
}