コード例 #1
0
        private void m_btnSave_Click(object sender, EventArgs e)
        {
            if (m_arbre.Nodes.Count == 0)
            {
                return;
            }
            CRepertoire dossier = m_arbre.Nodes[0].Tag as CRepertoire;

            if (dossier != null)
            {
                SaveFileDialog dlg = new SaveFileDialog();
                dlg.Filter = "External explorer file|*.extExp|All files|*.*";
                if (dlg.ShowDialog() == DialogResult.OK)
                {
                    CResultAErreur result = CSerializerObjetInFile.SaveToFile(dossier,
                                                                              "EXTERNAL_EXPLORER",
                                                                              dlg.FileName
                                                                              );
                    if (result)
                    {
                        MessageBox.Show("Save ok");
                    }
                    else
                    {
                        MessageBox.Show(result.Erreur.ToString());
                    }
                }
            }
        }
コード例 #2
0
ファイル: CFormSearchFiles.cs プロジェクト: ykebaili/Timos
        private void SearchThread(object state)
        {
            Regex       regDir        = CPatternMatch.Convert(m_strDirPattern);
            Regex       regFile       = CPatternMatch.Convert(m_strFilePattern);
            CRepertoire repSel        = null;
            CFichier    ficSel        = null;
            CFichier    fichierTrouve = null;

            if (m_formMain != null)
            {
                repSel = m_formMain.GetRepertoireSel();
                ficSel = m_formMain.GetFichierSel();
                if (repSel != null)
                {
                    fichierTrouve = repSel.FindNext(true, repSel, ficSel, regDir, regFile, m_indicateurProgression);
                    if (fichierTrouve != null)
                    {
                        m_formMain.SelectFichier(fichierTrouve);
                    }
                }
            }
            CFormProgression.EndIndicateur(m_indicateurProgression);
            m_threadSearch = null;
            Invoke((MethodInvoker) delegate { UpdateVisuel(); });
            if (fichierTrouve == null)
            {
                MessageBox.Show("Pattern not found");
            }
        }
コード例 #3
0
 private void FillLogs(CRepertoire repertoire, StringBuilder bl)
 {
     if (repertoire.InfoImport.Length > 0)
     {
         bl.Append(repertoire.FullName);
         bl.Append("\t");
         bl.Append(repertoire.InfoImport);
         bl.Append(Environment.NewLine);
     }
     foreach (CFichier fichier in repertoire.GetChilds <CFichier>())
     {
         if (fichier.InfoImport.Length > 0)
         {
             bl.Append(repertoire.FullName);
             bl.Append("/");
             bl.Append(fichier.Nom);
             bl.Append("\t");
             bl.Append(fichier.InfoImport);
             bl.Append(Environment.NewLine);
         }
     }
     foreach (CRepertoire rep in repertoire.GetChilds <CRepertoire>())
     {
         FillLogs(rep, bl);
     }
 }
コード例 #4
0
 public void FillFrom(string strPathComplet)
 {
     Nom = Path.GetFileName(strPathComplet);
     foreach (string strDir in Directory.GetDirectories(strPathComplet))
     {
         CRepertoire dossier = GetChilds <CRepertoire>().FirstOrDefault(d => d.Nom == Path.GetFileName(strDir));
         if (dossier == null)
         {
             dossier = new CRepertoire();
         }
         dossier.FillFrom(strDir);
         m_listeElements.Add(dossier);
     }
     foreach (string strFile in Directory.GetFiles(strPathComplet))
     {
         CFichier fichier = GetChilds <CFichier>().FirstOrDefault(fi => fi.Nom == Path.GetFileName(strFile));
         if (fichier == null)
         {
             fichier = new CFichier();
         }
         fichier.Nom = Path.GetFileName(strFile);
         FileInfo f = new FileInfo(strFile);
         fichier.LastModifDate = f.LastWriteTime;
         fichier.Size          = f.Length;
         m_listeElements.Add(fichier);
     }
 }
