@Override public void run() { while (Ztintor_zadaca_2.listaKlubova.size() > 2) { pocetak = new Date().getTime(); listaBrojeva = new ArrayList(); listaKolo = new ArrayList(); listaSve = new ArrayList(); listaSort = new ArrayList(); System.out.println("Kolo " + brojac); // RANDOM parovi while (listaBrojeva.size() != Ztintor_zadaca_2.listaKlubova.size()) { broj = rnd.nextInt(Ztintor_zadaca_2.listaKlubova.size()) + 1; if (!listaBrojeva.contains(broj)) { listaBrojeva.add(broj); if (listaBrojeva.size() % 2 == 1 && listaBrojeva.size() == Ztintor_zadaca_2.listaKlubova.size()) { try { domaci = (Klub) ((Klub) Ztintor_zadaca_2.listaKlubova.get(broj - 1)).clone(); ((Klub) Ztintor_zadaca_2.listaKlubova.get(domaci.getRedniBroj() - 1)) .setPrethodnaEfikasnost( ((Klub) Ztintor_zadaca_2.listaKlubova.get(domaci.getRedniBroj() - 1)) .getEfikasnost()); domaci.setPrethodnaEfikasnost(domaci.getEfikasnost()); listaSort.add(domaci); gosti = null; rezultat = 3; par = new Par(domaci, gosti, rezultat); listaSve.add(par); } catch (CloneNotSupportedException ex) { Logger.getLogger(Dretva.class.getName()).log(Level.SEVERE, null, ex); } } else if (listaBrojeva.size() % 2 == 1) { try { domaci = (Klub) ((Klub) Ztintor_zadaca_2.listaKlubova.get(broj - 1)).clone(); } catch (CloneNotSupportedException ex) { Logger.getLogger(Dretva.class.getName()).log(Level.SEVERE, null, ex); } } else { try { gosti = (Klub) ((Klub) Ztintor_zadaca_2.listaKlubova.get(broj - 1)).clone(); } catch (CloneNotSupportedException ex) { Logger.getLogger(Dretva.class.getName()).log(Level.SEVERE, null, ex); } rezultat = rnd.nextInt(3); par = new Par(domaci, gosti, rezultat); listaKolo.add(par); } } } for (int i = 0; i < listaKolo.size(); i++) { par = (Par) listaKolo.get(i); rezultat = par.getRezultat(); domaci = par.getDomaci(); gosti = par.getGosti(); ((Klub) Ztintor_zadaca_2.listaKlubova.get(domaci.getRedniBroj() - 1)) .setPrethodnaEfikasnost( ((Klub) Ztintor_zadaca_2.listaKlubova.get(domaci.getRedniBroj() - 1)) .getEfikasnost()); ((Klub) Ztintor_zadaca_2.listaKlubova.get(gosti.getRedniBroj() - 1)) .setPrethodnaEfikasnost( ((Klub) Ztintor_zadaca_2.listaKlubova.get(gosti.getRedniBroj() - 1)) .getEfikasnost()); domaci.setPrethodnaEfikasnost(domaci.getEfikasnost()); gosti.setPrethodnaEfikasnost(gosti.getEfikasnost()); switch (rezultat) { case 0: ((Klub) Ztintor_zadaca_2.listaKlubova.get(domaci.getRedniBroj() - 1)) .setBodovi( ((Klub) Ztintor_zadaca_2.listaKlubova.get(domaci.getRedniBroj() - 1)) .getBodovi() + 1); ((Klub) Ztintor_zadaca_2.listaKlubova.get(gosti.getRedniBroj() - 1)) .setBodovi( ((Klub) Ztintor_zadaca_2.listaKlubova.get(gosti.getRedniBroj() - 1)).getBodovi() + 1); domaci.setBodovi(domaci.getBodovi() + 1); gosti.setBodovi(gosti.getBodovi() + 1); break; case 1: ((Klub) Ztintor_zadaca_2.listaKlubova.get(domaci.getRedniBroj() - 1)) .setBodovi( ((Klub) Ztintor_zadaca_2.listaKlubova.get(domaci.getRedniBroj() - 1)) .getBodovi() + 3); domaci.setBodovi(domaci.getBodovi() + 3); break; case 2: ((Klub) Ztintor_zadaca_2.listaKlubova.get(gosti.getRedniBroj() - 1)) .setBodovi( ((Klub) Ztintor_zadaca_2.listaKlubova.get(gosti.getRedniBroj() - 1)).getBodovi() + 3); gosti.setBodovi(gosti.getBodovi() + 3); break; } ((Klub) Ztintor_zadaca_2.listaKlubova.get(domaci.getRedniBroj() - 1)) .setBrojUtakmica( ((Klub) Ztintor_zadaca_2.listaKlubova.get(domaci.getRedniBroj() - 1)) .getBrojUtakmica() + 1); domaci.setBrojUtakmica(domaci.getBrojUtakmica() + 1); ((Klub) Ztintor_zadaca_2.listaKlubova.get(gosti.getRedniBroj() - 1)) .setBrojUtakmica( ((Klub) Ztintor_zadaca_2.listaKlubova.get(gosti.getRedniBroj() - 1)) .getBrojUtakmica() + 1); gosti.setBrojUtakmica(gosti.getBrojUtakmica() + 1); ((Klub) Ztintor_zadaca_2.listaKlubova.get(domaci.getRedniBroj() - 1)) .setEfikasnost( ((double) ((Klub) Ztintor_zadaca_2.listaKlubova.get(domaci.getRedniBroj() - 1)) .getBodovi()) / ((double) ((Klub) Ztintor_zadaca_2.listaKlubova.get(domaci.getRedniBroj() - 1)) .getBrojUtakmica())); ((Klub) Ztintor_zadaca_2.listaKlubova.get(gosti.getRedniBroj() - 1)) .setEfikasnost( ((double) ((Klub) Ztintor_zadaca_2.listaKlubova.get(gosti.getRedniBroj() - 1)) .getBodovi()) / ((double) ((Klub) Ztintor_zadaca_2.listaKlubova.get(gosti.getRedniBroj() - 1)) .getBrojUtakmica())); domaci.setEfikasnost((double) domaci.getBodovi() / (double) domaci.getBrojUtakmica()); gosti.setEfikasnost((double) gosti.getBodovi() / (double) gosti.getBrojUtakmica()); listaSort.add(domaci); listaSort.add(gosti); par = new Par(domaci, gosti, rezultat); listaSve.add(par); } s.setState(null); // Sortiranje liste klubova prema bodovima Collections.sort( listaSort, new Comparator<Klub>() { public int compare(Klub o1, Klub o2) { if (o1.getBodovi() >= o2.getBodovi()) { return -1; } else { return 1; } } }); // Postavljanje mjesta klubova listaPrethodnogKola = new ArrayList<>(); for (Klub k : listaSort) { try { listaPrethodnogKola.add((Klub) k.clone()); } catch (CloneNotSupportedException ex) { Logger.getLogger(Dretva.class.getName()).log(Level.SEVERE, null, ex); } } // Ažururanje liste klubova listaSort.get(0).setMjesto(1); for (int i = 1; i < listaSort.size(); i++) { if (listaSort.get(i).getBodovi() == listaSort.get(i - 1).getBodovi()) { listaSort.get(i).setMjesto(listaSort.get(i - 1).getMjesto()); } else { listaSort.get(i).setMjesto(i + 1); } } // Ažururanje liste klubova prethodnog kola for (int i = 0; i < listaSort.size(); i++) { for (int j = 0; j < listaSort.size(); j++) { if (listaSort .get(i) .getNaziv() .equals(((Klub) Ztintor_zadaca_2.listaKlubova.get(j)).getNaziv())) { ((Klub) Ztintor_zadaca_2.listaKlubova.get(j)).setMjesto(listaSort.get(i).getMjesto()); } } } // Provjera prethodnog i novog redosljeda promjenaRedosljeda = false; for (int i = 0; i < listaSort.size(); i++) { for (int j = 0; j < listaPrethodnogKola.size(); j++) { if (listaSort.get(i).getNaziv().equals(listaPrethodnogKola.get(j).getNaziv())) { if (listaSort.get(i).getMjesto() != listaPrethodnogKola.get(j).getMjesto()) { promjenaRedosljeda = true; j = listaPrethodnogKola.size(); i = listaSort.size(); } } } } // MEMENTO originator.set((ArrayList) listaSort); originator1.set(listaSve); originator2.set(listaSve); caretaker2.addMemento(originator2.saveToMemento()); // Spremanje arhive if (promjenaRedosljeda) { caretaker.addMemento(originator.saveToMemento()); caretaker1.addMemento(originator1.saveToMemento()); brojacArhive++; System.out.println("arhiva: ******* " + brojacArhive); } // ----------------------------ISPISI VRAĆAJU TOČNE VRIJEDNOSTI------------------// // if (brojac == 3) { // originator.restoreFromMementoRedosljed(caretaker.getMemento(0)); // originator1.restoreFromMementoRezultatiKola(caretaker1.getMemento(0)); // System.out.println("--- Rezultati "+ "DINAMO"+" -----"); // for (int i = 0; i < brojac; i++) { // originator2.restoreFromMementoRezultatiKluba(caretaker2.getMemento(i), // "DINAMO"); // } // } // provjera stanja if (brojac % kontrola == 0) { for (int i = 0; i < Ztintor_zadaca_2.listaKlubova.size(); i++) { ((Klub) Ztintor_zadaca_2.listaKlubova.get(i)).postaviStanje(prag); } for (int i = 0; i < Ztintor_zadaca_2.listaKlubova.size(); i++) { Klub kl = new Klub(); kl = (Klub) Ztintor_zadaca_2.listaKlubova.get(i); if (kl.isProvjera()) { Ztintor_zadaca_2.s.removeObserver((Klub) Ztintor_zadaca_2.listaKlubova.get(i)); Ztintor_zadaca_2.listaKlubova.remove((Klub) Ztintor_zadaca_2.listaKlubova.get(i)); } } for (int i = 0; i < Ztintor_zadaca_2.listaKlubova.size(); i++) { ((Klub) Ztintor_zadaca_2.listaKlubova.get(i)) .setPrethodnoMjesto(((Klub) Ztintor_zadaca_2.listaKlubova.get(i)).getMjesto()); ((Klub) Ztintor_zadaca_2.listaKlubova.get(i)).setRedniBroj(i + 1); } } brojac++; // Interval dretve try { razlika = new Date().getTime() - pocetak; sleep(interval * 1000 - razlika); } catch (InterruptedException ex) { Logger.getLogger(Dretva.class.getName()).log(Level.SEVERE, null, ex); } } }
// $ANTLR start "attrib" // /Users/Pedro/Dropbox/MEI/EL/PI/Static-Code-Analyzer/AulasEG/calculadora/calc.g:64:1: // attrib[HashMap<String,Par> declarations_in] : ID '=' expression[declarations_in] ; public final void attrib(HashMap<String, Par> declarations_in) throws RecognitionException { Token ID3 = null; calcParser.expression_return expression4 = null; try { dbg.enterRule(getGrammarFileName(), "attrib"); if (getRuleLevel() == 0) { dbg.commence(); } incRuleLevel(); dbg.location(64, 1); try { // /Users/Pedro/Dropbox/MEI/EL/PI/Static-Code-Analyzer/AulasEG/calculadora/calc.g:65:2: ( ID // '=' expression[declarations_in] ) dbg.enterAlt(1); // /Users/Pedro/Dropbox/MEI/EL/PI/Static-Code-Analyzer/AulasEG/calculadora/calc.g:65:4: ID // '=' expression[declarations_in] { dbg.location(65, 4); ID3 = (Token) match(input, ID, FOLLOW_ID_in_attrib120); dbg.location(65, 7); match(input, 13, FOLLOW_13_in_attrib122); dbg.location(65, 11); pushFollow(FOLLOW_expression_in_attrib124); expression4 = expression(declarations_in); state._fsp--; dbg.location(66, 4); if (!declarations_in.containsKey((ID3 != null ? ID3.getText() : null))) { System.out.println( "A variavel " + (ID3 != null ? ID3.getText() : null) + " ainda nao foi declarada!\n"); } else { if (declarations_in.get((ID3 != null ? ID3.getText() : null)).getTipo().equals("int") && (expression4 != null ? expression4.tipo : null) == Tipo.REAL) { System.out.println("Possivel perda de precis‹o! (guardar real em variavel inteira)"); Par p = declarations_in.get((ID3 != null ? ID3.getText() : null)); p.setValue(Math.round((expression4 != null ? expression4.valor : 0.0f))); } else { Par p = declarations_in.get((ID3 != null ? ID3.getText() : null)); p.setValue((expression4 != null ? expression4.valor : 0.0f)); } System.out.println( (ID3 != null ? ID3.getText() : null) + " == " + declarations_in.get((ID3 != null ? ID3.getText() : null)).getValue()); } } } catch (RecognitionException re) { reportError(re); recover(input, re); } finally { } dbg.location(84, 2); } finally { dbg.exitRule(getGrammarFileName(), "attrib"); decRuleLevel(); if (getRuleLevel() == 0) { dbg.terminate(); } } return; }