Exemple #1
0
        public WriteFileWorker(
            object sender,
            ProgressReporterInterface progress,
            string filename,
            FamilyFileTypeOperation operation,
            int filterIndex,
            ref FamilyTreeStoreBaseClass tree)
        {
            trace = new TraceSource("WriteFileWorker", SourceLevels.Warning);
            trace.TraceInformation("WriteFileWorker(" + filename + ")" + DateTime.Now);
            progressString = "Exporting...";

            familyTree       = tree;
            this.operation   = operation;
            this.filterIndex = filterIndex;

            progressReporter = progress;

            backgroundWorker = new BackgroundWorker();

            backgroundWorker.WorkerReportsProgress = true;
            backgroundWorker.DoWork             += new DoWorkEventHandler(DoWork);
            backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Completed);
            backgroundWorker.ProgressChanged    += new ProgressChangedEventHandler(ProgressChanged);

            backgroundWorker.RunWorkerAsync(filename);
        }
Exemple #2
0
        public void FileLoadProgress(int progressPercent, string text = null)
        {
            trace.TraceInformation("FamilyForm2::FileLoadProgress(" + progressPercent + ")");

            if (progressPercent < 0)
            {
                familyTree = readFileWorker.GetFamilyTree();
                if (familyTree != null)
                {
                    if (trace.Switch.Level.HasFlag(SourceLevels.Information))
                    {
                        familyTree.Print();
                    }

                    toolStripProgressBar1.Visible = false;
                    toolStripStatusLabel1.Text    = familyTree.GetShortTreeInfo();//"I:" + familyTree.individualList.Count + " F:" + familyTree.familyList.Count + " N:" + familyTree.noteList.Count;

                    //PopulatePersonList();

                    ConnectPanelsToTree(familyTree);
                }
                else
                {
                    trace.TraceEvent(TraceEventType.Error, 0, "  Error: tree == null! " + DateTime.Now);
                }
                progressReporter = null;
                readFileWorker   = null;
            }
            else
            {
                TextCallback(progressPercent, text);
            }
        }
            private void ReportMatchingProfiles(FamilyTreeStoreBaseClass familyTree1, string person1, FamilyTreeStoreBaseClass familyTree2, string person2)
            {
                IndividualClass person1full = familyTree1.GetIndividual(person1);
                IndividualClass person2full = familyTree2.GetIndividual(person2);

                resultReporterFunction(CreateListItem(familyTree1, person1full, familyTree2, person2full));
            }
