exhausting all the questions in a xml database
i am developing an App,its like a test series,dere r two version FULL & LITE,for FULL total number of question in d xml database is around 300,& for LITE version its 20,so wen d test starts for lite version,each time a user starts a test,10 questions r being generated randomly one after d oder wid no repeatation,& for full version,its like 50 questions per test taken.Nw i want to add a new feature,which is like exhausting all d questions in d database,before a question gets repeated,which means say in d xml database for full version dere r 300 questions,so for the first 6 test taken by d user(coz each test comprise of 50 questions) dere should nt b any repeatation of question,same for the lite version,after 20 question hav been exhauasted,which means a user appeared for two test,den only dere can b repeatation of old question.
i am providing u d required pages....

**AppMain Page**

package com.firstBooks.series7.db;

import java.util.Random;
import com.firstBooks.series7.AppMain;
import com.firstBooks.series7.db.parser.XMLParser;

public class DBMain {

 public static String answer = "";
 public static String selectedAnswer = "";
 public static Question curQuestion;
 
 public static int currQuesNumber = 1;
 public static int correctAnswerCount = 0;
 public static int totalNumofQuestions = AppMain._totalNumofQuestions ;
 
 static int quesNum[] = new int[XMLParser.questionList.size()];
 static int quesCount = -1;
 
 static{ 
  initialize(); 
 }
 
 private static void initialize(){
  
  Random rgen = new Random();  // Random number generator
  
  //--- Initialize the array 
  for (int i=0; i<quesNum.length; i++) {
      quesNum[i] = i;
  }

  //--- Shuffle by exchanging each element randomly
  for (int i=0; i< quesNum.length; i++) {
      int randomPosition = rgen.nextInt(quesNum.length);
      int temp = quesNum[i];
      quesNum[i] = quesNum[randomPosition];
      quesNum[randomPosition] = temp;
  }
 }

 /*Changed the code to get a unique random number
  * @author: Venu  
 */
 public static int getQuestionNumber() {
  quesCount++;
  if(quesCount < quesNum.length){
   return quesNum[quesCount];
   }
  else{ 
     initialize();
     quesCount = -1;
     return getQuestionNumber();
  }
 }
}


**XMLParser Page**

package com.firstBooks.series7.db.parser;

import java.io.IOException;
import java.io.InputStream;
import java.util.Vector;

import net.rim.device.api.xml.parsers.DocumentBuilder;
import net.rim.device.api.xml.parsers.DocumentBuilderFactory;
import net.rim.device.api.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

import com.firstBooks.series7.AppMain;
import com.firstBooks.series7.db.Question;

public class XMLParser {

 private Document document;
 public static Vector questionList;
 
 public XMLParser() {     
  questionList = new Vector();
 }

 public void parseXMl() throws SAXException, IOException,
   ParserConfigurationException {

  // Build a document based on the XML file.
  DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  DocumentBuilder builder = factory.newDocumentBuilder();
  InputStream inputStream = getClass().getResourceAsStream(AppMain._xmlFileName);

  document = builder.parse(inputStream);
 }

 public void parseDocument() {
  Element element = document.getDocumentElement();

  NodeList nl = element.getElementsByTagName("question");

  if (nl != null && nl.getLength() > 0) {
   for (int i = 0; i < nl.getLength(); i++) {
    Element ele = (Element) nl.item(i);
    Question question = getQuestions(ele);
    questionList.addElement(question);
   }
  }
 }

 private Question getQuestions(Element element) {

  String title = getTextValue(element, "title");
  String choice1 = getTextValue(element, "choice1");
  String choice2 = getTextValue(element, "choice2");
  String choice3 = getTextValue(element, "choice3");
  String choice4 = getTextValue(element, "choice4");
  String answer = getTextValue(element, "answer");
  String rationale = getTextValue(element, "rationale");

  Question Questions = new Question(title, choice1,
    choice2, choice3, choice4, answer, rationale);

  return Questions;
 }

 private String getTextValue(Element ele, String tagName) {
  String textVal = null;
  NodeList nl = ele.getElementsByTagName(tagName);
  if (nl != null && nl.getLength() > 0) {
   Element el = (Element) nl.item(0);
   textVal = el.getFirstChild().getNodeValue();
  }

  return textVal;
 }
}


**Questions Page**

package com.firstBooks.series7.db;

public class Question {

 String title;
 String choice1;
 String choice2;
 String choice3;
 String choice4;
 String answer;
 String rationale;

