Example #1
0
        /// <summary>
        /// Returns newmetadata string from collection
        /// </summary>
        /// <param name="metadataObject"></param>
        /// <returns></returns>
        private string GetNewMetadataText(MetadataInfo metadataObject)
        {
            //--Retreive from collection
            string         RetVal         = String.Empty;
            XmlDeclaration xmlDeclaration = default(XmlDeclaration);
            XmlElement     RootNode       = default(XmlElement);

            //--Construct xml.
            XmlDocument xmldocNew    = new XmlDocument();
            XmlElement  CategoryNode = default(XmlElement);
            XmlElement  ParaNode     = default(XmlElement);

            xmlDeclaration = xmldocNew.CreateXmlDeclaration("1.0", "utf-8", null);
            RootNode       = xmldocNew.CreateElement(MetadataManagerConstants.Metadata);
            xmldocNew.InsertBefore(xmlDeclaration, xmldocNew.DocumentElement);
            xmldocNew.AppendChild(RootNode);

            try
            {
                //--construct xml tree
                foreach (CategoryInfo Category in metadataObject.Categories.Values)
                {
                    //--Create new xmlelement as Category
                    CategoryNode = xmldocNew.CreateElement(MetadataManagerConstants.Category);

                    //--Set attribute values of category element.
                    CategoryNode.SetAttribute(MetadataManagerConstants.NameAttribute, Category.CategoryName);

                    // Create para node
                    ParaNode          = xmldocNew.CreateElement(MetadataManagerConstants.Para);
                    ParaNode.InnerXml = Category.MetadataText;

                    // append it into Category node
                    CategoryNode.AppendChild(ParaNode);

                    // --Append it into metadata node
                    xmldocNew.DocumentElement.AppendChild(CategoryNode);
                }

                //--return xml string.
                RetVal = xmldocNew.InnerXml;
            }
            catch
            {
                RetVal = String.Empty;
            }

            return(RetVal);
        }
Example #2
0
        /// <summary>
        /// Returns MetadaataInfo object from the given metadata text
        /// </summary>
        /// <param name="mdElementType"></param>
        /// <returns></returns>
        private MetadataInfo GetMetadataInfoFrmMetadataText(string metadataText, MetadataElementType mdElementType)
        {
            MetadataInfo RetVal = new MetadataInfo();
            CategoryInfo Category;
            XmlDocument  XmlDoc;

            //string ConcatinatedParaNodeText = string.Empty;
            //XmlElement CategoryNode = default(XmlElement);
            //XmlNode CategoryXmlNode = null;
            //DataTable CategoryTable;
            //XmlElement RootNode = default(XmlElement);

            //XmlDocument XmldocumentNew = new XmlDocument();
            //XmlDeclaration xmlDeclaration = default(XmlDeclaration);
            //string XmlString = string.Empty;
            //String ConcatenatedParaNodeText = string.Empty;
            //string CategoryParaXml;

            try
            {
                //xmlDeclaration = XmldocumentNew.CreateXmlDeclaration("1.0", "utf-8", null);
                //RootNode = XmldocumentNew.CreateElement(MetadataManagerConstants.Metadata);
                //XmldocumentNew.InsertBefore(xmlDeclaration, XmldocumentNew.DocumentElement);
                //XmldocumentNew.AppendChild(RootNode);

                //--Load xml from database.
                XmlDoc = new XmlDocument();
                XmlDoc.LoadXml(metadataText);

                //--get categories
                foreach (XmlNode Node in XmlDoc.SelectNodes("metadata/Category"))
                {
                    Category = new CategoryInfo();
                    Category.CategoryName = Convert.ToString(Node.Attributes["name"].Value);
                    Category.CategoryType = DIQueries.MetadataElementTypeText[mdElementType];

                    // get metadata text from xml's Para node
                    if (Node.ChildNodes.Count > 0)
                    {
                        Category.MetadataText = Convert.ToString(Node.ChildNodes[0].InnerXml);
                    }

                    // add category into metadataInfo object
                    if (!RetVal.Categories.ContainsKey(Category.CategoryName))
                    {
                        RetVal.Categories.Add(Category.CategoryName, Category);
                    }
                }

                //foreach (DataRow CategoryNameRow in CategoryTable.Rows)
                //{
                //    Category = new CategoryInfo();
                //    Category.CategoryName = Convert.ToString(CategoryNameRow[DIColumns.Metadata_Category.CategoryName]);
                //    Category.CategoryType = metadataType.ToString();

                //    //--Create new xmlelement as Category
                //    CategoryNode = XmldocumentNew.CreateElement(MetadataManagerConstants.Category);

                //    //--Set attribute values of category element.
                //    CategoryNode.SetAttribute(MetadataManagerConstants.NameAttribute, Category.CategoryName);

                //    //--Select Category node with appropriate attribute name(category name)
                //    CategoryXmlNode = XmlDoc.SelectSingleNode(MetadataManagerConstants.CategoryName + Category.CategoryName + MetadataManagerConstants.ClosingSymbol);

                //    //--Add in category collection
                //    if (CategoryXmlNode != null)
                //    {
                //        CategoryParaXml = CategoryXmlNode.InnerXml;
                //        Category.MetadataText = CategoryXmlNode.InnerXml;

                //        //--check for category in collection
                //        if (!RetVal.Categories.ContainsKey(Category.CategoryName))
                //        {
                //            RetVal.Categories.Add(Category.CategoryName, Category);
                //        }
                //    }
                //}
                //return RetVal;
            }
            catch
            {
                RetVal = null;
            }

            return(RetVal);
        }