Exemple #4
0
        public static void CompareTrees(FamilyTreeStoreBaseClass familyTree1, FamilyTreeStoreBaseClass familyTree2, ReportCompareResult reportDuplicate, ProgressReporterInterface reporter = null)
        {
            IEnumerator <IndividualClass> iterator1;
            int cnt1 = 0;

            iterator1 = familyTree1.SearchPerson(null, reporter);

            trace.TraceInformation("CompareTrees() started");

            if (iterator1 != null)
            {
                do
                {
                    IndividualClass person1 = iterator1.Current;

                    cnt1++;
                    if (person1 != null)
                    {
                        trace.TraceInformation(" 1:" + person1.GetName());
                        SearchDuplicates(person1, familyTree1, familyTree2, reportDuplicate, reporter);
                    }
                } while (iterator1.MoveNext());
                iterator1.Dispose();
            }
            else
            {
                trace.TraceInformation("iter=null");
            }
            trace.TraceInformation("CompareTrees() done");
        }
        public RelationTreeWorker(
            object sender,
            ProgressReporterInterface progress,
            string startPerson1Xref,
            string startPerson2Xref,
            int noOfGenerations,
            FamilyTreeStoreBaseClass familyTree)
        {
            trace = new TraceSource("RelationTreeWorker", SourceLevels.Information);

            //familyTree = stats.familyTree;

            progressReporter = progress;
            //this.stats = stats;
            this.familyTree       = familyTree;
            this.startPerson1Xref = startPerson1Xref;
            this.startPerson2Xref = startPerson2Xref;
            this.noOfGenerations  = noOfGenerations;
            this.relationList     = new RelationStackList();



            backgroundWorker = new BackgroundWorker();

            backgroundWorker.WorkerReportsProgress = true;
            backgroundWorker.DoWork             += new DoWorkEventHandler(DoWork);
            backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Completed);
            backgroundWorker.ProgressChanged    += new ProgressChangedEventHandler(ProgressChanged);

            backgroundWorker.RunWorkerAsync();
        }
        public override bool OpenFile(String fileName, ref FamilyTreeStoreBaseClass inFamilyTree, CompletedCallback callback)
        {
            //FamilyTreeStoreRam ramStore = (FamilyTreeStoreRam)inFamilyTree;

            trace.TraceInformation("XmlFileType::OpenFile( " + fileName + ") start " + DateTime.Now);

            FileStream fileStream = new FileStream(fileName, FileMode.Open);

            if (fileStream != null)
            {
                //DataContractSerializer serializer = new DataContractSerializer(typeof(FamilyTreeStoreRam));
                DataContractSerializer serializer = new DataContractSerializer(inFamilyTree.GetType());
                try
                {
                    inFamilyTree = (FamilyTreeStoreBaseClass)serializer.ReadObject(fileStream);
                }
                catch (SerializationException e)
                {
                    trace.TraceInformation("Exceptions:" + e.ToString());
                    inFamilyTree = null;
                }
                catch (ArgumentNullException e)
                {
                    trace.TraceInformation("Exceptions:" + e.ToString());
                    inFamilyTree = null;
                }

                fileStream.Close();
            }

            trace.TraceInformation("XmlFileType::OpenFile( " + fileName + ") done " + DateTime.Now);
            //anarkivStore.SetFile(fileName);
            callback(true);
            return(true);
        }
        public override void SetFamilyTree(FamilyTreeStoreBaseClass inFamilyTree)
        {
            trace.TraceInformation("TreeViewPanel1::SetFamilyTree()");

            familyTree = inFamilyTree;

            layoutDone = false;
        }
        public override bool OpenFile(String fileName, ref FamilyTreeStoreBaseClass inFamilyTree, CompletedCallback callback)
        {
            trace.TraceInformation("GedcomDecoder::OpenFile( " + fileName + ")");
            bool result = ReadFile(fileName, ref inFamilyTree);

            callback(result);
            return(result);
        }
Exemple #9
0
        public override void SetFamilyTree(FamilyTreeStoreBaseClass inFamilyTree)
        {
            if (printMode)
            {
                Debug.WriteLine("ImageViewPanel1::SetFamilyTree()");
            }

            familyTree = inFamilyTree;
        }
Exemple #10
0
            public FindFamilyThread(FamilyTreeStoreBaseClass familyTree, string familyXref, HandleNewFamily familyCallback)
            {
                this.familyTree  = familyTree;
                backgroundWorker = new BackgroundWorker();

                this.familyCallback      = familyCallback;
                backgroundWorker.DoWork += new DoWorkEventHandler(DoWork);
                backgroundWorker.RunWorkerAsync(familyXref);
                this.familyXref = familyXref;
                trace.TraceInformation("FindFamilyThread(" + familyXref + ")-start");
            }
