TestDataView.java 10.1 KB
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fi.insomnia.bortal.web;

import java.util.Calendar;

import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import fi.insomnia.bortal.beans.CardTemplateBeanLocal;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.beans.PollBeanLocal;
import fi.insomnia.bortal.beans.RoleBeanLocal;
import fi.insomnia.bortal.beans.TestDataBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.beans.UserUtilBeanLocal;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.Poll;
import fi.insomnia.bortal.model.PollQuestion;
import fi.insomnia.bortal.model.PossibleAnswer;

/**
 * 
 * @author tuukka
 */
@Named("testView")
@RequestScoped
public class TestDataView {

	private static final Logger logger = LoggerFactory.getLogger(TestDataView.class);

	@EJB
	private TestDataBeanLocal testdatabean;
	@EJB
	private UserBeanLocal userbean;
	@EJB
	private RoleBeanLocal rolebean;
	@EJB
	private UserUtilBeanLocal utilbean;
	@EJB
	private CardTemplateBeanLocal ctbean;
	@EJB
	private EventBeanLocal eventbean;
	@EJB
	private PollBeanLocal pollbean;

	public void convertUsernames() {
		utilbean.convertUsernames();
	}

	// public void generateTestMap() {
	// EventMap map = testdatabean.generateTestMap();
	//
	// testdatabean.generateTestPlaces(map);
	// }
	//
	// public void executeMapTests() {
	// for (long i = 100; i < 1024 * 100; i += 100) {
	// logger.debug("Trying to read {} chars", i);
	// EventMap map = testdatabean.readMap(i);
	// // logger.debug("Got map {} with {} chars", new Object[] { map,
	// // map.getMapData().length() });
	// }
	//
	// logger.warn("All succeded Testing for original image");
	// EventMap map = testdatabean.readMap(0);
	// logger.info("Got orig image: {}", map);
	// }
	//
	// /** Creates a new instance of TestDataView */
	// public TestDataView() {
	// }
	//
	// public String printPlacesInfo() {
	// testdatabean.printPlacesInfo();
	//
	// return null;
	// }
	//
	// public void roletest() {
	// User usr = userbean.getCurrentUser();
	// List<Role> roles = rolebean.listRoles();
	// Role role = roles.get(roles.size() - 1);
	// role.getUsers().add(usr);
	// logger.debug("roles before: {}", role.getUsers());
	// rolebean.mergeChanges(role);
	// logger.debug("roles after: {}", usr.getRoles());
	//
	// }
	//
	// public void checkCards() {
	// ctbean.checkAllUsersCardRights();
	// }
	//
	// public String checkImages() {
	// logger.debug("Cheking all users images");
	// utilbean.checkAllUsersImages();
	// return null;
	// }
	//
	// public String convertImages() {
	// for (User u : userbean.getUsers()) {
	// utilbean.convertImage(u);
	// }
	//
	// return null;
	// }
	//

	public String generatePollData()
	{
		createPalaute();
		createPrizz();
		return null;
	}

