示例#1
0
 /// <summary>
 /// Gibt an ob ein Vorgang bereits in einer Liste vorhanden ist.
 /// </summary>
 /// <param name="l">Zu überprüfende Liste.</param>
 /// <param name="v">Zu überprüfender Vorgang.</param>
 /// <returns>true falls der Vorgang bereits in der Liste enthalten ist, false falls nicht.</returns>
 private Boolean ListContainsVorgang(List <Vorgang> l, Vorgang v)
 {
     foreach (var e in l)
     {
         if (e.Id == v.Id)
         {
             return(true);
         }
     }
     return(false);
 }
示例#2
0
 /// <summary>
 /// Überprüft ob ein Vorgang überhaupt in einem Pfad vorkommt.
 /// </summary>
 /// <param name="vorgang">Zu überprüfender Vorgang.</param>
 /// <returns>true falls der Vorgang in einem Pfad vorkommt, sonst false.</returns>
 private Boolean InPfade(Vorgang vorgang)
 {
     foreach (var p in Pfade)
     {
         foreach (var v in p)
         {
             if (v.Id == vorgang.Id)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
示例#3
0
 /// <summary>
 /// Rekursive Überprüfung auf Zyklen indem der überprüft wird ob der Index eines beliebigen Nachfolgers bereits besucht wurde.
 /// Andernfalls wird der Nachfolger einem Klon der Liste hinzugefügt und mit diesem weitergerechnet.
 /// </summary>
 /// <param name="v">Aktuell zu überprüfendes Vorgang-Objekt.</param>
 /// <param name="list">Liste der bereits überprüften Vorgänge.</param>
 /// <returns>true falls ein Zyklus vorliegt, false falls nicht.</returns>
 private Boolean HasZyklus(Vorgang v, List <int> list)
 {
     foreach (var n in v.Nachfolger(Repo))
     {
         if (list.IndexOf(n.Id) > -1)
         {
             return(true);
         }
         var temp = new List <int>(list);
         temp.Add(n.Id);
         return(HasZyklus(n, temp));
     }
     return(false);
 }
示例#4
0
 /// <summary>
 /// Weist dem Vorgang SEZ = FEZ zu falls dieser ein Endvorgang ist. Andernfalls wird die kleinste späteste Anfangszeit aller Nachfolger für diesen Wert verwendet.
 /// Setzt die früheste Endzeit aus der Dauer und der frühesten Anfangszeit zusammen.
 /// </summary>
 /// <param name="v">Zu verarbeitender Vorgang.</param>
 private void KalkRueckwaerts(Vorgang v)
 {
     if (v.isEnd)
     {
         v.SEZ = v.FEZ;
     }
     else
     {
         v.SEZ = v.Nachfolger(Repo).OrderBy(o => o.SAZ).ToList().First().SAZ;
     }
     v.SAZ = v.SEZ - v.Dauer;
     foreach (var vo in v.Vorgaenger(Repo))
     {
         KalkRueckwaerts(vo);
     }
 }
示例#5
0
 /// <summary>
 /// Weist dem Vorgang FAZ = 0 zu falls dieser ein Startvorgang ist. Andernfalls wird die größte früheste Endzeit aller Vorgänger für diesen Wert verwendet.
 /// Setzt die früheste Endzeit aus der Dauer und der frühesten Anfangszeit zusammen.
 /// </summary>
 /// <param name="v">Zu verarbeitender Vorgang.</param>
 private void KalkVorwaerts(Vorgang v)
 {
     if (v.isStart)
     {
         v.FAZ = 0;
     }
     else
     {
         v.FAZ = v.Vorgaenger(Repo).OrderByDescending(o => o.FEZ).ToList().First().FEZ;
     }
     v.FEZ = v.FAZ + v.Dauer;
     foreach (var n in v.Nachfolger(Repo))
     {
         KalkVorwaerts(n);
     }
 }
示例#6
0
        /// <summary>
        /// Durchsucht die Datei nach dem Teil nach dem Kommentarbereich.
        /// </summary>
        /// <param name="lines">Inhalt der Eingangsdatei nach Zeilen aufgespaltet.</param>
        /// <param name="filepath">Pfad der einzulesenden Datei.</param>
        /// <returns>Liste aller eingelesenen Vorgänge</returns>
        private static List <Vorgang> ListVorgaenge(string[] lines, string filepath)
        {
            List <Vorgang> ret = new List <Vorgang>();

            foreach (var line in lines)
            {
                if (line.IndexOf("//") != 0 && !line.Equals(""))
                {
                    Vorgang v = CreateVorgang(line);


                    ret.Add(v);
                }
            }

            return(ret);
        }
示例#7
0
 /// <summary>
 /// Fügt einen einzelnen Vorgang dem Speicher hinzu.
 /// </summary>
 /// <param name="v">Hinzuzufügender Vorgang.</param>
 public void Add(Vorgang v)
 {
     Vorgaenge.Add(v);
 }