Esempio n. 1
0
 /// <summary>
 /// Конструктор.
 /// </summary>
 public BatchRecordFormatter
 (
     [NotNull] ManagedClient64 client,
     [NotNull] string format,
     [NotNull] string query,
     params object[] args
 )
 {
     if (ReferenceEquals(client, null))
     {
         throw new ArgumentNullException("client");
     }
     if (string.IsNullOrEmpty(format))
     {
         throw new ArgumentNullException("format");
     }
     if (string.IsNullOrEmpty(query))
     {
         throw new ArgumentNullException("query");
     }
     Client    = client;
     BatchSize = DefaultBatchSize;
     Format    = format;
     int[] found = Client.Search(query, args);
     _InitializePackages(found);
 }
        public static int[] Search
        (
            [NotNull] this IrbisConnectionPool pool,
            string format,
            params object[] args
        )
        {
            ManagedClient64 client = pool.AcquireConnection();

            int[] result = client.Search(format, args);
            pool.ReleaseConnection(client);
            return(result);
        }
Esempio n. 3
0
        public int[] Search
        (
            [NotNull] string format,
            params object[] args
        )
        {
            if (string.IsNullOrEmpty(format))
            {
                throw new ArgumentNullException("format");
            }

            string original  = string.Format(format, args);
            string rewritten = RewriteQuery(original);

            ManagedClient64 client = Client.ThrowIfNull("Client");

            return(client.Search(rewritten));
        }
Esempio n. 4
0
 public BatchRecordReader
 (
     ManagedClient64 client,
     string format,
     params object[] args
 )
 {
     if (ReferenceEquals(client, null))
     {
         throw new ArgumentNullException("client");
     }
     if (string.IsNullOrEmpty(format))
     {
         throw new ArgumentNullException("format");
     }
     Client    = client;
     BatchSize = DefaultBatchSize;
     int[] found = Client.Search(format, args);
     _InitializePackages(found);
 }
Esempio n. 5
0
        static void Main(string[] args)
        {
            using (ManagedClient64 client = new ManagedClient64())
            {
                //client.AllowHexadecimalDump = true;
                //client.DebugWriter = Console.Out;

                client.Connect();

                IrbisDatabaseInfo[] databases = client.ListDatabases();
                foreach (IrbisDatabaseInfo database in databases)
                {
                    Console.WriteLine(database);
                }

                client.GetServerStat();

                //Console.WriteLine(client.GetDatabaseInfo());

                //Console.WriteLine("Max MFN={0}",client.GetMaxMfn());


                //Console.WriteLine(client.GetVersion());
                //Thread.Sleep(100);
                //client.NoOp();
                //Thread.Sleep(100);

                //string fileText = client.ReadTextFile(IrbisPath.MasterFile, "pst.mnu");
                //Console.WriteLine(fileText);
                //Thread.Sleep(100);

                //string[] rawRecord = client.ReadRawRecord(2, false);
                //foreach (string line in rawRecord)
                //{
                //    Console.WriteLine(line);
                //}

                //string[] found = client.RawSearch("K=A$", 1, 0, "@brief");
                //foreach (string line in found)
                //{
                //    Console.WriteLine(line);
                //}

                //int[] found = client.Search("K=A$");
                //foreach (int mfn in found)
                //{
                //    Console.WriteLine("{0})", mfn);
                //    Console.WriteLine(client.FormatRecord("@",mfn));
                //    Console.WriteLine();
                //}

                int[]    found = client.Search("K=A$");
                string[] texts = client.FormatRecords("@", found);
                foreach (string text in texts)
                {
                    Console.WriteLine(text);
                    Console.WriteLine();
                }


                Console.WriteLine();
            }
        }
Esempio n. 6
0
        private static void Main()
        {
            try
            {
                using (ManagedClient64 client = new ManagedClient64())
                {
                    // Подключаемся к серверу
                    client.ParseConnectionString("host=127.0.0.1;port=6666;"
                                                 + "user=1;password=1;");
                    client.Connect();

                    // Ищем все книги, у которых автор начинается на А (кириллица)
                    int[] foundRecords = client.Search("\"A={0}$\"", "А");

                    // Чтобы не распечатывать все найденные записи,
                    // ограничимся первыми 10
                    int recordsToShow = Math.Min(foundRecords.Length, 10);

                    for (int i = 0; i < recordsToShow; i++)
                    {
                        int thisMfn = foundRecords[i];

                        // Считываем запись
                        IrbisRecord record = client.ReadRecord(thisMfn);

                        // Получаем основное заглавие
                        string mainTitle = record
                                           .Fields
                                           .GetField("200")
                                           .GetSubField('a')
                                           .GetSubFieldText()
                                           .FirstOrDefault();

                        // Можно было просто написать:
                        // string mainTitle = record.FM("200", 'a');

                        Console.WriteLine
                        (
                            "MFN={0}, Main title={1}",
                            thisMfn,
                            mainTitle
                        );

                        // Расформатируем запись
                        Console.WriteLine
                        (
                            "BRIEF: {0}",
                            client.FormatRecord("@brief", record)
                        );

                        // Создаем запись
                        IrbisRecord newRecord = new IrbisRecord();
                        newRecord.AddField
                        (
                            "700",
                            'a',
                            "Управляемый клиент ИРБИС64"
                        )
                        .AddField
                        (
                            "200",
                            'a',
                            string.Format("Новая Запись от {0}", DateTime.Now),
                            'f',
                            "Управляемый клиент"
                        );

                        // Отсылаем вновь созданную запись на сервер
                        client.WriteRecord
                        (
                            newRecord,
                            false,
                            true
                        );

                        Console.WriteLine(new string('-', 60));
                    }

                    // По выходу из using автоматически вызывается client.Disconnect ()
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }