示例#1
0
        private static void Main(string[] args)
        {
            var input = "";

            while (input.ToLower() != "exit")
            {
                switch (input.ToLower())
                {
                case "help":
                {
                    Console.WriteLine(
                        "Verfügbare Commands: help, history, clearHistory, clear, author, publisher, land, verlag, info, erstelleISBN.");
                    Console.WriteLine(
                        "Oder eine ISBN in ISBN10 oder ISBN13 Format, welche in das jeweilig andere konvertiert werden soll.");
                    Console.WriteLine("Oder einen Titel, für den die ISBN gefunden werden soll.");
                    Console.WriteLine();
                    break;
                }

                case "history":
                {
                    Console.WriteLine(history.ToStringTable(new[] { "ISBN10", "ISBN13", "Time(Sek)" },
                                                            tuple => tuple.Item1, tuple => tuple.Item2, tuple => tuple.Item3));
                    Console.WriteLine();
                    break;
                }

                case "clearhistory":
                {
                    history.Clear();
                    break;
                }

                case "clear":
                {
                    Console.Clear();
                    break;
                }

                case "info":
                {
                    Console.Write("Bitte geben Sie ISBN oder Titel des Buches ein: ");
                    var info = Console.ReadLine();
                    Console.WriteLine();

                    Console.Write("Fetching information for \"{0}\"...", info);
                    var sw   = Stopwatch.StartNew();
                    var task = isbn.GetInfoFromSearch(info);

                    DisplayLoading(task);

                    sw.Stop();
                    var elapsedSeconds =
                        (sw.ElapsedTicks / (TimeSpan.TicksPerMillisecond / 1000f) / 1000f / 1000f)
                        .ToString("F99").TrimEnd('0');

                    var doc = task.Result;

                    if (string.IsNullOrWhiteSpace(doc.title_suggest))
                    {
                        PrintNotFound(info);
                        Console.WriteLine();

                        break;
                    }

                    var isbn10 = "None";
                    var isbn13 = "None";
                    if (doc.isbn != null && doc.isbn.Count > 0)
                    {
                        isbn10 = doc.isbn[0];
                        var version = isbn.GetISBNVersion(isbn10);

                        if (version == VERSION.ISBN10)
                        {
                            isbn13 = isbn.ConvertISBN(isbn10).ToUpper();
                            isbn10 = isbn.HyphenateISBN(isbn10);
                        }
                        else
                        {
                            isbn13 = isbn10;
                            isbn10 = isbn.ConvertISBN(isbn13).ToUpper();
                            isbn13 = isbn.HyphenateISBN(isbn13);
                        }
                    }

                    Console.WriteLine();
                    WrapLine("Das Buch \"{0}\" hat folgende Eigenschaften: ", doc.title);
                    PrintKey("ISBN10: ");
                    if (isbn10 == "None")
                    {
                        Console.Write("Keine vergeben");
                    }
                    else
                    {
                        PrintISBN10(isbn10);
                    }

                    Console.WriteLine(",");
                    PrintKey("ISBN13: ");
                    if (isbn13 == "None")
                    {
                        Console.Write("Keine vergeben");
                    }
                    else
                    {
                        PrintISBN13(isbn13);
                    }

                    Console.WriteLine(",");
                    if (doc.person != null && doc.person.Count > 0)
                    {
                        PrintKey("Originalauthor: ");
                        WrapLine("\"{0}\",", string.Join("; ", doc.person));
                    }

                    PrintKey("Author: ");
                    WrapLine("\"{0}\",", string.Join("; ", doc.author_name));

                    if (doc.place != null && doc.place.Count > 0)
                    {
                        PrintKey("Geschrieben in: ");
                        WrapLine("\"{0}\",", string.Join("; ", doc.place));
                    }

                    if (doc.contributor != null && doc.contributor.Count > 0)
                    {
                        PrintKey("Mitwirkende: ");
                        WrapLine("\"{0}\",", string.Join("; ", doc.contributor));
                    }

                    PrintKey("Publisher: ");
                    WrapLine("\"{0}\",", string.Join("; ", doc.publisher));

                    if (doc.publish_place != null && doc.publish_place.Count > 0)
                    {
                        PrintKey("Publiziert in: ");
                        WrapLine("\"{0}\",", string.Join("; ", doc.publish_place));
                    }

                    var oldColor = Console.ForegroundColor;
                    Console.ForegroundColor = ConsoleColor.Cyan;
                    WrapLine("Zuerst im Jahre {0} und zuletzt im Jahre {1} veröffentlicht.",
                             doc.first_publish_year, doc.publish_year.Last());
                    Console.ForegroundColor = oldColor;
                    Console.WriteLine();

                    history.Add(new Tuple <string, string, string>(isbn10, isbn13, elapsedSeconds));

                    break;
                }

                case "author":
                {
                    Console.Write("Bitte geben Sie ISBN oder Titel des Buches ein: ");
                    var info = Console.ReadLine();
                    Console.WriteLine();
                    var version = isbn.GetISBNVersion(info);

                    Console.Write("Fetching author for \"{0}\"...", info);
                    var task = isbn.GetAuthorFromSearch(info);

                    if (version != VERSION.INVALID)
                    {
                        info = isbn.HyphenateISBN(info);
                    }

                    DisplayLoading(task);

                    var authors = task.Result;

                    if (authors.Length > 1)
                    {
                        WrapLine(
                            "Mehrere zutreffende Bücher gefunden! Versuche, präzisere Suchen zu machen.");
                        Console.WriteLine();
                    }
                    else if (authors.Length == 0)
                    {
                        PrintNotFound(info);
                        Console.WriteLine();

                        break;
                    }

                    if (version == VERSION.INVALID)
                    {
                        WrapLine("Der Author des Buchs \"{0}\" ist \"{1}\".", info, authors[0]);
                    }
                    else if (version == VERSION.ISBN13)
                    {
                        Console.Write("Der Author des Buchs \"");
                        PrintISBN13(info);
                        WrapLine("\" ist \"{0}\".", authors[0]);
                    }
                    else if (version == VERSION.ISBN10)
                    {
                        Console.Write("Der Author des Buchs \"");
                        PrintISBN10(info);
                        WrapLine("\" ist \"{0}\".", authors[0]);
                    }

                    Console.WriteLine();

                    WorkWithISBN(info);

                    break;
                }

                case "publisher":
                {
                    Console.Write("Bitte geben Sie ISBN oder Titel des Buches ein: ");
                    var info = Console.ReadLine();
                    Console.WriteLine();
                    var version = isbn.GetISBNVersion(info);

                    Console.Write("Fetching publisher for \"{0}\"...", info);
                    var task = isbn.GetPublisherFromSearch(info);

                    if (version != VERSION.INVALID)
                    {
                        info = isbn.HyphenateISBN(info);
                    }

                    DisplayLoading(task);

                    var publishers = task.Result;

                    if (publishers.Length > 1)
                    {
                        WrapLine(
                            "Mehrere zutreffende Bücher gefunden! Versuche, präzisere Suchen zu machen.");
                        Console.WriteLine();
                    }
                    else if (publishers.Length == 0)
                    {
                        PrintNotFound(info);
                        Console.WriteLine();

                        break;
                    }

                    if (version == VERSION.INVALID)
                    {
                        WrapLine("Der Publisher des Buchs \"{0}\" ist \"{1}\".", info, publishers[0]);
                    }
                    else if (version == VERSION.ISBN13)
                    {
                        Console.Write("Der Publisher des Buchs \"");
                        PrintISBN13(info);
                        WrapLine("\" ist \"{0}\".", publishers[0]);
                    }
                    else if (version == VERSION.ISBN10)
                    {
                        Console.Write("Der Publisher des Buchs \"");
                        PrintISBN10(info);
                        WrapLine("\" ist \"{0}\".", publishers[0]);
                    }

                    Console.WriteLine();

                    WorkWithISBN(info);

                    break;
                }

                case "land":
                {
                    Console.Write("Bitte geben Sie die Gruppenkennung ein: ");
                    var info = Console.ReadLine();
                    Console.WriteLine();

                    var task = isbn.GetCountryFromNumber(info);

                    Console.Write("Fetching country for \"{0}\"...", info);
                    DisplayLoading(task);

                    var country = task.Result;

                    if (string.IsNullOrEmpty(country))
                    {
                        WrapLine("Konnte kein Land für {0} finden!", info);
                        Console.WriteLine();

                        break;
                    }

                    WrapLine("Das Land mit der Nummer {0} ist {1}", info, country);
                    Console.WriteLine();

                    break;
                }

                case "verlag":
                {
                    Console.Write("Bitte geben Sie die Verlagskennung ein: ");
                    var info = Console.ReadLine();
                    Console.WriteLine();

                    var task = isbn.GetPublisherFromNumber(info);

                    Console.Write("Fetching publisher for \"{0}\"...", info);
                    DisplayLoading(task);

                    var publishers = task.Result;

                    if (publishers.Length == 0)
                    {
                        WrapLine("Konnte keinen Verlag für {0} finden!", info);
                        Console.WriteLine();

                        break;
                    }

                    if (publishers.Length > 1)
                    {
                        WrapLine("Es wurden mehrere Verläge gefunden! Versuche, präziser zu sein.");
                        Console.WriteLine();
                    }

                    WrapLine(string.Format(
                                 "Der Verlag mit der Nummer \"{0}\" heißt \"{1}\", wurde bei der Agentur von \"{2}\" registriert und arbeitet in \"{3}\".",
                                 info, publishers.First().RegistrantName.Replace("\"", ""), publishers.First().AgencyName,
                                 publishers.First().Country));
                    Console.WriteLine();

                    break;
                }

                case "erstelleisbn":
                {
                    Console.Write("Bitte geben Sie die Länderkennung ein: ");
                    var country = Console.ReadLine();
                    Console.WriteLine();
                    Console.Write("Bitte geben Sie die Verlagskennung ein: ");
                    var publisher = Console.ReadLine();
                    Console.WriteLine();
                    Console.Write("Bitte geben Sie die Titelkennung ein: ");
                    var title = Console.ReadLine();
                    Console.WriteLine();

                    // Construct ISBN with placeholder checksum
                    var constructed = country + "-" + publisher + "-" + title + "-" + 0;

                    try
                    {
                        // "Convert" ISBN to get an actual proved-to-be-working ISBN
                        constructed = isbn.ConvertISBN(constructed);
                    }
                    catch (FormatException e)
                    {
                        Console.WriteLine(e.Message);
                        Console.WriteLine();
                    }

                    WorkWithISBN(constructed);

                    break;
                }

                default:
                {
                    WorkWithISBN(input);

                    break;
                }
                }

                Console.Write("Bitte geben Sie ein Command ein: ");
                input = Console.ReadLine();
                Console.WriteLine();
            }
        }