From: <da...@us...> - 2006-04-24 16:11:38
|
Revision: 2046 Author: dandfra Date: 2006-04-24 09:11:20 -0700 (Mon, 24 Apr 2006) ViewCVS: http://svn.sourceforge.net/tora/?rev=2046&view=rev Log Message: ----------- Drop Tablespace Modified Paths: -------------- trunk/tora/NEWS trunk/tora/src/Makefile.am trunk/tora/src/tostorage.cpp trunk/tora/src/tostorage.h Added Paths: ----------- trunk/tora/src/icons/droptablespace.xpm trunk/tora/src/todroptablespaceui.ui Modified: trunk/tora/NEWS =================================================================== --- trunk/tora/NEWS 2006-04-22 20:13:10 UTC (rev 2045) +++ trunk/tora/NEWS 2006-04-24 16:11:20 UTC (rev 2046) @@ -16,6 +16,7 @@ 2006-03-20: Linux autocompletion works on Windows too. Remove the ifdef 2006-04-05: Fixed compilation on windows. Re-added missing patch from Michael Meskes 2006-04-13: Apply patch from Andrew Gilmore to fix rpm spec builds as non-root user +2006-04-24: Add drop tablespace functionality 1.3.21: Modified: trunk/tora/src/Makefile.am =================================================================== --- trunk/tora/src/Makefile.am 2006-04-22 20:13:10 UTC (rev 2045) +++ trunk/tora/src/Makefile.am 2006-04-24 16:11:20 UTC (rev 2046) @@ -187,8 +187,8 @@ totextview.cpp totextview.h \ tothread.cpp tothread.h \ totool.cpp totool.h \ - totoolsettingui.cpp totoolsettingui.h \ - utils.cpp utils.h \ + totoolsettingui.cpp totoolsettingui.h todroptablespaceui.h \ + todroptablespaceui.cpp utils.cpp utils.h \ $(EXTRA_tora_SOURCES) UI_FILES = toaboutui.ui \ @@ -231,7 +231,8 @@ tomessageui.ui \ tostoragedialogui.ui \ tonewconnectionui.ui \ - tostorageprefsui.ui + tostorageprefsui.ui \ + todroptablespaceui.ui EXTRA_DIST = icons \ @@ -294,6 +295,7 @@ todebugchangeui.moc \ todebugwatch.moc \ todebugtext.moc \ + todroptablespaceui.moc \ toeditextensiongotoui.moc \ toeditextensions.moc \ toeditextensionsetupui.moc \ @@ -391,6 +393,7 @@ toworksheetstatistic.moc \ utils.moc \ toaboutui.cpp \ + todroptablespaceui.cpp \ tobrowserconstraintui.cpp \ tobrowserfilterui.cpp \ tobrowserindexui.cpp \ @@ -401,6 +404,7 @@ todebugchangeui.cpp \ todebugwatch.cpp \ toaboutui.h \ + todroptablespaceui.h \ tobrowserconstraintui.h \ tobrowserfilterui.h \ tobrowserindexui.h \ Added: trunk/tora/src/icons/droptablespace.xpm =================================================================== --- trunk/tora/src/icons/droptablespace.xpm (rev 0) +++ trunk/tora/src/icons/droptablespace.xpm 2006-04-24 16:11:20 UTC (rev 2046) @@ -0,0 +1,27 @@ +/* XPM */ +static const char* const droptablespace_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 16 5 1", +" c black", +". c gray50", +"X c red", +"o c gray100", +"O c None", +/* pixels */ +"OOOOO XX XX", +"OOOO .... XXXXXX", +"OOO ...... XXXX ", +"OOO ... XXXX ", +"OOO o . XXXXXX", +"OO . XX XX", +"O ...... .. ", +" ........ o ", +" ...... ooooo ", +" o o oooo ", +" oooooooo o ", +" oooooo ooooo ", +" o o oooo O", +" oooooooo OO", +"O oooooo OOOOOOO", +"OO OOOOOOOO" +}; Added: trunk/tora/src/todroptablespaceui.ui =================================================================== --- trunk/tora/src/todroptablespaceui.ui (rev 0) +++ trunk/tora/src/todroptablespaceui.ui 2006-04-24 16:11:20 UTC (rev 2046) @@ -0,0 +1,157 @@ +<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> +<class>toDropTablespaceUI</class> +<widget class="QWidget"> + <property name="name"> + <cstring>toDropTablespaceUI</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>436</width> + <height>133</height> + </rect> + </property> + <property name="caption"> + <string>Form1</string> + </property> + <widget class="QButtonGroup"> + <property name="name"> + <cstring>buttonGroup3</cstring> + </property> + <property name="geometry"> + <rect> + <x>10</x> + <y>10</y> + <width>410</width> + <height>110</height> + </rect> + </property> + <property name="title"> + <string>Options</string> + </property> + <widget class="QCheckBox"> + <property name="name"> + <cstring>CascadeCheck</cstring> + </property> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="geometry"> + <rect> + <x>40</x> + <y>50</y> + <width>340</width> + <height>20</height> + </rect> + </property> + <property name="text"> + <string>even if there is some forerign key referencing them</string> + </property> + </widget> + <widget class="QCheckBox"> + <property name="name"> + <cstring>dataFileCheck</cstring> + </property> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="geometry"> + <rect> + <x>40</x> + <y>80</y> + <width>150</width> + <height>20</height> + </rect> + </property> + <property name="text"> + <string>Delete datafiles</string> + </property> + </widget> + <widget class="QCheckBox"> + <property name="name"> + <cstring>IncludingObjectsCheck</cstring> + </property> + <property name="geometry"> + <rect> + <x>10</x> + <y>20</y> + <width>220</width> + <height>20</height> + </rect> + </property> + <property name="text"> + <string>Drop even if it contains objects</string> + </property> + <property name="checked"> + <bool>false</bool> + </property> + </widget> + </widget> + <spacer> + <property name="name"> + <cstring>spacer4</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>90</width> + <height>20</height> + </size> + </property> + <property name="geometry"> + <rect> + <x>420</x> + <y>60</y> + <width>90</width> + <height>20</height> + </rect> + </property> + </spacer> + <spacer> + <property name="name"> + <cstring>spacer5</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>70</height> + </size> + </property> + <property name="geometry"> + <rect> + <x>160</x> + <y>120</y> + <width>20</width> + <height>70</height> + </rect> + </property> + </spacer> +</widget> +<connections> + <connection> + <sender>IncludingObjectsCheck</sender> + <signal>toggled(bool)</signal> + <receiver>CascadeCheck</receiver> + <slot>setEnabled(bool)</slot> + </connection> + <connection> + <sender>IncludingObjectsCheck</sender> + <signal>toggled(bool)</signal> + <receiver>dataFileCheck</receiver> + <slot>setEnabled(bool)</slot> + </connection> +</connections> +<layoutdefaults spacing="6" margin="11"/> +</UI> Modified: trunk/tora/src/tostorage.cpp =================================================================== --- trunk/tora/src/tostorage.cpp 2006-04-22 20:13:10 UTC (rev 2045) +++ trunk/tora/src/tostorage.cpp 2006-04-24 16:11:20 UTC (rev 2046) @@ -81,9 +81,11 @@ #include "tostoragedialogui.moc" #include "tostorageprefsui.moc" #include "tostoragetablespaceui.moc" +#include "todroptablespaceui.moc" #include "icons/addfile.xpm" #include "icons/addtablespace.xpm" +#include "icons/droptablespace.xpm" #include "icons/coalesce.xpm" #include "icons/eraselog.xpm" #include "icons/logging.xpm" @@ -154,6 +156,28 @@ } }; +toDropTablespace::toDropTablespace(QWidget* parent, const char* name, WFlags fl) + : toDropTablespaceUI(parent, name, fl) +{ + if (!name) + setName("toDropTablespace"); +} + +std::list<QString> toDropTablespace::sql(){ + std::list<QString> ret; + if(IncludingObjectsCheck->isChecked()){ + toPush(ret, QString::fromLatin1("INCLUDING CONTENTS ")); + if(dataFileCheck->isChecked()) + toPush(ret, QString::fromLatin1("AND DATAFILES ")); + if(CascadeCheck->isChecked()) + toPush(ret, QString::fromLatin1("CASCADE CONSTRAINTS ")); + }else + toPush(ret, QString::fromLatin1("")); + return ret; +} + + + toStorageTablespace::toStorageTablespace(QWidget* parent, const char* name, WFlags fl) : toStorageTablespaceUI(parent, name, fl) { @@ -426,7 +450,7 @@ "Get information about a tablespace for the modify dialog, " "must have same columns and bindings"); -toStorageDialog::toStorageDialog(const QString &tablespace, QWidget *parent) +toStorageDialog::toStorageDialog(const QString &tablespace, QWidget *parent, bool drop) : toStorageDialogUI(parent, "Storage Dialog", true) { Setup(); @@ -434,6 +458,8 @@ if (!tablespace.isNull()) { + TablespaceOrig = tablespace; + if(!drop){ try { toQList result; @@ -447,15 +473,27 @@ QString temp = toShift(result); Mode = NewDatafile; - TablespaceOrig = tablespace; setCaption(tr("Add datafile")); Tablespace = NULL; Default = NULL; + Drop = NULL; Datafile = new toStorageDatafile(dict != QString::fromLatin1("DICTIONARY") && temp != QString::fromLatin1("PERMANENT"), false, DialogTab); DialogTab->addTab(Datafile, tr("Datafile")); + connect(Datafile, SIGNAL(validContent(bool)), this, SLOT(validContent(bool))); } TOCATCH + }else{ + Mode = DropTablespace; + Tablespace = NULL; + Default = NULL; + Datafile=NULL; + Drop=new toDropTablespace(DialogTab); + DialogTab->addTab(Datafile, tr("Drop Tablespace")); + setCaption(tr("Drop Tablespace")); + connect(Drop, SIGNAL(validContent(bool)), this, SLOT(validContent(bool))); + emit validContent(true); + } } else { @@ -470,8 +508,9 @@ Default->setEnabled(false); connect(Tablespace, SIGNAL(allowStorage(bool)), this, SLOT(allowStorage(bool))); connect(Tablespace, SIGNAL(tempFile(bool)), Datafile, SLOT(setTempFile(bool))); + connect(Datafile, SIGNAL(validContent(bool)), this, SLOT(validContent(bool))); } - connect(Datafile, SIGNAL(validContent(bool)), this, SLOT(validContent(bool))); + } toStorageDialog::toStorageDialog(toConnection &conn, const QString &tablespace, QWidget *parent) @@ -659,6 +698,21 @@ std::list<QString> ret; switch (Mode) { + case DropTablespace: + { + QString start = QString::fromLatin1("DROP TABLESPACE \""); + start += TablespaceOrig; + start += QString::fromLatin1("\" "); + if(Drop){ + std::list<QString> lst = Drop->sql(); + for (std::list<QString>::iterator i = lst.begin();i != lst.end();i++){ + start += QString::fromLatin1(" "); + start += *i; + } + } + toPush(ret, start); + } + break; case ModifyDatafile: { QString start = QString::fromLatin1("ALTER DATABASE "); @@ -825,6 +879,11 @@ tr("Modify tablespace"), this, SLOT(modifyTablespace(void)), toolbar); + DropTablespaceButton=new QToolButton(QPixmap(const_cast<const char**>(droptablespace_xpm)), + tr("Drop tablespace"), + tr("Drop tablespace"), + this, SLOT(dropTablespace(void)), + toolbar); ModFileButton = new QToolButton(QPixmap(const_cast<const char**>(modfile_xpm)), tr("Modify file"), tr("Modify file"), @@ -836,6 +895,7 @@ tr("Create new tablespace"), this, SLOT(newTablespace(void)), toolbar); + NewFileButton = new QToolButton(QPixmap(const_cast<const char**>(addfile_xpm)), tr("Add datafile to tablespace"), tr("Add datafile to tablespace"), @@ -905,6 +965,7 @@ #define TO_ID_ADD_DATAFILE (toMain::TO_TOOL_MENU_ID+ 9) #define TO_ID_COALESCE (toMain::TO_TOOL_MENU_ID+ 10) #define TO_ID_MOVE_FILE (toMain::TO_TOOL_MENU_ID+ 11) +#define TO_ID_DROP_TABLESPACE (toMain::TO_TOOL_MENU_ID+ 12) void toStorage::windowActivated(QWidget *widget) { @@ -932,6 +993,8 @@ ToolMenu->insertItem(QPixmap(const_cast<const char**>(readtablespace_xpm)), tr("Read only access"), this, SLOT(readOnly()), 0, TO_ID_READ_ONLY); ToolMenu->insertSeparator(); + ToolMenu->insertItem(QPixmap(const_cast<const char**>(droptablespace_xpm)), tr("Drop tablespace..."), + this, SLOT(dropTablespace()), 0, TO_ID_DROP_TABLESPACE); ToolMenu->insertItem(QPixmap(const_cast<const char**>(modtablespace_xpm)), tr("Modify tablespace..."), this, SLOT(modifyTablespace()), 0, TO_ID_MODIFY_TABLESPACE); ToolMenu->insertItem(QPixmap(const_cast<const char**>(modfile_xpm)), tr("Modify datafile..."), @@ -957,6 +1020,8 @@ ToolMenu->setItemEnabled(TO_ID_READ_ONLY, ReadOnlyButton->isEnabled()); ToolMenu->setItemEnabled(TO_ID_MODIFY_TABLESPACE, ModTablespaceButton->isEnabled()); + ToolMenu->setItemEnabled(TO_ID_DROP_TABLESPACE, + DropTablespaceButton->isEnabled()); ToolMenu->setItemEnabled(TO_ID_MODIFY_DATAFILE, ModFileButton->isEnabled()); ToolMenu->setItemEnabled(TO_ID_ADD_DATAFILE, NewFileButton->isEnabled()); @@ -1101,6 +1166,7 @@ LoggingButton->setEnabled(false); EraseLogButton->setEnabled(false); ModTablespaceButton->setEnabled(false); + DropTablespaceButton->setEnabled(false); NewFileButton->setEnabled(false); MoveFileButton->setEnabled(false); ModFileButton->setEnabled(false); @@ -1169,6 +1235,7 @@ } NewFileButton->setEnabled(true); ModTablespaceButton->setEnabled(true); + DropTablespaceButton->setEnabled(true); } if (ToolMenu) { @@ -1180,6 +1247,8 @@ ToolMenu->setItemEnabled(TO_ID_READ_ONLY, ReadOnlyButton->isEnabled()); ToolMenu->setItemEnabled(TO_ID_MODIFY_TABLESPACE, ModTablespaceButton->isEnabled()); + ToolMenu->setItemEnabled(TO_ID_DROP_TABLESPACE, + DropTablespaceButton->isEnabled()); ToolMenu->setItemEnabled(TO_ID_MODIFY_DATAFILE, ModFileButton->isEnabled()); ToolMenu->setItemEnabled(TO_ID_ADD_DATAFILE, NewFileButton->isEnabled()); @@ -1224,6 +1293,24 @@ TOCATCH } +void toStorage::dropTablespace(void) +{ + try + { + toStorageDialog dropSpace(Storage->currentTablespace(), this,true); + + if (dropSpace.exec()) + { + std::list<QString> lst = dropSpace.sql(); + for (std::list<QString>::iterator i = lst.begin();i != lst.end();i++) + connection().execute(*i); + + refresh(); + } + } + TOCATCH +} + void toStorage::modifyTablespace(void) { try Modified: trunk/tora/src/tostorage.h =================================================================== --- trunk/tora/src/tostorage.h 2006-04-22 20:13:10 UTC (rev 2045) +++ trunk/tora/src/tostorage.h 2006-04-24 16:11:20 UTC (rev 2046) @@ -42,6 +42,7 @@ #include "tostoragedatafileui.h" #include "tostoragedialogui.h" #include "tostoragetablespaceui.h" +#include "todroptablespaceui.h" #include "totool.h" #include <list> @@ -92,6 +93,16 @@ virtual void allowDefault(bool); }; +class toDropTablespace : public toDropTablespaceUI +{ + Q_OBJECT +public: + toDropTablespace(QWidget *parent = 0, const char *name = 0, WFlags fl = 0); + std::list<QString> sql(void); +signals: + void validContent(bool); +}; + class toStorageDatafile : public toStorageDatafileUI { Q_OBJECT @@ -133,7 +144,8 @@ NewTablespace, NewDatafile, ModifyTablespace, - ModifyDatafile + ModifyDatafile, + DropTablespace } Mode; QString TablespaceOrig; void Setup(void); @@ -141,11 +153,12 @@ toStorageDatafile *Datafile; toStorageTablespace *Tablespace; toStorageDefinition *Default; + toDropTablespace *Drop; toStorageDialog(toConnection &conn, const QString &Tablespace, QWidget *parent); toStorageDialog(toConnection &conn, const QString &Tablespace, const QString &file, QWidget *parent); - toStorageDialog(const QString &tablespace, QWidget *parent); + toStorageDialog(const QString &tablespace, QWidget *parent, bool drop = false); std::list<QString> sql(void); public slots: @@ -178,6 +191,7 @@ QToolButton *ModFileButton; QToolButton *ExtentButton; QToolButton *TablespaceButton; + QToolButton *DropTablespaceButton; public: toStorage(QWidget *parent, toConnection &connection); @@ -200,6 +214,7 @@ void modifyTablespace(void); void modifyDatafile(void); void moveFile(void); + void dropTablespace(void); void showExtent(bool); void showTablespaces(bool); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |