package it.univr.paranoid; import java.util.SortedSet; import java.util.TreeSet; public class Store { private final SortedSet apps = new TreeSet(); private final String name; public Store(String name) { this.name = name; } public void add(App app) { apps.add(app); } @Override public String toString() { String result = "Store " + name + ":\n\n"; for (App app: apps) result += app + "\n"; return result; } /** * Restituisce le app compatibili col dispositivo indicato. Se più versioni di * una stessa app sono compatibili col dispositivo, restituisce solo la versione più recente. * * @param device il dispositivo * @return le app compatibili con device */ public SortedSet getAppsFor(Device device) { SortedSet result = new TreeSet(); App previous = null; for (App app: apps) if (app.MIN_OS.compareTo(device.os) <= 0) { result.add(app); // se l'app precedentemente inserita nel risultato ha lo stesso nome // di quella che stiamo inserendo, essendo result ordinato, vorrà // dire che quella che stiamo inserendo è una versione più aggiornata, // per cui eliminiamo la precedente dal risultato if (previous != null && previous.getName().equals(app.getName())) result.remove(previous); previous = app; } return result; } }