package com.openedit.modules.admin.users;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Element;
import org.openedit.xml.XmlArchive;
import org.openedit.xml.XmlFile;
import com.openedit.OpenEditException;
public class QuestionArchive
{
XmlArchive fieldXmlArchive;
List fieldQuestions;
long lastModDate;
public Question getRandomQuestion() throws OpenEditException
{
if( getQuestions().size() == 0)
{
return null;
}
double d = Math.random();
d = d * ((double)getQuestions().size()-1D);
int hit = (int)Math.round(d);
return (Question)getQuestions().get(hit);
}
public List getQuestions() throws OpenEditException
{
String xmlpath = "/system/questions.xml";
long now = getXmlArchive().getLastModified(xmlpath);
boolean reload = false;
if( now != lastModDate )
{
reload = true;
}
if (reload || fieldQuestions == null)
{
XmlFile file = getXmlArchive().getXml(xmlpath);
fieldQuestions = new ArrayList();
if( file.isExist() )
{
for (Iterator iterator = file.getElements().iterator(); iterator.hasNext();)
{
Element elem = (Element) iterator.next();
Question q = new Question();
q.setId(elem.attributeValue("id"));
q.setDescription(elem.attributeValue("text"));
q.setAnswer(elem.attributeValue("answer"));
fieldQuestions.add(q);
}
}
lastModDate = file.getLastModified();
}
return fieldQuestions;
}
public Question getQuestion(String inId) throws OpenEditException
{
for (Iterator iter = getQuestions().iterator(); iter.hasNext();)
{
Question q = (Question) iter.next();
if ( q.getId().equals(inId) )
{
return q;
}
}
return null;
}
public XmlArchive getXmlArchive()
{
return fieldXmlArchive;
}
public void setXmlArchive(XmlArchive inXmlArchive)
{
fieldXmlArchive = inXmlArchive;
}
}