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

namespace de.WWWings.ORM
{

 /// <summary>
 /// Händische Implementierung des Objek-Relationalen Mappings für die Tabelle FL_Fluege auf die Klassen Flug und FlugMenge.<remarks>
 /// In World Wide Wings wird bewußt keins der am Markt verfügbaren Drittanbieterwerkzeuge für ORM eingesetzt, da erstens die Komplexität des Beispiels nicht weiter erhöht werden soll und zweitens eine Marktbereinigung zu erwarten ist, sobald Microsoft die angekündigten ORM-Werkzeuge auf den Markt bringt.</remarks>
 /// </summary>
 class ORM_Flug
 {

  /// <summary>
  /// Mapping für DataRow "zu Fuß programmiert!"
  /// </summary>
  public static Flug MapRow(System.Data.DataRow dr)
  {
   Flug f = new Flug();
   f.FlugNr = Convert.ToInt64(dr["fl_flugnr"]);
   f.AbflugOrt = dr["fl_AbflugOrt"].ToString() ?? "n/a";
   f.ZielOrt = dr["fl_ZielOrt"].ToString() ?? "n/a";
   f.Plaetze = Convert.ToInt64(dr["fl_Plaetze"]);
   f.FreiePlaetze = Convert.ToInt64(dr["fl_FreiePlaetze"]);
   f.Datum = Convert.ToDateTime(dr["Fl_Datum"]);
   return f;
  }

  /// <summary>
  /// Mapping für DataRreader
  /// </summary>
  public static Flug MapRow(System.Data.IDataReader dr)
  {
   Flug f = new Flug();
   f.FlugNr = Convert.ToInt64(dr["fl_flugnr"]);
   f.AbflugOrt = dr["fl_AbflugOrt"].ToString();
   f.ZielOrt = dr["fl_ZielOrt"].ToString() ?? "n/a";
   f.Plaetze = Convert.ToInt64(dr["fl_Plaetze"]);
   f.FreiePlaetze = Convert.ToInt64(dr["fl_FreiePlaetze"]);
   f.Datum = Convert.ToDateTime(dr["Fl_Datum"]);
   dr.Close();
   return f;
  }

  /// <summary>
  /// Mapping für DataTable
  /// </summary>
  /// <param name="dt">DataTable-Objekt</param>
  /// <returns>Menge von Flugobjekten</returns>
  public static FlugMenge MapTable(System.Data.DataTable dt)
  {
   FlugMenge ff = new FlugMenge();
   foreach (System.Data.DataRow dr in dt.Rows)
   {
    Flug f = MapRow(dr);
    ff.Add(f);
   }
   return ff;
  }
 }
}