	private void createPrizz() {
		Poll poll = new Poll();
		poll.setName("Prizztechin kysely: Millainen on paras peli?");
		poll.setDescription("Kysely on auki 6.11.2011 asti ja kaikkien vastanneiden kesken arvotaan iPad2! Voittaja selviää 7.11.2011!");

		Calendar end = Calendar.getInstance();
		end.add(Calendar.MONTH, 1);
		poll.setEnd(end.getTime());

		createMulticoice(poll, 10, "Millä alustalla pelaat eniten?",
				"Tietokone (perinteiset tietokonepelit, esim. Starcraft 2 tai Fallout 3)",
				"Pelikonsoli",
				"kännykkä",
				"Nettiselain (esim. Facebook-pelit, Google+-pelit, Aapeli-palvelu ym.)");

		createMulticoice(poll, 20, "Millaisia pelejä pelaat mieluiten?",
				"Pieniä lyhytkestoisia pelejä (vaikkapa matopeli, pasianssi tai Angry Birds)",
				"Tarinalla varustettuja seikkailu- tai räiskintäpelejä",
				"Moninpelejä (esim. räiskintä- tai strategiapelit)",
				"Pelihahmon kehittämistä korostavia pelejä (esim. World of Warcraft tai Fallout-sarjan pelit)");

		createMulticoice(poll, 30, "Oletko koskaan ostanut mobiilipelejä (esim. Angry Birdsin maksulliset versiot)?",
				"Kyllä",
				"Ei",
				"Ei, mutta voisin kuvitella tekeväni niin tulevaisuudessa.");

		createMulticoice(poll, 40, "Oletko maksanut pelaamisesta tai pelisisällöstä nettisivustolla (esim. Facebook tai Habbo Hotel)?",
				"Kyllä",
				"Ei",
				"Ei, mutta voisin kuvitella tekeväni niin tulevaisuudessa.");

		createTextQuestion(poll, 50,
				"Koetko todellisuutta ja virtuaalimaailmaa sekoittavat pelit mielenkiintoisina, vai pelaatko mieluummin perinteisiä pelejä? Miksi?");

		createMulticoice(poll, 60, "Osallistuitko verkkopelitapahtuma Insomniassa järjestettyyn InsomniaGame 2.0 -peliin?",
				"Kyllä",
				"Ei");

		createTextQuestion(poll, 70, "Käy tutustumassa peliin Zombies, Run! osoitteessa <a href='http://www.zombiesrungame.com/'> http://www.zombiesrungame.com/</a> Mitä pidät pelin ideasta? Entä keksitkö muita tapoja hyödyntää satelliittipaikannusta peleissä?");

		createTextQuestion(poll, 80, "Tärkein kysymys: Millainen on mielestäsi paras peli ja miksi?");

		pollbean.createPoll(poll);

	}

	public void createPalaute()
	{
		Poll poll = new Poll();
		poll.setName("Tapahtumapalaute");
		poll.setDescription("Verkkopelitapahtuma Insomnia järjestetään pelaajia varten ja pyrimme kehittämään tapahtumaa vuosi vuodelta. Palautteesi on meille ensiarvoisen tärkeää ja palautetta antaneiden kesken arvotaan pro-konepaikkoja ensi vuoden Insomniaan! Palautelomake on auki 6.11. asti ja konepaikka-arvonta suoritetaan 7.11. Voittajille ilmoitetaan henkilökohtaisesti.");

		Calendar end = Calendar.getInstance();
		end.add(Calendar.MONTH, 1);
		poll.setEnd(end.getTime());

		createTextQuestion(poll, 10,
				"Millainen fiilis sinulla oli tapahtumassa?");

		createTextQuestion(poll, 20,
				"Miten mielestäsi onnistuimme peliturnauksissa pelattavien pelien valinnassa?");

		createTextQuestion(poll, 30,
				"Toimiko uusi nukkuma-alue?");

		createTextQuestion(poll, 40,
				"Mitä pidit InsomniaGame2.0:sta?");

		createTextQuestion(poll, 50,
				"Kanada, eli muu palaute tapahtumasta?");

		pollbean.createPoll(poll);

	}