Exemple #11
0
        public FamilyForm2(bool createTree = false)
        {
            trace              = new TraceSource("FamilyForm2", SourceLevels.Warning);
            nextTreeTabToAdd   = 0;
            nextPersonTabToAdd = 0;

            InitializeComponent();

            filterList = new List <IndividualFilterClass>();

            panelList = new List <TreeViewPanelBaseClass>();

            AddSearchPanel(new SearchPanel1());

            AddTreePanel(new AsyncTreePanel1());
            AddTreePanel(new TreeViewPanel2());
            AddTreePanel(new TreeViewPanel4());
            AddTreePanel(new TreeViewPanel5());
            AddTreePanel(new TreeViewPanel1());
            AddTreePanel(new ImageViewPanel1());

            AddPersonPanel(new PersonViewPanel1());
            AddPersonPanel(new SearchPanel1());
            AddPersonPanel(new CompletenessViewPanel1());
            AddPersonPanel(new RelationFinderPanel());
            //AddPersonPanel(new ComparePanel1());
            AddPersonPanel(new NotePanel());

            searchResultXrefList = new List <string>();

            foreach (TreeViewPanelBaseClass panel in panelList)
            {
                panel.SetParentForm(this);
            }
            m_addPersonForm = new AddPersonForm();

            m_addPersonForm.SetEventHandler(new System.EventHandler(AddPersonEvent));
            m_addPersonForm.Visible = false;

            if (createTree)
            {
                FamilyFileTypeCollection codec = new FamilyFileTypeCollection();
                //familyTree = new FamilyTreeStoreRam();
                //FamilyFileEncoderCollection codec = new FamilyFileEncoderCollection();

                familyTree = codec.CreateFamilyTreeStore("", CompletedCallback);

                //ConnectPanelsToTree(familyTree);
            }
            updateTimer          = new System.Windows.Forms.Timer();
            updateTimer.Tick    += new EventHandler(TimerEventProcessor);
            updateTimer.Interval = 1000 * 10; // 10 seconds
            updateTimer.Enabled  = true;
        }
Exemple #12
0
        public override bool OpenFile(String fileName, ref FamilyTreeStoreBaseClass inFamilyTree, CompletedCallback callback)
        {
            FamilyTreeStoreMyHeritage myHeritageStore = (FamilyTreeStoreMyHeritage)inFamilyTree;

            if (printFlag)
            {
                trace.TraceInformation("MyHeritageFileType::OpenFile( " + fileName + ")");
            }
            myHeritageStore.SetFile(fileName);
            callback(true);
            return(true);
        }
Exemple #13
0
 public AnarkivMappers(FamilyTreeStoreBaseClass familyTree)
 {
     this.familyTree      = familyTree;
     individualXrefMapper = new Dictionary <string, XrefMapperClass>();
     familyXrefMapper     = new Dictionary <string, XrefMapperClass>();
     multimediaXrefMapper = new Dictionary <string, XrefMapperClass>();
     noteXrefMapper       = new Dictionary <string, XrefMapperClass>();
     repositoryXrefMapper = new Dictionary <string, XrefMapperClass>();
     sourceXrefMapper     = new Dictionary <string, XrefMapperClass>();
     submissionXrefMapper = new Dictionary <string, XrefMapperClass>();
     submitterXrefMapper  = new Dictionary <string, XrefMapperClass>();
 }
Exemple #14
0
            public FindPersonThread(FamilyTreeStoreBaseClass familyTree, string personXref, HandleNewIndividual individualCallback)
            {
                this.familyTree  = familyTree;
                backgroundWorker = new BackgroundWorker();

                this.personCallback      = individualCallback;
                backgroundWorker.DoWork += new DoWorkEventHandler(DoWork);
                //backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Completed);
                backgroundWorker.RunWorkerAsync(personXref);
                this.personXref = personXref;
                trace.TraceInformation("FindPersonThread(" + personXref + ")-started");
            }
