public void Add(HistoricalDocDto d)
        {
            var key = Base64UrlTextEncoder.Encode(
                new DocumentAggregateKey
            {
                HanziCanonical = d.HanziCanonical,
                Initial        = d.Initial,
                Final          = d.Final,
                Tone           = d.Tone
            }
                .ToByteArray());

            if (!documents.ContainsKey(key))
            {
                documents[key] = new HistoricalDocument()
                {
                    Id = key
                };
            }
            documents[key].Initial        = d.Initial;
            documents[key].Final          = d.Final;
            documents[key].Tone           = d.Tone;
            documents[key].HanziCanonical = d.HanziCanonical;
            documents[key].Buc            = d.Buc;
            documents[key].Yngping        = YngpingBekinUtil.FanqieToYngping(d.Initial, d.Final, d.Tone);
            documents[key].YngpingModern  =
                CikLingUtil.ToYngPingHokchew(GetInitial(d.Initial), GetFinal(d.Final), GetTone(d.Tone));

            var altA      = documents[key].HanziAlternatives;
            var altB      = d.HanziAlternatives;
            var altMerged = altA.Union(altB).Distinct().ToList();

            documents[key].HanziAlternatives.Clear();
            documents[key].HanziAlternatives.AddRange(altMerged);

            var mA      = documents[key].HanziMatchable;
            var mB      = d.HanziMatchable;
            var mMerged = mA.Union(mB).Distinct().ToList();

            documents[key].HanziMatchable.Clear();
            documents[key].HanziMatchable.AddRange(mMerged);

            if (d is CikLingDto)
            {
                var c = d as CikLingDto;
                documents[key].CiklinSource = c.CikLinSourceInfo;
                if (!string.IsNullOrEmpty(c.ZingzeuId))
                {
                    documents[key].ZingzeuId = c.ZingzeuId;
                }
            }

            if (d is DfdDto)
            {
                documents[key].DfdSource = (d as DfdDto).DFDSourceInfo;
            }
        }
Example #2
0
        public void Add(Document d)
        {
            var key =
                Base64UrlTextEncoder.Encode(new DocumentAggregateKey
            {
                HanziCanonical = d.HanziCanonical,
                Initial        = d.Initial,
                Final          = d.Final,
                Tone           = d.Tone
            }.ToByteArray());

            if (!documents.ContainsKey(key))
            {
                documents[key] = new AggregatedDocument()
                {
                    Id = key
                };
            }
            documents[key].Initial        = d.Initial;
            documents[key].Final          = d.Final;
            documents[key].Tone           = d.Tone;
            documents[key].HanziCanonical = d.HanziCanonical;
            documents[key].Buc            = d.Buc;
            documents[key].Yngping        = YngpingBekinUtil.FanqieToYngping(d.Initial, d.Final, d.Tone);

            var altA      = documents[key].HanziAlternatives;
            var altB      = d.HanziAlternatives;
            var altMerged = altA.Union(altB).Distinct().ToList();

            documents[key].HanziAlternatives.Clear();
            documents[key].HanziAlternatives.AddRange(altMerged);

            var mA      = documents[key].HanziMatchable;
            var mB      = d.HanziMatchable;
            var mMerged = mA.Union(mB).Distinct().ToList();

            documents[key].HanziMatchable.Clear();
            documents[key].HanziMatchable.AddRange(mMerged);

            if (d.SourceInfoCase == Document.SourceInfoOneofCase.Ciklin)
            {
                documents[key].CiklinSource = d.Ciklin;
            }

            if (d.SourceInfoCase == Document.SourceInfoOneofCase.Dfd)
            {
                documents[key].DfdSource = d.Dfd;
            }
        }