	public String generatePollData2010() {

		logger.info("Generating poll data!");

		LanEvent ev = eventbean.getCurrentEvent();
		Poll poll = new Poll();
		poll.setName("Tapahtumakysely");
		Calendar end = Calendar.getInstance();
		end.add(Calendar.MONTH, 1);
		poll.setEnd(end.getTime());

		createTextQuestion(poll, 10,
				"Millainen oli yleinen fiilis tapahtumassa?");
		createTextQuestion(poll, 20, "Mitä pidit tapahtuman kilpailuista?");
		createTextQuestion(poll, 30,
				"Mitä mieltä olit tapahtuman kilpailujen aikataulusta ja oliko neljäpäiväinen tapahtuma hyvä juttu?");
		createTextQuestion(poll, 40, "Muu palaute tapahtumasta:");

		createTextQuestion(poll, 60, "Mikä InsomniaGamessa oli parasta?");
		createTextQuestion(poll, 70, "Mikä InsomniaGamessa oli huonointa?");
		createTextQuestion(poll, 80,
				"Miten olisit halunnut saada tietoa InsomniaGameen liittyvistä tehtävistä?");
		createTextQuestion(poll, 90, "Palautteesi InsomniaGamen järjestäjille:");

		pollbean.createPoll(poll);

		Poll poll2 = new Poll();
		poll2.setName("Gallup");
		Calendar end2 = Calendar.getInstance();
		end2.add(Calendar.MONTH, 1);
		poll2.setEnd(end.getTime());

		createTextQuestion(poll2, 10, "Syntymävuotesi?", 8);
		createMulticoice(poll2, 50, "Omistatko älypuhelimen?", "En", "Kyllä",
				"Olen hankkimassa seuraavaksi älypuhelmen");

		createMulticoice(poll2, 60, "Miten usein pelaat mobiilipelejä?",
				"En pelaa mobiilipelejä", "Olen joskus kokeillut ",
				"Pelaan lähes viikottain", "Pelaan lähes päivittäin");

		createMulticoice(poll2, 70,
				"Miten usein pelaat pelikonsolilla tai tietokoneella?", "En pelaa",
				"Pelaan harvoin", "Pelaan kerran, pari viikossa", "Pelaan päivittäin");

		createMulticoice(poll2, 80,
				"Oletko kokeillut opetuspelejä? Esimerkiksi nettiselaimella tai kännykällä?",
				"En ole kokeillut", "Olen kokeillut", "Käytän usein");

		createTextQuestion(poll2, 90,
				"Millaisen opetuspelin kokisit sekä hyödyllisenä että hauskana?");

		createMulticoice(poll2, 95,
				"Kokisitko roolipeleistä tutut kokemuspisteet ja kokemustasojen tavoittelun motivaatiota kasvattanava asiana oppimispeleissä?",
				"Kyllä", "Ei");

		createMulticoice(poll2, 100,
				"Oletko käyttänyt sijaintitietoon perustuvia palveluja, kuten Google Latitude tai Foursquare?",
				"En ole kokeillut", "Olen kokeillut", "Käytän usein");

		createTextQuestion(poll2, 110,
				"Millaisia käyttötapoja näkisit sijaintitietoon perustuvilla peleillä tai palveluilla oppimiskäytössä?");

		createMulticoice(poll2, 120,
				"Käytätkö sosiaalisen median palveluita, kuten Facebookia tai IRC-Galleriaa?",
				"En ole kokeillut", "Olen kokeillut", "Käytän usein");

		createTextQuestion(poll2, 130,
				"Millaisia käyttötapoja näkisit sosiaalisen mediaan perustuvilla palveluilla oppimiskäytössä?");

		createTextQuestion(poll2, 140,
				"Olet ehkä kuullut termin \"pilvipalvelut\". Miltä kuulostaisi ajatus siitä että pelikonsoli ei fyysisesti olisikaan kotonasi, vaan pelien sisältö tulisi suoraan verkkopalvelusta?");

		pollbean.createPoll(poll2);

		return null;
	}

	private void createMulticoice(Poll poll2, Integer sort, String question,
			String... answers) {
		PollQuestion pollq = new PollQuestion(poll2);
		pollq.setQuestion(question);
		pollq.setSort(sort);
		poll2.getQuestions().add(pollq);
		Integer anssort = 10;
		for (String ans : answers) {
			PossibleAnswer pans = new PossibleAnswer();
			pans.setQuestion(pollq);
			pans.setAnswer(ans);
			pans.setSort(anssort);
			pollq.getAnswers().add(pans);
			anssort += 10;
		}
	}

	private PollQuestion createTextQuestion(Poll poll, int sort, String
			string, int chars) {
		PollQuestion ret = createTextQuestion(poll, sort, string);
		ret.setCharacters(chars);
		return ret;
	}

	private PollQuestion createTextQuestion(Poll poll, int sort, String
			question) {
		PollQuestion q1 = new PollQuestion(poll);
		q1.setQuestion(question);
		q1.setSort(sort);
		poll.getQuestions().add(q1);

		PossibleAnswer vapaa = new PossibleAnswer();
		vapaa.setAnswer("");
		vapaa.setQuestion(q1);
		vapaa.setTextanswer(true);
		q1.getAnswers().add(vapaa);
		return q1;
	}
}