コード例 #5
0
 private void FillItem(ListViewItem item, CRepertoire dossier)
 {
     item.Text            = dossier.Nom;
     item.ImageIndex      = GetIndexImageDossier(dossier);
     item.StateImageIndex = item.ImageIndex;
     item.Tag             = dossier;
 }
コード例 #6
0
        private void FillFichiers(CRepertoire dossier)
        {
            m_wndListeFichiers.BeginUpdate();
            m_wndListeFichiers.Items.Clear();
            List <CRepertoire> dossiers = new List <CRepertoire>(from e in dossier.ElementsContenus
                                                                 where e is CRepertoire
                                                                 select e as CRepertoire);

            dossiers.Sort((x, y) => x.Nom.CompareTo(y.Nom));
            foreach (CRepertoire dossierFils in dossiers)
            {
                if (ShoudSeeDossier(dossierFils))
                {
                    ListViewItem item = new ListViewItem();
                    FillItem(item, dossierFils);
                    m_wndListeFichiers.Items.Add(item);
                }
            }

            List <CFichier> fichiers = new List <CFichier>(from e in dossier.ElementsContenus
                                                           where e is CFichier
                                                           select e as CFichier);

            fichiers.Sort((x, y) => x.Nom.CompareTo(y.Nom));
            foreach (CFichier fichier in fichiers)
            {
                ListViewItem item = new ListViewItem();
                FillItem(item, fichier);
                m_wndListeFichiers.Items.Add(item);
            }
            m_wndListeFichiers.EndUpdate();
        }
コード例 #7
0
        private void m_btnLoad_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();

            dlg.Filter = "External explorer file|*.extExp|All files|*.*";
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                DateTime       dt      = DateTime.Now;
                CRepertoire    dossier = new CRepertoire();
                CResultAErreur result  = CSerializerObjetInFile.ReadFromFile(dossier,
                                                                             "EXTERNAL_EXPLORER",
                                                                             dlg.FileName);
                TimeSpan sp = DateTime.Now - dt;

                if (result)
                {
                    m_dossierRacine = dossier;
                    FillTree();
                }
                else
                {
                    MessageBox.Show(result.Erreur.ToString());
                }
            }
        }
コード例 #8
0
 private TreeNode FindNode(CRepertoire rep, TreeNodeCollection nodes)
 {
     foreach (TreeNode child in nodes)
     {
         if (child.Tag == rep)
         {
             return(child);
         }
     }
     return(null);
 }
コード例 #9
0
 private void FillNode(TreeNode node, CRepertoire dossier)
 {
     node.Text               = dossier.Nom;
     node.ImageIndex         = GetIndexImageDossier(dossier);
     node.SelectedImageIndex = node.ImageIndex;
     node.Tag = dossier;
     if (node.Nodes.Count == 0 && dossier.GetChilds <CRepertoire>().Count() > 0)
     {
         node.Nodes.Add(new TreeNode());
     }
 }
コード例 #10
0
        private void m_btnBrowse_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog dlg = new FolderBrowserDialog();

            if (dlg.ShowDialog() == DialogResult.OK)
            {
                string strRepRacine = dlg.SelectedPath;
                m_dossierRacine = new CRepertoire();
                m_dossierRacine.FillFrom(strRepRacine);
                FillTree();
            }
        }
コード例 #11
0
 //-----------------------------------------------------------------------------------------
 public int GetIndexImageDossier(CRepertoire repertoire)
 {
     if (!repertoire.ImportDone)
     {
         return(0);
     }
     else if (repertoire.HasErreurImport())
     {
         return(4);
     }
     return(2);
 }
コード例 #12
0
        public CRepertoire GetRepertoireSel()
        {
            CRepertoire rep = null;

            Invoke((MethodInvoker) delegate
            {
                if (m_arbre.SelectedNode != null)
                {
                    rep = m_arbre.SelectedNode.Tag as CRepertoire;
                }
            });
            return(rep);
        }
