/*
 * JBoss, the OpenSource J2EE webOS
 *
 * Distributable under LGPL license.
 * See terms of license at gnu.org.
 */
package org.jboss.jdbc;

/**
 * MBean interface.
 */
public interface HypersonicDatabaseMBean extends org.jboss.system.ServiceMBean
{

   //default object name
   public static final javax.management.ObjectName OBJECT_NAME = org.jboss.mx.util.ObjectNameFactory
         .create("jboss:service=Hypersonic");

   /**
    * Set the database name.
    */
   void setDatabase(java.lang.String name);

   /**
    * Get the database name.
    */
   java.lang.String getDatabase();

   /**
    * Set the port for remote hypersonic.
    */
   void setPort(int port);

   /**
    * Get the port for remote hypersonic.
    */
   int getPort();

   /**
    * Set silent flag.
    */
   void setSilent(boolean silent);

   /**
    * Get silent flag.
    */
   boolean getSilent();

   /**
    * Set trace flag.
    */
   void setTrace(boolean trace);

   /**
    * Get trace flag.
    */
   boolean getTrace();

   /**
    * If <b>true</b> the server thread for remote hypersonic does no call <code>System.exit()</code>.
    */
   void setNo_system_exit(boolean no_system_exit);

   /**
    * Get the <code>no_system_exit</code> flag.
    */
   boolean getNo_system_exit();

   /**
    * Set persist flag.
    * @deprecated use {@link #setInProcessMode(boolean)(boolean) inProcessMode}.
    */
   void setPersist(boolean persist);

   /**
    * Get persist flag.
    * @deprecated use {@link #setInProcessMode(boolean)(boolean) inProcessMode}.
    */
   boolean getPersist();

   /**
    * Get the full database path.
    */
   java.lang.String getDatabasePath();

   boolean isInProcessMode();

   java.lang.String getShutdownCommand();

   /**
    * If <b>true</b> the hypersonic is in process mode otherwise hypersonic is in server or remote mode.
    * @param b in process mode or remote mode.
    */
   void setInProcessMode(boolean b);

   void setShutdownCommand(java.lang.String string);

   java.lang.String getPassword();

   java.lang.String getUser();

   void setPassword(java.lang.String password);

   void setUser(java.lang.String user);

   java.lang.String getDatabaseManagerClass();

   /**
    * Set the database manager (UI) class.
    * @param databaseManagerClass
    */
   void setDatabaseManagerClass(java.lang.String databaseManagerClass);

   /**
    * Start of DatabaseManager accesible from the management console.
    */
   void startDatabaseManager();

}
