Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed to the Apache Software Foundation (ASF) under one or more
   * contributor license agreements.  See the NOTICE file distributed with
   * this work for additional information regarding copyright ownership.
   * The ASF licenses this file to You under the Apache License, Version 2.0
   * (the "License"); you may not use this file except in compliance with
   * the License.  You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
  * 
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package org.apache.log4j.chainsaw;
 
 import java.io.File;
Encapsulates the action to load an XML file.

Author(s):
Oliver Burn
Version:
1.0
 
     extends AbstractAction
 {
    
use to log messages
 
     private static final Logger LOG = Logger.getLogger(LoadXMLAction.class);

    
the parent frame
 
     private final JFrame mParent;

    
the file chooser - configured to allow only the selection of a single file.
 
     private final JFileChooser mChooser = new JFileChooser();
     {
         .setMultiSelectionEnabled(false);
     }

    
parser to read XML files
 
     private final XMLReader mParser;
    
the content handler
 
     private final XMLFileHandler mHandler;


    
Creates a new LoadXMLAction instance.

Parameters:
aParent the parent frame
aModel the model to add events to
Throws:
org.xml.sax.SAXException if an error occurs
javax.xml.parsers.ParserConfigurationException if an error occurs
 
     LoadXMLAction(JFrame aParentMyTableModel aModel)
         throws SAXExceptionParserConfigurationException
     {
          = aParent;
          = new XMLFileHandler(aModel);
          = SAXParserFactory.newInstance().newSAXParser().getXMLReader();
     }

    
Prompts the user for a file to load events from.

Parameters:
aIgnore an ActionEvent value
 
     public void actionPerformed(ActionEvent aIgnore) {
         .info("load file called");
             .info("Need to load a file");
             final File chosen = .getSelectedFile();
             .info("loading the contents of " + chosen.getAbsolutePath());
             try {
                 final int num = loadFile(chosen.getAbsolutePath());
                 JOptionPane.showMessageDialog(
                     ,
                     "Loaded " + num + " events.",
                     "CHAINSAW",
                     .);
             } catch (Exception e) {
                .warn("caught an exception loading the file"e);
                JOptionPane.showMessageDialog(
                    ,
                    "Error parsing file - " + e.getMessage(),
                    "CHAINSAW",
                    .);
            }
        }
    }

    
Loads the contents of file into the model

Parameters:
aFile the file to extract events from
Returns:
the number of events loaded
Throws:
org.xml.sax.SAXException if an error occurs
java.io.IOException if an error occurs
    private int loadFile(String aFile)
        throws SAXExceptionIOException
    {
        synchronized () {
            // Create a dummy document to parse the file
            final StringBuffer buf = new StringBuffer();
            buf.append("<?xml version=\"1.0\" standalone=\"yes\"?>\n");
            buf.append("<!DOCTYPE log4j:eventSet ");
            buf.append("[<!ENTITY data SYSTEM \"file:///");
            buf.append(aFile);
            buf.append("\">]>\n");
            buf.append("<log4j:eventSet xmlns:log4j=\"Claira\">\n");
            buf.append("&data;\n");
            buf.append("</log4j:eventSet>\n");
            final InputSource is =
                new InputSource(new StringReader(buf.toString()));
            .parse(is);
            return .getNumEvents();
        }
    }
New to GrepCode? Check out our FAQ X