コード例 #13
0
        //-----------------------------------------------------------------------------------------
        private void RefreshNode(TreeNode node)
        {
            CRepertoire dossier = node.Tag as CRepertoire;

            if (dossier != null)
            {
                FillNode(node, dossier);
            }
            foreach (TreeNode child in node.Nodes)
            {
                RefreshNode(child);
            }
        }
コード例 #14
0
        private void ShowInfos(object obj)
        {
            if (obj == null)
            {
                m_panelInfo.Visible = false;
            }
            CRepertoire repertoire = obj as CRepertoire;

            if (repertoire != null)
            {
                m_imageErreur.Image   = m_imagesFichiers.Images[GetIndexImageDossier(repertoire)];
                m_lblTitreErreur.Text = repertoire.Nom;
                m_txtErreur.Text      = repertoire.InfoImport;
            }
            CFichier fichier = obj as CFichier;

            if (fichier != null)
            {
                m_imageErreur.Image   = m_imagesFichiers.Images[GetIndexImageFichier(fichier)];
                m_lblTitreErreur.Text = fichier.Nom;
                if (fichier.KeyObjetAssocie != null && fichier.TypeObjetAssocie != null)
                {
                    m_txtErreur.Text = "Imported to ";
                    CObjetDonneeAIdNumerique objet = null;
                    if (CImportMyanmarConst.ContexteDonnee != null)
                    {
                        try
                        {
                            objet = Activator.CreateInstance(fichier.TypeObjetAssocie, new object[] { CImportMyanmarConst.ContexteDonnee }) as CObjetDonneeAIdNumerique;
                            if (obj != null && objet.ReadIfExists(fichier.KeyObjetAssocie))
                            {
                                m_txtErreur.Text += objet.DescriptionElement;
                            }
                        }
                        catch { }
                    }
                    if (objet == null && fichier.TypeObjetAssocie != null)
                    {
                        m_txtErreur.Text += DynamicClassAttribute.GetNomConvivial(fichier.TypeObjetAssocie);
                    }
                    else
                    {
                        m_txtErreur.Text += " ? ";
                    }
                }
                else
                {
                    m_txtErreur.Text = fichier.InfoImport;
                }
            }
        }
コード例 #15
0
 public void Create(CRepertoire repertoireRacine)
 {
     foreach (CRepertoire repProjet in repertoireRacine.GetChilds <CRepertoire>())
     {
         foreach (CRepertoire repCandidat in repProjet.GetChilds <CRepertoire>())
         {
             CInfoProjet info = new CInfoProjet(repProjet.Nom, repCandidat.Nom);
             foreach (CRepertoire repDetail in repCandidat.GetChilds <CRepertoire>())
             {
                 FillDic(repDetail, info);
             }
         }
     }
 }
コード例 #16
0
        private bool ShoudSeeDossier(CRepertoire dossier)
        {
            bool bResult = true;

            if (m_chkHideDirsWithoutFiles.Checked)
            {
                bResult &= dossier.HasFiles;
            }
            if (m_chkShowErrors.Checked)
            {
                bResult &= (dossier.HasErreurImport());
            }
            return(bResult);
        }
コード例 #17
0
        private void ClearImportInformations(TreeNode node)
        {
            if (node == null)
            {
                return;
            }
            CRepertoire rep = node.Tag as CRepertoire;

            if (rep == null)
            {
                return;
            }
            m_arbre.BeginUpdate();
            rep.ClearDataImport();
            RefreshNode(node);
            m_arbre.EndUpdate();
        }
