summaryrefslogtreecommitdiff
path: root/Aktywator/RRBTournament.cs
blob: 3e73d435367652a152e2031acf734e568caea369 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.IO;

namespace Aktywator
{
    class RRBTournament : Tournament
    {
        private XmlDocument _xml;

        public RRBTournament(string name)
        {
            this._name = name;
            this._type = Tournament.TYPE_RRB;
        }

        override internal void setup()
        {
            this._xml = new XmlDocument();
            this._xml.Load(this._name);
        }

        override internal string getName()
        {
            string tName = this._xml.SelectSingleNode("//ustawienia/nazwa").InnerText.Trim();
            return tName.Length > 0 ? tName : Path.GetFileName(this._name);
        }

        override public string getSectionsNum()
        {
            List<string> sections = new List<string>();
            foreach (XmlNode table in this._xml.SelectNodes("//monitor/stoly/stol"))
            {
                string section = table.SelectSingleNode("sektor").InnerText;
                if (!sections.Contains(section))
                {
                    sections.Add(section);
                }
            }
            return sections.Count.ToString();
        }

        override public string getTablesNum()
        {
            return this._xml.SelectNodes("//monitor/stoly/stol").Count.ToString();
        }

        override internal string getTypeLabel()
        {
            return "RRBridge";
        }

        override internal Dictionary<int, List<string>> getNameList()
        {
            Dictionary<int, List<string>> names = new Dictionary<int, List<string>>();
            try
            {
                this._xml.Load(this._name);
                foreach (XmlNode pair in this._xml.SelectNodes("//lista/para"))
                {
                    int pairNo = Int32.Parse(pair.SelectSingleNode("numer").InnerText);
                    names.Add(pairNo, new List<string>());
                    foreach (XmlNode player in pair.SelectNodes("gracz/nazwisko"))
                    {
                        names[pairNo].Add(player.InnerText);
                    }
                }

                foreach (KeyValuePair<int, List<string>> pair in names)
                {
                    while (pair.Value.Count < 2)
                    {
                        pair.Value.Add(" ");
                    }
                }
            }
            catch (Exception) { }
            return names;
        }
    }
}