Ejemplo n.º 1
0
        public DataSet GetDelta(DataSet source, DataSet changes)
        {
            try
            {
                LookupTableDataSet lookUpSource = (LookupTableDataSet)source;
                LookupTableDataSet lookUpSourceCopy = (LookupTableDataSet)source.Copy();
                LookupTableDataSet delta = new LookupTableDataSet();
                // Build tow lists of Look up DTO's with one list repsenting the root node(all node with rowlevel =1)
                //and the second list containing all the child nodes( all node at row levels other  thna 1)
                List<List<LookupDTO>> lookups = BuildLookUpObject(changes);
                //For each root element
                foreach (LookupDTO lookup in lookups[0])
                {
                    // check to ensure it is a root element so as to check does not have any parent node
                    if (lookUpSourceCopy.LookupTableTrees.Any(t => t.Field<Guid?>("LT_PARENT_STRUCT_UID") == (Guid?)lookup.ID) == false)
                    {
                        //If the root node not already existing  add a new root node
                        if (lookUpSourceCopy.LookupTableTrees.Any(t => t.Field<Guid?>("LT_STRUCT_UID") == (Guid?)lookup.ID) == false)
                        {
                            AddTreeNode(lookup, lookUpSourceCopy);
                        }
                        //else Modify the root node
                        else
                        {
                            Modify(lookUpSourceCopy.LookupTableTrees.First(t => t.Field<Guid?>("LT_STRUCT_UID") == (Guid?)lookup.ID), lookup);
                        }
                    }
                }
                //For each child node
                foreach (LookupDTO lookup in lookups[1])
                {
                    //If child node not already existing add a new node
                    if (lookUpSourceCopy.LookupTableTrees.Any(t => t.Field<Guid?>("LT_STRUCT_UID") == (Guid?)lookup.ID) == false)
                    {
                        AddChildNode(lookup, lookUpSourceCopy);
                    }
                    //else modify the existing node
                    else
                    {
                        LookupTableDataSet.LookupTableTreesRow rowNode = lookUpSourceCopy.LookupTableTrees.First(t => t.RowState != DataRowState.Deleted && t.Field<Guid?>("LT_STRUCT_UID") == (Guid?)lookup.ID);
                        Modify(rowNode, lookup);
                    }
                }
                // Traverse through all child node of each root node and if it is unchanged delete it
                foreach (LookupDTO lookup in lookups[0])
                {
                    //Delete all child rows that are unchanged
                    DeleteAllChilds(lookup.ID, lookUpSourceCopy);
                }

                if (lookUpSourceCopy.HasChanges(DataRowState.Added))
                    delta.Merge(
                        (SvcLookupTable.LookupTableDataSet)lookUpSourceCopy.GetChanges(DataRowState.Added), true);

                if (lookUpSourceCopy.HasChanges(DataRowState.Modified))
                    delta.Merge(
                        (SvcLookupTable.LookupTableDataSet)lookUpSourceCopy.GetChanges(DataRowState.Modified), true);

                if (lookUpSourceCopy.HasChanges(DataRowState.Deleted))
                    delta.Merge(
                        (SvcLookupTable.LookupTableDataSet)lookUpSourceCopy.GetChanges(DataRowState.Deleted), true);
                Utility.WriteLog("Get Delta from the Source and Destination Database succeeded", EventLogEntryType.Information);
                return delta;
            }
            catch (Exception ex)
            {
                Utility.WriteLog("Error in Get Delta from the Source and Destination Database =" + ex.Message, EventLogEntryType.Error);
            }
            return new DataSet();
        }
Ejemplo n.º 2
0
        internal static void UpdateLookupTables(LookupTableDataSet lookupTableDataSet)
        {
            using (OperationContextScope scope = new OperationContextScope(lookupTableClient.InnerChannel))
            {
                try
                {
                    WcfHelpers.UseCorrectHeaders(true);
                    lookupTableClient.CheckOutLookupTables(new Guid[] { new Guid(Constants.LOOKUP_ENTITY_ID) });
                    lookupTableClient.UpdateLookupTables(lookupTableDataSet, false, true, 1033);
                    //lookupTableClient.CheckInLookupTables(new Guid[] { new Guid(Constants.LOOKUP_ENTITY_ID) },true);
                }
                catch (SoapException ex)
                {
                    string errMess = "";
                    // Pass the exception to the PSClientError constructor to get
                    // all error information.
                    PSLib.PSClientError psiError = new PSLib.PSClientError(ex);
                    PSLib.PSErrorInfo[] psiErrors = psiError.GetAllErrors();

                    for (int j = 0; j < psiErrors.Length; j++)
                    {
                        errMess += psiErrors[j].ErrId.ToString() + "\n";
                    }
                    errMess += "\n" + ex.Message.ToString();
                    // Send error string to console or message box.
                }
            }
        }
