00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 package org.objectweb.cjdbc.console.gui.objects;
00026
00027 import java.awt.Color;
00028 import java.awt.datatransfer.DataFlavor;
00029 import java.awt.datatransfer.Transferable;
00030 import java.awt.datatransfer.UnsupportedFlavorException;
00031 import java.awt.dnd.DnDConstants;
00032 import java.awt.dnd.DragSource;
00033 import java.io.IOException;
00034
00035 import javax.management.InstanceNotFoundException;
00036 import javax.swing.SwingConstants;
00037
00038 import org.objectweb.cjdbc.common.jmx.mbeans.DatabaseBackendMBean;
00039 import org.objectweb.cjdbc.console.gui.CjdbcGui;
00040 import org.objectweb.cjdbc.console.gui.constants.GuiConstants;
00041 import org.objectweb.cjdbc.console.gui.constants.GuiIcons;
00042 import org.objectweb.cjdbc.console.gui.dnd.listeners.BackendTransferListener;
00043 import org.objectweb.cjdbc.console.gui.popups.BackendPopUpMenu;
00044 import org.objectweb.cjdbc.console.jmx.RmiJmxClient;
00045
00046
00047
00048
00049
00050
00051
00052 public class BackendObject extends AbstractGuiObject
00053 implements
00054 Transferable,
00055 Cloneable
00056
00057 {
00058 private String backendState;
00059 private String database;
00060 private String controllerName;
00061 private DatabaseBackendMBean mbean;
00062 private String user;
00063 private String password;
00064 private CjdbcGui gui;
00065 private RmiJmxClient jmxClient;
00066 private BackendPopUpMenu menu;
00067
00068
00069
00070
00071
00072
00073
00074
00075 public DatabaseBackendMBean getMbean() throws InstanceNotFoundException,
00076 IOException
00077 {
00078 jmxClient = (RmiJmxClient) gui.getJmxClients().get(controllerName);
00079 user = gui.getGuiSession().getAuthenticatedDatabaseLogin(database);
00080 password = gui.getGuiSession().getAuthenticatedDatabasePassword(database);
00081 mbean = jmxClient.getDatabaseBackendProxy(database, getName(), user,
00082 password);
00083 return mbean;
00084 }
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097 public BackendObject(CjdbcGui gui, BackendTransferListener listener,
00098 String database, String name, String controllerName)
00099 throws InstanceNotFoundException, IOException
00100 {
00101 super();
00102 this.database = database;
00103 this.controllerName = controllerName;
00104 this.gui = gui;
00105 setText(name);
00106 setName(name);
00107 this.menu = new BackendPopUpMenu(gui, this);
00108 setBackground(Color.white);
00109 setVerticalTextPosition(SwingConstants.BOTTOM);
00110
00111 getMbean();
00112
00113 addMouseMotionListener(listener);
00114 addMouseListener(listener);
00115 addMouseListener(menu);
00116
00117 DragSource dragSource = DragSource.getDefaultDragSource();
00118 dragSource.createDefaultDragGestureRecognizer(this,
00119 DnDConstants.ACTION_COPY_OR_MOVE,
00120 listener);
00121 }
00122
00123
00124
00125
00126
00127
00128 public String getState()
00129 {
00130 return backendState;
00131 }
00132
00133
00134
00135
00136
00137
00138 public void setState(String state)
00139 {
00140 this.backendState = state;
00141 if (state.equals(GuiConstants.BACKEND_STATE_ENABLED))
00142 {
00143 setIcon(GuiIcons.BACKEND_ENABLED_ICON);
00144 menu.setEnabled(true);
00145 menu.getBackendCheckpoint().setEnabled(false);
00146 menu.getBackendCreate().setEnabled(true);
00147 menu.getBackendRemove().setEnabled(false);
00148
00149 menu.getBackendEnable().setEnabled(false);
00150 menu.getBackendDisable().setEnabled(true);
00151 menu.getBackendBackup().setEnabled(true);
00152 menu.getBackendRestore().setEnabled(false);
00153 }
00154 else if (state.equals(GuiConstants.BACKEND_STATE_DISABLED))
00155 {
00156 setIcon(GuiIcons.BACKEND_DISABLED_ICON);
00157 menu.getBackendCheckpoint().setEnabled(true);
00158 menu.getBackendCreate().setEnabled(true);
00159 menu.getBackendRemove().setEnabled(true);
00160
00161 menu.getBackendEnable().setEnabled(true);
00162 menu.getBackendDisable().setEnabled(false);
00163 menu.getBackendBackup().setEnabled(true);
00164 menu.getBackendRestore().setEnabled(true);
00165 }
00166 else if (state.equals(GuiConstants.BACKEND_STATE_DISABLING))
00167 {
00168 setIcon(GuiIcons.BACKEND_DISABLING_ICON);
00169 menu.setEnabled(false);
00170 }
00171 else if (state.equals(GuiConstants.BACKEND_STATE_BACKUP))
00172 {
00173 setIcon(GuiIcons.BACKEND_BACKUP_ICON);
00174 menu.setEnabled(false);
00175 }
00176 else if (state.equals(GuiConstants.BACKEND_STATE_RESTORE))
00177 {
00178 setIcon(GuiIcons.BACKEND_RESTORE_ICON);
00179 menu.setEnabled(false);
00180 }
00181 else if (state.equals(GuiConstants.BACKEND_STATE_RECOVERY))
00182 {
00183 setIcon(GuiIcons.BACKEND_STATE_RECOVERY);
00184 menu.setEnabled(false);
00185 }
00186 }
00187
00188
00189
00190
00191 public DataFlavor[] getTransferDataFlavors()
00192 {
00193 return new DataFlavor[]{DataFlavor.stringFlavor, DataFlavor.plainTextFlavor};
00194 }
00195
00196
00197
00198
00199 public boolean isDataFlavorSupported(DataFlavor flavor)
00200 {
00201 if (flavor.equals(DataFlavor.stringFlavor)
00202 || flavor.equals(DataFlavor.plainTextFlavor))
00203 return true;
00204 else
00205 return false;
00206 }
00207
00208
00209
00210
00211 public Object getTransferData(DataFlavor flavor)
00212 throws UnsupportedFlavorException, IOException
00213 {
00214 return this.getText();
00215 }
00216
00217
00218
00219
00220
00221
00222 public String getDatabase()
00223 {
00224 return database;
00225 }
00226
00227
00228
00229
00230
00231
00232 public String getControllerName()
00233 {
00234 return controllerName;
00235 }
00236
00237
00238
00239
00240
00241
00242 public void setControllerName(String controllerName)
00243 {
00244 this.controllerName = controllerName;
00245 }
00246
00247
00248
00249
00250 public void setName(String name)
00251 {
00252 super.setName(name);
00253 setText(name);
00254 }
00255
00256
00257
00258
00259
00260 public RmiJmxClient getJmxClient()
00261 {
00262 return jmxClient;
00263 }
00264 }