/* This file is part of SlumDroid <https://github.com/slumdroid/slumdroid>. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3 * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License <http://www.gnu.org/licenses/gpl-3.0.txt> * for more details. * * Copyright (C) 2012-2016 Gennaro Imparato */ package it.slumdroid.tool.utilities.adapters; import java.util.ArrayList; import java.util.List; import java.util.Random; import it.slumdroid.droidmodels.model.UserEvent; import it.slumdroid.droidmodels.model.UserInput; import it.slumdroid.droidmodels.model.WidgetState; import it.slumdroid.tool.components.abstractor.Abstractor; import it.slumdroid.tool.model.Interactor; import it.slumdroid.tool.model.RandomInteractor; import it.slumdroid.tool.model.UserAdapter; // TODO: Auto-generated Javadoc /** * The Class SimpleUserAdapter. */ public class SimpleUserAdapter implements UserAdapter { /** The abstractor. */ private Abstractor abstractor; /** The random generator. */ private Random randomGenerator; /** The event types. */ private List<Interactor> eventTypes; /** The input types. */ private List<Interactor> inputTypes; /** * Instantiates a new simple user adapter. * * @param abstractor the abstractor * @param random the random */ public SimpleUserAdapter(Abstractor abstractor, Random random) { this.eventTypes = new ArrayList<Interactor>(); this.inputTypes = new ArrayList<Interactor>(); setRandomGenerator(random); setAbstractor(abstractor); } /* (non-Javadoc) * @see it.slumdroid.tool.model.EventHandler#handleEvent(it.slumdroid.droidmodels.model.WidgetState) */ public List<UserEvent> handleEvent(WidgetState widget) { ArrayList<UserEvent> events = new ArrayList<UserEvent>(); for (Interactor eventAdapter: getEventTypes()) { events.addAll(eventAdapter.getEvents(widget)); } return events; } /* (non-Javadoc) * @see it.slumdroid.tool.model.InputHandler#handleInput(it.slumdroid.droidmodels.model.WidgetState) */ public List<UserInput> handleInput(WidgetState widget) { ArrayList<UserInput> inputs = new ArrayList<UserInput>(); for (Interactor inputAdapter: getInputTypes()) { inputs.addAll(inputAdapter.getInputs(widget)); } return inputs; } /** * Gets the abstractor. * * @return the abstractor */ public Abstractor getAbstractor() { return this.abstractor; } /** * Sets the abstractor. * * @param abstractor the new abstractor */ public void setAbstractor(Abstractor abstractor) { this.abstractor = abstractor; } /** * Gets the random generator. * * @return the random generator */ public Random getRandomGenerator() { return this.randomGenerator; } /** * Sets the random generator. * * @param randomGenerator the new random generator */ public void setRandomGenerator(Random randomGenerator) { this.randomGenerator = randomGenerator; } /* (non-Javadoc) * @see it.slumdroid.tool.model.UserAdapter#addEvent(it.slumdroid.tool.model.Interactor[]) */ public void addEvent(Interactor ... events) { for (Interactor event: events) { event.setAbstractor(getAbstractor()); this.eventTypes.add(event); } } /** * Gets the event types. * * @return the event types */ public Iterable<Interactor> getEventTypes() { return this.eventTypes; } /* (non-Javadoc) * @see it.slumdroid.tool.model.UserAdapter#addInput(it.slumdroid.tool.model.Interactor[]) */ public void addInput(Interactor ... inputs) { for (Interactor input: inputs) { input.setAbstractor(getAbstractor()); if (input instanceof RandomInteractor) { ((RandomInteractor)input).setRandomGenerator(getRandomGenerator()); } this.inputTypes.add(input); } } /** * Gets the input types. * * @return the input types */ public Iterable<Interactor> getInputTypes() { return this.inputTypes; } }