Пример #1
0
        public AktuatorBuilder(string path)
        {
            try
            {
                int      c      = 0;
                string[] linije = System.IO.File.ReadAllLines(path);
                foreach (string line in linije)
                {
                    if (c > 0)
                    {
                        string[] splitano = line.Split(';');

                        try
                        {
                            Aktuator m = new Aktuator();
                            if (cp.postojiID(Int32.Parse(splitano[0])))
                            {
                                iu.print("ID za aktuator '" + splitano[1] + "' već postoji!");
                            }
                            else
                            {
                                m.ID = Int32.Parse(splitano[0]);
                            }

                            m.naziv          = splitano[1];
                            m.tip            = Int32.Parse(splitano[2]);
                            m.vrsta          = Int32.Parse(splitano[3]);
                            m.min_vrijednost = float.Parse(splitano[4]);
                            m.max_vrijednost = float.Parse(splitano[5]);
                            if (m.komentar != null)
                            {
                                m.komentar = splitano[5];
                            }
                            if (cp.postojiAktuator(m.ID))
                            {
                                iu.print("[Aktuator '" + m.naziv + "' već postoji!]");
                            }
                            else
                            {
                                ls.dodajAktuator(m);
                                ls.dodajID(m.ID);
                            }
                        }
                        catch (Exception e)
                        {
                            iu.print("[Redak nije odgovarajuće strukturiran!] Došlo je do greške pri objekta Aktuatora " + splitano[1] + " podataka : " + splitano[0] + ";" + splitano[2] + ";" + splitano[3]);
                        }
                    }
                    c++;
                }
            }
            catch (Exception e)
            {
                iu.print(" [Aktuatori ] Datoteka s nazivom '" + path + "' ne postoji.");
                iu.print("Završetak rada.");
            }
        }
Пример #2
0
        public void obradi()
        {
            iu.print("\n\n[STATISTIKA]");

            float cs = ls.dajKvarneS().Count();
            float ca = ls.dajKvarneA().Count();

            iu.print("Broj prijavljenih senzora : " + cs.ToString());
            iu.print("Broj prijavljenih aktuatora :" + ca.ToString());
            if (cs > 0 && ca > 0)
            {
                decimal n;
                Decimal.Round(5);
                if (cs > ca)
                {
                    n = (decimal)(ca / cs);
                    iu.print("Senzori se kvare " + (1 - n) * 100 + "% više od aktuatora!");
                }
                else if (ca > cs)
                {
                    n = (decimal)(cs / ca);
                    iu.print("Aktuatori se kvare " + (1 - n) * 100 + "% više od senzora!");
                }
                else
                {
                    iu.print("Aktuatori se kvare jednako mnogo kao i senzori!");
                }
            }

            Senzor   s2 = new Senzor();
            Aktuator a2 = new Aktuator();

            if (ls.dajKvarnaM().Count > 0)
            {
                iu.print("Mjesto s najviše kvarenja je : " + ls.dajKvarnaM().GroupBy(s => s).OrderByDescending(s => s.Count()).First().Key + " sa " + ls.dajKvarnaM().GroupBy(x => x).Max(x => x.Count()).ToString() + " pojave kvara!");
            }
        }
Пример #3
0
 public void notify(Aktuator a)
 {
     a.listenObserver();
 }
