protected string GetNewNom(EntiteTable Entite, string NomTable) { string NomEntite = ""; #region 1 - On récupère l'ID de notre nouvelle entité string strRequete = "SELECT "; string strNomSequence = "SQ"; DataSet dsTmp = new DataSet(); IDataAdapter adapter; switch (Entite) { case EntiteTable.Trigger: strNomSequence += "TG_"; break; case EntiteTable.ClefEtrangere: strNomSequence += "FK_"; break; case EntiteTable.Index: strNomSequence += "IX_"; break; case EntiteTable.Sequence: strNomSequence += "SQ_"; break; default: break; } strNomSequence += NomTable; if (!SequenceExists(strNomSequence)) { CreerSequencesNumerotationTable(NomTable); } strRequete += strNomSequence + ".NEXTVAL FROM SYS.\"DUAL\" "; adapter = Connection.GetSimpleReadAdapter(strRequete); Connection.FillAdapter(adapter, dsTmp); string nID = dsTmp.Tables[0].Rows[0][0].ToString(); #endregion #region 2 - On Compose le nom de notre entité avec cet ID switch (Entite) { case EntiteTable.Trigger: NomEntite = "T"; break; case EntiteTable.ClefEtrangere: NomEntite = "F"; break; case EntiteTable.Index: NomEntite = "I"; break; case EntiteTable.Sequence: NomEntite = "S"; break; } NomEntite += CGenerateurStringUnique.GetCodeFor(long.Parse(nID)); if ((NomEntite.Length + NomTable.Length) > 30) { int nDiff = Math.Abs(30 - (NomEntite.Length + NomTable.Length)); string strSubNomTable = NomTable.Substring(0, (NomTable.Length - nDiff)); NomEntite = strSubNomTable + NomEntite; } else { NomEntite = NomTable + NomEntite; } #endregion return(NomEntite); }
//------------------------------------------------------------------- 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); }