00001
00002
00003
00004
00005
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;
00046 }
00047
00048
00049
00050
00051
00052 public void closeApp()
00053 {
00054 controller.closeApp();
00055 }
00056
00057
00058
00059
00060
00061 public void setWoordenMakenView(WoordenMakenView woordenMakenView)
00062 {
00063 this.woordenMakenView = woordenMakenView;
00064 }
00065
00066
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
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
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
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
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
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 }