 public Question(String title, String choice1, String choice2,
   String choice3, String choice4, String answer, String rationale) {

  this.title = title;
  this.choice1 = choice1;
  this.choice2 = choice2;
  this.choice3 = choice3;
  this.choice4 = choice4;
  this.answer = answer;
  this.rationale = rationale;
 }

 public String getTitle() {
  return title;
 }

 public String getChoice1() {
  return choice1;
 }

 public String getChoice2() {
  return choice2;
 }

 public String getChoice3() {
  return choice3;
 }

 public String getChoice4() {
  return choice4;
 }

 public String getAnswer() {
  return answer;
 }

 public String getRationale() {
  return rationale;
 }
}


**DBMain Page**

package com.firstBooks.series7.db;

import java.util.Random;
import com.firstBooks.series7.AppMain;
import com.firstBooks.series7.db.parser.XMLParser;

public class DBMain {

 public static String answer = "";
 public static String selectedAnswer = "";
 public static Question curQuestion;
 
 public static int currQuesNumber = 1;
 public static int correctAnswerCount = 0;
 public static int totalNumofQuestions = AppMain._totalNumofQuestions ;
 
 static int quesNum[] = new int[XMLParser.questionList.size()];
 static int quesCount = -1;
 
 static{ 
  initialize(); 
 }
 
 private static void initialize(){
  
  Random rgen = new Random();  // Random number generator
  
  //--- Initialize the array 
  for (int i=0; i<quesNum.length; i++) {
      quesNum[i] = i;
  }

  //--- Shuffle by exchanging each element randomly
  for (int i=0; i< quesNum.length; i++) {
      int randomPosition = rgen.nextInt(quesNum.length);
      int temp = quesNum[i];
      quesNum[i] = quesNum[randomPosition];
      quesNum[randomPosition] = temp;
  }
 }

 /*Changed the code to get a unique random number
  * @author: Venu  
 */
 public static int getQuestionNumber() {
  quesCount++;
  if(quesCount < quesNum.length){
   return quesNum[quesCount];
   }
  else{ 
     initialize();
     quesCount = -1;
     return getQuestionNumber();
  }
 }
}



If any one can help me out,will b really grateful


exhausting all the questions in a xml database
===

i am developing an App,its like a test series,dere r two version FULL & LITE,for FULL total number of question in d xml database is around 300,& for LITE version its 20,so wen d test starts for lite version,each time a user starts a test,10 questions r being generated randomly one after d oder wid no repeatation,& for full version,its like 50 questions per test taken.Nw i want to add a new feature,which is like exhausting all d questions in d database,before a question gets repeated,which means say in d xml database for full version dere r 300 questions,so for the first 6 test taken by d user(coz each test comprise of 50 questions) dere should nt b any repeatation of question,same for the lite version,after 20 question hav been exhauasted,which means a user appeared for two test,den only dere can b repeatation of old question.
i am providing u d required pages....

**AppMain Page**

package com.firstBooks.series7.db;

import java.util.Random;
import com.firstBooks.series7.AppMain;
import com.firstBooks.series7.db.parser.XMLParser;

public class DBMain {

 public static String answer = "";
 public static String selectedAnswer = "";
 public static Question curQuestion;
 
 public static int currQuesNumber = 1;
 public static int correctAnswerCount = 0;
 public static int totalNumofQuestions = AppMain._totalNumofQuestions ;
 
 static int quesNum[] = new int[XMLParser.questionList.size()];
 static int quesCount = -1;
 
 static{ 
  initialize(); 
 }
 
 private static void initialize(){
  
  Random rgen = new Random();  // Random number generator
  
  //--- Initialize the array 
  for (int i=0; i<quesNum.length; i++) {
      quesNum[i] = i;
  }

  //--- Shuffle by exchanging each element randomly
  for (int i=0; i< quesNum.length; i++) {
      int randomPosition = rgen.nextInt(quesNum.length);
      int temp = quesNum[i];
      quesNum[i] = quesNum[randomPosition];
      quesNum[randomPosition] = temp;
  }
 }

 /*Changed the code to get a unique random number
  * @author: Venu  
 */
 public static int getQuestionNumber() {
  quesCount++;
  if(quesCount < quesNum.length){
   return quesNum[quesCount];
   }
  else{ 
     initialize();
     quesCount = -1;
     return getQuestionNumber();
  }
 }
}


**XMLParser Page**

