コード例 #1
0
 //--------------------------------------------
 private TreeNode FillNodesParent(IObjetHierarchiqueACodeHierarchique element)
 {
     if (element.ObjetParent == null)
     {
         return(null);
     }
     else
     {
         TreeNode node = new TreeNode(element.ObjetParent.Libelle);
         node.Tag = element.ObjetParent;
         TreeNode nodeParent = FillNodesParent(element.ObjetParent);
         if (nodeParent != null)
         {
             nodeParent.Nodes.Add(node);
         }
         else
         {
             m_arbre.Nodes.Add(node);
         }
         if (node.Parent != null)
         {
             node.Parent.Expand();
         }
         m_arbre.SelectedNode = node;
         return(node);
     }
 }
コード例 #2
0
 private string GetLibelleComplet(IObjetHierarchiqueACodeHierarchique objet)
 {
     if (objet == null)
     {
         return("");
     }
     return(GetLibelleComplet(objet.ObjetParent) + "/" + objet.Libelle);
 }
コード例 #3
0
 //-------------------------------------------------------------------
 /// <summary>
 /// Retourne vrai si l'objet est parent de l'objet passé en paramètres
 /// </summary>
 /// <param name="objet"></param>
 /// <returns></returns>
 public bool IsParentOf(IObjetHierarchiqueACodeHierarchique objet)
 {
     if (objet == null)
     {
         return(false);
     }
     return(objet.IsChildOf(this));
 }
コード例 #4
0
 private void m_btnUp_Click(object sender, EventArgs e)
 {
     if (m_feuille != null &&
         m_feuille.ObjetParent != null)
     {
         IObjetHierarchiqueACodeHierarchique eltParent = m_feuille.ObjetParent;
         AfficheElement(eltParent);
     }
 }
コード例 #5
0
        private TreeNode AddObjet(IObjetHierarchiqueACodeHierarchique objet, Hashtable tableObjetToNode, bool bExpandable, int nNiveauToExpand)
        {
            TreeNode leNode = (TreeNode)tableObjetToNode[objet];

            if (leNode != null)
            {
                return(leNode);
            }
            TreeNode nodeParent = null;

            if (objet.ObjetParent != null)
            {
                nodeParent = AddObjet(objet.ObjetParent, tableObjetToNode, false, nNiveauToExpand);
            }

            leNode = new TreeNode(objet.Libelle);
            if (m_tableObjetToClavier[objet] != null)
            {
                leNode.Text = ((int)m_tableObjetToClavier[objet]).ToString() + " - " + objet.Libelle;
            }
            leNode.Tag = objet;
            if (nodeParent == null)
            {
                m_arbre.Nodes.Add(leNode);
            }
            else
            {
                if (nodeParent.Nodes.Count == 1 && nodeParent.Nodes[0].Tag == null)
                {
                    nodeParent.Nodes.Clear();                    //C'était un node à completer, on va le completer dans l'appelant
                }
                nodeParent.Nodes.Add(leNode);
                if (!nodeParent.IsExpanded)
                {
                    nodeParent.Expand();
                }
            }
            if (bExpandable && objet.ObjetsFils.Count > 0)
            {
                leNode.BackColor = Color.LightGreen;
                if (objet.Niveau == nNiveauToExpand)
                {
                    FillChilds(leNode);
                    leNode.Expand();
                }
                else
                {
                    TreeNode nodeTmp = new TreeNode("");
                    nodeTmp.Tag = null;
                    leNode.Nodes.Add(nodeTmp);
                }
            }
            tableObjetToNode[objet] = leNode;
            return(leNode);
        }
コード例 #6
0
        //-------------------------------------------------------------------
        public void RecalculeCodeComplet()
        {
            string strCode = CodeSystemePartiel;
            IObjetHierarchiqueACodeHierarchique objetParent = ObjetParent;

            while (objetParent != null)
            {
                strCode     = objetParent.CodeSystemePartiel + strCode;
                objetParent = objetParent.ObjetParent;
            }
            Row[ChampCodeSystemeComplet] = strCode;
        }
コード例 #7
0
 //-------------------------------------------------------------------
 /// <summary>
 /// Retourne vrai si l'objet est fils (à n'importe quel niveau)
 /// de l'objet passé en paramètre
 /// </summary>
 /// <param name="objet">Père potientiel</param>
 /// <returns></returns>
 public bool IsChildOf(IObjetHierarchiqueACodeHierarchique objet)
 {
     if (objet == null)
     {
         return(false);
     }
     if (objet.Equals(this))
     {
         return(true);
     }
     if (ObjetParent != null)
     {
         return(ObjetParent.IsChildOf(objet));
     }
     return(false);
 }
