VragenSetXMLParser.java

00001 /*
00002  * Created on 30-mei-2005
00003  *
00004  * VragenSetXMLParser
00005  * 
00006  * Deze XML Parser leest vragensets in.
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(); // roep de XMLParser constructor aan
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; // element name
00082         if ("".equals(eName))
00083             eName = qName; // namespaceAware = false
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); // Attr name
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); // Attr name
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                         // Parse the input
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 }

Generated on Mon Jul 18 21:59:04 2005 for Twee Voor Twaalf by  doxygen 1.4.3