コード例 #18
0
 private void FillDic(CRepertoire repertoire, CInfoProjet infoEnCours)
 {
     if (repertoire.GetChilds <CFichier>().Count() > 0)
     {
         List <CInfoProjet> lst = null;
         if (!m_dicRepsToProjets.TryGetValue(repertoire.Nom.ToUpper(), out lst))
         {
             lst = new List <CInfoProjet>();
             m_dicRepsToProjets[repertoire.Nom.ToUpper()] = lst;
         }
         lst.Add(infoEnCours);
     }
     foreach (CRepertoire sub in repertoire.GetChilds <CRepertoire>())
     {
         FillDic(sub, infoEnCours);
     }
 }
コード例 #19
0
ファイル: CImporteurGED.cs プロジェクト: ykebaili/Timos
        private CResultAErreur ImportRepCandidat(CProjet projetNominal,
                                                 CProjet projetCandidat,
                                                 CRepertoire repCandidat,
                                                 string strPathGed)
        {
            strPathGed += "\\" + repCandidat.Nom;
            CResultAErreur result = CResultAErreur.True;

            repCandidat.ImportDone = true;
            foreach (CRepertoire repertoire in repCandidat.GetChilds <CRepertoire>())
            {
                result = ImportRep(projetNominal, projetCandidat, repertoire, strPathGed);
                if (!result)
                {
                    return(result);
                }
            }
            return(result);
        }
コード例 #20
0
        private void FillChildrens(TreeNode nodeToFill)
        {
            m_arbre.BeginUpdate();
            nodeToFill.Nodes.Clear();
            CRepertoire        dossier  = nodeToFill.Tag as CRepertoire;
            List <CRepertoire> dossiers = new List <CRepertoire>(dossier.GetChilds <CRepertoire>());

            dossiers.Sort((x, y) => x.Nom.CompareTo(y.Nom));
            foreach (CRepertoire dossierFils in dossiers)
            {
                if (ShoudSeeDossier(dossierFils))
                {
                    TreeNode node = new TreeNode();
                    FillNode(node, dossierFils);
                    nodeToFill.Nodes.Add(node);
                }
            }
            m_arbre.EndUpdate();
        }
コード例 #21
0
        /* public bool FindNext ( string strDirPattern, string strFilePattern )
         * {
         *   TreeNode node = m_arbre.SelectedNode;
         *   if (node == null && m_arbre.Nodes.Count > 0)
         *       node = m_arbre.Nodes[0];
         *   if (node == null)
         *       return false;
         *   Regex regDir = CPatternMatch.Convert(strDirPattern);
         *   Regex regFile = CPatternMatch.Convert(strFilePattern);
         *   CRepertoire repertoireSel = node.Tag as CRepertoire;
         *   CFichier fichierSel = null;
         *   if ( m_wndListeFichiers.SelectedItems.Count > 0 )
         *   {
         *       fichierSel = m_wndListeFichiers.SelectedItems[0].Tag as CFichier;
         *   }
         *   CFichier fichier = repertoireSel.FindNext(true, null, fichierSel, regDir, regFile);
         *   if (fichier != null)
         *   {
         *       SelectFichier(fichier);
         *       return true;
         *   }
         *   else
         *   {
         *       MessageBox.Show("Pattern not found");
         *       return false;
         *   }
         *
         * }*/

        public void SelectFichier(CFichier fichier)
        {
            Invoke((MethodInvoker) delegate
            {
                List <CRepertoire> lstReps = new List <CRepertoire>();
                CRepertoire rep            = fichier.RepertoireContenant;
                while (rep != null)
                {
                    lstReps.Add(rep);
                    rep = rep.RepertoireContenant;
                }
                lstReps.Reverse();
                TreeNodeCollection nodes = m_arbre.Nodes;
                TreeNode nodeParent      = null;
                foreach (CRepertoire childRep in lstReps)
                {
                    nodeParent = FindNode(childRep, nodes);
                    if (nodeParent == null)
                    {
                        break;
                    }
                    nodeParent.Expand();
                    nodes = nodeParent.Nodes;
                }
                if (nodeParent != null)
                {
                    m_arbre.SelectedNode = nodeParent;
                    nodeParent.EnsureVisible();
                    foreach (ListViewItem item in m_wndListeFichiers.Items)
                    {
                        if (item.Tag == fichier)
                        {
                            item.Selected = true;
                            item.EnsureVisible();
                            break;
                        }
                    }
                }
            });
        }