Exemple #15
0
        public override bool OpenFile(String fileName, ref FamilyTreeStoreBaseClass inFamilyTree, CompletedCallback callback)
        {
            FamilyTreeStoreGeni2 GeniStore = (FamilyTreeStoreGeni2)inFamilyTree;

            trace.TraceInformation("GeniFileType::OpenFile( " + fileName + ")");
            GeniStore.SetFile(fileName);
            if (!GeniStore.CallbackArmed())
            {
                callback(true);
            }
            return(true);
        }
        void ReadListFromFile()
        {
            OpenFileDialog fileDlg = new OpenFileDialog();

            fileDlg.InitialDirectory = utility.GetCurrentDirectory();
            fileDlg.Filter           = "Compare List|*.fsc";

            if (fileDlg.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
            {
                DataContractSerializer serializer = new DataContractSerializer(typeof(SavedMatches));

                FileStream   readFile = new FileStream(fileDlg.FileName, FileMode.Open);
                SavedMatches matches;
                matches = (SavedMatches)serializer.ReadObject(readFile);

                readFile.Close();

                bool found1 = false;
                bool found2 = false;
                familyTree1 = null;
                familyTree2 = null;

                int i = 0;
                foreach (FamilyForm2 form in formList)
                {
                    if (matches.database1 == form.Text)
                    {
                        found1                 = true;
                        selectedForm1          = form;
                        familyTree1            = form.GetTree();
                        listBox1.SelectedIndex = i;
                    }
                    if (matches.database2 == form.Text)
                    {
                        found2                 = true;
                        selectedForm2          = form;
                        familyTree2            = form.GetTree();
                        listBox2.SelectedIndex = i;
                    }
                    i++;
                }

                if (found1 && found2)
                {
                    matchListView1.Items.Clear();

                    AsyncWorkerProgress reporter = new AsyncWorkerProgress(WorkProgress);

                    compareWorker = new CompareTreeWorker(this, matches, reporter, familyTree1, familyTree2, ReportCompareResultFunction);
                }
            }
        }
Exemple #17
0
        public void StoreFile(FamilyTreeStoreBaseClass familyTree, string filename, FamilyFileTypeOperation operation, int variant = 0)
        {
            trace.TraceInformation("XmlEncoder::StoreFile() start " + DateTime.Now);

            FileStream             fileStream = new FileStream(filename, FileMode.Create);
            DataContractSerializer serializer = new DataContractSerializer(familyTree.GetType());

            serializer.WriteObject(fileStream, familyTree);

            fileStream.Close();

            trace.TraceInformation("XmlEncoder::StoreFile() done " + DateTime.Now);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (compareWorker != null)
            {
                trace.TraceInformation("Warning, compare already running...");
                return;
            }
            if (listBox1.SelectedIndex < 0)
            {
                MessageBox.Show("No tree selected as first", "Error", MessageBoxButtons.OK);
                return;
            }
            if (listBox2.SelectedIndex < 0)
            {
                MessageBox.Show("No tree selected as second", "Error", MessageBoxButtons.OK);
                return;
            }

            string name1 = listBox1.Items[listBox1.SelectedIndex].ToString();
            string name2 = listBox2.Items[listBox2.SelectedIndex].ToString();

            FamilyTreeStoreBaseClass familyTree1 = null;
            FamilyTreeStoreBaseClass familyTree2 = null;

            foreach (FamilyForm2 form in formList)
            {
                if (form.Text.IndexOf(name1) >= 0)
                {
                    familyTree1   = form.GetTree();
                    selectedForm1 = form;
                }
                if (form.Text.IndexOf(name2) >= 0)
                {
                    familyTree2   = form.GetTree();
                    selectedForm2 = form;
                }
            }



            if ((familyTree1 != null) && (familyTree2 != null))
            {
                matchListView1.Items.Clear();

                AsyncWorkerProgress reporter = new AsyncWorkerProgress(WorkProgress);

                compareWorker = new CompareTreeWorker(this, null, reporter, familyTree1, familyTree2, ReportCompareResultFunction);

                button1.Text = "Stop";
            }
        }
Exemple #19
0
 public bool OpenFile(String fileName, ref FamilyTreeStoreBaseClass inFamilyTree, CompletedCallback callback)
 {
     foreach (FamilyFileTypeBaseClass fileType in codecList)
     {
         trace.TraceInformation("OpenFile(" + fileName + "):" + fileType.GetType() + ":" + fileType.IsKnownFileType(fileName));
         if (fileType.IsKnownFileType(fileName))
         {
             //selectedType = GetType(fileType);
             return(fileType.OpenFile(fileName, ref inFamilyTree, callback));
         }
     }
     callback(false);
     return(false);
 }
Exemple #20
0
        public override bool OpenFile(String fileName, ref FamilyTreeStoreBaseClass inFamilyTree, CompletedCallback callback)
        {
            FamilyTreeStoreAnarkiv anarkivStore;

            if (inFamilyTree.GetType() == typeof(FamilyTreeStoreAnarkiv))
            {
                anarkivStore = (FamilyTreeStoreAnarkiv)inFamilyTree;
            }
            else
            {
                anarkivStore = (FamilyTreeStoreAnarkiv)CreateFamilyTreeStore(fileName, callback);
                ReadFile(ref inFamilyTree, anarkivStore);
            }

            trace.TraceInformation("AnarkivFileType::OpenFile( " + fileName + ")");
            anarkivStore.SetFile(fileName);
            callback(true);
            return(true);
        }
Exemple #21
0
 private void ConnectPanelsToTree(FamilyTreeStoreBaseClass tree)
 {
     foreach (TreeViewPanelBaseClass panel in panelList)
     {
         panel.SetFamilyTree(tree);
     }
     if (tree.GetIndividual() != null)
     {
         foreach (TreeViewPanelBaseClass panel in panelList)
         {
             panel.OnSelectedPersonChangedEvent(this, new PersonChangeEvent(tree.GetIndividual()));
             //panel.SetSelectedIndividual(tree.GetIndividual().GetXrefName());
         }
     }
     else
     {
         trace.TraceEvent(TraceEventType.Error, 0, "  Error: GetIndividual(first) == null! " + DateTime.Now);
     }
 }
Exemple #22
0
        public ReadFileWorker(
            object sender,
            ProgressReporterInterface progress,
            string filename,
            ref FamilyTreeStoreBaseClass tree,
            CompletedCallback callback)
        {
            trace = new TraceSource("ReadFileWorker", SourceLevels.Warning);

            familyTree = tree;

            progressReporter = progress;

            backgroundWorker = new BackgroundWorker();

            backgroundWorker.WorkerReportsProgress = true;
            backgroundWorker.DoWork             += new DoWorkEventHandler(DoWork);
            backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Completed);
            backgroundWorker.ProgressChanged    += new ProgressChangedEventHandler(ProgressChanged);
            completedCallback = callback;

            codec = new FamilyFileTypeCollection();

            if (codec.IsKnownFileType(filename))
            {
                trace.TraceInformation("ReadFileWorker.DoWork(" + filename + "): OK!" + DateTime.Now);

                if (familyTree == null)
                {
                    familyTree = codec.CreateFamilyTreeStore(filename, completedCallback);
                }
                codec.SetProgressTarget(backgroundWorker);

                familyTree.SetSourceFileName(filename);
            }
            else
            {
                trace.TraceInformation("ReadFileWorker(" + workerFileName + "): Filetype unknown!" + DateTime.Now);
            }
            workerFileName = filename;
            backgroundWorker.RunWorkerAsync(filename);
        }
        void SearchTree(FamilyTreeStoreBaseClass familyTree, String searchString)
        {
            IEnumerator <IndividualClass> iterator;


            iterator = familyTree.SearchPerson(searchString, progressReporter);

            if (iterator != null)
            {
                while (iterator.MoveNext())
                {
                    IndividualClass person = (IndividualClass)iterator.Current;

                    if (person != null)
                    {
                        AddToSearchResults(person);
                    }
                }
            }
        }
            public TreeWorker(
                SearchPanel1 sender,
                ProgressReporterInterface progress,
                string searchString,
                ref FamilyTreeStoreBaseClass familyTree)
            {
                trace        = new TraceSource("TreeWorker", SourceLevels.Warning);
                parentWindow = sender;

                progressReporter  = progress;
                this.familyTree   = familyTree;
                this.searchString = searchString;

                backgroundWorker = new BackgroundWorker();

                backgroundWorker.WorkerReportsProgress = true;
                backgroundWorker.DoWork             += new DoWorkEventHandler(DoWork);
                backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Completed);
                backgroundWorker.ProgressChanged    += new ProgressChangedEventHandler(ProgressChanged);

                backgroundWorker.RunWorkerAsync(searchString);
            }
