Exemple #1
0
        /*
         * Megtaláljuk R_* kezdését, illetve a végét /R_*-ot.
         * Lemásoljuk annyiszor, ahány adat van a listába
         * Majd végig iterálunk a tag-eken és alkalmazzuk a SwapDataInSubList-et
         */
        public void MergeData(WordprocessingDocument doc, BaseData baseData)
        {
            RecursiveDatasHolder recDatas = baseData as RecursiveDatasHolder;
            List <Run>           runs     = GetRuns(doc);

            //Kitöröljük azokat a részeket, amikhez nem tartozik adat az adatfile-ból
            DeletePartsWithNoData(ref runs, ref recDatas);

            //Minden megmaradó Recursive részhez kigyüjtjük a kezdő és a záró indexeket
            Dictionary <string, Tuple <int, int> > recLocations = GetStartAndEndIndexes(runs);

            //A kezdő és záró indexekkel (recLocations) copyzzuk annyiszor, ahányszor előfordul az adat
            CloneAllRecursiveFields(runs, recLocations, recDatas);

            //Kigyüjtjük a FieldCode-okat és elkezdjük cserélgetni az adatokat
            List <FieldCode> fieldCodes = doc.MainDocumentPart.RootElement.Descendants <FieldCode>().ToList();
            List <FieldCode> newFc      = FilterFieldCodes(fieldCodes);
            Dictionary <string, List <string> > datasInDict = TransformRecDatasToDict(recDatas);
            WordDataSwapper swapper = new WordDataSwapper();

            foreach (var fc in newFc)
            {
                swapper.SwapFieldCode(fc, datasInDict);
            }


            runs = GetRuns(doc);
            foreach (var run in runs)
            {
                DeleteFlagTags(run);
            }
        }
 public WordGeneratorField()
 {
     dataSwapper = new WordDataSwapper();
 }