/** * Devuelve los votos con un 1 en la preferencia más alta del usuario y 0 en el resto. * * @param ui * @return */ public ArrayList<MutableInt2D> getUserVotes(UserInterface ui) { ArrayList<MutableInt2D> votes = new ArrayList<MutableInt2D>(); ArrayList<MutableInt2D> ordered = ui.getNegotiation().getOrderedPreferences(css); for (int i = 0; i < ordered.size(); i++) { votes.add(new MutableInt2D(i, 0)); } ordered = ui.getNegotiation().getOrderedPreferences(css); votes.get(ordered.get(0).x).y = 1; return votes; }
/** * Es el método que se encarga de realizar las votaciones. Va recorriendo las configuraciones de * preferencias de cada uno de los usuarios y va acumulando la suma del valor que especifica para * cada uno de los servicios. Devuelve los votos que recibe cada servicio en un array de Int2D, * siendo x el índice de la configuración del serivicio e y los votos recibidos. * * @param css * @return */ @Override protected ArrayList<MutableInt2D> votingConfigurations(SharedService css) { String configurations[] = css.getConfigurations(); ArrayList<MutableInt2D> votes = new ArrayList<MutableInt2D>(); ArrayList<MutableInt2D> ordered = new ArrayList<MutableInt2D>(); for (int i = 0; i < configurations.length; i++) { votes.add(new MutableInt2D(i, 0)); } /* Se cogen los votos de cada usuario y se suman en las votaciones globales */ for (UserInterface ui : css.getUsers()) { ordered = ui.getNegotiation().getOrderedPreferences(css); for (int i = 0; i < configurations.length; i++) { ArrayList<MutableInt2D> userVotes = getUserVotes(ui); votes.get(ordered.get(i).x).y += userVotes.get(ordered.get(i).x).y; } log.finest("[getUserVotes] Votes for " + ui.getName() + ":" + getUserVotesToString(ui)); } return votes; }