Skip to content

AsynchronousEventNotifier.java

Mark Rotteveel edited this page Jul 19, 2015 · 1 revision
importorg.firebirdsql.event.EventManager;
importorg.firebirdsql.event.FBEventManager;
importorg.firebirdsql.event.EventListener;
importorg.firebirdsql.event.DatabaseEvent;
importorg.firebirdsql.gds.impl.GDSType;
importjavax.swing.*;
importjava.util.Date;
importjava.awt.BorderLayout;
importjava.awt.Dimension;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.sql.SQLException;
publicclassAsynchronousEventNotifierimplementsEventListener {
privateEventManagereventManager;
privateJTextAreatextArea;
publicAsynchronousEventNotifier(Stringdatabase,
Stringuser, Stringpass){
eventManager = newFBEventManager(GDSType.getType("PURE_JAVA"));
eventManager.setDatabase(database);
eventManager.setUser(user);
eventManager.setPassword(pass);
}
publicvoidrun(String [] eventNames){
buildGui();
try {
eventManager.connect();
for (inti = 0; i < eventNames.length; i++){
eventManager.addEventListener(eventNames[i], this);
}
} catch (SQLExceptionse){
thrownewRuntimeException(se);
}
}
privatevoidbuildGui(){
JFrameframe = newJFrame("Asynchronous Event Notifier");
JPanelpanel = newJPanel();
JButtonclearButton = newJButton("Clear");
frame.getContentPane().add(panel);
panel.setLayout(newBorderLayout());
this.textArea = newJTextArea();
this.textArea.setEditable(false);
panel.add(newJScrollPane(this.textArea));
clearButton.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){
AsynchronousEventNotifier.this.textArea.setText("");
}
});
panel.add(clearButton, BorderLayout.SOUTH);
panel.setPreferredSize(newDimension(400, 500));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.show();
}
publicvoideventOccurred(DatabaseEventevent){
addText(newDate().toString()
+ event.getEventName() + " occurred "
+ event.getEventCount() + " time(s)\n");
}
privatevoidaddText(finalStringtext){
SwingUtilities.invokeLater(
newRunnable(){
publicvoidrun(){
JTextAreatextArea =
AsynchronousEventNotifier.this.textArea;
textArea.setText(textArea.getText() + text);
}
});
}
publicstaticvoidmain(String [] args){
if (args.length < 4){
System.err.println("Usage: java AsynchronousEventNotifier "
+ "<database path> <user> <password> <event name> "
+ "<event name>...");
System.exit(1);
}
AsynchronousEventNotifiernotifier =
newAsynchronousEventNotifier(args[0], args[1], args[2]);
String[] eventNames = newString[args.length - 3];
System.arraycopy(args, 3, eventNames, 0, args.length - 3);
notifier.run(eventNames);
}
}

Clone this wiki locally