Example #1
0
        public void split(string woah)
        {
            IspisUpisSG    iu = IspisUpisSG.getInstance();
            ListaSvegaSG   db = ListaSvegaSG.getInstance();
            GenBrojevaSG   gb = GenBrojevaSG.getInstance();
            ConcUredjajiFM cu = new ConcUredjajiFM();

            try
            {
                foreach (string p in woah.Split(' '))
                {
                    lokalna.Add(p);
                }
            }
            catch (Exception n)
            {
                iu.print(" Došlo je do pogreške parsiranja argumenata. Obustava rada.");
            }

            bool help = false;

            if (lokalna.FindIndex(a => a.Equals("--help")) != -1)
            {
                iu.print("\n***--Help activated!***");
                help = true;
            }

            if (help)
            {
                iu.print("\nUnesite argumente  : \nlokaciju exe datoteke* \n-g broj_sjemena \n-m ime_datoteke_mjesta* \n-s ime_dat_senzora* \n-a ime_dat_aktuatora* \n-r ime_dat_rasporeda \n-tcd sekunde_trajanja_ciklusa_dretve \n-br broj_redaka_na_ekranu\n-bs broj_stupaca\n-brk broj_redaka_komandi\n-pi prosječni % ispravnosti");
            }
            else
            {
                int index = lokalna.FindIndex(a => a.Equals("-br"));
                if (index == -1)
                {
                    iu.print("");
                    iu.print("Fali broj linija redaka (24-40). Vrijednost će biti 24.");
                    br = 24;
                }
                else
                {
                    try
                    {
                        br = Int32.Parse(lokalna[index + 1]);
                        if (br < 24 || br > 40)
                        {
                            iu.print("Br redaka nije u dobrom rasponu. bit će 24.");
                            br = 24;
                        }
                    }

                    catch (Exception)
                    {
                        iu.print("Broj redaka nije u odgovarajućem formatu(int). Bit će 24.");
                        br = 24;
                    }
                }

                index = lokalna.FindIndex(a => a.Equals("-bs"));
                if (index == -1)
                {
                    iu.print("Fali broj linija stupaca (80-160). Vrijednost će biti 80.");
                    bs = 80;
                }
                else
                {
                    try
                    {
                        bs = Int32.Parse(lokalna[index + 1]);
                        if (bs > 160 || bs < 80)
                        {
                            iu.print("Broj linija stupaca nije u odgovarajućem rasponu. Bit će 80.");
                            bs = 80;
                        }
                    }
                    catch (Exception)
                    {
                        iu.print("Bs nije predan u adekvatnom formatu (int).Bit će 80.");
                        bs = 80;
                    }
                }

                index = lokalna.FindIndex(a => a.Equals("-brk"));
                if (index == -1)
                {
                    iu.print("Fali broj linija redaka komandi (2-5). Vrijednost će biti 2.");
                    brk = 2;
                }
                else
                {
                    try
                    {
                        brk = Int32.Parse(lokalna[index + 1]);
                        if (brk > 5 || brk < 2)
                        {
                            iu.print("Broj redova komandi nije u rasponu. Bit će 2.");
                            brk = 2;
                        }
                    }
                    catch (Exception)
                    {
                        iu.print("Brk nije predan u adekvatnom formatu (int). Bit će 2.");
                        brk = 2;
                    }
                }

                index = lokalna.FindIndex(a => a.Equals("-g"));
                if (index != -1)
                {
                    try
                    {
                        if (Int32.Parse(lokalna[index + 1]) > 65535 || Int32.Parse(lokalna[index + 1]) < 1)
                        {
                            iu.print("Sjeme nije u dobrom rangu. Bit će generirano.");
                            gb.generirajSjeme();
                            gg = gb.vratiSjeme();
                        }
                        else
                        {
                            gb.dodajSjeme(Int32.Parse(lokalna[index + 1]));

                            gg = Int32.Parse(lokalna[index + 1]);
                        }
                    }
                    catch (Exception)
                    {
                        iu.print("\nSjeme nije adekvatnog formata (int).");
                        gb.generirajSjeme();
                        gg = gb.vratiSjeme();
                    }
                }
                else
                {
                    iu.print("Sjeme nije uneseno. Bit će generirano.");
                    gb.generirajSjeme();
                    gg = gb.vratiSjeme();
                }



                index = lokalna.FindIndex(a => a.Equals("-pi"));
                if (index == -1)
                {
                    iu.print("Fali broj prosječne ispravnosti. Broj će biti slučajno generiran.");
                    ppi = gb.dajSlucajniBroj(0, 100);
                    db.preuzmiIspravnost(ppi);
                }
                else if (lokalna[index + 1].ToString() != "")
                {
                    try
                    {
                        if (Int32.Parse(lokalna[index + 1]) > 100 || (Int32.Parse(lokalna[index + 1]) < 0))
                        {
                            iu.print("PI% nije u rangu (0-100). Bit će generiran.");
                            ppi = gb.dajSlucajniBroj(0, 100);
                            db.preuzmiIspravnost(ppi);
                        }
                        else
                        {
                            ppi = Int32.Parse(lokalna[index + 1]);
                            db.preuzmiIspravnost(Int32.Parse(lokalna[index + 1]));
                        }
                    }
                    catch (Exception)
                    {
                        iu.print("Prosječna ispravnost nije u dobrom formatu. Bit će generirana.");
                        db.preuzmiIspravnost(gb.dajSlucajniBroj(0, 100));
                    }
                }
                index = lokalna.FindIndex(a => a.Equals("-tcd"));
                if (index == -1)
                {
                    iu.print("Fali trajanje ciklusa dretve. Bit će generiran.");
                    tcd = gb.dajSlucajniBroj(1, 17);
                }
                else
                {
                    if (lokalna[index + 1] != "")
                    {
                        try
                        {
                            tcd = Int32.Parse(lokalna[index + 1]);
                        }
                        catch (Exception)
                        {
                            iu.print("TCD nije dobrog formata.");
                            tcd = gb.dajSlucajniBroj(1, 17);
                        }
                    }
                    else
                    {
                        iu.print("TCD nije dobrog formata.");
                        tcd = gb.dajSlucajniBroj(1, 17);
                    }
                }


                iu.preuzmiBrojeve();
                iu.preuzmiGPI(gg, ppi, tcd);
                iu.Podjela();



                index = lokalna.FindIndex(a => a.Equals("-m"));
                if (index == -1)
                {
                    iu.print("\nNazivu datoteke mjesta fali prekidač -m! Mjesta neće biti učitana.");
                }
                else
                {
                    if (lokalna[index + 1].ToString() != "")
                    {
                        cu.stvoriObjekt(lokalna[index + 1], "m");
                    }
                }

                index = lokalna.FindIndex(a => a.Equals("-s"));
                if (index == -1)
                {
                    iu.print("Nazivu datoteke senzora fali prekidač -s! Senzori neće biti učitani.");
                }
                else if (lokalna[index + 1].ToString() != "")
                {
                    cu.stvoriObjekt(lokalna[index + 1], "s");
                }


                index = lokalna.FindIndex(a => a.Equals("-a"));
                if (index == -1)
                {
                    iu.print("Nazivu datoteke aktuatora fali prekidač -a!  Aktuatori neće biti učitani.");
                }
                else if (lokalna[index + 1].ToString() != "")
                {
                    cu.stvoriObjekt(lokalna[index + 1], "a");
                }

                index = lokalna.FindIndex(a => a.Equals("-r"));
                if (index == -1)
                {
                    iu.print("Nazivu datoteke rasporeda fali prekidač -r!  Raspored neće biti učitan.");
                }
                else if (lokalna[index + 1].ToString() != "")
                {
                    C_Connector cc = C_Connector.getInstance();
                    cc.preuzmiIme(lokalna[index + 1]);
                }
            }
        }
Example #2
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();
        }