コード例 #8
0
        private void AfficheElement(IObjetHierarchiqueACodeHierarchique objet)
        {
            //Type typeForm = CFormFinder.GetTypeFormToEdit(objet.GetType());
            //if (typeForm == null || !typeForm.IsSubclassOf(typeof(CFormEditionStandard)))
            //    return;
            //CFormEditionStandard form = (CFormEditionStandard)Activator.CreateInstance(typeForm, new object[] { objet });
            //CTimosApp.Navigateur.AffichePage(form);
            CReferenceTypeForm refTypeForm = CFormFinder.GetRefFormToEdit(objet.GetType());

            if (refTypeForm != null)
            {
                CFormEditionStandard form = refTypeForm.GetForm((CObjetDonneeAIdNumeriqueAuto)objet) as CFormEditionStandard;
                if (form != null)
                {
                    CSc2iWin32DataNavigation.Navigateur.AffichePage(form);
                }
            }
        }
コード例 #9
0
        //-------------------------------------------------------------------
        private static bool HasChange(IObjetHierarchiqueACodeHierarchique objet, string strColonne)
        {
            DataRow row = objet.Row;

            if (row.RowState == DataRowState.Deleted)
            {
                return(false);
            }
            if (row.RowState == DataRowState.Modified)
            {
                object val    = row[strColonne, DataRowVersion.Original];
                object valNew = row[strColonne];
                return(!valNew.Equals(val));
            }
            if (row.RowState == DataRowState.Added)
            {
                return(true);
            }
            return(false);
        }
コード例 #10
0
        private TreeNode AddObjetToSelection(IObjetHierarchiqueACodeHierarchique objet)
        {
            if (objet == null)
            {
                return(null);
            }
            TreeNode nodeParent = AddObjetToSelection(objet.ObjetParent);
            TreeNode node       = new TreeNode(objet.Libelle);

            node.Tag = objet;
            if (nodeParent != null)
            {
                nodeParent.Nodes.Add(node);
                nodeParent.Expand();
            }
            else
            {
                m_arbreViewSelection.Nodes.Add(node);
            }
            return(node);
        }
コード例 #11
0
ファイル: CBesoinServeur.cs プロジェクト: ykebaili/Timos
 public bool IsChildOf(IObjetHierarchiqueACodeHierarchique objet)
 {
     throw new NotImplementedException();
 }
コード例 #12
0
        //-------------------------------------------------------------------
        private static void AlloueCode(IObjetHierarchiqueACodeHierarchique objet, ref int nLastCodeAlloue)
        {
            if (nLastCodeAlloue == 0 && m_dicLastCodeForType.ContainsKey(objet.GetType()))
            {
                nLastCodeAlloue = m_dicLastCodeForType[objet.GetType()];
            }
            string strCle = "";

            if (nLastCodeAlloue > 0 && objet.ObjetParent == null)
            {
                //Teste la valeur suivante
                int nTmp = nLastCodeAlloue + 1;
                strCle = GetCle(nTmp, objet.NbCarsParNiveau);
                CListeObjetsDonnees lstExt = new CListeObjetsDonnees(objet.ContexteDonnee,
                                                                     objet.GetType(),
                                                                     new CFiltreData(objet.ChampIdParent + " is null and " +
                                                                                     objet.ChampCodeSystemePartiel + "=@1", strCle));
                if (lstExt.CountNoLoad == 0)
                {
                    nLastCodeAlloue = nTmp;
                    objet.ChangeCodePartiel(strCle);
                    m_dicLastCodeForType[objet.GetType()] = nLastCodeAlloue;
                    return;
                }
            }
            CFiltreData filtre = null;

            if (objet.ObjetParent != null)
            {
                filtre = new CFiltreData(objet.ChampIdParent + "=@1",
                                         objet.ObjetParent.Id);
            }
            else
            {
                filtre = new CFiltreData(objet.ChampIdParent + " is null and " +
                                         objet.ChampCodeSystemePartiel + ">@1", GetCle(nLastCodeAlloue, objet.NbCarsParNiveau));
            }

            CListeObjetsDonnees listeSoeurs = new CListeObjetsDonnees(objet.ContexteDonnee, objet.GetType(), filtre);

            listeSoeurs.PreserveChanges = true;
            listeSoeurs.AssureLectureFaite();

            listeSoeurs.InterditLectureInDB = true;

            Hashtable tableCodesUtilises = new Hashtable();

            foreach (IObjetHierarchiqueACodeHierarchique obj in listeSoeurs)
            {
                tableCodesUtilises[obj.CodeSystemePartiel] = true;
            }

            //Cherche le prochain numéro libre
            int nCpt = nLastCodeAlloue;

            strCle = "";
            do
            {
                nCpt++;
                strCle = GetCle(nCpt, objet.NbCarsParNiveau);

                /*listeSoeurs.Filtre = new CFiltreData(objet.ChampCodeSystemePartiel + "=@1",
                 *      strCle);*/
            }while (tableCodesUtilises.ContainsKey(strCle));
            nLastCodeAlloue = nCpt;
            objet.ChangeCodePartiel(strCle);
            m_dicLastCodeForType[objet.GetType()] = nLastCodeAlloue;
        }
