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!"); } }
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(); }
public void prijaviSenzor(Senzor s) { kvarni_s.Add(s); }
public void dodajSenzor(Senzor s) { senzori.Add(s); }
public void prijaviSenzor(Senzor s) { ls.prijaviSenzor(s); }
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."); } }