示例#1
0
        private void DragDropFiles(string[] strFichiers, CObjetDonneeAIdNumerique objet, CCategorieGED categorie)
        {
            CContexteDonnee ctxAppli = CSc2iWin32DataClient.ContexteCourant;

            using (CContexteDonnee contexte = ctxAppli.GetContexteEdition())
            {
                if (MessageBox.Show(m_lblInfoDragDrop.Text, "", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    foreach (string strFichier in strFichiers)
                    {
                        if (File.Exists(strFichier))
                        {
                            string strTitre = Path.GetFileName(strFichier);
                            string strExt   = Path.GetExtension(strFichier);
                            if (strExt.Length > 0)
                            {
                                strTitre = strTitre.Remove(strTitre.Length - strExt.Length);
                            }
                            CDocumentGED document = new CDocumentGED(contexte);
                            document.CreateNewInCurrentContexte();
                            document.Libelle = strTitre;
                            if (objet != null)
                            {
                                document.AssocieA(objet);
                            }
                            if (categorie != null)
                            {
                                CRelationDocumentGED_Categorie rel = new CRelationDocumentGED_Categorie(contexte);
                                rel.CreateNewInCurrentContexte();
                                rel.Categorie = categorie;
                                rel.Document  = document;
                            }
                            CTypeReferenceDocument typeRef = m_cmbModeStockage.SelectedValue as CTypeReferenceDocument;
                            if (typeRef == null)
                            {
                                typeRef = new CTypeReferenceDocument(CTypeReferenceDocument.TypesReference.Fichier);
                            }
                            CProxyGED proxy = new CProxyGED(contexte.IdSession, typeRef.Code);
                            proxy.AttacheToLocal(strFichier);
                            CResultAErreur result = proxy.UpdateGed();
                            document.ReferenceDoc = result.Data as CReferenceDocument;
                        }
                    }
                    contexte.CommitEdit();
                    Init(m_elementEdite);
                }
            }
            m_lblInfoDragDrop.Visible = false;
        }
示例#2
0
        //-------------------------------------------------------------------
        public CResultAErreur SaveDocument(CSourceDocument source,
                                           CTypeReferenceDocument typeReference,
                                           CReferenceDocument versionPrecedente,
                                           bool bIncrementeVersionFichier)
        {
            CResultAErreur result = CResultAErreur.True;

            //Copie du fichier

            try
            {
                switch (typeReference.Code)
                {
                case CTypeReferenceDocument.TypesReference.Fichier:
                    if (!(source is CSourceDocumentStream))
                    {
                        result.EmpileErreur(I.T("Document type '@1' source not supported|109", source.GetType().Name));
                        return(result);
                    }
                    string strNomFichier = "";
                    if (versionPrecedente != null)
                    {
                        strNomFichier = versionPrecedente.NomFichier;
                        strNomFichier = strNomFichier.Replace("..", ".");    //Correction erreurs passées
                        if (bIncrementeVersionFichier)
                        {
                            strNomFichier = IncNomFichier(strNomFichier);
                        }
                        string strExt = ((CSourceDocumentStream)source).Extension;
                        if (strExt.ToUpper() != "DAT")
                        {
                            strNomFichier = ChangeExtension(strNomFichier, ((CSourceDocumentStream)source).Extension);
                        }
                    }
                    else
                    {
                        string strPath = DateTime.Now.Year.ToString() + "\\";
                        strPath       += DateTime.Now.Month.ToString() + "\\";
                        strPath       += DateTime.Now.Day.ToString() + "\\";
                        strNomFichier  = strPath + CGenerateurStringUnique.GetNewNumero(m_nIdSession) + "_0.";
                        strNomFichier += ((CSourceDocumentStream)source).Extension;
                    }
                    //S'assure que le chemin du fichier existe
                    string[] strChemins = strNomFichier.Split('\\');
                    int      nChemin    = 0;
                    string   strTemp    = m_strPath;
                    foreach (string strChemin in strChemins)
                    {
                        if (nChemin < strChemins.Length - 1)
                        {
                            if (!Directory.Exists(m_strPath + strChemin))
                            {
                                Directory.CreateDirectory(strTemp + strChemin);
                            }
                            strTemp += strChemin + "\\";
                        }
                        nChemin++;
                    }

                    if (strNomFichier.LastIndexOf('.') < 0)
                    {
                        strNomFichier += ((CSourceDocumentStream)source).Extension;
                    }

                    if (File.Exists(m_strPath + strNomFichier))
                    {
                        File.Delete(m_strPath + strNomFichier);
                    }
                    FileStream stream = new FileStream(m_strPath + strNomFichier, FileMode.CreateNew);

                    Stream sourceStream = ((CSourceDocumentStream)source).SourceStream;

                    result = CStreamCopieur.CopyStream(sourceStream, stream, 32000);
                    if (!result)
                    {
                        File.Delete(strNomFichier);
                        return(result);
                    }
                    CReferenceDocument referenceFinale = new CReferenceDocument();
                    referenceFinale.NomFichier        = strNomFichier;
                    referenceFinale.CodeTypeReference = CTypeReferenceDocument.TypesReference.Fichier;
                    referenceFinale.TailleFichier     = (int)new FileInfo(m_strPath + strNomFichier).Length;

                    m_listeReferencesTemporaires.Add(new CReferenceTemporaire(referenceFinale));
                    if (m_timerNettoyage == null && C2iAppliServeur.GetValeur(c_cleDesactivationNettoyage) != null)
                    {
                        m_timerNettoyage = new Timer(new TimerCallback(NettoyageTemporaires), null, 1000 * 60 * 30, 1000 * 60 * 30);
                    }

                    result.Data = referenceFinale;
                    break;

                case CTypeReferenceDocument.TypesReference.LienDirect:
                    //Vérifie que le lien est accessible depuis le serveur
                    CSourceDocumentLienDirect sourceDirecte = source as CSourceDocumentLienDirect;
                    if (sourceDirecte == null)
                    {
                        result.EmpileErreur(I.T("Document type '@1' source not supported|109", source.GetType().Name));
                        return(result);
                    }
                    CReferenceDocument referenceFinaleLien = new CReferenceDocument();
                    referenceFinaleLien.NomFichier        = sourceDirecte.NomFichier;
                    referenceFinaleLien.CodeTypeReference = CTypeReferenceDocument.TypesReference.LienDirect;
                    referenceFinaleLien.TailleFichier     = (int)new FileInfo(sourceDirecte.NomFichier).Length;

                    if (!File.Exists(sourceDirecte.NomFichier))
                    {
                        result.EmpileErreur("File @1 cannot be stored in EDM, it can not be reached from server|20000", sourceDirecte.NomFichier);
                        return(result);
                    }
                    result.Data = referenceFinaleLien;
                    break;

                default:
                    result.EmpileErreur(I.T("File reference type @1 not supported|110", typeReference.ToString()));
                    return(result);
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
                result.EmpileErreur(I.T("Error while saving EDM |111"));
            }
            return(result);
        }