00001
00002
00003
00004
00005
00006
00007
00008 package basis;
00009
00010 import java.io.File;
00011 import java.util.ArrayList;
00012 import java.util.Iterator;
00013 import java.util.Random;
00014
00015 import org.xml.sax.Attributes;
00016 import org.xml.sax.SAXException;
00017
00021 public class VragenSetXMLParser extends XMLParser
00022 {
00023 private boolean vragensetGevonden = false;
00024 private boolean tekstGevonden = false;
00025 private boolean eindvraagGevonden = false;
00026 private boolean antwoordGevonden = false;
00027 private boolean mediaGevonden = false;
00028 private boolean keywordGevonden = false;
00029 private String categorie;
00030 private Vraag vraag;
00031 private ArrayList vragenSet;
00032 private ArrayList categorieen;
00033 private int vragenTeller;
00034
00038 public VragenSetXMLParser()
00039 {
00040 super();
00041 vragenSet = new ArrayList();
00042 categorieen = new ArrayList();
00043 }
00044
00045 public void characters(char buf[], int offset, int len) throws SAXException
00046 {
00047 String s = new String(buf, offset, len);
00048
00049 if (tekstGevonden)
00050 {
00051 System.out.println("En dan nu de tekst zelf:\n" + s);
00052 vraag.setTekst(s);
00053 }
00054
00055 if (eindvraagGevonden)
00056 {
00057 System.out.println("En dan nu de eindvraag zelf:\n" + s);
00058 vraag.setVraag(s);
00059 }
00060
00061 if (antwoordGevonden)
00062 {
00063 System.out.println("En dan nu het antwoord zelf:\n" + s);
00064 vraag.setAntwoord(s);
00065 }
00066
00067 if (mediaGevonden)
00068 {
00069 System.out.println("En dan nu het media object zelf:\n" + s);
00070 vraag.setMedia(new Media(s));
00071 }
00072 if (keywordGevonden)
00073 {
00074 System.out.println("En dan nu het keyword object zelf:\n" + s);
00075 vraag.setKeyword(s);
00076 }
00077 }
00078
00079 public void startElement(String nameSpaceURI, String lName, String qName, Attributes attrs) throws SAXException
00080 {
00081 String eName = lName;
00082 if ("".equals(eName))
00083 eName = qName;
00084
00085 if (eName.equals("vragenset"))
00086 {
00087 if (attrs != null)
00088 {
00089 for (int i = 0; i < attrs.getLength(); i++)
00090 {
00091 String aName = attrs.getLocalName(i);
00092
00093 if ("".equals(aName))
00094 aName = attrs.getQName(i);
00095
00096 if (aName.equals("categorie"))
00097 {
00098 categorie = attrs.getValue(i);
00099 categorieen.add(categorie);
00100 }
00101 }
00102 }
00103 }
00104
00105 if (eName.equals("vraag"))
00106 {
00107 vraag = new Vraag();
00108 vraag.setCategorie(categorie);
00109 if (attrs != null) {
00110 for (int i = 0; i < attrs.getLength(); i++) {
00111 String aName = attrs.getLocalName(i);
00112
00113 if ("".equals(aName))
00114 aName = attrs.getQName(i);
00115
00116 if (aName.equals("letter"))
00117 vraag.setLetter(attrs.getValue(i).charAt(0));
00118 }
00119 }
00120 }
00121
00122 if (eName.equals("tekst"))
00123 {
00124 System.out.println("Begin van tekst");
00125 tekstGevonden = true;
00126 }
00127
00128 if (eName.equals("eindvraag"))
00129 {
00130 System.out.println("Begin van eindvraag");
00131 eindvraagGevonden = true;
00132 }
00133
00134 if (eName.equals("antwoord"))
00135 {
00136 System.out.println("Begin van antwoord");
00137 antwoordGevonden = true;
00138 }
00139
00140 if (eName.equals("media"))
00141 {
00142 System.out.println("Begin van media");
00143 mediaGevonden = true;
00144 }
00145 if (eName.equals("keyword"))
00146 {
00147 System.out.println("Begin van keyword");
00148 keywordGevonden = true;
00149 }
00150
00151 }
00152
00153 public void endElement(String namespaceURI, String lName, String qName) throws SAXException
00154 {
00155 if (qName.equals("tekst"))
00156 {
00157 System.out.println("Einde van tekst");
00158 tekstGevonden = false;
00159 }
00160
00161 if (qName.equals("eindvraag"))
00162 {
00163 System.out.println("Einde van eindvraag");
00164 eindvraagGevonden = false;
00165 }
00166
00167 if (qName.equals("antwoord"))
00168 {
00169 System.out.println("Einde van antwoord");
00170 antwoordGevonden = false;
00171 }
00172
00173 if (qName.equals("media"))
00174 {
00175 System.out.println("Einde van media");
00176 mediaGevonden = false;
00177 }
00178
00179 if (qName.equals("keyword"))
00180 {
00181 System.out.println("Einde van keyword");
00182 keywordGevonden = false;
00183 }
00184
00185 if (qName.equals("vraag"))
00186 {
00187 vragenSet.add(vragenTeller, vraag);
00188 vragenTeller++;
00189 vraag = null;
00190 }
00191
00192 }
00193
00194 public void leesVragenSet(String bestandsNaam)
00195 {
00196 laadBestand(bestandsNaam);
00197 }
00198
00199 public boolean laadBestand(String bestandsNaam)
00200 {
00201 boolean gelezen = false;
00202
00203 try
00204 {
00205
00206 saxParser = factory.newSAXParser();
00207 saxParser.parse( new File(bestandsNaam), handler);
00208 gelezen = true;
00209 }
00210 catch (Throwable t)
00211 {
00212 t.printStackTrace();
00213 gelezen = false;
00214 }
00215
00216 return gelezen;
00217 }
00218
00219 public boolean laadDirectory(String dir)
00220 {
00221 File directory = new File(dir);
00222 String bestanden[] = directory.list();
00223
00224 for (int i = 0; i < bestanden.length; i++)
00225 {
00226 File bestand = new File(bestanden[i]);
00227
00228 if (!bestand.isDirectory() && bestand.getName().contains("vragenset") && bestand.getName().endsWith(".xml"))
00229 {
00230 leesVragenSet(dir + bestand.getName());
00231 }
00232 }
00233
00234 return true;
00235 }
00236
00237 public void shuffleVragenSet()
00238 {
00239 int shuffleVragen = 0;
00240 ArrayList temp = new ArrayList();
00241 Random random = new Random();
00242
00243 for (int i=0; i<vragenSet.size(); i++)
00244 {
00245 Vraag vraag = (Vraag) vragenSet.get(i);
00246 vraag.setGebruikt(false);
00247 vragenSet.set(i, vraag);
00248 }
00249
00250
00251 while (shuffleVragen != vragenSet.size())
00252 {
00253 int getal = random.nextInt(vragenSet.size());
00254 Vraag vraag = (Vraag) vragenSet.get(getal);
00255 if (vraag.getGebruikt() == false)
00256 {
00257 vraag.setGebruikt(true);
00258 temp.add(vraag);
00259 shuffleVragen++;
00260 }
00261 }
00262
00263
00264 vragenSet = temp;
00265
00266 for (int i=0; i<vragenSet.size(); i++)
00267 {
00268 Vraag vraag = (Vraag) vragenSet.get(i);
00269 vraag.setGebruikt(false);
00270 vragenSet.set(i, vraag);
00271 }
00272
00273 }
00274
00275 public ArrayList getVragenSet(String categorie)
00276 {
00277 Iterator vragenSetIterator = vragenSet.iterator();
00278 ArrayList tempVragenSet = new ArrayList();
00279 int tempVragenTeller =0;
00280
00281 for (int i=0; i<vragenSet.size(); i++)
00282 {
00283 Vraag vraag = (Vraag) vragenSet.get(i);
00284 vraag.setGebruikt(false);
00285 vragenSet.set(i, vraag);
00286 }
00287
00288
00289 for (int i=0;i<12;i++)
00290 {
00291 char letter = categorie.charAt(i);
00292
00293 for (int j=0; j<vragenSet.size(); j++)
00294 {
00295 Vraag tempVraag = (Vraag) vragenSet.get(j);
00296 if (tempVraag.getLetter() == letter && !tempVraag.getGebruikt())
00297 {
00298 tempVraag.setGebruikt(true);
00299 tempVraag.setPositie(i);
00300 tempVragenSet.add(tempVraag);
00301 tempVragenTeller++;
00302 break;
00303 }
00304
00305 }
00306
00307 }
00308
00309
00310 return tempVragenSet;
00311
00312 }
00313
00314 public ArrayList getCategorieen()
00315 {
00316 return categorieen;
00317 }
00318 }