WoordController.java

00001 /*
00002  * Created on 7-jun-2005
00003  *
00004  * TODO To change the template for this generated file go to
00005  * Window - Preferences - Java - Code Style - Code Templates
00006  */
00007 package GUI;
00008 
00009 import java.io.BufferedReader;
00010 import java.io.File;
00011 import java.io.FileInputStream;
00012 import java.io.FileNotFoundException;
00013 import java.io.FileOutputStream;
00014 import java.io.FileReader;
00015 import java.io.IOException;
00016 import java.nio.MappedByteBuffer;
00017 import java.nio.channels.FileChannel;
00018 import java.util.ArrayList;
00019 import java.util.Iterator;
00020 
00021 import org.xml.sax.SAXException;
00022 
00023 import basis.Woord;
00024 import basis.WoordenXMLWriter;
00025 
00026 
00027 
00034 public class WoordController 
00035 {
00036         private WoordenMakenView woordenMakenView;
00037         private SpelController controller;
00038         private WoordenXMLWriter wXmlWriter;
00039         private boolean packFrame = false;
00040         private File importFile = null;
00041 
00042         
00043         public WoordController(SpelController controller)
00044         {
00045                 this.controller = controller; // Duidelijkheid door wie het object is aangeroepen ;)
00046         }
00047 
00048         
00049         /*
00050          * Sluit de gehele Applicatie.
00051          */
00052         public void closeApp()
00053         {
00054                 controller.closeApp();
00055         }
00056         
00057         /*
00058          * 
00059          * Welke woordview hoort ie bij? Hier wordt het duidelijk ;)
00060          */
00061         public void setWoordenMakenView(WoordenMakenView woordenMakenView)
00062         {
00063                 this.woordenMakenView = woordenMakenView;
00064         }
00065         /*
00066          * Hiermee wordt het XML bestand gemaakt ;)
00067          */
00068         public boolean maakWoordenSet(File file, ArrayList nieuweWoorden, String categorie)
00069         {
00070                 wXmlWriter = new WoordenXMLWriter(file.getAbsolutePath());
00071                 
00072                 try
00073                 {
00074                         wXmlWriter.nieuweWoordenSet(categorie);
00075                         Iterator nieuweWoordenIterator = nieuweWoorden.iterator();
00076                         while(nieuweWoordenIterator.hasNext())
00077                         {
00078                                 Woord tempWoord = (Woord) nieuweWoordenIterator.next();
00079                                 wXmlWriter.voegWoordToe(tempWoord.getWoord());
00080                         } 
00081                         
00082                         wXmlWriter.schrijfWoordenSet();
00083                 }
00084                 catch (SAXException s)
00085                 {
00086                         s.printStackTrace();
00087                         return false;
00088                 }
00089                 return true;
00090         }
00091         
00092         /*
00093          * 
00094          * Hiermee worden nieuwe woorden aan bestaand xml-bestand toegevoegd
00095          */
00096         public boolean voegAanWoordenSetToe(File file, ArrayList nieuweWoorden, String categorie)
00097         {
00098                 if (!checkImportFile(file))
00099                 {
00100                         return false;
00101                 }
00102                 wXmlWriter = new WoordenXMLWriter(file.getAbsolutePath());
00103                 try
00104                 {
00105                         System.out.println("File: " + file.getAbsolutePath());
00106                         wXmlWriter.laadBestand(file.getAbsolutePath());
00107                         
00108                         Iterator nieuweWoordenIterator = nieuweWoorden.iterator();
00109                         while(nieuweWoordenIterator.hasNext())
00110                         {
00111                                 Woord tempWoord = (Woord) nieuweWoordenIterator.next();
00112                                 wXmlWriter.voegWoordToe(tempWoord.getWoord());
00113                         } 
00114                         
00115                         wXmlWriter.schrijfWoordenSet();
00116                 }
00117                 catch (SAXException s)
00118                 {
00119                         s.printStackTrace();
00120                         return false;
00121                 }
00122                 return true;
00123         }
00124         
00125         /*
00126          * 
00127          * Check het bestand om te openen voordat het werkelijk gebeurt.
00128          */
00129         public boolean checkImportFile(File importFile)
00130         {
00131                 this.importFile = importFile;
00132                 if ((importFile.getName()).toLowerCase().endsWith(".xml") && checkFileContents(importFile.getAbsolutePath()))
00133                 {
00134                         return true;
00135                 }
00136                 return false;   
00137         }
00138         
00139         /*
00140          * 
00141          * Importeer het woordenset-bestand
00142          */
00143         public boolean importFile()
00144         {
00145                 File destFile = createValidFile(importFile);
00146                 System.out.println("returning filename: " + destFile.getAbsolutePath() + " : " + importFile.getAbsolutePath());
00147                 try
00148                 {
00149                         copyFile(importFile, destFile);
00150                         return true;
00151                 }
00152                 catch (IOException s)
00153                 {
00154                         return false;
00155                 }
00156         }
00157         /*
00158          * 
00159          * Check de inhoud van de file voor juiste tags :)
00160          */
00161         private boolean checkFileContents(String inFileName)
00162         {
00163                 String line = "";
00164                 try
00165                 {
00166                         BufferedReader inFile = new BufferedReader(new FileReader(inFileName));
00167                         try {line = inFile.readLine();} catch (IOException s){}
00168                         try {line = inFile.readLine();} catch (IOException s){}
00169                         String testLine = line.substring(1,11);
00170                         if (testLine.equals("woordenset"))
00171                         {
00172                                 return true;
00173                         }
00174                 }
00175                 catch (FileNotFoundException s)
00176                 {
00177                         s.printStackTrace();
00178                         return false;
00179                 }
00180                 return false;
00181         }
00182         
00184         public static void copyFile(File source, File dest) throws IOException 
00185         {
00186              FileChannel in = null, out = null;
00187              try 
00188                  {          
00189                   in = new FileInputStream(source).getChannel();
00190                   out = new FileOutputStream(dest).getChannel();
00191 
00192                   long size = in.size();
00193                   MappedByteBuffer buf = in.map(FileChannel.MapMode.READ_ONLY, 0, size);
00194 
00195                   out.write(buf);
00196 
00197              } 
00198              finally 
00199                  {
00200                   if (in != null)          in.close();
00201                   if (out != null)     out.close();
00202              }
00203         }
00204         
00205         /*
00206          * 
00207          * Maak een bestandsnaam welke niet gebruikt is binnen de XML dir.
00208          */
00209         private File createValidFile(File importFile)
00210         {
00211                 String newFileName = importFile.getName();
00212                 File destFile = null;
00213                 if (!importFile.getName().substring(0,11).equals("woordenset_"))
00214                 {
00215                         destFile = new File("XML/woordenset_" + newFileName);
00216                 }
00217                 else
00218                 {
00219                         destFile = new File("XML/" + newFileName);
00220                 }
00221                 int added_to_filename = 0;
00222                 do
00223                 {
00224                         added_to_filename++;
00225                         newFileName = destFile.getName().substring(0,destFile.getName().length()-4) + String.valueOf(added_to_filename) +".xml";
00226                         destFile = new File("XML/" + newFileName);
00227                 }
00228                 while (destFile.exists());
00229                 return destFile;        
00230         }
00231 }

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