コード例 #22
0
        private void m_wndListeFichiers_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            ListViewHitTestInfo info = m_wndListeFichiers.HitTest(e.X, e.Y);

            if (info.Item != null)
            {
                CRepertoire dossier = info.Item.Tag as CRepertoire;
                TreeNode    node    = m_arbre.SelectedNode;
                if (node != null)
                {
                    node.Expand();
                    foreach (TreeNode child in node.Nodes)
                    {
                        if (child.Tag == dossier)
                        {
                            m_arbre.SelectedNode = child;
                            break;
                        }
                    }
                }
            }
        }
コード例 #23
0
ファイル: CImporteurGED.cs プロジェクト: ykebaili/Timos
        public CResultAErreur ImporteDossierProjet(
            CProjet projetNominal,
            CRepertoire repertoire,
            string strPathGed)
        {
            repertoire.ClearDataImport();
            repertoire.ImportDone = true;
            //Trouve le projet candidat
            CProjet candidat = projetNominal.TousLesProjetsFils.FirstOrDefault(p => p.TypeProjet.Id == 14);

            if (candidat == null)
            {
                repertoire.InfoImport = "No candidate for this directory";
                return(CResultAErreur.True);
            }
            CResultAErreur result       = CResultAErreur.True;
            object         numCandidate = candidat.GetValeurChamp(2589);

            if (numCandidate == null)
            {
                repertoire.InfoImport = "Candidate " + candidat.Libelle + " has no candidate number";
                return(result);
            }
            string strNomCandidat = "Candidate " + numCandidate.ToString().PadLeft(2, '0');

            //Cherche le répertoire du candidat

            foreach (CRepertoire rep in repertoire.GetChilds <CRepertoire>())
            {
                if (rep.Nom.ToUpper().Equals(strNomCandidat.ToUpper()))
                {
                    result = ImportRepCandidat(projetNominal, candidat, rep, strPathGed);
                    return(result);
                }
            }
            repertoire.InfoImport = "Can not find directory " + strNomCandidat;
            return(result);
        }
コード例 #24
0
        private CResultAErreur ImportNode(TreeNode node, bool bOnlyNonFaits)
        {
            CResultAErreur result = CResultAErreur.True;

            if (node != null && node.Tag is CRepertoire)
            {
                CRepertoire repertoire = node.Tag as CRepertoire;
                if (!bOnlyNonFaits || !repertoire.ImportDone)
                {
                    CProjet projetNominal = null;
                    if (m_dicNominalCodeToProjet.TryGetValue(repertoire.Nom, out projetNominal))
                    {
                        CImporteurGED importeur = new CImporteurGED();
                        projetNominal.BeginEdit();
                        CDocumentGED.DesactiverControleDocumentsALaSauvegarde(projetNominal.ContexteDonnee, true);
                        result = importeur.ImporteDossierProjet(
                            projetNominal,
                            repertoire,
                            "2014\\8\\IMPORT\\" + repertoire.Nom);
                        if (result)
                        {
                            result = projetNominal.CommitEdit();
                        }
                        Invoke((MethodInvoker) delegate
                        {
                            RefreshNode(node);
                        });
                        if (!result)
                        {
                            projetNominal.CancelEdit();
                            return(result);
                        }
                    }
                }
            }
            return(result);
        }