Exemple #25
0
        public void StoreFile(FamilyTreeStoreBaseClass familyTree, string filename, FamilyFileTypeOperation operation, int variant = 0)
        {
            trace.TraceInformation("FamilyFileEncoderCollection.StoreFile({0},{1})", filename, variant);

            if (encoderMapList.Count == 0)
            {
                // We should never have to generate a filter
                // list with only one variant at this level...
                // The variant parameter has another meaning in this
                // class compared to real encoder classes...
                GetFileTypeFilter(operation);
            }
            if (variant < encoderMapList.Count)
            {
                selectedEncoder = encoderMapList[variant].encoder;
                if (storedProgressTarget != null)
                {
                    selectedEncoder.SetProgressTarget(storedProgressTarget);
                    storedProgressTarget = null;
                }
                selectedEncoder.StoreFile(familyTree, filename, operation, encoderMapList[variant].variant);
                return;
            }
            foreach (FamilyFileEncoder encoder in encoderList)
            {
                if (encoder.IsKnownFileType(filename))
                {
                    selectedEncoder = encoder;
                    if (storedProgressTarget != null)
                    {
                        encoder.SetProgressTarget(storedProgressTarget);
                        storedProgressTarget = null;
                    }
                    encoder.StoreFile(familyTree, filename, operation, variant);
                }
            }
        }
            public CompareTreeWorker(
                object sender,
                SavedMatches matches,
                AsyncWorkerProgress progress,
                FamilyTreeStoreBaseClass familyTree1,
                FamilyTreeStoreBaseClass familyTree2,
                ReportCompareResult resultReporter)
            {
                trace = new TraceSource("CompareTreeWorker", SourceLevels.All);

                resultReporterFunction = resultReporter;

                progressReporter = progress;
                this.matches     = matches;

                backgroundWorker = new BackgroundWorker();

                backgroundWorker.WorkerReportsProgress = true;
                if (matches == null)
                {
                    backgroundWorker.DoWork += new DoWorkEventHandler(DoWork);
                }
                else
                {
                    backgroundWorker.DoWork += new DoWorkEventHandler(DoWorkLoadFile);
                }

                backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Completed);
                backgroundWorker.ProgressChanged    += new ProgressChangedEventHandler(ProgressChanged);

                WorkerInterface workerInterface = new WorkerInterface();

                workerInterface.familyTree1 = familyTree1;
                workerInterface.familyTree2 = familyTree2;
                backgroundWorker.RunWorkerAsync(workerInterface);
            }