Пример #4
0
        private static void NewThread()
        {
            C_Parametri par = C_Parametri.getInstance();

            Iterator      i      = new Iterator();
            List <Mjesto> mjesta = new List <Mjesto>();
            IspisUpisSG   iu     = IspisUpisSG.getInstance();
            ListaSvegaSG  ls     = ListaSvegaSG.getInstance();
            Statistika    stat   = new Statistika();

            int TCD1   = par.dajTCD();
            int brojac = 0;
            int bcd1   = 0;

            bcd1 = iu.bcdoer();
            while (brojac < bcd1)
            {
                i.resetiraj();

                mjesta = ls.dajMjesta();
                mjesta.OrderBy(s => s.naziv);


                for (; i.dohvatiVrijednost() < mjesta.Count(); i.povecaj())
                {
                    iu.print2("[" + mjesta[i.dohvatiVrijednost()].naziv + "]" + " (ID " + mjesta[i.dohvatiVrijednost()].ID + ")");
                    Thread.Sleep(TCD1 * 1000);
                    iu.print2(iu.pofarbaj("crvena") + "[SENZOR]\t\t\t[ID][ISPRAVNOST][VRIJEDNOST]  [MIN/MAX][ZATAJIO]");
                    foreach (Senzor s in mjesta[i.dohvatiVrijednost()].ls.ToList())

                    {
                        if (s.ispravnost == false)
                        {
                            s.manjkav++;
                        }
                        if (s.naziv.Length <= 7)
                        {
                            iu.print2(s.naziv + "\t\t\t\t" + s.ID.ToString() + " " + s.ispravnost + "\t\t" + s.vrijednost.ToString() + "\t" + s.min_vrijednost.ToString() + "/" + s.max_vrijednost.ToString() + "\t      " + s.manjkav.ToString());
                        }
                        else if (s.naziv.Length >= 8 && s.naziv.Length < 13)
                        {
                            iu.print2(s.naziv + "\t\t\t" + s.ID.ToString() + " " + s.ispravnost + "\t\t" + s.vrijednost.ToString() + "\t" + s.min_vrijednost.ToString() + "/" + s.max_vrijednost.ToString() + "\t      " + s.manjkav.ToString());
                        }
                        else
                        {
                            iu.print2(s.naziv.Substring(0, Math.Min(s.naziv.Length, 30)) + "\t\t" + s.ID.ToString() + " " + s.ispravnost + "\t\t" + s.vrijednost.ToString() + "\t" + s.min_vrijednost.ToString() + "/" + s.max_vrijednost.ToString() + "\t      " + s.manjkav.ToString());
                        }


                        /*iu.print2("\t\tIspravnost [" + s.ispravnost.ToString() + "]");
                         * iu.print2("\t\tStara Vrijednost : " + s.vrijednost.ToString() + s.komentar);
                         * if (s.ispravnost) s.progresijaVrijednosti();
                         * iu.print2("\t\tNova Vrijednost : " + s.vrijednost.ToString() + s.komentar);
                         * iu.print2("\t\tMin : " + s.min_vrijednost);
                         * iu.print2("\t\tMax : " + s.max_vrijednost);
                         * iu.print2("\t\tBroj zatajenja : " + s.manjkav.ToString() + " puta.");
                         */
                        GenBrojevaSG gb = GenBrojevaSG.getInstance();
                        if (s.ispravnost && gb.dajSlucajniBroj(0, 10) > 6)
                        {
                            s.progresijaVrijednosti();
                            foreach (Aktuator a in ls.dajAktuatore())
                            {
                                if (a.lss.Contains(s))
                                {
                                    s.notify(a);
                                }
                            }
                        }

                        if (s.manjkav >= 3 && !(s.uklonjen))
                        {
                            ls.prijaviMjesto(mjesta[i.dohvatiVrijednost()].dohvatiNaziv());
                            ls.prijaviSenzor(s);

                            iu.print2("");
                            iu.print2(iu.pofarbaj("crvena") + "=> Sklanja se senzor " + s.naziv);
                            iu.print2(" iz mjesta " + mjesta[i.dohvatiVrijednost()].naziv + "]" + iu.pofarbaj("bijela"));
                            //mjesta[i.dohvatiVrijednost()].ls.Remove(s);

                            bool dobar = false;
                            while (!dobar)
                            {
                                Senzor senz = (Senzor)s.kloniraj(s.naziv, s.tip, s.vrsta, s.min_vrijednost, s.max_vrijednost);
                                senz.inicijaliziraj();

                                if (senz.ispravnost == true)
                                {
                                    senz.generirajVrijednost();
                                    senz.dodajID("s");
                                    ls.dodajID(senz.ID);
                                    dobar = true;
                                    iu.print2(iu.pofarbaj("zelena") + "[Dodaje se senzor]");

                                    if (senz.naziv.Length <= 7)
                                    {
                                        iu.print2(iu.pofarbaj("zelena") + senz.naziv + "\t\t\t\t" + senz.ID.ToString() + " " + senz.ispravnost + "\t\t" + senz.vrijednost.ToString() + "\t" + senz.min_vrijednost.ToString() + "/" + senz.max_vrijednost.ToString() + "\t      " + senz.manjkav.ToString());
                                    }
                                    else if (senz.naziv.Length >= 8 && senz.naziv.Length < 13)
                                    {
                                        iu.print2(iu.pofarbaj("zelena") + senz.naziv + "\t\t\t" + senz.ID.ToString() + " " + senz.ispravnost + "\t\t" + senz.vrijednost.ToString() + "\t" + senz.min_vrijednost.ToString() + "/" + senz.max_vrijednost.ToString() + "\t      " + senz.manjkav.ToString());
                                    }
                                    else
                                    {
                                        iu.print2(iu.pofarbaj("zelena") + senz.naziv.Substring(0, Math.Min(s.naziv.Length, 30)) + "\t\t" + senz.ID.ToString() + " " + senz.ispravnost + "\t\t" + senz.vrijednost.ToString() + "\t" + senz.min_vrijednost.ToString() + "/" + senz.max_vrijednost.ToString() + "\t      " + senz.manjkav.ToString());
                                    }
                                }
                            }
                        }
                    }
                    iu.print2(iu.pofarbaj("crvena") + "[AKTUATOR]\t\t\t[ID][ISPRAVNOST][VRIJEDNOST]  [MIN/MAX][ZATAJIO]");
                    foreach (Aktuator a in mjesta[i.dohvatiVrijednost()].la.ToList())
                    {
                        if (a.ispravnost == false)
                        {
                            a.manjkav++;
                        }
                        if (a.naziv.Length <= 7)
                        {
                            iu.print2(a.naziv + "\t\t\t\t" + a.ID.ToString() + " " + a.ispravnost + "\t\t" + a.vrijednost.ToString() + "\t" + a.min_vrijednost.ToString() + "/" + a.max_vrijednost.ToString() + "\t      " + a.manjkav.ToString());
                        }
                        else if (a.naziv.Length >= 8 && a.naziv.Length < 13)
                        {
                            iu.print2(a.naziv + "\t\t\t" + a.ID.ToString() + " " + a.ispravnost + "\t\t" + a.vrijednost.ToString() + "\t" + a.min_vrijednost.ToString() + "/" + a.max_vrijednost.ToString() + "\t      " + a.manjkav.ToString());
                        }
                        else if (a.naziv.Length >= 13 && a.naziv.Length < 24)
                        {
                            iu.print2(a.naziv + "\t\t" + a.ID.ToString() + " " + a.ispravnost + "\t\t" + a.vrijednost.ToString() + "\t" + a.min_vrijednost.ToString() + "/" + a.max_vrijednost.ToString() + "\t      " + a.manjkav.ToString());
                        }
                        else
                        {
                            iu.print2(a.naziv.Substring(0, Math.Min(a.naziv.Length, 30)) + "\t" + a.ID.ToString() + " " + a.ispravnost + "\t\t" + a.vrijednost.ToString() + "\t" + a.min_vrijednost.ToString() + "/" + a.max_vrijednost.ToString() + "\t      " + a.manjkav.ToString());
                        }

                        /*
                         * iu.print2("\tSenzor - " + a.naziv + " (ID " + a.ID.ToString() + ")");
                         * iu.print2("\t\tIspravnost [" + a.ispravnost.ToString() + "]");
                         * iu.print2("\t\tStara vrijednost : " + a.vrijednost.ToString() + a.komentar);
                         * if (a.ispravnost) a.progresijaVrijednosti();// ako se dezignirani senzor promjenio
                         * iu.print2("\t\tNova vrijednost : " + a.vrijednost.ToString() + a.komentar);
                         * iu.print2("\t\tMin : " + a.min_vrijednost);
                         * iu.print2("\t\tMax : " + a.max_vrijednost);
                         * iu.print2("\t\tBroj zatajenja : " + a.manjkav.ToString() + " puta.");
                         */
                        if (a.manjkav >= 3 && !(a.uklonjen))
                        {
                            ls.prijaviMjesto(mjesta[i.dohvatiVrijednost()].dohvatiNaziv());
                            ls.prijaviAktuator(a);
                            iu.print2("");
                            iu.print2(iu.pofarbaj("crvena") + "=> Sklanja se aktuator " + a.naziv);
                            iu.print2(" iz mjesta " + mjesta[i.dohvatiVrijednost()].naziv + "]" + iu.pofarbaj("bijela"));
                            //mjesta[i.dohvatiVrijednost()].la.Remove(a);
                            bool dobar2 = false;
                            while (!dobar2)
                            {
                                Aktuator senz = (Aktuator)a.kloniraj(a.naziv, a.tip, a.vrsta, a.min_vrijednost, a.max_vrijednost);
                                senz.inicijaliziraj();


                                if (senz.ispravnost == true)
                                {
                                    senz.generirajVrijednost();
                                    senz.dodajID("a");
                                    ls.dodajID(senz.ID);
                                    dobar2 = true;
                                    iu.print2(iu.pofarbaj("zelena") + "[Dodaje se aktuator]");
                                    if (senz.naziv.Length <= 7)
                                    {
                                        iu.print2(iu.pofarbaj("zelena") + senz.naziv + "\t\t\t\t" + senz.ID.ToString() + " " + senz.ispravnost + "\t\t" + senz.vrijednost.ToString() + "\t" + senz.min_vrijednost.ToString() + "/" + senz.max_vrijednost.ToString() + "\t      " + senz.manjkav.ToString());
                                    }
                                    else if (senz.naziv.Length >= 8 && senz.naziv.Length < 13)
                                    {
                                        iu.print2(iu.pofarbaj("zelena") + senz.naziv + "\t\t\t" + senz.ID.ToString() + " " + senz.ispravnost + "\t\t" + senz.vrijednost.ToString() + "\t" + senz.min_vrijednost.ToString() + "/" + senz.max_vrijednost.ToString() + "\t      " + senz.manjkav.ToString());
                                    }
                                    else if (senz.naziv.Length >= 13 && senz.naziv.Length < 24)
                                    {
                                        iu.print2(iu.pofarbaj("zelena") + senz.naziv + "\t\t" + senz.ID.ToString() + " " + senz.ispravnost + "\t\t" + senz.vrijednost.ToString() + "\t" + senz.min_vrijednost.ToString() + "/" + senz.max_vrijednost.ToString() + "\t      " + senz.manjkav.ToString());
                                    }
                                    else
                                    {
                                        iu.print2(iu.pofarbaj("zelena") + senz.naziv.Substring(0, Math.Min(senz.naziv.Length, 30)) + "\t" + senz.ID.ToString() + " " + senz.ispravnost + "\t\t" + senz.vrijednost.ToString() + "\t" + senz.min_vrijednost.ToString() + "/" + senz.max_vrijednost.ToString() + "\t      " + senz.manjkav.ToString());
                                    }
                                    //iu.print2(senz.naziv + " (ID " + senz.ID.ToString() + ", Vrijednost : " + senz.vrijednost.ToString() + ") u mjesto " + mjesta[i.dohvatiVrijednost()].naziv + "]");
                                    mjesta[i.dohvatiVrijednost()].la.Add(senz);
                                }
                            }
                        }
                    }
                    brojac++;
                    iu.print2("");
                    iu.print2("[" + brojac.ToString() + @"\" + bcd1.ToString() + "]");
                    if (brojac >= bcd1)
                    {
                        break;
                    }
                }
            }
            iu.print("Provjera gotova.");
            iu.postaviNaKomandu();
        }