package com.firstBooks.series7.db.parser;

import java.io.IOException;
import java.io.InputStream;
import java.util.Vector;

import net.rim.device.api.xml.parsers.DocumentBuilder;
import net.rim.device.api.xml.parsers.DocumentBuilderFactory;
import net.rim.device.api.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

import com.firstBooks.series7.AppMain;
import com.firstBooks.series7.db.Question;

public class XMLParser {

 private Document document;
 public static Vector questionList;
 
 public XMLParser() {     
  questionList = new Vector();
 }

 public void parseXMl() throws SAXException, IOException,
   ParserConfigurationException {

  // Build a document based on the XML file.
  DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  DocumentBuilder builder = factory.newDocumentBuilder();
  InputStream inputStream = getClass().getResourceAsStream(AppMain._xmlFileName);

  document = builder.parse(inputStream);
 }

 public void parseDocument() {
  Element element = document.getDocumentElement();

  NodeList nl = element.getElementsByTagName("question");

  if (nl != null && nl.getLength() > 0) {
   for (int i = 0; i < nl.getLength(); i++) {
    Element ele = (Element) nl.item(i);
    Question question = getQuestions(ele);
    questionList.addElement(question);
   }
  }
 }

 private Question getQuestions(Element element) {

  String title = getTextValue(element, "title");
  String choice1 = getTextValue(element, "choice1");
  String choice2 = getTextValue(element, "choice2");
  String choice3 = getTextValue(element, "choice3");
  String choice4 = getTextValue(element, "choice4");
  String answer = getTextValue(element, "answer");
  String rationale = getTextValue(element, "rationale");

  Question Questions = new Question(title, choice1,
    choice2, choice3, choice4, answer, rationale);

  return Questions;
 }

 private String getTextValue(Element ele, String tagName) {
  String textVal = null;
  NodeList nl = ele.getElementsByTagName(tagName);
  if (nl != null && nl.getLength() > 0) {
   Element el = (Element) nl.item(0);
   textVal = el.getFirstChild().getNodeValue();
  }

  return textVal;
 }
}


**Questions Page**

package com.firstBooks.series7.db;

public class Question {

 String title;
 String choice1;
 String choice2;
 String choice3;
 String choice4;
 String answer;
 String rationale;

 public Question(String title, String choice1, String choice2,
   String choice3, String choice4, String answer, String rationale) {

  this.title = title;
  this.choice1 = choice1;
  this.choice2 = choice2;
  this.choice3 = choice3;
  this.choice4 = choice4;
  this.answer = answer;
  this.rationale = rationale;
 }

 public String getTitle() {
  return title;
 }

 public String getChoice1() {
  return choice1;
 }

 public String getChoice2() {
  return choice2;
 }

 public String getChoice3() {
  return choice3;
 }

 public String getChoice4() {
  return choice4;
 }

 public String getAnswer() {
  return answer;
 }

 public String getRationale() {
  return rationale;
 }
}


**DBMain Page**

package com.firstBooks.series7.db;

import java.util.Random;
import com.firstBooks.series7.AppMain;
import com.firstBooks.series7.db.parser.XMLParser;

public class DBMain {

 public static String answer = "";
 public static String selectedAnswer = "";
 public static Question curQuestion;
 
 public static int currQuesNumber = 1;
 public static int correctAnswerCount = 0;
 public static int totalNumofQuestions = AppMain._totalNumofQuestions ;
 
 static int quesNum[] = new int[XMLParser.questionList.size()];
 static int quesCount = -1;
 
 static{ 
  initialize(); 
 }
 
 private static void initialize(){
  
  Random rgen = new Random();  // Random number generator
  
  //--- Initialize the array 
  for (int i=0; i<quesNum.length; i++) {
      quesNum[i] = i;
  }

  //--- Shuffle by exchanging each element randomly
  for (int i=0; i< quesNum.length; i++) {
      int randomPosition = rgen.nextInt(quesNum.length);
      int temp = quesNum[i];
      quesNum[i] = quesNum[randomPosition];
      quesNum[randomPosition] = temp;
  }
 }

 /*Changed the code to get a unique random number
  * @author: Venu  
 */
 public static int getQuestionNumber() {
  quesCount++;
  if(quesCount < quesNum.length){
   return quesNum[quesCount];
   }
  else{ 
     initialize();
     quesCount = -1;
     return getQuestionNumber();
  }
 }
}



If any one can help me out,will b really grateful