Exemple #27
0
        public static void SearchDuplicates(IndividualClass person1, FamilyTreeStoreBaseClass familyTree1, FamilyTreeStoreBaseClass familyTree2, ReportCompareResult reportDuplicate, ProgressReporterInterface reporter = null)
        {
            IndividualEventClass birth = person1.GetEvent(IndividualEventClass.EventType.Birth);
            IndividualEventClass death = person1.GetEvent(IndividualEventClass.EventType.Death);

            if (reporter != null)
            {
                trace.TraceInformation(reporter.ToString());
            }
            if (((birth != null) && (birth.GetDate() != null) && (birth.GetDate().ValidDate())) ||
                ((death != null) && (death.GetDate() != null) && (death.GetDate().ValidDate())))
            {
                string fullName = person1.GetName().Replace("*", "");
                IEnumerator <IndividualClass> iterator2 = familyTree2.SearchPerson(fullName);
                int cnt2 = 0;

                if (iterator2 != null)
                {
                    int cnt3 = 0;
                    do
                    {
                        IndividualClass person2 = iterator2.Current;

                        if (person2 != null)
                        {
                            cnt3++;
                            //trace.TraceInformation(reporter.ToString() + "   2:" + person2.GetName());
                            if ((familyTree1 != familyTree2) || (person1.GetXrefName() != person2.GetXrefName()))
                            {
                                if (ComparePerson(person1, person2))
                                {
                                    reportDuplicate(familyTree1, person1.GetXrefName(), familyTree2, person2.GetXrefName());
                                }
                                cnt2++;
                            }
                        }
                    } while (iterator2.MoveNext());

                    iterator2.Dispose();
                    trace.TraceInformation(" " + fullName + " matched with " + cnt2 + "," + cnt3);
                }

                if (cnt2 == 0) // No matches found for full name
                {
                    if ((person1.GetPersonalName().GetName(PersonalNameClass.PartialNameType.BirthSurname).Length > 0) &&
                        (person1.GetPersonalName().GetName(PersonalNameClass.PartialNameType.Surname).Length > 0) &&
                        !person1.GetPersonalName().GetName(PersonalNameClass.PartialNameType.Surname).Equals(person1.GetPersonalName().GetName(PersonalNameClass.PartialNameType.BirthSurname)))
                    {
                        String strippedName = person1.GetName().Replace("*", "");

                        if (strippedName.Contains(person1.GetPersonalName().GetName(PersonalNameClass.PartialNameType.Surname)))
                        {
                            String maidenName = strippedName.Replace(person1.GetPersonalName().GetName(PersonalNameClass.PartialNameType.Surname), "").Replace("  ", " ");
                            IEnumerator <IndividualClass> iterator3 = familyTree2.SearchPerson(maidenName);
                            //trace.TraceInformation(" Searching Maiden name " + maidenName);

                            if (iterator3 != null)
                            {
                                int cnt3 = 0;
                                do
                                {
                                    IndividualClass person2 = iterator3.Current;

                                    if (person2 != null)
                                    {
                                        if ((familyTree1 != familyTree2) || (person1.GetXrefName() != person2.GetXrefName()))
                                        {
                                            cnt3++;
                                            if (ComparePerson(person1, person2))
                                            {
                                                reportDuplicate(familyTree1, person1.GetXrefName(), familyTree2, person2.GetXrefName());
                                            }
                                        }
                                    }
                                } while (iterator3.MoveNext());
                                iterator3.Dispose();
                                trace.TraceInformation(" Maiden name " + maidenName + " mathched with " + cnt3);
                            }
                        }
                        if (strippedName.Contains(person1.GetPersonalName().GetName(PersonalNameClass.PartialNameType.BirthSurname)))
                        {
                            String marriedName = strippedName.Replace(person1.GetPersonalName().GetName(PersonalNameClass.PartialNameType.BirthSurname), "").Replace("  ", " ");
                            IEnumerator <IndividualClass> iterator3 = familyTree2.SearchPerson(marriedName);

                            //trace.TraceInformation(" Searching Married name " + marriedName);
                            if (iterator3 != null)
                            {
                                int cnt3 = 0;
                                do
                                {
                                    //IndividualClass person1 = iterator1.Current;
                                    IndividualClass person2 = iterator3.Current;

                                    if (person2 != null)
                                    {
                                        //trace.TraceInformation(reporter.ToString() + "   2:" + person2.GetName());
                                        if ((familyTree1 != familyTree2) || (person1.GetXrefName() != person2.GetXrefName()))
                                        {
                                            cnt3++;
                                            if (ComparePerson(person1, person2))
                                            {
                                                reportDuplicate(familyTree1, person1.GetXrefName(), familyTree2, person2.GetXrefName());
                                            }
                                        }
                                    }
                                } while (iterator3.MoveNext());
                                iterator3.Dispose();
                                trace.TraceInformation(" Married name " + marriedName + " matched to " + cnt3);
                            }
                        }
                    }
                }
            }
            else
            {
                trace.TraceInformation("No valid birth or death date for " + person1.GetName().ToString() + " skip duplicate search");
            }
        }
