Thread: [Bprocessor-commit] gui/src/net/sourceforge/bprocessor/gui/properties GenericDatabase.java,NONE,1.1
Status: Pre-Alpha
Brought to you by:
henryml
From: Jesper P. <je...@us...> - 2005-08-23 10:48:39
|
Update of /cvsroot/bprocessor/gui/src/net/sourceforge/bprocessor/gui/properties In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25253 Added Files: GenericDatabase.java HSQLDB.java PostgreSQL.java PropertiesDialog.java VisualDatabase.java Log Message: Initial import --- NEW FILE: HSQLDB.java --- //--------------------------------------------------------------------------------- // $Id: HSQLDB.java,v 1.1 2005/08/23 10:48:31 jews Exp $ // // Copyright (c) 2005 The BProcessor Team (http://bprocessor.sourceforge.net) // Released under the Lesser GNU Public License v2.1 //--------------------------------------------------------------------------------- package net.sourceforge.bprocessor.gui.properties; import net.sourceforge.bprocessor.model.db.AbstractDatabase; import java.awt.BorderLayout; import javax.swing.ButtonGroup; import javax.swing.JPanel; import javax.swing.JRadioButton; import org.apache.log4j.Logger; /** * HyperSonic SQL */ public class HSQLDB extends AbstractDatabase implements VisualDatabase { /** The logger */ private static Logger log = Logger.getLogger(HSQLDB.class); /** The panel */ private JPanel panel; /** Memory */ private JRadioButton memory; /** File */ private JRadioButton file; /** * Constructor */ public HSQLDB() { super(net.sourceforge.bprocessor.model.db.HSQLDB.getInstance().getUrl(), net.sourceforge.bprocessor.model.db.HSQLDB.getInstance().getUser(), net.sourceforge.bprocessor.model.db.HSQLDB.getInstance().getPassword(), net.sourceforge.bprocessor.model.db.HSQLDB.getInstance().getAutodrop()); panel = new JPanel(); panel.setLayout(new BorderLayout()); ButtonGroup group = new ButtonGroup(); memory = new JRadioButton("Memory"); group.add(memory); file = new JRadioButton("File"); group.add(file); if (getUrl().indexOf("mem") != -1) { memory.setSelected(true); } else { //file.setSelected(true); } panel.add(memory, BorderLayout.NORTH); //panel.add(file, BorderLayout.SOUTH); } /** * Get the panel * @return The panel */ public JPanel getPanel() { return panel; } /** * Apply the changes */ public void apply() { if (memory.isSelected()) { setUrl("jdbc:hsqldb:mem:bprocessor"); setUser(""); setPassword(""); setAutodrop(true); } else { setUrl("jdbc:hsqldb:file:bprocessor"); setUser(""); setPassword(""); setAutodrop(true); } } /** * Get the name * @return The name of the database */ public String getName() { return net.sourceforge.bprocessor.model.db.HSQLDB.getInstance().getName(); } /** * Get the type * @return The type of the database */ public int getType() { return net.sourceforge.bprocessor.model.db.HSQLDB.getInstance().getType(); } /** * Is the database enabled ? * @return True if enabled; otherwise false */ public boolean isEnabled() { return net.sourceforge.bprocessor.model.db.HSQLDB.getInstance().isEnabled(); } /** * String representation * @return The representation */ public String toString() { return getName(); } } --- NEW FILE: PropertiesDialog.java --- //--------------------------------------------------------------------------------- // $Id: PropertiesDialog.java,v 1.1 2005/08/23 10:48:31 jews Exp $ // // Copyright (c) 2005 The BProcessor Team (http://bprocessor.sourceforge.net) // Released under the Lesser GNU Public License v2.1 //--------------------------------------------------------------------------------- package net.sourceforge.bprocessor.gui.properties; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JPanel; import javax.swing.JTabbedPane; import org.apache.log4j.Logger; /** * The properties dialog class */ public class PropertiesDialog extends JDialog { /** The logger */ private static Logger log = Logger.getLogger(PropertiesDialog.class); /** The database panel */ private DatabasePanel databasePanel; /** * Constructor */ public PropertiesDialog() { setTitle("Properties"); databasePanel = new DatabasePanel(); JTabbedPane tp = new JTabbedPane(); tp.addTab("Database", databasePanel); JPanel buttonPanel = new JPanel(); JButton ok = new JButton("Ok"); ok.addActionListener(new OkAction()); buttonPanel.add(ok); JButton cancel = new JButton("Cancel"); cancel.addActionListener(new CancelAction()); buttonPanel.add(cancel); getContentPane().add(tp, BorderLayout.CENTER); getContentPane().add(buttonPanel, BorderLayout.SOUTH); pack(); } /** * Database panel */ class DatabasePanel extends JPanel { /** The selected database */ private VisualDatabase selected; /** * Constructor */ DatabasePanel() { JComboBox cb = new JComboBox(); VisualDatabase db = new HSQLDB(); if (db.isEnabled()) { cb.addItem(db); } db = new PostgreSQL(); if (db.isEnabled()) { cb.addItem(db); } selected = (VisualDatabase)cb.getSelectedItem(); cb.addItemListener(new DatabaseListener(cb)); setLayout(new BorderLayout()); add(cb, BorderLayout.NORTH); add(selected.getPanel(), BorderLayout.CENTER); } /** * Get the selected database * @return The selected database */ VisualDatabase getSelected() { return selected; } /** * Set the selected database * @param database The selected database */ void setSelected(VisualDatabase database) { remove(selected.getPanel()); selected = database; add(selected.getPanel(), BorderLayout.CENTER); } } /** * Database listener */ class DatabaseListener implements ItemListener { /** Databases */ private JComboBox databases; /** * Constructor * @param databases The database list */ DatabaseListener(JComboBox databases) { this.databases = databases; } /** * Item state changed * @param event The event */ public void itemStateChanged(ItemEvent event) { databasePanel.setSelected((VisualDatabase)databases.getSelectedItem()); } } /** * Ok action */ class OkAction implements ActionListener { /** * Action performed * @param event The event */ public void actionPerformed(ActionEvent event) { VisualDatabase db = databasePanel.getSelected(); db.apply(); Settings settings = Settings.getInstance(); settings.setProperty(Settings.DATABASE_TYPE, Integer.toString(db.getType())); settings.setProperty(Settings.CONNECTION_URL, db.getUrl()); settings.setProperty(Settings.CONNECTION_USER, db.getUser()); settings.setProperty(Settings.CONNECTION_PASSWORD, db.getPassword()); settings.setProperty(Settings.CONNECTION_AUTODROP, Boolean.toString(db.getAutodrop())); settings.apply(); log.info("Activating database: " + db.getName()); dispose(); } } /** * Cancel action */ class CancelAction implements ActionListener { /** * Action performed * @param event The event */ public void actionPerformed(ActionEvent event) { dispose(); } } } --- NEW FILE: PostgreSQL.java --- //--------------------------------------------------------------------------------- // $Id: PostgreSQL.java,v 1.1 2005/08/23 10:48:31 jews Exp $ // // Copyright (c) 2005 The BProcessor Team (http://bprocessor.sourceforge.net) // Released under the Lesser GNU Public License v2.1 //--------------------------------------------------------------------------------- package net.sourceforge.bprocessor.gui.properties; import org.apache.log4j.Logger; /** * PostgreSQL */ public class PostgreSQL extends GenericDatabase { /** The logger */ private static Logger log = Logger.getLogger(PostgreSQL.class); /** * Constructor */ public PostgreSQL() { super(net.sourceforge.bprocessor.model.db.PostgreSQL.getInstance().getUrl(), net.sourceforge.bprocessor.model.db.PostgreSQL.getInstance().getUser(), net.sourceforge.bprocessor.model.db.PostgreSQL.getInstance().getPassword(), net.sourceforge.bprocessor.model.db.PostgreSQL.getInstance().getAutodrop()); String std = getUrl(); String h = ""; String p = ""; String d = ""; if (std.indexOf("//") != -1) { std = std.substring(std.indexOf("//") + 2); h = std.substring(0, std.indexOf(":")); p = std.substring(std.indexOf(":") + 1, std.indexOf("/")); d = std.substring(std.indexOf("/") + 1); } iHost.setText(h); iPort.setText(p); iDatabase.setText(d); } /** * Apply the changes */ public void apply() { String h = iHost.getText(); if (h == null) { h = "localhost"; } else { h = h.trim(); } String p = iPort.getText(); if (p == null) { p = "5432"; } else { p = p.trim(); } String d = iDatabase.getText(); if (d == null) { d = "bprocessor"; } else { d = d.trim(); } String u = iUser.getText(); if (u == null) { u = ""; } else { u = u.trim(); } String pwd = iPassword.getText(); if (pwd == null) { pwd = ""; } else { pwd = pwd.trim(); } setUrl("jdbc:postgresql://" + h + ":" + p + "/" + d); setUser(u); setPassword(pwd); setAutodrop(iAutodrop.isSelected()); } /** * Get the name * @return The name of the database */ public String getName() { return net.sourceforge.bprocessor.model.db.PostgreSQL.getInstance().getName(); } /** * Get the type * @return The type of the database */ public int getType() { return net.sourceforge.bprocessor.model.db.PostgreSQL.getInstance().getType(); } /** * Is the database enabled ? * @return True if enabled; otherwise false */ public boolean isEnabled() { return net.sourceforge.bprocessor.model.db.PostgreSQL.getInstance().isEnabled(); } } --- NEW FILE: VisualDatabase.java --- //--------------------------------------------------------------------------------- // $Id: VisualDatabase.java,v 1.1 2005/08/23 10:48:31 jews Exp $ // // Copyright (c) 2005 The BProcessor Team (http://bprocessor.sourceforge.net) // Released under the Lesser GNU Public License v2.1 //--------------------------------------------------------------------------------- package net.sourceforge.bprocessor.gui.properties; import net.sourceforge.bprocessor.model.db.Database; import javax.swing.JPanel; /** * Visual database */ public interface VisualDatabase extends Database { /** * Get the panel * @return The panel */ public JPanel getPanel(); /** * Apply the changes */ public void apply(); } --- NEW FILE: GenericDatabase.java --- //--------------------------------------------------------------------------------- // $Id: GenericDatabase.java,v 1.1 2005/08/23 10:48:31 jews Exp $ // // Copyright (c) 2005 The BProcessor Team (http://bprocessor.sourceforge.net) // Released under the Lesser GNU Public License v2.1 //--------------------------------------------------------------------------------- package net.sourceforge.bprocessor.gui.properties; import net.sourceforge.bprocessor.model.db.AbstractDatabase; import java.awt.GridLayout; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import org.apache.log4j.Logger; /** * Generic database */ public abstract class GenericDatabase extends AbstractDatabase implements VisualDatabase { /** The logger */ private static Logger log = Logger.getLogger(GenericDatabase.class); /** The panel */ protected JPanel panel; /** Host */ protected JLabel lHost; /** Host */ protected JTextField iHost; /** Port */ protected JLabel lPort; /** Port */ protected JTextField iPort; /** Database */ protected JLabel lDatabase; /** Database */ protected JTextField iDatabase; /** User */ protected JLabel lUser; /** User */ protected JTextField iUser; /** Password */ protected JLabel lPassword; /** Password */ protected JTextField iPassword; /** Autodrop */ protected JLabel lAutodrop; /** Auto drop */ protected JCheckBox iAutodrop; /** * Constructor * @param url The url * @param user The user * @param password The password * @param autodrop The autodrop */ public GenericDatabase(String url, String user, String password, boolean autodrop) { super(url, user, password, autodrop); panel = new JPanel(); panel.setLayout(new GridLayout(6, 2)); lHost = new JLabel("Host"); iHost = new JTextField(); lPort = new JLabel("Port"); iPort = new JTextField(); lDatabase = new JLabel("Database"); iDatabase = new JTextField(); lUser = new JLabel("User"); iUser = new JTextField(getUser()); lPassword = new JLabel("Password"); iPassword = new JTextField(getPassword()); lAutodrop = new JLabel("Auto drop"); iAutodrop = new JCheckBox(); iAutodrop.setSelected(getAutodrop()); panel.add(lHost); panel.add(iHost); panel.add(lPort); panel.add(iPort); panel.add(lDatabase); panel.add(iDatabase); panel.add(lUser); panel.add(iUser); panel.add(lPassword); panel.add(iPassword); panel.add(lAutodrop); panel.add(iAutodrop); } /** * Get the panel * @return The panel */ public JPanel getPanel() { return panel; } /** * Apply the changes */ public abstract void apply(); /** * Get the name * @return The name of the database */ public abstract String getName(); /** * Get the type * @return The type of the database */ public abstract int getType(); /** * Is the database enabled ? * @return True if enabled; otherwise false */ public abstract boolean isEnabled(); /** * String representation * @return The representation */ public String toString() { return getName(); } } |