Author: tmortagne Date: 2008-01-28 11:24:48 +0100 (Mon, 28 Jan 2008) New Revision: 7100
Modified: xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/XWikiException.java xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiCacheStore.java xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiStoreInterface.java xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/jcr/XWikiJcrStore.java Log: XWIKI-1672: Allow to delete wiki Modified: xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/XWikiException.java =================================================================== --- xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/XWikiException.java 2008-01-28 09:51:41 UTC (rev 7099) +++ xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/XWikiException.java 2008-01-28 10:24:48 UTC (rev 7100) @@ -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/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiCacheStore.java =================================================================== --- xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiCacheStore.java 2008-01-28 09:51:41 UTC (rev 7099) +++ xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiCacheStore.java 2008-01-28 10:24:48 UTC (rev 7100) @@ -466,6 +466,19 @@ } } + /** + * [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); initCache(context); Modified: xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java =================================================================== --- xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java 2008-01-28 09:51:41 UTC (rev 7099) +++ xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java 2008-01-28 10:24:48 UTC (rev 7100) @@ -159,6 +159,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/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiStoreInterface.java =================================================================== --- xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiStoreInterface.java 2008-01-28 09:51:41 UTC (rev 7099) +++ xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiStoreInterface.java 2008-01-28 10:24:48 UTC (rev 7100) @@ -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/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/jcr/XWikiJcrStore.java =================================================================== --- xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/jcr/XWikiJcrStore.java 2008-01-28 09:51:41 UTC (rev 7099) +++ xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/jcr/XWikiJcrStore.java 2008-01-28 10:24:48 UTC (rev 7100) @@ -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 notifications@xwiki.org http://lists.xwiki.org/mailman/listinfo/notifications