Example #3
0
        ///// <summary>
        ///// Save metadata into database
        ///// </summary>
        ///// <param name="mdType"></param>
        ///// <param name="elementNid"></param>
        ///// <param name="metadataString"></param>
        //private void SaveMetadataIntoDatabase(MetaDataType mdType, int elementNid, string metadataString)
        //{

        //}

        #endregion

        #region "-- Public --"

        #region "-- Properties --"


        ///// <summary>
        ///// stores updated categories
        ///// </summary>
        //private Dictionary<int, string> _UpdatedCategories = new Dictionary<int, string>();
        //public Dictionary<int, string> UpdatedCategories
        //{
        //    get { return this._UpdatedCategories; }
        //    set { this._UpdatedCategories = value; }
        //}
        //private DataTable CategoryTable;


        //private DIConnection _DBConnection;
        ///// <summary>
        ///// Gets or sets instance of DIConnection
        ///// </summary>
        //public DIConnection DBConnection
        //{
        //    get { return this._DBConnection; }
        //    set { this._DBConnection = value; }

        //}

        //private DIQueries _DBQueries;
        ///// <summary>
        ///// Gets or sets instance of DIQueries
        ///// </summary>
        //public DIQueries DBQueries
        //{
        //    get { return this._DBQueries; }
        //    set { this._DBQueries = value; }
        //}

        #endregion

        #region "-- Methods --"

        ///// <summary>
        ///// Removes categories from collection.
        ///// </summary>
        //public void RemoveCategoriesFromCollection()
        //{
        //    this.UpdatedCategories.Clear();
        //}

        /// <summary>
        /// Update category in metadata in database.
        /// </summary>
        /// <param name="oldCategories"></param>
        public void UpdateCategoryInMetadataIntoDB(Dictionary <int, string> oldCategories, MetaDataType mdType)
        {
            DataTable           Table = null;
            MetadataInfo        MetadataInfoObject = null;
            MetadataElementType MDElementType      = MetadataElementType.Indicator;
            string    MetadataColumnName           = string.Empty;
            string    MetadataString       = string.Empty;
            string    ElementNidColumnName = string.Empty;
            int       ElementNid           = 0;
            string    MetadataText         = string.Empty;
            DataTable CategoryTable;

            MetaDataBuilder MDBuilder = new MetaDataBuilder(this.DBConnection, this.DBQueries);

            // 1. get category table order by category_order
            CategoryTable = this.GetCategoryDataTableFrmDB(mdType);

            // 2. Get indicators/Area/Source from database where metadata text is not null or empty
            switch (mdType)
            {
            case MetaDataType.Indicator:
                MDElementType        = MetadataElementType.Indicator;
                MetadataColumnName   = DIColumns.Indicator.IndicatorInfo;
                ElementNidColumnName = DIColumns.Indicator.IndicatorNId;

                Table = this.DBConnection.ExecuteDataTable(this.DBQueries.Indicators.GetIndicator(FilterFieldType.None, String.Empty, FieldSelection.Heavy));
                break;

            case MetaDataType.Map:
                MDElementType        = MetadataElementType.Area;
                MetadataColumnName   = DIColumns.Area_Map_Metadata.MetadataText;
                ElementNidColumnName = DIColumns.Area_Map_Metadata.MetadataNId;

                Table = this.DBConnection.ExecuteDataTable(this.DBQueries.Area.GetAreaMapMetadata(string.Empty));
                break;

            case MetaDataType.Source:
                MDElementType        = MetadataElementType.Source;
                MetadataColumnName   = DIColumns.IndicatorClassifications.ICInfo;
                ElementNidColumnName = DIColumns.IndicatorClassifications.ICNId;

                Table = this.DBConnection.ExecuteDataTable(this.DBQueries.IndicatorClassification.GetIC(FilterFieldType.None, string.Empty, ICType.Source, FieldSelection.Heavy));
                break;

            default:
                break;
            }


            // update metedata into database
            foreach (DataRow IndicatorRow in Table.Rows)
            {
                // get metadata from row
                MetadataString = Convert.ToString(IndicatorRow[MetadataColumnName]);
                if (string.IsNullOrEmpty(MetadataString))
                {
                    XmlDocument XmlDoc = new XmlDocument();
                    DevInfo.Lib.DI_LibBAL.Metadata.MetadataConverter.InsertRootNode(XmlDoc);
                    MetadataString = XmlDoc.InnerXml;
                }
                //--check metadata string.
                if (!string.IsNullOrEmpty(MetadataString))
                {
                    // get metadataInfo object from metadata text
                    MetadataInfoObject = this.GetMetadataInfoFrmMetadataText(MetadataString, MDElementType);

                    if (MetadataInfoObject != null)
                    {
                        //-- update metadata categories into indicator metadataInfo object
                        MetadataInfoObject = this.UpdateCategryInMetadataInfo(MetadataInfoObject, oldCategories, CategoryTable);

                        ElementNid = Convert.ToInt32(IndicatorRow[ElementNidColumnName]);

                        // get new metadata text and update it into database
                        MetadataText = this.GetNewMetadataText(MetadataInfoObject);

                        MDBuilder.UpdateMetadataInfo(mdType, string.Empty, ElementNid, MetadataText);

                        #region "-- to be deleted --"
                        //switch (mdType)
                        //{
                        //    //-if Indicator
                        //    case MetaDataType.Indicator:
                        //        MetadataInfoObject = this.UpdateCategryInMetadataInfo(MetadataInfoObject, oldCategories, DIQueries.MetadataElementTypeText[MetadataElementType.Indicator]);
                        //        ElementNid = Convert.ToInt32(IndicatorRow[DIColumns.Indicator.IndicatorNId]);
                        //        MetadataText = this.GetNewMetadataText(MetadataInfoObject);
                        //        this.SaveMetadataIntoDatabase(MetaDataType.Indicator, ElementNid, MetadataText);
                        //        break;

                        //    //-If map
                        //    case MetaDataType.Map:
                        //        MetadataInfoObject = this.UpdateCategryInMetadataInfo(MetadataInfoObject, oldCategories, DIQueries.MetadataElementTypeText[MetadataElementType.Area]);
                        //        ElementNid = Convert.ToInt32(IndicatorRow[DIColumns.Area_Map_Metadata .MetadataNId ]);
                        //        MetadataText = this.GetNewMetadataText(MetadataInfoObject);
                        //        this.SaveMetadataIntoDatabase(MetaDataType.Map, ElementNid, MetadataText);
                        //        break;

                        //    //-If source.
                        //    case MetaDataType.Source:
                        //        MetadataInfoObject = this.UpdateCategryInMetadataInfo(MetadataInfoObject, oldCategories, DIQueries.MetadataElementTypeText[MetadataElementType.Source]);
                        //        ElementNid = Convert.ToInt32(IndicatorRow[DIColumns.IndicatorClassifications.ICNId]);
                        //        MetadataText = this.GetNewMetadataText(MetadataInfoObject);
                        //        this.SaveMetadataIntoDatabase(MetaDataType.Source, ElementNid, MetadataText);
                        //        break;
                        //    default:
                        //        break;
                        //}
                        #endregion
                    }

                    //else

                    ////--save metadata into database.
                    //{
                    //    switch (mdType)
                    //    {
                    //        case MetaDataType.Indicator:
                    //            ElementNid = Convert.ToInt32(IndicatorRow[DIColumns.Indicator.IndicatorNId]);
                    //            MetadataText = "";
                    //            this.SaveMetadataIntoDatabase(MetaDataType.Indicator, ElementNid, MetadataText);
                    //            break;
                    //        case MetaDataType.Map:
                    //            ElementNid = Convert.ToInt32(IndicatorRow[DIColumns .Area_Map_Metadata.MetadataNId]);
                    //            MetadataText = "";
                    //            this.SaveMetadataIntoDatabase(MetaDataType.Map, ElementNid, MetadataText);
                    //            break;
                    //        case MetaDataType.Source:
                    //            ElementNid = Convert.ToInt32(IndicatorRow[DIColumns .IndicatorClassifications .ICNId ]);
                    //            MetadataText = "";
                    //            this.SaveMetadataIntoDatabase(MetaDataType.Source, ElementNid, MetadataText);
                    //            break;
                    //        default:
                    //            break;
                    //    }
                    //}
                }
            }
        }