Пример #5
0
 public void prijaviAktuator(Aktuator s)
 {
     kvarni_a.Add(s);
 }
Пример #6
0
 public void dodajAktuator(Aktuator a)
 {
     aktuatori.Add(a);
 }
Пример #7
0
 public void prijaviAktuator(Aktuator a)
 {
     ls.prijaviAktuator(a);
 }
Пример #8
0
        public void spari()
        {
            int c = 0;

            try
            {
                List <Mjesto>   lm = db.dajMjesta();
                List <Senzor>   ls = db.dajSenzore();
                List <Aktuator> la = db.dajAktuatore();

                string[] linije = System.IO.File.ReadAllLines(filename);
                foreach (string l in linije)
                {
                    if (c > 2)
                    {
                        string[] splitano = l.Split(';');

                        try
                        {
                            if (Int32.Parse(splitano[0]) == 0)
                            {
                                foreach (Mjesto m in lm)
                                {
                                    if (m.ID == Int32.Parse(splitano[1]))
                                    {
                                        if (Int32.Parse(splitano[2]) == 1)
                                        {
                                            //aktuator
                                            if (m.broj_aktuatora > m.la.Count())
                                            {
                                                foreach (Aktuator a in la)
                                                {
                                                    if (a.ID == Int32.Parse(splitano[3]))
                                                    {
                                                        Aktuator b = (Aktuator)a.kloniraj(a.naziv, a.tip, a.vrsta, a.min_vrijednost, a.max_vrijednost);
                                                        b.inicijaliziraj();
                                                        b.generirajVrijednost();
                                                        b.dodijeliID(Int32.Parse(splitano[4]));
                                                        if (b.tip == m.tip || b.tip == 2)
                                                        {
                                                            m.la.Add(b);
                                                        }
                                                        else
                                                        {
                                                            iu.print("Tip aktuatora " + b.naziv + " ne paše mjestu " + m.naziv + "!");
                                                        }
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                iu.print(iu.pofarbaj("crvena") + "***" + m.naziv + " ima max.broj aktuatora.***" + iu.pofarbaj("bijela"));
                                            }
                                        }
                                        if (Int32.Parse(splitano[2]) == 0)
                                        {
                                            //senzor

                                            if (m.broj_senzora > m.ls.Count())
                                            {
                                                foreach (Senzor a in ls)
                                                {
                                                    if (a.ID == Int32.Parse(splitano[3]))
                                                    {
                                                        Senzor b = (Senzor)a.kloniraj(a.naziv, a.tip, a.vrsta, a.min_vrijednost, a.max_vrijednost);
                                                        b.inicijaliziraj();
                                                        b.generirajVrijednost();
                                                        b.dodijeliID(Int32.Parse(splitano[4]));
                                                        if (b.tip == m.tip || b.tip == 2)
                                                        {
                                                            m.ls.Add(b);
                                                        }
                                                        else
                                                        {
                                                            iu.print("Tip senzora " + b.naziv + " ne paše mjestu " + m.naziv + "!");
                                                        }
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                iu.print(iu.pofarbaj("crvena") + "***" + m.naziv + " ima max.broj senzora.***" + iu.pofarbaj("bijela"));
                                            }
                                        }
                                    }
                                }
                            }
                            if (Int32.Parse(splitano[0]) == 1)
                            {
                                foreach (Mjesto m in lm)
                                {
                                    foreach (Aktuator a in m.la)
                                    {
                                        if (Int32.Parse(splitano[1]) == a.ID)
                                        {
                                            string[] senzori = splitano[2].Split(',');

                                            foreach (string snz in senzori)
                                            {
                                                foreach (Senzor s in m.ls)
                                                {
                                                    if (s.ID == Int32.Parse(snz))
                                                    {
                                                        a.lss.Add(s);
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }

                            db.aktualizirajMjesta(lm);
                        }
                        catch (Exception e)
                        {
                            //iu.print(e.ToString());
                            iu.print("[Greška!] Došlo je do greške pri raspoređivanju uređaja.");
                            iu.print("Redak : " + l);
                        };
                    }
                    c++;
                }
            }
            catch (Exception)
            {
                iu.print(" [Raspored] Datoteka s nazivom '" + filename + "' ne postoji. Završetak rada.");
            }
        }