Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.List;
- import java.util.ArrayList;
- abstract class Nod {
- protected int id;
- private List<Nod> noduri;
- public Nod(int id) {
- this.id = id;
- noduri = new ArrayList<>();
- }
- public void adauga(Nod nod) {
- if (!noduri.contains(nod)) {
- noduri.add(nod);
- }
- }
- public abstract void propaga(int id, String msg, int incercari);
- public int getID() {
- return this.id;
- }
- public List<Nod> getNoduri() {
- return this.noduri;
- }
- @Override
- public boolean equals(Object o) {
- return (o instanceof Nod && ((Nod)o).getID() == this.id);
- }
- }
- class NodTerminal extends Nod {
- private List<String> mesaje;
- public NodTerminal(int id) {
- super(id);
- mesaje = new ArrayList<>();
- }
- public void propaga(int id, String msg, int incercari) {
- if (id == this.id) {
- int len = mesaje.size();
- if (len > 0 && !mesaje.get(len - 1).equals(msg)) {
- mesaje.add(msg);
- } else if (len == 0) {
- mesaje.add(msg);
- }
- } else {
- if (incercari > 0) {
- for (Nod nod : this.getNoduri()) {
- nod.propaga(id, msg, incercari - 1);
- }
- }
- }
- }
- public String preiaMesaj(int i) {
- if (i < 0 || mesaje.get(i) == null) {
- return null;
- }
- return mesaje.get(i);
- }
- }
- class Filtru extends Nod {
- private List<String> cuvinte;
- public Filtru(int id) {
- super(id);
- cuvinte = new ArrayList<>();
- }
- public void propaga(int id, String msg, int incercari) {
- if (id == this.id) {
- if (!cuvinte.contains(msg)) {
- cuvinte.add(msg);
- }
- } else {
- if (cuvinte.indexOf(msg) == -1) {
- if (incercari > 0) {
- for (Nod nod : this.getNoduri()) {
- nod.propaga(id, msg, incercari - 1);
- }
- }
- }
- }
- }
- }
- class Statistica extends Nod {
- private List<Integer> noduri;
- private List<Integer> mesajePrimite;
- public Statistica(int id) {
- super(id);
- noduri = new ArrayList<>();
- mesajePrimite = new ArrayList<>();
- }
- public void propaga(int id, String msg, int incercari) {
- if (id == this.id) {
- noduri.clear();
- mesajePrimite.clear();
- } else {
- noduri.add(id);
- mesajePrimite.add(id, mesajePrimite.get(id) + 1);
- if (incercari > 0) {
- for (Nod nod : this.getNoduri()) {
- nod.propaga(id, msg, incercari - 1);
- }
- }
- }
- }
- public int preiaStatistica(int id) {
- return mesajePrimite.get(id);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement