/// <summary> /// Checks and insert metadata category into database. /// </summary> /// <param name="metadataCategory"></param> /// <returns></returns> public int CheckNInsertCategory(DI7MetadataCategoryInfo metadataCategory) { int RetVal = 0; if (!string.IsNullOrEmpty(metadataCategory.CategoryGID) && !string.IsNullOrEmpty(metadataCategory.CategoryName)) { RetVal = this.GetNidByGID(metadataCategory.CategoryGID, metadataCategory.CategoryType); if (RetVal <= 0) { RetVal = this.GetNidByName(metadataCategory.CategoryName, metadataCategory.CategoryType, metadataCategory.ParentNid.ToString()); } if (RetVal > 0) { // update category info this.UpdateMetadataCategory(metadataCategory); } else { // insert metadata category RetVal = this.InsertIntoDatabase(metadataCategory); } } return(RetVal); }
/// <summary> /// Insert MetadataCategory record into database /// </summary> /// <param name="MetadataCategoryInfo">object of IndicatorInfo</param> /// <returns>Ture/False. Return true after successful insertion otherwise false</returns> public int InsertIntoDatabase(DI7MetadataCategoryInfo metadataCategory) { int RetVal = 0; string MetadataCategoryName = metadataCategory.CategoryName; string LanguageCode = string.Empty; string DefaultLanguageCode = string.Empty; string MetadataCategoryForDatabase = string.Empty; DITables TablesName; int LastOrder = 0; try { DefaultLanguageCode = this.DBQueries.LanguageCode; //get and set category order // get max category order from database/template try { LastOrder = Convert.ToInt32(this.DBConnection.ExecuteScalarSqlQuery(this.DBQueries.Metadata_Category.GetMaxMetadataCategoryOrder("'" + metadataCategory.CategoryType + "'", metadataCategory.ParentNid.ToString()))); } catch (Exception) { } LastOrder += 1; metadataCategory.CategoryOrder = LastOrder; // insert metadata category into database/template foreach (DataRow languageRow in this.DBConnection.DILanguages(this.DBQueries.DataPrefix).Rows) { LanguageCode = languageRow[Language.LanguageCode].ToString(); TablesName = new DITables(this.DBQueries.DataPrefix, LanguageCode); //if (LanguageCode == DefaultLanguageCode.Replace("_", String.Empty)) //{ MetadataCategoryForDatabase = MetadataCategoryName; //} //else //{ // MetadataCategoryForDatabase = Constants.PrefixForNewValue + MetadataCategoryName; //} this.DBConnection.ExecuteNonQuery(DevInfo.Lib.DI_LibDAL.Queries.MetadataCategory.Insert.InsertMetadataCategory(TablesName.MetadataCategory, MetadataCategoryForDatabase, metadataCategory.CategoryGID, metadataCategory.Description, metadataCategory.CategoryType, metadataCategory.CategoryOrder, metadataCategory.ParentNid.ToString(), metadataCategory.IsPresentational, metadataCategory.IsMandatory)); } RetVal = this.DBConnection.GetNewId(); } catch (Exception) { RetVal = 0; } return(RetVal); }
private DI7MetadataCategoryInfo GetMedataCategoryInfo(DataTable table) { DI7MetadataCategoryInfo RetVal = new DI7MetadataCategoryInfo(); foreach (DataRow Row in table.Rows) { RetVal = DI7MetadataCategoryBuilder.GetMetadataCategoryInfo(Row, this.DBConnection, this.DBQueries); break; } return(RetVal); }
/// <summary> /// Updates Metadata category /// </summary> /// <param name="metadataCategoryInfo"></param> public void UpdateMetadataCategory(DI7MetadataCategoryInfo metadataCategoryInfo) { string SqlQuery = string.Empty; try { if (metadataCategoryInfo.CategoryNId > 0) { SqlQuery = DevInfo.Lib.DI_LibDAL.Queries.MetadataCategory.Update.UpdateMetadataCategory(this.DBQueries.TablesName.MetadataCategory, metadataCategoryInfo.CategoryNId, DICommon.RemoveQuotes(metadataCategoryInfo.CategoryName), metadataCategoryInfo.CategoryType, metadataCategoryInfo.CategoryGID, metadataCategoryInfo.Description, metadataCategoryInfo.ParentNid.ToString(), metadataCategoryInfo.IsMandatory, metadataCategoryInfo.IsPresentational); this.DBConnection.ExecuteNonQuery(SqlQuery); } } catch (Exception) { } }
/// <summary> /// Returns metadata category info(with sub categories) /// </summary> /// <param name="categoryNid"></param> /// <returns></returns> public DI7MetadataCategoryInfo GetMedataCategoryInfo(int categoryNid) { DI7MetadataCategoryInfo RetVal = null; DataTable Table = null; try { Table = this.DBConnection.ExecuteDataTable(this.DBQueries.Metadata_Category.GetMetadataCategories(FilterFieldType.NId, Convert.ToString(categoryNid))); RetVal = this.GetMedataCategoryInfo(Table); } catch (Exception ex) { ExceptionHandler.ExceptionFacade.ThrowException(ex); } return(RetVal); }
private static DI7MetadataCategoryInfo GetMetadataCategoryInfo(DataRow row, DIConnection dbConnection, DIQueries dbQueries) { DI7MetadataCategoryInfo RetVal = new DI7MetadataCategoryInfo(); DI7MetadataCategoryInfo SubCategory; RetVal.CategoryNId = Convert.ToInt32(row[Metadata_Category.CategoryNId]); RetVal.CategoryGID = Convert.ToString(row[Metadata_Category.CategoryGId]); RetVal.CategoryName = Convert.ToString(row[Metadata_Category.CategoryName]); RetVal.Description = Convert.ToString(row[Metadata_Category.CategoryDescription]); RetVal.CategoryOrder = Convert.ToInt32(row[Metadata_Category.CategoryOrder]); RetVal.CategoryType = Convert.ToString(row[Metadata_Category.CategoryType]); RetVal.IsMandatory = Convert.ToBoolean(row[Metadata_Category.IsMandatory]); RetVal.IsPresentational = Convert.ToBoolean(row[Metadata_Category.IsPresentational]); RetVal.ParentNid = Convert.ToInt32(row[Metadata_Category.ParentCategoryNId]); // add subcategories (if any) RetVal.SubCategories = new Dictionary <string, DI7MetadataCategoryInfo>(); foreach (DataRow SubCategoryRow in dbConnection.ExecuteDataTable(dbQueries.Metadata_Category.GetMetadataCategories(FilterFieldType.Type, "'" + RetVal.CategoryType + "'", RetVal.CategoryNId.ToString())).Rows) { if (!RetVal.SubCategories.ContainsKey(Convert.ToString(SubCategoryRow[Metadata_Category.CategoryGId]))) { RetVal.SubCategories.Add(Convert.ToString(SubCategoryRow[Metadata_Category.CategoryGId]), new DI7MetadataCategoryInfo()); } // Add subcategory information SubCategory = RetVal.SubCategories[Convert.ToString(SubCategoryRow[Metadata_Category.CategoryGId])]; SubCategory.CategoryNId = Convert.ToInt32(SubCategoryRow[Metadata_Category.CategoryNId]); SubCategory.CategoryGID = Convert.ToString(SubCategoryRow[Metadata_Category.CategoryGId]); SubCategory.CategoryName = Convert.ToString(SubCategoryRow[Metadata_Category.CategoryName]); SubCategory.Description = Convert.ToString(SubCategoryRow[Metadata_Category.CategoryDescription]); SubCategory.CategoryOrder = Convert.ToInt32(SubCategoryRow[Metadata_Category.CategoryOrder]); SubCategory.CategoryType = Convert.ToString(SubCategoryRow[Metadata_Category.CategoryType]); SubCategory.IsMandatory = Convert.ToBoolean(SubCategoryRow[Metadata_Category.IsMandatory]); SubCategory.IsPresentational = Convert.ToBoolean(SubCategoryRow[Metadata_Category.IsPresentational]); SubCategory.ParentNid = Convert.ToInt32(SubCategoryRow[Metadata_Category.ParentCategoryNId]); } return(RetVal); }
/// <summary> /// Imports all metadata categories from given source database to current database /// </summary> /// <param name="srcDBConnection"></param> /// <param name="srcDBQueries"></param> /// <param name="categoryType"></param> public void ImportAllMetadataCategories(DIConnection srcDBConnection, DIQueries srcDBQueries, MetadataElementType categoryType) { // import by GID. If GID exists then update existing category otherwise insert it into current database // update process will update in current langauge but insert process will insert in all langauges DataTable SrcCategoryTable = null; DI7MetadataCategoryInfo SrcCategoryInfo = null; DataTable TrgCategoryTable = null; int TrgCategoryNid = 0; int TrgCategoryParentNid = -1; try { // get source category table SrcCategoryTable = srcDBConnection.ExecuteDataTable(srcDBQueries.Metadata_Category.GetMetadataCategories(FilterFieldType.Type, DIQueries.MetadataElementTypeText[categoryType])); // get target(current database) category table TrgCategoryTable = this.DBConnection.ExecuteDataTable(this.DBQueries.Metadata_Category.GetMetadataCategories(FilterFieldType.Type, DIQueries.MetadataElementTypeText[categoryType])); // import categories & sub categories from source database into current database foreach (DataRow SrcRow in SrcCategoryTable.Select(Metadata_Category.ParentCategoryNId + "=-1")) { // get category from source database SrcCategoryInfo = DI7MetadataCategoryBuilder.GetMetadataCategoryInfo(SrcRow, srcDBConnection, srcDBQueries); // check src category gid exists in current(target) database of not TrgCategoryNid = 0; TrgCategoryParentNid = -1; foreach (DataRow TrgRow in TrgCategoryTable.Select(Metadata_Category.CategoryGId + "='" + DIQueries.RemoveQuotesForSqlQuery(SrcCategoryInfo.CategoryGID) + "' OR " + Metadata_Category.CategoryName + "='" + DIQueries.RemoveQuotesForSqlQuery(SrcCategoryInfo.CategoryName) + "'")) { // if exists then get nid and parent nid TrgCategoryNid = Convert.ToInt32(TrgRow[Metadata_Category.CategoryNId]); TrgCategoryParentNid = Convert.ToInt32(TrgRow[Metadata_Category.ParentCategoryNId]); } // update nid & parent nid in src category info SrcCategoryInfo.CategoryNId = TrgCategoryNid; SrcCategoryInfo.ParentNid = TrgCategoryParentNid; if (TrgCategoryNid > 0) { // update category info this.UpdateMetadataCategory(SrcCategoryInfo); } else { // insert category into current database TrgCategoryNid = this.InsertIntoDatabase(SrcCategoryInfo); } #region -- insert/update sub categories into current database -- // insert/update only if target category parent nid is equal to -1 (means at level1) if (TrgCategoryParentNid == -1) { foreach (DI7MetadataCategoryInfo SrcSubCategory in SrcCategoryInfo.SubCategories.Values) { SrcSubCategory.CategoryNId = 0; SrcSubCategory.ParentNid = TrgCategoryNid; // check sub category exists ( where gid=<src gid> and parent nid=<trg nid> foreach (DataRow TrgSubCategoryRow in TrgCategoryTable.Select(Metadata_Category.CategoryGId + "='" + DIQueries.RemoveQuotesForSqlQuery(SrcSubCategory.CategoryGID) + "' AND " + Metadata_Category.ParentCategoryNId + "=" + TrgCategoryNid)) { // if exists then get nid SrcSubCategory.CategoryNId = Convert.ToInt32(TrgSubCategoryRow[Metadata_Category.CategoryNId]); } if (SrcSubCategory.CategoryNId > 0) { // update sub category into current database this.UpdateMetadataCategory(SrcSubCategory); } else { // insert sub category into current database this.InsertIntoDatabase(SrcSubCategory); } } } #endregion } } catch (Exception ex) { ExceptionHandler.ExceptionFacade.ThrowException(ex); } }
private void InsertMetadataReportFromXML(int targetNid, bool isNameAttributeExist, DI7MetadataCategoryBuilder MDBuilder, XmlNode ReportNode, string metadataTypeText, int categoryParentNId) { string MDCategotyID = string.Empty; string MDCategotyName = string.Empty; DI7MetadataCategoryInfo MDCateInfo = null; int CategotyNid = -1; foreach (XmlNode ReportAttNode in ReportNode.ChildNodes) { if (ReportAttNode.Name == ATTRIBUTESET_ELEMENT) { this.InsertMetadataReportFromXML(targetNid, isNameAttributeExist, MDBuilder, ReportAttNode, metadataTypeText, categoryParentNId); } if (ReportAttNode.Name == "ReportedAttribute") { MDCategotyID = Convert.ToString(ReportAttNode.Attributes[ID_ATTRIBUTE].Value); if (isNameAttributeExist) { MDCategotyName = Convert.ToString(ReportAttNode.Attributes[NAME_ATTRIBUTE].Value); } else { MDCategotyName = MDCategotyID; } try { if (!string.IsNullOrEmpty(ReportAttNode.InnerXml) && Convert.ToString(ReportAttNode[COMMONTEXT_ELEMENT].Attributes[XMLLANG_ATTRIBUTE].Value).Trim('_') == this.DBQueries.LanguageCode.Trim('_')) { string MetadataReport = Convert.ToString(ReportAttNode[COMMONTEXT_ELEMENT].InnerText); if (!string.IsNullOrEmpty(MetadataReport)) { MDCateInfo = new DI7MetadataCategoryInfo(); MDCateInfo.CategoryGID = MDCategotyID; MDCateInfo.CategoryName = MDCategotyName; MDCateInfo.CategoryType = metadataTypeText; MDCateInfo.ParentNid = categoryParentNId; CategotyNid = MDBuilder.CheckNInsertCategory(MDCateInfo); //-- this.DBConnection.ExecuteNonQuery(DevInfo.Lib.DI_LibDAL.Queries.MetadataReport.Insert.InsertMetadataReport(this.DBQueries.TablesName.MetadataReport, targetNid.ToString(), CategotyNid.ToString(), MetadataReport)); if (ReportAttNode.ChildNodes.Count > 0) { this.InsertMetadataReportFromXML(targetNid, isNameAttributeExist, MDBuilder, ReportAttNode, metadataTypeText, CategotyNid); } } else { //this.DBConnection.ExecuteNonQuery(DevInfo.Lib.DI_LibDAL.Queries.MetadataReport.Delete.DeleteMetadataReport(this.DBQueries.TablesName.MetadataReport, targetNid.ToString(), CategotyNid.ToString())); } } } catch (Exception ex) { throw ex; } } } }
public bool ImportMetataFromExcel(MetadataElementType categoryType, MetaDataType metadataType, int elementNId, string xlsFileNameWPath, string xsltFldrPath) { bool RetVal = true; string MetadataText = string.Empty; string FirstColumnValue = string.Empty; string SecondColumnValue = string.Empty; string ThirdColumnValue = string.Empty; string ElementName = string.Empty; string ElementGID = string.Empty; DataTable ExcelDataTable = null; DataRow Row; DI7MetaDataBuilder MDBuilder; DI7MetadataCategoryBuilder MDCategoryBuilder; DI7MetadataCategoryInfo MetadataCategory; DIExcel ExcelFile = null; try { // -- Get data table from excel file ExcelFile = new DIExcel(xlsFileNameWPath); ExcelDataTable = ExcelFile.GetDataTableFromSheet(ExcelFile.GetSheetName(0)); // -- create database builder objects MDCategoryBuilder = new DI7MetadataCategoryBuilder(this.DBConnection, this.DBQueries); MDBuilder = new DI7MetaDataBuilder(this.DBConnection, this.DBQueries); // -- import metadata reports with category for (int RowIndex = 1; RowIndex < ExcelDataTable.Rows.Count; RowIndex++) { Row = ExcelDataTable.Rows[RowIndex]; FirstColumnValue = Convert.ToString(Row[0]); SecondColumnValue = Convert.ToString(Row[1]); ThirdColumnValue = Convert.ToString(Row[2]); // get element name if (string.IsNullOrEmpty(ElementName)) { if (string.IsNullOrEmpty(FirstColumnValue)) { break; } else { ElementName = FirstColumnValue; continue; } } // get element gid/id if (string.IsNullOrEmpty(ElementGID)) { if (string.IsNullOrEmpty(FirstColumnValue)) { break; } else { ElementGID = FirstColumnValue; // get element nid by element gid if (metadataType == MetaDataType.Source) { elementNId = this.GetElementNidByGID(ElementName, metadataType); } else { elementNId = this.GetElementNidByGID(ElementGID, metadataType); } // Skip title row by incrementing row index RowIndex++; continue; } } // continue if row is blank if (string.IsNullOrEmpty(FirstColumnValue) && string.IsNullOrEmpty(SecondColumnValue) && string.IsNullOrEmpty(ThirdColumnValue)) { // reset element value elementNId = 0; ElementName = string.Empty; ElementGID = string.Empty; continue; } else if (elementNId > 0) { // import metadata report with metadata category // get metadata category and metedata report MetadataCategory = new DI7MetadataCategoryInfo(); MetadataCategory.CategoryName = SecondColumnValue; MetadataCategory.CategoryGID = FirstColumnValue; MetadataCategory.CategoryType = DIQueries.MetadataElementTypeText[categoryType]; // import metadata category MetadataCategory.CategoryNId = MDCategoryBuilder.CheckNInsertCategory(MetadataCategory); // import metadata report if (MetadataCategory.CategoryNId > 0) { MDBuilder.InsertORUpdateMetadataInfo(metadataType, MetadataCategory.CategoryNId.ToString(), elementNId, this.ReplaceNewLineInMetadataReport(ThirdColumnValue)); } } } } catch (Exception) { RetVal = false; } finally { if (ExcelFile != null) { ExcelFile.Close(); } } return(RetVal); }
public bool ImportMetataFromExcel(MetadataElementType categoryType, MetaDataType metadataType, int elementNId, string xlsFileNameWPath, string xsltFldrPath) { bool RetVal = true; string MetadataText = string.Empty; string FirstColumnValue = string.Empty; string SecondColumnValue = string.Empty; string ThirdColumnValue = string.Empty; string ElementName = string.Empty; string ElementGID = string.Empty; DataTable ExcelDataTable = null; DataRow Row; DI7MetaDataBuilder MDBuilder; DI7MetadataCategoryBuilder MDCategoryBuilder; DI7MetadataCategoryInfo MetadataCategory; DIExcel ExcelFile = null; try { // -- Get data table from excel file ExcelFile = new DIExcel(xlsFileNameWPath); ExcelDataTable = ExcelFile.GetDataTableFromSheet(ExcelFile.GetSheetName(0)); // -- create database builder objects MDCategoryBuilder = new DI7MetadataCategoryBuilder(this.DBConnection, this.DBQueries); MDBuilder = new DI7MetaDataBuilder(this.DBConnection, this.DBQueries); // -- import metadata reports with category for (int RowIndex = 1; RowIndex < ExcelDataTable.Rows.Count; RowIndex++) { Row = ExcelDataTable.Rows[RowIndex]; FirstColumnValue = Convert.ToString(Row[0]); SecondColumnValue = Convert.ToString(Row[1]); ThirdColumnValue = Convert.ToString(Row[2]); // get element name if (string.IsNullOrEmpty(ElementName)) { if (string.IsNullOrEmpty(FirstColumnValue)) { break; } else { ElementName = FirstColumnValue; continue; } } // get element gid/id if (string.IsNullOrEmpty(ElementGID)) { if (string.IsNullOrEmpty(FirstColumnValue)) { break; } else { ElementGID = FirstColumnValue; // get element nid by element gid if (metadataType == MetaDataType.Source) { elementNId = this.GetElementNidByGID(ElementName, metadataType); } else { elementNId = this.GetElementNidByGID(ElementGID, metadataType); } // Skip title row by incrementing row index RowIndex++; continue; } } // continue if row is blank if (string.IsNullOrEmpty(FirstColumnValue) && string.IsNullOrEmpty(SecondColumnValue) && string.IsNullOrEmpty(ThirdColumnValue)) { // reset element value elementNId = 0; ElementName = string.Empty; ElementGID = string.Empty; continue; } else if (elementNId > 0) { // import metadata report with metadata category // get metadata category and metedata report MetadataCategory = new DI7MetadataCategoryInfo(); MetadataCategory.CategoryName = SecondColumnValue; MetadataCategory.CategoryGID = FirstColumnValue; MetadataCategory.CategoryType = DIQueries.MetadataElementTypeText[categoryType]; // import metadata category MetadataCategory.CategoryNId = MDCategoryBuilder.CheckNInsertCategory(MetadataCategory); // import metadata report if (MetadataCategory.CategoryNId > 0) { MDBuilder.InsertORUpdateMetadataInfo(metadataType, MetadataCategory.CategoryNId.ToString(), elementNId, this.ReplaceNewLineInMetadataReport(ThirdColumnValue)); } } } } catch (Exception) { RetVal = false; } finally { if (ExcelFile != null) { ExcelFile.Close(); } } return RetVal; }