Esempio n. 1
0
        internal AuthoritativeFile GetAFAll(int AFLinkId, string AFTable)
        {
            AuthoritativeFile result = new AuthoritativeFile();
            DataTable         table  = dbWrapper.GetAFAllValues(AFTable, AFLinkId);

            foreach (DataRow r in table.Rows)
            {
                result.Add(r["PLAIN"].ToString());
            }
            return(result);
        }
Esempio n. 2
0
        private AuthoritativeFile GetAFAll(int AFLinkId, string AFTable)
        {
            //NAMES: (1) Персоналии
            //ORGS: (2) Организации
            //HEADER: (3) Унифицированное заглавие
            //DEL: (5) Источник списания
            //GEO: (6) Географическое название

            AuthoritativeFile result = BJLoader.GetAFAll(AFLinkId, AFTable);

            return(result);
        }
Esempio n. 3
0
        public override VufindDoc CreateVufindDocument(object Record)//здесь принимаем int
        {
            int          ID_BJ  = (int)Record;
            BJBookLoader loader = new Books.BJBooks.Loaders.BJBookLoader(this.Fund);
            DataTable    record = loader.GetBJRecord(ID_BJ);

            if (record.Rows.Count == 0)
            {
                return(null);
            }
            int currentIDMAIN = (int)record.Rows[0]["IDMAIN"];

            if (!SpecialFilter(currentIDMAIN, record))
            {
                return(null);
            }
            string level    = record.Rows[0]["Level"].ToString();
            string level_id = record.Rows[0]["level_id"].ToString();
            int    lev_id   = int.Parse(level_id);

            if (lev_id < 0)
            {
                return(null);
            }
            StringBuilder     allFields = new StringBuilder();
            AuthoritativeFile AF_all    = new AuthoritativeFile();
            bool      wasTitle          = false; //встречается ошибка: два заглавия в одном пине
            bool      wasAuthor         = false; //был ли автор. если был, то сортировочное поле уже заполнено
            string    description       = "";    //все 3хх поля
            string    Annotation        = "";
            int       CarrierCode;
            VufindDoc result = new VufindDoc();
            string    add    = string.Empty;

            #region field analyse
            //BJBookInfo book = new BJBookInfo();
            foreach (DataRow r in record.Rows)
            {
                allFields.AppendFormat(" {0}", r["PLAIN"].ToString());
                switch (r["code"].ToString())
                {
                //=======================================================================Родные поля вуфайнд=======================
                case "200$a":
                    if (wasTitle)
                    {
                        break;
                    }
                    result.title.Add(r["PLAIN"].ToString());
                    result.title_short.Add(r["PLAIN"].ToString());
                    result.title_sort.Add(r["SORT"].ToString());
                    wasTitle = true;
                    break;

                case "700$a":
                    result.author.Add(r["PLAIN"].ToString());
                    if (!wasAuthor)
                    {
                        //AddField("author_sort", r["SORT"].ToString());
                        result.author_sort.Add(r["SORT"].ToString());
                    }
                    wasAuthor = true;
                    //забрать все варианты написания автора из авторитетного файла и вставить в скрытое, но поисковое поле
                    break;

                case "701$a":
                    result.author2.Add(r["PLAIN"].ToString());
                    break;

                case "710$a":
                    result.author_corporate.Add(r["PLAIN"].ToString());
                    break;

                case "710$4":
                    result.author_corporate_role.Add(r["PLAIN"].ToString());
                    break;

                case "700$4":
                    result.author_role.Add(r["PLAIN"].ToString());
                    break;

                case "701$4":
                    result.author2_role.Add(r["PLAIN"].ToString());
                    break;

                case "921$a":
                    CarrierCode = KeyValueMapping.CarrierNameToCode.GetValueOrDefault(r["PLAIN"].ToString(), 3001);
                    result.format.Add(CarrierCode.ToString());
                    break;

                case "922$e":
                    result.genre.Add(r["PLAIN"].ToString());
                    result.genre_facet.Add(r["PLAIN"].ToString());
                    break;

                case "10$a":
                    add = BJLoader.Clarify_10a((int)r["IDDATA"], r["PLAIN"].ToString());
                    result.isbn.Add(add);
                    break;

                case "11$a":
                    result.issn.Add(r["PLAIN"].ToString());
                    break;

                case "101$a":
                    add = BJLoader.Clarify_101a((int)r["IDINLIST"], r["PLAIN"].ToString());
                    result.language.Add(add);
                    break;

                case "2100$d":
                    result.publishDate.Add(r["PLAIN"].ToString());
                    break;

                case "210$c":
                    result.publisher.Add(r["PLAIN"].ToString());
                    break;

                case "517$a":
                    add = BJLoader.Clarify_517a((int)r["IDDATA"], r["PLAIN"].ToString());
                    result.title_alt.Add(add);
                    break;

                //=======================================================================добавленные поля в Вуфайнд=======================
                case "210$a":
                    result.PlaceOfPublication.Add(r["PLAIN"].ToString());
                    break;

                case "200$6":
                    result.Title_another_chart.Add(r["PLAIN"].ToString());
                    break;

                case "200$b":
                    result.Title_same_author.Add(r["PLAIN"].ToString());
                    break;

                case "200$d":
                    result.Parallel_title.Add(r["PLAIN"].ToString());
                    break;

                case "200$e":
                    result.Info_pertaining_title.Add(r["PLAIN"].ToString());
                    break;

                case "200$f":
                    result.Responsibility_statement.Add(r["PLAIN"].ToString());
                    break;

                case "200$h":
                    result.Part_number.Add(r["PLAIN"].ToString());
                    break;

                case "200$i":
                    result.Part_title.Add(r["PLAIN"].ToString());
                    break;

                case "200$z":
                    result.Language_title_alt.Add(r["PLAIN"].ToString());
                    break;

                case "500$a":
                    result.Title_unified.Add(r["PLAIN"].ToString());
                    break;

                case "500$3":    //$3 is deprecated!!!
                    AF_all = BJLoader.GetAFAll((int)r["AFLINKID"], "AFHEADERVAR");
                    result.Title_unified.Add(AF_all.ToString());
                    allFields.AppendFormat(" {0}", AF_all);
                    break;

                case "517$e":
                    result.Info_title_alt.Add(r["PLAIN"].ToString());
                    break;

                case "517$z":
                    result.Language_title_alt.Add(r["PLAIN"].ToString());
                    break;

                case "700$3":
                    AF_all = GetAFAll((int)r["AFLINKID"], "AFNAMESVAR");
                    foreach (string av in AF_all.AFValues)
                    {
                        result.author_variant.Add(av);
                    }
                    allFields.AppendFormat(" {0}", AF_all);
                    break;

                case "701$3":
                    AF_all = GetAFAll((int)r["AFLINKID"], "AFNAMESVAR");
                    result.Another_author_AF_all.Add(AF_all.ToString());    //хранить но не отображать
                    allFields.AppendFormat(" {0}", AF_all);
                    break;

                case "501$a":
                    result.Another_title.Add(r["PLAIN"].ToString());
                    break;

                case "501$3":
                    AF_all = GetAFAll((int)r["AFLINKID"], "AFHEADERVAR");
                    result.Another_title_AF_All.Add(AF_all.ToString());
                    allFields.AppendFormat(" {0}", AF_all);
                    break;

                case "503$a":
                    result.Unified_Caption.Add(r["PLAIN"].ToString());
                    break;

                case "503$3":
                    AF_all = GetAFAll((int)r["AFLINKID"], "AFHEADERVAR");
                    result.Unified_Caption_AF_All.Add(AF_all.ToString());
                    allFields.AppendFormat(" {0}", AF_all);
                    break;

                case "700$6":
                    result.Author_another_chart.Add(r["PLAIN"].ToString());
                    break;

                case "702$a":
                    result.Editor.Add(r["PLAIN"].ToString());
                    break;

                case "702$3":
                    AF_all = GetAFAll((int)r["AFLINKID"], "AFNAMESVAR");
                    result.Editor_AF_all.Add(AF_all.ToString());
                    allFields.AppendFormat(" {0}", AF_all);
                    break;

                case "702$4":
                    result.Editor_role.Add(r["PLAIN"].ToString());
                    break;

                case "710$3":
                    AF_all = GetAFAll((int)r["AFLINKID"], "AFORGSVAR");
                    result.Collective_author_all.Add(AF_all.ToString());
                    allFields.AppendFormat(" {0}", AF_all);
                    break;

                case "710$9":
                    result.Organization_nature.Add(r["PLAIN"].ToString());
                    break;

                case "11$9":
                    result.Printing.Add(r["PLAIN"].ToString());
                    break;

                case "205$a":
                    string PublicationInfo = BJLoader.Clarify_205a((int)r["IDDATA"], r["PLAIN"].ToString());
                    result.Publication_info.Add(PublicationInfo);
                    break;

                case "921$b":
                    result.EditionType.Add(r["PLAIN"].ToString());
                    break;

                case "102$a":
                    result.Country.Add(r["PLAIN"].ToString());
                    break;

                case "210$3":
                    AF_all = GetAFAll((int)r["AFLINKID"], "AFORGSVAR");
                    result.PlaceOfPublication_AF_All.Add(AF_all.ToString());
                    allFields.AppendFormat(" {0}", AF_all);
                    break;

                case "2110$g":
                    result.PrintingHouse.Add(r["PLAIN"].ToString());
                    break;

                case "2110$3":
                    AF_all = GetAFAll((int)r["AFLINKID"], "AFORGSVAR");
                    result.PrintingHouse_AF_All.Add(AF_all.ToString());
                    allFields.AppendFormat(" {0}", AF_all);
                    break;

                case "2111$e":
                    result.GeoNamePlaceOfPublication.Add(r["PLAIN"].ToString());
                    break;

                case "2111$3":
                    AF_all = GetAFAll((int)r["AFLINKID"], "AFGEOVAR");
                    result.GeoNamePlaceOfPublication_AF_All.Add(AF_all.ToString());
                    allFields.AppendFormat(" {0}", AF_all);
                    break;

                case "10$z":
                    result.IncorrectISBN.Add(r["PLAIN"].ToString());
                    break;

                case "11$z":
                    result.IncorrectISSN.Add(r["PLAIN"].ToString());
                    break;

                case "11$y":
                    result.CanceledISSN.Add(r["PLAIN"].ToString());
                    break;

                case "101$b":
                    result.IntermediateTranslateLanguage.Add(r["PLAIN"].ToString());
                    break;

                case "101$d":
                    result.SummaryLanguage.Add(r["PLAIN"].ToString());
                    break;

                case "101$e":
                    result.TableOfContentsLanguage.Add(r["PLAIN"].ToString());
                    break;

                case "101$f":
                    result.TitlePageLanguage.Add(r["PLAIN"].ToString());
                    break;

                case "101$g":
                    result.BasicTitleLanguage.Add(r["PLAIN"].ToString());
                    break;

                case "101$i":
                    result.AccompayingMaterialLanguage.Add(r["PLAIN"].ToString());
                    break;

                case "215$a":
                    result.Volume.Add(r["PLAIN"].ToString());
                    break;

                case "215$b":
                    result.Illustrations.Add(r["PLAIN"].ToString());
                    break;

                case "215$c":
                    result.Dimensions.Add(r["PLAIN"].ToString());
                    break;

                case "215$d":
                    result.AccompayingMaterial.Add(r["PLAIN"].ToString());
                    break;

                case "225$a":
                    if (r["PLAIN"].ToString() == "")
                    {
                        break;
                    }
                    if (r["PLAIN"].ToString() == "-1")
                    {
                        break;
                    }
                    //AddHierarchyFields(Convert.ToInt32(r["PLAIN"]), Convert.ToInt32(r["IDMAIN"]), result);
                    break;

                case "225$h":
                    result.NumberInSeries.Add(r["PLAIN"].ToString());
                    break;

                case "225$v":
                    result.NumberInSubseries.Add(r["PLAIN"].ToString());
                    break;

                case "300$a":
                case "301$a":
                case "316$a":
                case "320$a":
                case "326$a":
                case "336$a":
                case "337$a":
                    description += r["PLAIN"].ToString() + " ; ";
                    break;

                case "327$a":
                case "330$a":
                    Annotation += r["PLAIN"].ToString() + " ; ";
                    break;

                case "830$a":
                    result.CatalogerNote.Add(r["PLAIN"].ToString());
                    break;

                case "831$a":
                    result.DirectoryNote.Add(r["PLAIN"].ToString());
                    break;

                case "924$a":
                    result.AdditionalBibRecord.Add(r["PLAIN"].ToString());
                    break;

                case "940$a":
                    result.HyperLink.Add(r["PLAIN"].ToString());
                    break;

                case "606$a":    //"""""" • """"""
                    add = Clarify606a(r["SORT"].ToString());
                    result.topic.Add(add);
                    result.topic_facet.Add(add);
                    break;

                case "3000$a":
                    result.OwnerPerson.Add(r["PLAIN"].ToString());
                    break;

                case "3000$3":
                    AF_all = GetAFAll((int)r["AFLINKID"], "AFNAMESVAR");
                    result.OwnerPerson_AF_All.Add(AF_all.ToString());
                    allFields.AppendFormat(" {0}", AF_all);
                    break;

                case "3001$a":
                    result.OwnerOrganization.Add(r["PLAIN"].ToString());
                    break;

                case "3001$3":
                    AF_all = GetAFAll((int)r["AFLINKID"], "AFORGSVAR");
                    result.OwnerOrganization_AF_All.Add(AF_all.ToString());
                    allFields.AppendFormat(" {0}", AF_all);
                    break;

                case "3002$a":
                    result.Ownership.Add(r["PLAIN"].ToString());
                    break;

                case "3003$a":
                    result.OwnerExemplar.Add(r["PLAIN"].ToString());
                    break;

                case "3200$a":
                    result.IllustrationMaterial.Add(r["PLAIN"].ToString());
                    break;
                }
            }
            #endregion
            result.id = this.Fund + "_" + currentIDMAIN;
            string rusFund = GetFundId(this.Fund);

            result.fund      = rusFund;
            result.allfields = allFields.ToString();
            result.Level     = level;
            result.Level_id  = level_id;
            result.Annotation.Add(Annotation);

            if (description != "")
            {
                result.description.Add(description);
            }
            if (int.Parse(result.Level_id) < 0)
            {
                return(result);
            }
            AddExemplarFields(currentIDMAIN, result, this.Fund);

            if ((result.Exemplars.Count == 0))//все экземпляры отсеялись сами собой.
            {
                return(null);
            }

            return(result);
        }