Esempio n. 1
0
        /// <summary>
        /// Transforme un dictionary de positions en une chaine
        /// </summary>
        /// <param name="datas"></param>
        /// <returns></returns>
        public static string JoinText(IDictionary <string, string> datas, TEXT.TextStructure schema)
        {
            try
            {
                StringBuilder retour = new StringBuilder();

                int lastPositionPlusSize = 0;
                int partnumber           = 0;
                foreach (var ipart in schema.GetPartsOrdered())
                {
                    TextStructurePart partschema = ipart.Value;


                    // obtenir la donnée
                    string orgnData = null;
                    if (datas.ContainsKey(partschema.NodeName))
                    {
                        orgnData = datas[partschema.NodeName];
                    }
                    if (string.IsNullOrWhiteSpace(orgnData) && partschema != null && partschema.CompleteNumber)
                    {
                        orgnData = "0";                                                                                         // si complete number, ce sera forcément des 0
                    }
                    retour.Append(JoinTextItem(schema, partschema, orgnData, partnumber, lastPositionPlusSize));
                    partnumber++;
                }
                return(retour.ToString());
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("JoinText {0}", ex.Message), ex);
            }
        }
Esempio n. 2
0
        private static Dictionary <string, string> SplitTextTXT(string inputString, TEXT.TextStructure schema)
        {
            try
            {
                int sizestring                     = inputString.Length;
                int lastPositionPlusSize           = 0;
                Dictionary <string, string> retour = new Dictionary <string, string>();
                foreach (var ipart in schema.GetPartsOrdered())
                {
                    TextStructurePart partschema = ipart.Value;

                    int itemPosition    = partschema.Position; // Attention position logique et non réel  1=0
                    int itemSize        = partschema.Length;
                    int itemPositionEnd = itemPosition + itemSize;
                    if (itemPositionEnd > sizestring)
                    {
                        itemSize = sizestring - itemPositionEnd;
                    }

                    if (sizestring < itemPosition || itemSize < 1)  // hors limite (la taille de la chaine est plus petite que ce qui a été défini)
                    {
                        retour.Add(partschema.NodeName, null);
                        continue;
                    }

                    // on découpe la partie qui nous interresse
                    string datastr = inputString.Substring(itemPosition, itemSize);

                    if (!schema.ReadDisallowTrim && datastr != null)
                    {
                        datastr = datastr.Trim();
                    }
                    retour.Add(partschema.NodeName, datastr);
                    lastPositionPlusSize = itemPositionEnd;
                }
                return(retour);
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("SplitText TXT {0}", ex.Message), ex);
            }
        }
Esempio n. 3
0
        private static string JoinTextItem(TEXT.TextStructure schema, TextStructurePart partschema, string orgnData, int partNumber, int lastPositionPlusSize)
        {
            try
            {
                // Valider / Transformer / dynamiser la donnée
                // !!!



                if (schema.TextMode == TextModeEnum.CSV) // Génération simple d'un CSV
                {
                    if (partNumber == 0)
                    {
                        return(orgnData);                 // on met pas de séparateur pour le premier champ
                    }
                    else
                    {
                        return(schema.TextModeCSVSeparator.ToString() + orgnData);
                    }
                }
                else if (schema.TextMode == TextModeEnum.TXT)
                {
                    // on ajoute des blancs ou des zero pour avoir la bonne taille
                    orgnData             = FORMAT.StringUtilities.Complete(orgnData, partschema.Length, partschema.CompleteNumber, true);
                    lastPositionPlusSize = partschema.Position + partschema.Length;

                    //Ajouter des blancs si il y as un trou (!!! es vraiement nécessaire ?)
                    if (lastPositionPlusSize < (partschema.Position))
                    {
                        return(new string(schema.TextModeCSVSeparator, partschema.Position - lastPositionPlusSize));
                    }
                    return(orgnData);
                }
                return(string.Empty);
            }
            catch (Exception)
            {
                throw;
            }
        }
Esempio n. 4
0
 private static Dictionary <string, string> SplitTextCSV(string inputString, TEXT.TextStructure schema)
 {
     try
     {
         string[] inputStringT = inputString.Split(schema.TextModeCSVSeparator);
         Dictionary <string, string> retour = new Dictionary <string, string>();
         foreach (var ipart in schema.GetPartsOrdered())
         {
             TextStructurePart partschema = ipart.Value;
             if (inputStringT.Length < partschema.Position)
             {
                 retour.Add(partschema.NodeName, null);
                 continue;
             }
             retour.Add(partschema.NodeName, inputStringT[ipart.Key]);
         }
         return(retour);
     }
     catch (Exception ex)
     {
         throw new Exception(string.Format("SplitText CSV {0}", ex.Message), ex);
     }
 }
Esempio n. 5
0
 /// <summary>
 /// Permet de découper un string en tableau de position
 /// </summary>
 /// <param name="text"></param>
 /// <param name="schema"></param>
 /// <returns></returns>
 public static Dictionary <string, string> SplitText(string inputString, TEXT.TextStructure schema)
 {
     if (string.IsNullOrWhiteSpace(inputString))
     {
         throw new Exception("SplitText inputString empty");
     }
     if (schema.TextMode == TextModeEnum.CSV)
     {
         if (!inputString.Contains(schema.TextModeCSVSeparator))
         {
             throw new Exception("SplitText inputString ne contient pas de séparateur");
         }
         return(SplitTextCSV(inputString, schema));
     }
     else if (schema.TextMode == TextModeEnum.TXT)
     {
         if (schema.Count == 0)
         {
             throw new Exception("SplitText La structure n'a pas été définie");
         }
         return(SplitTextTXT(inputString, schema));
     }
     return(null); // arrivera pas
 }
Esempio n. 6
0
 public static void ValidateText(IDictionary <string, string> datas, TEXT.TextStructure schema)
 {
 }