コード例 #13
0
        //-------------------------------------------------------------------
        public static CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte, string strNomTable)
        {
            lock (typeof(CObjetHierarchiqueServeur))//Empeche que plusieurs thread entrent en même temps
            {
                CResultAErreur result = CResultAErreur.True;
                if (!result)
                {
                    return(result);
                }

                DataTable table = contexte.Tables[strNomTable];

                ArrayList lstRows = new ArrayList(table.Rows);

                IObjetHierarchiqueACodeHierarchique objet = (IObjetHierarchiqueACodeHierarchique)Activator.CreateInstance(CContexteDonnee.GetTypeForTable(strNomTable), new object[] { contexte });

                string strInfosDebug = "";

                /*/*** START DEBUG :  ajout d'une trace pour analyser le bug chez OOREDOO
                 * strInfosDebug = "DEBUG_TIMOS" + Environment.NewLine;
                 * strInfosDebug += "Nom de la table : " + strNomTable + Environment.NewLine;
                 * strInfosDebug += "Contenu des rows : " + Environment.NewLine;
                 * foreach (DataColumn col in table.Columns)
                 * {
                 *  strInfosDebug += col.ColumnName + ";";
                 * }
                 * strInfosDebug += Environment.NewLine;
                 *
                 * foreach (DataRow row in lstRows)
                 * {
                 *  foreach (var item in row.ItemArray)
                 *  {
                 *      strInfosDebug += item.ToString() + ";";
                 *  }
                 *  strInfosDebug += Environment.NewLine;
                 * }
                 * C2iEventLog.WriteInfo(strInfosDebug);
                 * /*** END DEBUG ***/

                try
                {
                    //C2iEventLog.WriteInfo("DEBUG_TIMOS - TraitementAvantSauvegarde() objet hiérarchique - before Sort");
                    lstRows.Sort(new CRowSorterSurParent(objet.ChampIdParent));
                    //C2iEventLog.WriteInfo("DEBUG_TIMOS - TraitementAvantSauvegarde() objet hiérarchique - after Sort");
                }
                catch (Exception ex)
                {
                    //*** START DEBUG 02/11/2020 :  ajout d'une trace pour analyser le bug chez OOREDOO
                    // Cause problème de tri sur table objets hiérarchiques sur champ idParent
                    strInfosDebug  = "DEBUG_TIMOS" + Environment.NewLine;
                    strInfosDebug += "ERROR MESSAGE : " + ex.Message + Environment.NewLine;
                    C2iEventLog.WriteErreur(strInfosDebug);
                    /*** END DEBUG ***/
                }

                object lastParent = DBNull.Value;

                int nLastCode = 0;
                foreach (DataRow row in lstRows)
                {
                    //Allocation du code famille
                    objet = (IObjetHierarchiqueACodeHierarchique)Activator.CreateInstance(CContexteDonnee.GetTypeForTable(strNomTable), new object[] { row });
                    if (objet.Row.RowState != DataRowState.Deleted && (objet.CodeSystemePartiel == objet.CodePartielDefaut || HasChange(objet, objet.ChampIdParent)))
                    {
                        if (!objet.Row[objet.ChampIdParent].Equals(lastParent))
                        {
                            nLastCode  = 0;
                            lastParent = objet.Row[objet.ChampIdParent];
                        }
                        AlloueCode(objet, ref nLastCode);
                    }
                }
                return(result);
            }
        }