Author: tmortagne
Date: 2008-01-21 13:57:07 +0100 (Mon, 21 Jan 2008)
New Revision: 6981
Modified:
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/XWikiException.java
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiCacheStore.java
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiStoreInterface.java
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/jcr/XWikiJcrStore.java
Log:
XWIKI-1672: Allow to delete wiki
Modified:
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/XWikiException.java
===================================================================
---
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/XWikiException.java
2008-01-21 11:34:47 UTC (rev 6980)
+++
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/XWikiException.java
2008-01-21 12:57:07 UTC (rev 6981)
@@ -124,6 +124,7 @@
public static final int ERROR_XWIKI_STORE_HIBERNATE_CHECK_EXISTS_DOC =
3236;
public static final int ERROR_XWIKI_STORE_HIBERNATE_SWITCH_DATABASE = 3301;
public static final int ERROR_XWIKI_STORE_HIBERNATE_CREATE_DATABASE = 3401;
+ public static final int ERROR_XWIKI_STORE_HIBERNATE_DELETE_DATABASE = 3402;
public static final int ERROR_XWIKI_STORE_JCR_SAVING_DOC = 3501;
public static final int ERROR_XWIKI_STORE_JCR_READING_DOC = 3502;
Modified:
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiCacheStore.java
===================================================================
---
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiCacheStore.java
2008-01-21 11:34:47 UTC (rev 6980)
+++
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiCacheStore.java
2008-01-21 12:57:07 UTC (rev 6981)
@@ -465,6 +465,18 @@
store.createWiki(wikiName, context);
}
}
+
+ /**
+ * [EMAIL PROTECTED]
+ *
+ * @see
com.xpn.xwiki.store.XWikiStoreInterface#deleteWiki(java.lang.String,
com.xpn.xwiki.XWikiContext)
+ */
+ public void deleteWiki(String wikiName, XWikiContext context) throws
XWikiException
+ {
+ synchronized (wikiName) {
+ store.deleteWiki(wikiName, context);
+ }
+ }
public boolean exists(XWikiDocument doc, XWikiContext context) throws
XWikiException {
String key = getKey(doc,context);
Modified:
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java
===================================================================
---
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java
2008-01-21 11:34:47 UTC (rev 6980)
+++
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java
2008-01-21 12:57:07 UTC (rev 6981)
@@ -180,6 +180,60 @@
}
/**
+ * [EMAIL PROTECTED]
+ *
+ * @see
com.xpn.xwiki.store.XWikiStoreInterface#deleteWiki(java.lang.String,
com.xpn.xwiki.XWikiContext)
+ */
+ public void deleteWiki(String wikiName, XWikiContext context) throws
XWikiException
+ {
+ boolean bTransaction = true;
+ String database = context.getDatabase();
+ Statement stmt = null;
+ try {
+ bTransaction = beginTransaction(context);
+ Session session = getSession(context);
+ Connection connection = session.connection();
+ stmt = connection.createStatement();
+
+ String schema = getSchemaFromWikiName(wikiName, context);
+
+ DatabaseProduct databaseProduct = getDatabaseProductName(context);
+ if (DatabaseProduct.ORACLE == databaseProduct) {
+ stmt.execute("DROP SCHEMA " + schema);
+ } else if (DatabaseProduct.DERBY == databaseProduct) {
+ stmt.execute("DROP SCHEMA " + schema);
+ } else if (DatabaseProduct.HSQLDB == databaseProduct) {
+ stmt.execute("DROP SCHEMA " + schema);
+ } else {
+ stmt.execute("create database " + schema);
+ }
+
+ stmt.execute("DROP DATABASE " + schema);
+
+ endTransaction(context, true);
+ } catch (Exception e) {
+ Object[] args = {wikiName};
+ throw new XWikiException(XWikiException.MODULE_XWIKI_STORE,
+ XWikiException.ERROR_XWIKI_STORE_HIBERNATE_DELETE_DATABASE,
+ "Exception while delete wiki database {0}",
+ e,
+ args);
+ } finally {
+ context.setDatabase(database);
+ try {
+ if (stmt != null)
+ stmt.close();
+ } catch (Exception e) {
+ }
+ try {
+ if (bTransaction)
+ endTransaction(context, false);
+ } catch (Exception e) {
+ }
+ }
+ }
+
+ /**
* Verifies if a wiki document exists
* @param doc
* @param context
Modified:
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiStoreInterface.java
===================================================================
---
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiStoreInterface.java
2008-01-21 11:34:47 UTC (rev 6980)
+++
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiStoreInterface.java
2008-01-21 12:57:07 UTC (rev 6981)
@@ -393,6 +393,16 @@
public void cleanUp(XWikiContext context);
public void createWiki(String wikiName, XWikiContext context) throws
XWikiException;
+
+ /**
+ * Delete a wiki database.
+ *
+ * @param wikiName the name of the wiki.
+ * @param context the XWiki context.
+ * @throws XWikiException error when deleting wiki database.
+ */
+ public void deleteWiki(String wikiName, XWikiContext context) throws
XWikiException;
+
public boolean exists(XWikiDocument doc, XWikiContext context) throws
XWikiException;
public boolean isCustomMappingValid(BaseClass bclass, String
custommapping1, XWikiContext context) throws XWikiException;
public boolean injectCustomMapping(BaseClass doc1class, XWikiContext
xWikiContext) throws XWikiException;
Modified:
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/jcr/XWikiJcrStore.java
===================================================================
---
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/jcr/XWikiJcrStore.java
2008-01-21 11:34:47 UTC (rev 6980)
+++
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/jcr/XWikiJcrStore.java
2008-01-21 12:57:07 UTC (rev 6981)
@@ -518,6 +518,19 @@
throw new
XWikiException(XWikiException.MODULE_XWIKI_STORE,
XWikiException.ERROR_XWIKI_STORE_JCR_OTHER, "Cannot create new xwiki workspace:
"+wikiName, e);
}
}
+
+ /**
+ * [EMAIL PROTECTED]
+ *
+ * @see
com.xpn.xwiki.store.XWikiStoreInterface#deleteWiki(java.lang.String,
+ * com.xpn.xwiki.XWikiContext)
+ */
+ public void deleteWiki(String wikiName, XWikiContext context) throws
XWikiException
+ {
+ throw new XWikiException(XWikiException.MODULE_XWIKI_STORE,
+ XWikiException.ERROR_XWIKI_NOT_IMPLEMENTED,
+ "XWikiJcrStore.deleteWiki not implemented");
+ }
public boolean exists(final XWikiDocument doc, XWikiContext context)
throws XWikiException {
try {
_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications