package com.ese.ils.beta.beans;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import org.icefaces.application.PortableRenderer;
import org.icefaces.application.PushRenderer;
import com.ese.ils.beta.model.Question;
import com.ese.ils.beta.service.PanicButtonLocalServiceUtil;
import com.ese.ils.beta.service.QuestionLocalServiceUtil;
import com.icesoft.faces.async.render.SessionRenderer;
import com.liferay.portal.kernel.exception.SystemException;
/**
* dient zur Anzeige der Statistiken in der Dozentensicht
* @author julien hofer
*
*/
@ManagedBean
@ApplicationScoped
public class CountQuestionBean implements Serializable{
private static final long serialVersionUID = -1271860679500305862L;
//Injection
@ManagedProperty(value="#{moduleModelBean}")
private transient ModuleModelBean moduleModelBean;
public CountQuestionBean(){
PushRenderer.addCurrentSession("question");
}
List<String> questions = new ArrayList<String>();
List<String> lastTenQuestions = new ArrayList<String>();
long moduleId;
String questionCount = "NO QUESTIONS YET";
String panicCount = "NO PANIC";
String frageText;
/**
* zaehlt die Anzahl der Fragen und akutalisiert <code>dozentview.xhtml</code>
* @param event
*/
public void countQuestions(ActionEvent event) {
System.out.println("counting Questions...");
selectModule(event);
List<Question> questions = QuestionLocalServiceUtil.fetchQuestionItems(moduleId);
int lastQuestionIndex = questions.size();
Question lastQuestion = questions.get(lastQuestionIndex -1);
frageText = lastQuestion.getQuestionText();
System.out.println(frageText);
SessionRenderer.render("question");
fetchLastTenQuestions();
try {
questionCount = ""+QuestionLocalServiceUtil.getQuestionsCount();
} catch (SystemException e) {
System.out.println("Beim holen des Question Counts " +
"ist ein Fehler aufgetreten!");
e.printStackTrace();
}
System.out.println("Anzahl der Fragen: " + questionCount);
}
/**
* Methode zaehlt die Anzahl der Panic Button und rendert die Statistik Sicht im Dozentenview
* durch Ajax Push.
* @param event
*/
public void countPanic(ActionEvent event) {
try {
panicCount = ""+PanicButtonLocalServiceUtil.getPanicButtonsCount();
} catch (SystemException e) {
e.printStackTrace();
}
System.out.println("Anzahl der PANIC: " + panicCount);
SessionRenderer.render("question");
}
/**
* Methode holt aus der Datenbank die letzten Zehn Fragen fuer die jeweilige <code>moduleId</code>.
* @param moduleId
*/
public void fetchLastTenQuestions () {
List<Question> questionList = QuestionLocalServiceUtil.fetchQuestionItems(moduleId);
lastTenQuestions.clear();
if(questionList.size()>10){
for (int i=questionList.size()-10;i < questionList.size();i++) {
Question question;
question = questionList.get(i);
lastTenQuestions.add(question.getQuestionText());
}
System.out.println(lastTenQuestions.toString());
}
}
public void selectModule(ActionEvent event) {
moduleId = Long.valueOf(moduleModelBean.getModuleId());
}
// GETTERS UND SETTER
public void setQuestionCount(String questionCount) {
this.questionCount = questionCount;
}
public String getQuestionCount() {
return questionCount;
}
// Panic Button Count
public String getPanicCount() {
return panicCount;
}
public void setPanicCount(String panicCount) {
this.panicCount = panicCount;
}
public String getFrageText() {
return frageText;
}
public void setFrageText(String frageText) {
this.frageText = frageText;
}
public List<String> getLastTenQuestions() {
return lastTenQuestions;
}
public void setLastTenQuestions(List<String> lastTenQuestions) {
this.lastTenQuestions = lastTenQuestions;
}
public ModuleModelBean getModuleModelBean() {
return moduleModelBean;
}
public void setModuleModelBean(ModuleModelBean moduleModelBean) {
this.moduleModelBean = moduleModelBean;
}
public long getModuleId() {
return moduleId;
}
public void setModuleId(long moduleId) {
this.moduleId = moduleId;
}
}