1 7 package org.jahia.sqlprofiler.gui; 8 9 import java.awt.event.ActionEvent ; 10 import java.io.File ; 11 import java.io.IOException ; 12 import java.io.StringReader ; 13 import javax.swing.AbstractAction ; 14 import javax.swing.JFileChooser ; 15 import javax.swing.JFrame ; 16 import javax.swing.JOptionPane ; 17 import javax.xml.parsers.ParserConfigurationException ; 18 import javax.xml.parsers.SAXParserFactory ; 19 import org.apache.log4j.Category; 20 import org.xml.sax.InputSource ; 21 import org.xml.sax.SAXException ; 22 import org.xml.sax.XMLReader ; 23 24 30 class LoadXMLAction 31 extends AbstractAction 32 { 33 34 private static final Category LOG = 35 Category.getInstance(LoadXMLAction.class); 36 37 38 private final JFrame mParent; 39 40 44 private final JFileChooser mChooser = new JFileChooser (); 45 { 46 mChooser.setMultiSelectionEnabled(false); 47 mChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); 48 } 49 50 51 private final XMLReader mParser; 52 53 private final XMLFileHandler mHandler; 54 55 56 64 LoadXMLAction(JFrame aParent, LoggerTableModel aModel) 65 throws SAXException , ParserConfigurationException 66 { 67 mParent = aParent; 68 mHandler = new XMLFileHandler(aModel); 69 mParser = SAXParserFactory.newInstance().newSAXParser().getXMLReader(); 70 mParser.setContentHandler(mHandler); 71 } 72 73 77 public void actionPerformed(ActionEvent aIgnore) { 78 LOG.info("load file called"); 79 if (mChooser.showOpenDialog(mParent) == JFileChooser.APPROVE_OPTION) { 80 LOG.info("Need to load a file"); 81 final File chosen = mChooser.getSelectedFile(); 82 LOG.info("loading the contents of " + chosen.getAbsolutePath()); 83 try { 84 final int num = loadFile(chosen.getAbsolutePath()); 85 JOptionPane.showMessageDialog( 86 mParent, 87 "Loaded " + num + " events.", 88 "CHAINSAW", 89 JOptionPane.INFORMATION_MESSAGE); 90 } catch (Exception e) { 91 LOG.warn("caught an exception loading the file", e); 92 JOptionPane.showMessageDialog( 93 mParent, 94 "Error parsing file - " + e.getMessage(), 95 "CHAINSAW", 96 JOptionPane.ERROR_MESSAGE); 97 } 98 } 99 } 100 101 109 private int loadFile(String aFile) 110 throws SAXException , IOException 111 { 112 synchronized (mParser) { 113 final StringBuffer buf = new StringBuffer (); 115 buf.append("<?xml version=\"1.0\" standalone=\"yes\"?>\n"); 116 buf.append("<!DOCTYPE log4j:eventSet "); 117 buf.append("[<!ENTITY data SYSTEM \"file:///"); 118 buf.append(aFile); 119 buf.append("\">]>\n"); 120 buf.append("<log4j:eventSet xmlns:log4j=\"Claira\">\n"); 121 buf.append("&data;\n"); 122 buf.append("</log4j:eventSet>\n"); 123 124 final InputSource is = 125 new InputSource (new StringReader (buf.toString())); 126 mParser.parse(is); 127 return mHandler.getNumEvents(); 128 } 129 } 130 } 131 | Popular Tags |