using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SortedSet
{

   class Antiques : IComparable
   {
      public enum Categorie { Painting, Sculpture, Furniture, Book };

      Categorie categorie;
      string description;
      int year;

      public Antiques(Categorie categorie, string description, int year)
      {
         this.categorie = categorie;
         this.description = description;
         this.year = year;
      }

      // ToString() zum Ausgeben von Antiques-Objekten implementieren
      public override string ToString()
      {
         return String.Format(" {0,10}: {1} von {2}", categorie, description, year);
      }

      // Methoden von IComparable implementieren
      public int CompareTo(object obj)
      {
         Antiques a = (Antiques)obj;

         // statt aufwändiger if-Vergleiche nutze den Umstand,
         // dass System.Int32 ebenfalls IComparable implementiert
         return this.year.CompareTo(a.year);
      }

   }



   class SortedSet
   {
      static void Main(string[] args)
      {
         SortedSet<Antiques> collectionJeff = new SortedSet<Antiques>();

         collectionJeff.Add(new Antiques(Antiques.Categorie.Furniture,
                                      "Chippendale-Tisch mit Furnierschaden",
                                      1875));
         collectionJeff.Add(new Antiques(Antiques.Categorie.Painting,
                                      "Picasso-Skizze",
                                      1955));

         SortedSet<Antiques> collectionMary = new SortedSet<Antiques>();

         collectionMary.Add(new Antiques(Antiques.Categorie.Sculpture,
                                      "Houdon-Skulptur",
                                      1887));
         collectionMary.Add(new Antiques(Antiques.Categorie.Painting,
                                      "Picasso-Skizze",
                                      1955));
         collectionMary.Add(new Antiques(Antiques.Categorie.Furniture,
                                      "Aussteuer-Truhe",
                                      1441));
         collectionMary.Add(new Antiques(Antiques.Categorie.Book,
                                      "Brehms Tierleben, Faksimile",
                                      1979));

         Console.WriteLine("\n Jeffs Sammlung: ");
         foreach (Antiques obj in collectionJeff)
         {
            Console.WriteLine(obj);
         }

         collectionJeff.UnionWith(collectionMary);

         Console.WriteLine("\n Jeffs Sammlung nach Vereinigung: ");
         foreach (Antiques obj in collectionJeff)
         {
            Console.WriteLine(obj);
         }
      }
   }
}