コード例 #25
0
ファイル: CImporteurGED.cs プロジェクト: ykebaili/Timos
        private CResultAErreur ImportRep(CProjet projetNominal,
                                         CProjet projetCandidat,
                                         CRepertoire rep,
                                         string strPathGed)
        {
            CResultAErreur result = CResultAErreur.True;

            rep.ImportDone = true;
            strPathGed    += "\\" + rep.Nom;
            CMappingRepToDocSetup map = CMappingRepToDocSetup.GetMapping(rep.Nom);

            foreach (CFichier fichier in rep.GetChilds <CFichier>())
            {
                if (map == null)
                {
                    fichier.InfoImport = "No mapping for this directory";
                }
                else
                {
                    CObjetDonneeAIdNumerique objet = map.GetObjet(projetNominal,
                                                                  projetCandidat,
                                                                  fichier.Nom);
                    if (objet == null)
                    {
                        fichier.InfoImport = "Can not find associated objet for this file";
                    }
                    else
                    {
                        CCategorieGED cat = map.GetCatégorie(projetNominal.ContexteDonnee);
                        if (cat == null)
                        {
                            fichier.InfoImport = "Can not find EDM category for this file";
                        }
                        else
                        {
                            string       strCode = objet.IdUniversel + "/" + fichier.Nom;
                            CDocumentGED doc     = new CDocumentGED(projetNominal.ContexteDonnee);
                            if (!doc.ReadIfExists(new CFiltreData(CDocumentGED.c_champCle + "=@1", strCode)))
                            {
                                doc.CreateNewInCurrentContexte();
                            }
                            doc.Libelle = fichier.Nom;
                            doc.Cle     = strCode;
                            CReferenceDocument refDoc = new CReferenceDocument();
                            refDoc.TypeReference = new CTypeReferenceDocument(CTypeReferenceDocument.TypesReference.Fichier);
                            refDoc.NomFichier    = strPathGed + "\\" + fichier.Nom;
                            doc.ReferenceDoc     = refDoc;
                            doc.AddCategory(cat);
                            doc.AssocieA(objet);
                            fichier.SetObjetAssocie(objet);
                        }
                    }
                }
            }
            foreach (CRepertoire child in rep.GetChilds <CRepertoire>())
            {
                result = ImportRep(projetNominal, projetCandidat, child, strPathGed);
                if (!result)
                {
                    return(result);
                }
            }

            return(result);
        }
コード例 #26
0
        public CFichier FindNext(bool bCanGoUp, CRepertoire repertoireStart, CFichier fichierStart, Regex regExRepertoire, Regex regExFichier, IIndicateurProgression indicateur)
        {
            bool bStartSearch = fichierStart == null;

            if (repertoireStart != null && repertoireStart.RepertoireContenant == null)
            {
                repertoireStart = null;
            }
            if (regExRepertoire.IsMatch(Nom))
            {
                foreach (CFichier fichier in GetChilds <CFichier>())
                {
                    if (fichier == fichierStart)
                    {
                        bStartSearch = true;
                        continue;
                    }
                    if (!bStartSearch)
                    {
                        continue;
                    }
                    if (regExFichier.IsMatch(fichier.Nom))
                    {
                        return(fichier);
                    }
                }
            }
            if (RepertoireContenant == null && indicateur != null)
            {
                indicateur.SetBornesSegment(0, GetChilds <CRepertoire>().Count());
            }
            int nIndex = 0;

            bStartSearch = repertoireStart == null;
            foreach (CRepertoire rep in GetChilds <CRepertoire>())
            {
                if (RepertoireContenant == null)
                {
                    indicateur.SetInfo(rep.Nom);
                    nIndex++;
                    indicateur.SetValue(nIndex);
                }
                if (rep == repertoireStart)
                {
                    bStartSearch = true;
                    continue;
                }
                if (!bStartSearch)
                {
                    continue;
                }
                CFichier trouve = rep.FindNext(false, null, null, regExRepertoire, regExFichier, indicateur);
                if (trouve != null)
                {
                    return(trouve);
                }
                if (indicateur.CancelRequest)
                {
                    return(null);
                }
            }
            if (RepertoireContenant != null && bCanGoUp)
            {
                return(RepertoireContenant.FindNext(true, this, null, regExRepertoire, regExFichier, indicateur));
            }
            return(null);
        }