package uonlineeditor; import au.com.bytecode.opencsv.CSVReader; import au.com.bytecode.opencsv.CSVWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JFileChooser; import javax.swing.filechooser.FileNameExtensionFilter; import java.util.regex.*; /** * * @author houjing */ public abstract class CommFile { private JFileChooser fc; protected File file; public boolean approved = false; public static int OPEN = 0; public static int SAVE = 1; public CommFile(int mode) { int ret; fc = new JFileChooser(); if (mode == OPEN) { fc.setDialogType(JFileChooser.OPEN_DIALOG); fc.setFileFilter(getFileFilter()); ret = fc.showDialog(null, null); } else if (mode == SAVE) { fc.setDialogType(JFileChooser.SAVE_DIALOG); fc.setFileFilter(getFileFilter()); ret = fc.showDialog(null, null); } else ret = JFileChooser.CANCEL_OPTION; if (ret == JFileChooser.APPROVE_OPTION) { file = fc.getSelectedFile(); String ext = ((FileNameExtensionFilter) fc.getFileFilter()).getExtensions()[0]; if (!Pattern.compile(".+\\."+ext+"$").matcher(file.getAbsolutePath()).matches()) file = new File(file.getAbsolutePath() + "." + ext); approved = true; } else approved = false; } protected CSVReader getCsvReader() { CSVReader cr = null; try { System.out.println(file); FileReader fr = new FileReader(file); cr = new CSVReader(fr); } catch (FileNotFoundException ex) { Logger.getLogger(AreasFile.class.getName()).log(Level.SEVERE, null, ex); } return cr; } protected CSVWriter getCsvWriter() { CSVWriter cw = null; try { cw = new CSVWriter(new FileWriter(file)); } catch (IOException ex) { Logger.getLogger(AreasFile.class.getName()).log(Level.SEVERE, null, ex); } return cw; } public abstract FileNameExtensionFilter getFileFilter(); }