Exemple #28
0
 public abstract bool OpenFile(String fileName, ref FamilyTreeStoreBaseClass inFamilyTree, CompletedCallback callback);
Exemple #29
0
        private void ReadFile(ref FamilyTreeStoreBaseClass inFamilyTree, FamilyTreeStoreAnarkiv anarkivStore)
        {
            //IndividualClass person = anarkivStore.GetIndividual();

            IEnumerator <IndividualClass> people = anarkivStore.SearchPerson();

            AnarkivMappers mappers = new AnarkivMappers(inFamilyTree);
            IDictionary <string, XrefMapperClass> individualMapper = mappers.GetMapper(XrefType.Individual);
            IDictionary <string, XrefMapperClass> familyMapper     = mappers.GetMapper(XrefType.Family);

            int counter = 0;

            while (people.MoveNext())
            {
                IndividualClass person = people.Current;

                trace.TraceInformation("Person[" + counter++ + "]:" + person.GetPersonalName().ToString());

                IndividualXrefClass xref = new IndividualXrefClass(inFamilyTree.CreateNewXref(XrefType.Individual));

                individualMapper.Add(person.GetXrefName(), new XrefMapperClass(xref.GetXrefName(), true));
                person.SetXrefName(xref.GetXrefName());

                if (person.GetFamilyChildList() != null)
                {
                    IList <FamilyXrefClass> newChildFamilies = new List <FamilyXrefClass>();
                    foreach (FamilyXrefClass childFamily in person.GetFamilyChildList())
                    {
                        FamilyXrefClass newFamily = new FamilyXrefClass(mappers.GetLocalXRef(XrefType.Family, childFamily.GetXrefName()));
                        newChildFamilies.Add(newFamily);
                    }
                    person.SetFamilyChildList(newChildFamilies);
                }

                if (person.GetFamilySpouseList() != null)
                {
                    IList <FamilyXrefClass> newSpouseFamilies = new List <FamilyXrefClass>();
                    foreach (FamilyXrefClass spouseFamily in person.GetFamilySpouseList())
                    {
                        FamilyXrefClass newFamily = new FamilyXrefClass(mappers.GetLocalXRef(XrefType.Family, spouseFamily.GetXrefName()));
                        newSpouseFamilies.Add(newFamily);
                    }
                    person.SetFamilySpouseList(newSpouseFamilies);
                }


                inFamilyTree.AddIndividual(person);
            }

            IEnumerator <FamilyClass> familyEnumerator = anarkivStore.SearchFamily();

            counter = 0;
            while (familyEnumerator.MoveNext())
            {
                FamilyClass family    = familyEnumerator.Current;
                FamilyClass newFamily = new FamilyClass();

                trace.TraceInformation("Family[" + counter++ + "]:" + family.GetXrefName());
                newFamily.SetXrefName(mappers.GetLocalXRef(XrefType.Family, family.GetXrefName(), true));

                trace.TraceInformation("Family xref " + family.GetXrefName() + " ==> " + newFamily.GetXrefName());

                if (family.GetParentList() != null)
                {
                    //IList<IndividualXrefClass> newParentList = new List<IndividualXrefClass>();
                    foreach (IndividualXrefClass parent in family.GetParentList())
                    {
                        IndividualXrefClass newParent = new IndividualXrefClass(mappers.GetLocalXRef(XrefType.Individual, parent.GetXrefName()));
                        //newParentList.Add(newParent);
                        newFamily.AddRelation(newParent, FamilyClass.RelationType.Parent);
                        trace.TraceInformation(" add parent  " + parent.GetXrefName() + " => " + newParent.GetXrefName());
                    }
                }
                if (family.GetChildList() != null)
                {
                    //IList<IndividualXrefClass> newChildList = new List<IndividualXrefClass>();
                    foreach (IndividualXrefClass child in family.GetChildList())
                    {
                        IndividualXrefClass newChild = new IndividualXrefClass(mappers.GetLocalXRef(XrefType.Individual, child.GetXrefName()));
                        //newChildList.Add(newChild);
                        newFamily.AddRelation(newChild, FamilyClass.RelationType.Child);
                        trace.TraceInformation(" add child  " + child.GetXrefName() + " => " + newChild.GetXrefName());
                    }
                }
                //family.

                inFamilyTree.AddFamily(newFamily);
            }
        }
Exemple #30
0
 public abstract void SetFamilyTree(FamilyTreeStoreBaseClass inFamilyTree);