Ejemplo n.º 3
0
 private void Modify(LookupTableDataSet.LookupTableTreesRow row, LookupDTO lookup)
 {
     try
     {
         if (row.RowState == DataRowState.Deleted)
         {
             row.RejectChanges();
         }
         row.LT_PARENT_STRUCT_UID = lookup.ParentID;
         row.LT_VALUE_SORT_INDEX = lookup.SortIndex;
         row.LT_VALUE_TEXT = lookup.Text;
         //row.LT_VALUE_FULL = lookup.DotNotation;
         row.LT_VALUE_DESC = string.Empty;
         row.LT_UID = new Guid(Constants.LOOKUP_ENTITY_ID);
     }
     catch (Exception ex)
     {
         Utility.WriteLog("Error in Modifying a Lookup table tree row =" + ex.Message, EventLogEntryType.Error);
     }
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Delete all child nodes for a given root element
        /// </summary>
        /// <param name="guid"></param>
        /// <param name="lookUpSourceCopy"></param>
        private void DeleteAllChilds(Guid guid, LookupTableDataSet lookUpSourceCopy)
        {
            try
            {
                if (lookUpSourceCopy.LookupTableTrees.Any(t => t.RowState != DataRowState.Deleted && t.Field<Guid?>("LT_PARENT_STRUCT_UID") == (Guid?)guid) == false)
                    return;
                EnumerableRowCollection<LookupTableDataSet.LookupTableTreesRow> rows = lookUpSourceCopy.LookupTableTrees.Where(t => t.RowState != DataRowState.Deleted && t.Field<Guid?>("LT_PARENT_STRUCT_UID") == (Guid?)guid);

                foreach (LookupTableDataSet.LookupTableTreesRow row in rows)
                {
                    DeleteAllChilds(row.LT_STRUCT_UID, lookUpSourceCopy);
                    if (row.RowState == DataRowState.Unchanged || row.RowState == DataRowState.Detached)
                    {
                        row.Delete();
                    }
                }
            }
            catch (Exception ex)
            {
                Utility.WriteLog("Error in Deleting a Lookup table tree row =" + ex.Message, EventLogEntryType.Error);
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Add Tree Node to the look up Tree
        /// </summary>
        /// <param name="lookup"></param>
        /// <param name="lookUpSourceCopy"></param>
        private void AddTreeNode(LookupDTO lookup, LookupTableDataSet lookUpSourceCopy)
        {
            try
            {
                LookupTableDataSet.LookupTableTreesRow row = lookUpSourceCopy.LookupTableTrees.NewLookupTableTreesRow();
                row.LT_STRUCT_UID = lookup.ID;
                if (lookup.ParentID != Guid.Empty)
                {
                    row.LT_PARENT_STRUCT_UID = lookup.ParentID;
                }

                row.LT_VALUE_SORT_INDEX = lookup.SortIndex;
                row.LT_VALUE_TEXT = lookup.Text;
                row.LT_VALUE_FULL = lookup.DotNotation;
                row.LT_VALUE_DESC = string.Empty;
                row.LT_UID = new Guid(Constants.LOOKUP_ENTITY_ID);
                lookUpSourceCopy.LookupTableTrees.AddLookupTableTreesRow(row);
            }
            catch (Exception ex)
            {
                Utility.WriteLog("Error in Adding a Lookup table tree row =" + ex.Message, EventLogEntryType.Error);
            }
        }
Ejemplo n.º 6
0
 /// <summary>
 /// Add Child node to the lookup Tree
 /// </summary>
 /// <param name="lookup"></param>
 /// <param name="lookUpSourceCopy"></param>
 private void AddChildNode(LookupDTO lookup, LookupTableDataSet lookUpSourceCopy)
 {
     try
     {
         //If its parent node is present for the node
         if (lookUpSourceCopy.LookupTableTrees.Any(t => t.Field<Guid?>("LT_STRUCT_UID") == (Guid?)lookup.ParentID) == true)
         {
             // Add or modify depending on whether the node itself already exists
             if (lookUpSourceCopy.LookupTableTrees.Any(t => t.Field<Guid?>("LT_STRUCT_UID") == (Guid?)lookup.ID) == false)
             {
                 AddTreeNode(lookup, lookUpSourceCopy);
             }
             else
             {
                 LookupTableDataSet.LookupTableTreesRow row = lookUpSourceCopy.LookupTableTrees.First(t => t.Field<Guid?>("LT_STRUCT_UID") == (Guid?)lookup.ID);
                 Modify(row, lookup);
             }
         }
             //Else add up the parent node
         else
         {
             // If aprent node does not already exist in the lookup Tree
             if (lookUpSourceCopy.LookupTableTrees.Any(t => t.Field<Guid?>("LT_STRUCT_UID") == (Guid?)lookup.ParentID) == false)
             {
                 // Add Parent Node
                 if (lookup.ParentNode != null)
                 {
                     AddTreeNode(lookup.ParentNode, lookUpSourceCopy);
                 }
             }
             else
             {
                 //Else modify the Parent Node
                 if (lookup.ParentNode != null)
                 {
                     LookupTableDataSet.LookupTableTreesRow row = lookUpSourceCopy.LookupTableTrees.First(t => t.Field<Guid?>("LT_STRUCT_UID") == (Guid?)lookup.ParentID);
                     Modify(row, lookup.ParentNode);
                 }
             }
         }
     }
     catch (Exception ex)
     {
         Utility.WriteLog("Error in Adding a Lookup table tree row =" + ex.Message, EventLogEntryType.Error);
     }
 }
Ejemplo n.º 7
0
        /// <summary>
        /// Metodo para criar as Lookuptable e suas dependencias
        /// </summary>
        /// <param name="pwaDestino">Destino</param>
        /// <param name="itemRow">Item CustomField</param>
        /// <param name="ds">Data Set LookupTable</param>
        public void CreateLooukupTable(string pwaOrigem, string pwaDestino, string pLT_NAME)
        {
            try
            {
                //verificando se já existe a lookuptable no destino
                dsLookupTableDestino = GetLookupTable(pwaDestino);

                DataRow[] dataRowDestino = dsLookupTableDestino.Tables[0].Select("LT_NAME = '" + pLT_NAME + "'");

                if (dataRowDestino.Count() > 0)
                {
                    return;
                }

                if (dsLookupTableOrigem == null)
                {
                    dsLookupTableOrigem = GetLookupTable(pwaOrigem);
                }

                DataRow[] dataRow = dsLookupTableOrigem.Tables[0].Select("LT_NAME = '" + pLT_NAME + "'");

                SvcLookupTable.LookupTableDataSet ltDS = new LookupTableDataSet();

                SvcLookupTable.LookupTableClient clientLookupTable = new LookupTableClient(Binding, endPointAdress(pwaDestino, "/_vti_bin/psi/LookupTable.asmx"));
                clientLookupTable.ClientCredentials.Windows.ClientCredential = new NetworkCredential(this.User, this.PassWord, this.Domain);

                foreach (SvcLookupTable.LookupTableDataSet.LookupTablesRow item in dataRow)
                {
                    SvcLookupTable.LookupTableDataSet.LookupTablesRow ltRow = ltDS.LookupTables.NewLookupTablesRow();
                    Guid LT_UID = Guid.NewGuid();

                    ltRow.LT_UID = LT_UID;

                    ltRow.LT_FILL_ALL_LEVELS = item.LT_FILL_ALL_LEVELS;
                    ltRow.LT_NAME            = item.LT_NAME;

                    if (!item.IsAPP_ENTITY_UIDNull())
                    {
                        ltRow.APP_ENTITY_UID = item.APP_ENTITY_UID;
                    }

                    if (!item.IsLT_PRIMARY_LCIDNull())
                    {
                        ltRow.LT_PRIMARY_LCID = item.LT_PRIMARY_LCID;
                    }

                    if (!item.IsLT_SORT_ORDER_ENUMNull())
                    {
                        ltRow.LT_SORT_ORDER_ENUM = item.LT_SORT_ORDER_ENUM;
                    }

                    ltDS.LookupTables.Rows.Add(ltRow);


                    foreach (SvcLookupTable.LookupTableDataSet.LookupTableMasksRow itemMaskRow in dsLookupTableOrigem.LookupTableMasks.Select("LT_UID = '" + item.LT_UID + "'"))
                    {
                        SvcLookupTable.LookupTableDataSet.LookupTableMasksRow ltMasksRow = ltDS.LookupTableMasks.NewLookupTableMasksRow();
                        foreach (DataColumn itemColumn in dsLookupTableOrigem.LookupTableMasks.Columns)
                        {
                            if (!ltDS.LookupTableMasks.Columns.Contains(itemColumn.ToString()))
                            {
                                continue;
                            }

                            if (itemColumn.ToString() == "LT_UID")
                            {
                                ltMasksRow[itemColumn.ToString()] = LT_UID;
                                continue;
                            }

                            if (itemMaskRow[itemColumn.ToString()] != null && !itemColumn.ReadOnly)
                            {
                                ltMasksRow[itemColumn.ToString()] = itemMaskRow[itemColumn.ToString()];
                            }
                        }

                        //ltMasksRow.LT_MASK_STRUCT_LEVEL = itemMaskRow.LT_MASK_STRUCT_LEVEL;
                        //ltMasksRow.LT_MASK_STRUCT_TYPE_ENUM = itemMaskRow.LT_MASK_STRUCT_TYPE_ENUM;
                        //ltMasksRow.LT_MASK_STRUCT_LENGTH = itemMaskRow.LT_MASK_STRUCT_LENGTH;
                        //ltMasksRow.LT_MASK_VALUE_SEPARATOR = itemMaskRow.LT_MASK_VALUE_SEPARATOR;

                        ltDS.LookupTableMasks.Rows.Add(ltMasksRow);
                    }



                    foreach (SvcLookupTable.LookupTableDataSet.LookupTableTreesRow itemTreesRow in dsLookupTableOrigem.LookupTableTrees.Select("LT_UID = '" + item.LT_UID + "'"))
                    {
                        //ltTreesRow.LT_UID = ltDS.LookupTables[0].LT_UID;
                        SvcLookupTable.LookupTableDataSet.LookupTableTreesRow ltTreesRow = ltDS.LookupTableTrees.NewLookupTableTreesRow();
                        foreach (DataColumn itemColumn in dsLookupTableOrigem.LookupTableTrees.Columns)
                        {
                            if (!ltDS.LookupTableTrees.Columns.Contains(itemColumn.ToString()))
                            {
                                continue;
                            }

                            //if (itemColumn.ToString() == "LT_STRUCT_UID")
                            //{
                            //    ltTreesRow[itemColumn.ToString()] = Guid.NewGuid();
                            //    continue;
                            //}

                            if (itemColumn.ToString() == "LT_UID")
                            {
                                ltTreesRow[itemColumn.ToString()] = LT_UID;
                                continue;
                            }


                            if (itemTreesRow[itemColumn.ToString()] != null && !itemColumn.ReadOnly)
                            {
                                ltTreesRow[itemColumn.ToString()] = itemTreesRow[itemColumn.ToString()];
                            }
                        }

                        ltDS.LookupTableTrees.Rows.Add(ltTreesRow);
                    }

                    try
                    {
                        bool validateOnly = false;
                        bool autoCheckIn  = true;

                        clientLookupTable.CreateLookupTables(ltDS, validateOnly, autoCheckIn);
                    }
                    catch (SoapException ex)
                    {
                        string errMess = "";
                        // Pass the exception to the PSClientError constructor to
                        // get all error information.
                        PSLibrary.PSClientError psiError  = new PSLibrary.PSClientError(ex);
                        PSLibrary.PSErrorInfo[] psiErrors = psiError.GetAllErrors();

                        for (int j = 0; j < psiErrors.Length; j++)
                        {
                            errMess += psiErrors[j].ErrId.ToString() + "\n";
                        }
                        errMess += "\n" + ex.Message.ToString();

                        MessageBox.Show(errMess);
                        // Send error string to console or message box.
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }