Author: tmortagne
Date: 2008-02-05 14:45:31 +0100 (Tue, 05 Feb 2008)
New Revision: 7296
Modified:
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/globalsearch/GlobalSearch.java
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/globalsearch/GlobalSearchMessageTool.java
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/globalsearch/GlobalSearchPluginApi.java
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/WikiManager.java
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/WikiManagerException.java
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/WikiManagerMessageTool.java
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/WikiManagerPluginApi.java
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/doc/Wiki.java
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/doc/XWikiServerClass.java
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/resources/wikimanager/ApplicationResources.properties
Log:
XAWM-57: Delete database when deleting virtual wiki
XAWM-58: Add access to Wiki Manager context's message tool
Modified:
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/globalsearch/GlobalSearch.java
===================================================================
---
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/globalsearch/GlobalSearch.java
2008-02-05 13:04:34 UTC (rev 7295)
+++
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/globalsearch/GlobalSearch.java
2008-02-05 13:45:31 UTC (rev 7296)
@@ -25,11 +25,6 @@
final class GlobalSearch
{
/**
- * Key to use with [EMAIL PROTECTED] XWikiContext#get(Object)}.
- */
- public static final String MESSAGETOOL_CONTEXT_KEY =
"globalsearchmessagetool";
-
- /**
* The logging tool.
*/
protected static final Log LOG = LogFactory.getLog(GlobalSearch.class);
Modified:
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/globalsearch/GlobalSearchMessageTool.java
===================================================================
---
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/globalsearch/GlobalSearchMessageTool.java
2008-02-05 13:04:34 UTC (rev 7295)
+++
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/globalsearch/GlobalSearchMessageTool.java
2008-02-05 13:45:31 UTC (rev 7296)
@@ -1,6 +1,7 @@
package com.xpn.xwiki.plugin.globalsearch;
import java.util.Locale;
+import java.util.ResourceBundle;
import com.xpn.xwiki.XWikiContext;
import
com.xpn.xwiki.plugin.applicationmanager.core.plugin.XWikiPluginMessageTool;
@@ -16,6 +17,11 @@
public class GlobalSearchMessageTool extends XWikiPluginMessageTool
{
/**
+ * Key to use with [EMAIL PROTECTED] XWikiContext#get(Object)}.
+ */
+ public static final String MESSAGETOOL_CONTEXT_KEY =
"globalsearchmessagetool";
+
+ /**
* Used as [EMAIL PROTECTED] GlobalSearchException} message when provided
field does not exist in the
* document.
*/
@@ -41,6 +47,24 @@
"globalsearch.plugin.log.getdocumentfromname";
/**
+ * Default bundle manager where to find translated messages.
+ *
+ * @since 1.1
+ */
+ private static final GlobalSearchMessageTool DEFAULTMESSAGETOOL = new
GlobalSearchMessageTool();
+
+ /**
+ * Create default WikiManagerMessageTool. Only look at WikiManager
properties file with system
+ * [EMAIL PROTECTED] Locale}.
+ *
+ * @since 1.1
+ */
+ private GlobalSearchMessageTool()
+ {
+ super(ResourceBundle.getBundle(GlobalSearchPlugin.PLUGIN_NAME +
"/ApplicationResources"));
+ }
+
+ /**
* Call for [EMAIL PROTECTED]
XWikiPluginMessageTool#XWikiPluginMessageTool(ResourceBundle, XWikiContext)}.
* Construct ResourceBundle based on [EMAIL PROTECTED]
GlobalSearchPlugin#PLUGIN_NAME} +
* "/ApplicationResources".
@@ -54,4 +78,19 @@
{
super(locale, plugin, context);
}
+
+ /**
+ * Get Global Search message tool registered in XWiki context. If not
return default.
+ *
+ * @param context the XWiki context from which to get message tool.
+ * @return the default Global Search message tool.
+ * @since 1.1
+ */
+ public static GlobalSearchMessageTool getDefault(XWikiContext context)
+ {
+ Object messagetool = context.get(MESSAGETOOL_CONTEXT_KEY);
+
+ return messagetool != null && messagetool instanceof
GlobalSearchMessageTool
+ ? (GlobalSearchMessageTool) messagetool : DEFAULTMESSAGETOOL;
+ }
}
Modified:
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/globalsearch/GlobalSearchPluginApi.java
===================================================================
---
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/globalsearch/GlobalSearchPluginApi.java
2008-02-05 13:04:34 UTC (rev 7295)
+++
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/globalsearch/GlobalSearchPluginApi.java
2008-02-05 13:45:31 UTC (rev 7296)
@@ -62,7 +62,7 @@
// Message Tool
Locale locale = (Locale) context.get("locale");
this.messageTool = new GlobalSearchMessageTool(locale, plugin,
context);
- context.put(GlobalSearch.MESSAGETOOL_CONTEXT_KEY, this.messageTool);
+ context.put(GlobalSearchMessageTool.MESSAGETOOL_CONTEXT_KEY,
this.messageTool);
this.search = new GlobalSearch(messageTool);
}
Modified:
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/WikiManager.java
===================================================================
---
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/WikiManager.java
2008-02-05 13:04:34 UTC (rev 7295)
+++
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/WikiManager.java
2008-02-05 13:45:31 UTC (rev 7296)
@@ -56,11 +56,6 @@
final class WikiManager
{
/**
- * Key to use with [EMAIL PROTECTED] XWikiContext#get(Object)}.
- */
- public static final String MESSAGETOOL_CONTEXT_KEY =
"wikimanagermessagetool";
-
- /**
* The logging tool.
*/
protected static final Log LOG = LogFactory.getLog(WikiManager.class);
@@ -68,11 +63,6 @@
//
////////////////////////////////////////////////////////////////////////////
/**
- * Default bundle manager where to find translated messages.
- */
- private static final XWikiPluginMessageTool DEFAULTMESSAGETOOL = new
WikiManagerMessageTool();
-
- /**
* Unique instance of WikiManager.
*/
private static WikiManager instance;
@@ -106,10 +96,7 @@
*/
public XWikiPluginMessageTool getMessageTool(XWikiContext context)
{
- XWikiPluginMessageTool messagetool =
- (XWikiPluginMessageTool) context.get(MESSAGETOOL_CONTEXT_KEY);
-
- return messagetool != null ? messagetool : DEFAULTMESSAGETOOL;
+ return WikiManagerMessageTool.getDefault(context);
}
//
////////////////////////////////////////////////////////////////////////////
@@ -351,8 +338,10 @@
String docFullName = (String) it.next();
XWikiDocument targetDoc = xwiki.getDocument(docFullName,
context);
-
targetDoc.setContent(MessageFormat.format("#includeInContext(\"{0}{1}{2}\")",
- new Object[] {sourceWiki,
XObjectDocument.WIKI_SPACE_SEPARATOR, docFullName}));
+ targetDoc
+
.setContent(MessageFormat.format("#includeInContext(\"{0}{1}{2}\")",
+ new Object[] {sourceWiki,
XObjectDocument.WIKI_SPACE_SEPARATOR,
+ docFullName}));
}
// Replace documents contents to link
@@ -361,8 +350,10 @@
String docFullName = (String) it.next();
XWikiDocument targetDoc = xwiki.getDocument(docFullName,
context);
-
targetDoc.setContent(MessageFormat.format("#includeTopic(\"{0}{1}{2}\")",
- new Object[] {sourceWiki,
XObjectDocument.WIKI_SPACE_SEPARATOR, docFullName}));
+ targetDoc
+
.setContent(MessageFormat.format("#includeTopic(\"{0}{1}{2}\")",
+ new Object[] {sourceWiki,
XObjectDocument.WIKI_SPACE_SEPARATOR,
+ docFullName}));
}
} finally {
context.setDatabase(database);
@@ -630,7 +621,8 @@
}
}
- wikiSuperDocToSave = (XWikiServer)
wikiClass.newXObjectDocument(docToSave, 0, context);
+ wikiSuperDocToSave =
+ (XWikiServer) wikiClass.newXObjectDocument(docToSave, 0,
context);
// clear entry in virtual wiki cache
if
(!wikiSuperDocToSave.getServer().equals(userWikiSuperDoc.getServer())) {
@@ -757,10 +749,29 @@
/**
* Delete an existing wiki.
- * <p>
- * Only delete the wiki descriptor the corresponding database always exist
after delete.
*
* @param wikiNameToDelete the name of the wiki to delete.
+ * @param deleteDatabase if true wiki's database is also removed.
+ * @param context the XWiki context.
+ * @throws XWikiException error when:
+ * <ul>
+ * <li>getting wiki descriptor document.</li>
+ * <li>or deleteing wiki.</li>
+ * </ul>
+ * @since 1.1
+ */
+ public void deleteWiki(String wikiNameToDelete, boolean deleteDatabase,
XWikiContext context)
+ throws XWikiException
+ {
+ Wiki wiki = getWikiFromName(wikiNameToDelete, context);
+
+ wiki.delete(deleteDatabase);
+ }
+
+ /**
+ * Delete an existing wiki alias. If it's the last alias it delete the
wiki.
+ *
+ * @param wikiNameToDelete the name of the wiki to delete.
* @param objectId the id of the XWiki object included in the document to
manage.
* @param context the XWiki context.
* @throws XWikiException error when:
@@ -768,13 +779,19 @@
* <li>getting wiki descriptor document.</li>
* <li>or deleteing wiki.</li>
* </ul>
+ * @since 1.1
*/
- public void deleteWiki(String wikiNameToDelete, int objectId, XWikiContext
context)
+ public void deleteWikiAlias(String wikiNameToDelete, int objectId,
XWikiContext context)
throws XWikiException
{
- XWikiServer doc = getWikiAlias(wikiNameToDelete, objectId, true,
context);
+ Wiki wiki = getWikiFromName(wikiNameToDelete, context);
+ XWikiServer alias = wiki.getWikiAlias(objectId);
- doc.delete();
+ if (wiki.countWikiAliases() == 1) {
+ wiki.delete(true);
+ } else {
+ alias.delete();
+ }
}
/**
Modified:
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/WikiManagerException.java
===================================================================
---
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/WikiManagerException.java
2008-02-05 13:04:34 UTC (rev 7295)
+++
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/WikiManagerException.java
2008-02-05 13:45:31 UTC (rev 7296)
@@ -49,7 +49,7 @@
public static final int ERROR_WM_WIKIALREADYEXISTS = 50033;
/**
- * Error when trying to use a provide wiki descriptor that does not exist.
+ * Error when trying to use a provided wiki descriptor that does not exist.
*/
public static final int ERROR_WM_WIKIDOESNOTEXISTS = 50034;
@@ -85,6 +85,13 @@
*/
public static final int ERROR_WM_PACKAGEINSTALL = 50040;
+ /**
+ * Error when trying to get a provided wiki alias that does not exist.
+ *
+ * @since 1.1
+ */
+ public static final int ERROR_WM_WIKIALIASDOESNOTEXISTS = 50041;
+
// //////
/**
Modified:
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/WikiManagerMessageTool.java
===================================================================
---
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/WikiManagerMessageTool.java
2008-02-05 13:04:34 UTC (rev 7295)
+++
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/WikiManagerMessageTool.java
2008-02-05 13:45:31 UTC (rev 7296)
@@ -1,6 +1,7 @@
package com.xpn.xwiki.plugin.wikimanager;
import java.util.Locale;
+import java.util.ResourceBundle;
import com.xpn.xwiki.XWikiContext;
import
com.xpn.xwiki.plugin.applicationmanager.core.plugin.XWikiPluginMessageTool;
@@ -16,6 +17,13 @@
public class WikiManagerMessageTool extends XWikiPluginMessageTool
{
/**
+ * Key to use with [EMAIL PROTECTED] XWikiContext#get(Object)}.
+ *
+ * @since 1.1
+ */
+ public static final String MESSAGETOOL_CONTEXT_KEY =
"wikimanagermessagetool";
+
+ /**
* Used as comment when creating a new empty wiki.
*/
public static final String COMMENT_CREATEEMPTYWIKI =
"wikimanager.plugin.comment.createwiki";
@@ -94,6 +102,33 @@
public static final String ERROR_PACKAGEINSTALL =
"wikimanager.plugin.error.packageinstall";
/**
+ * Used as [EMAIL PROTECTED] WikiManagerException} message when trying to
delete wiki with not
+ * administrator user.
+ *
+ * @since 1.1
+ */
+ public static final String ERROR_RIGHTTODELETEWIKI =
+ "wikimanager.plugin.error.righttodeletewiki";
+
+ /**
+ * Used as [EMAIL PROTECTED] WikiManagerException} message when trying to
delete wiki with not
+ * administrator user.
+ *
+ * @since 1.1
+ */
+ public static final String ERROR_WIKIALIASDOESNOTEXISTS =
+ "wikimanager.plugin.error.wikialiasdoesnotexists";
+
+ /**
+ * Used as [EMAIL PROTECTED] WikiManagerException} message when trying to
delete wiki with not
+ * administrator user.
+ *
+ * @since 1.1
+ */
+ public static final String ERROR_WIKITEMPLATEALIASDOESNOTEXISTS =
+ "wikimanager.plugin.error.wikitemplatealiasdoesnotexists";
+
+ /**
* Used as [EMAIL PROTECTED] org.apache.commons.logging.Log} log message
when trying to create a new wiki
* with a wiki descriptor that already exist.
*/
@@ -135,7 +170,7 @@
* Used as [EMAIL PROTECTED] org.apache.commons.logging.Log} log message
when failed to find wiki alias.
*/
public static final String LOG_WIKIGET = "wikimanager.plugin.log.wikiget";
-
+
/**
* Used as [EMAIL PROTECTED] org.apache.commons.logging.Log} log message
when failed to find wiki
* descriptor document.
@@ -174,12 +209,19 @@
"wikimanager.plugin.log.wikitemplategetall";
/**
+ * Default bundle manager where to find translated messages.
+ *
+ * @since 1.1
+ */
+ private static final WikiManagerMessageTool DEFAULTMESSAGETOOL = new
WikiManagerMessageTool();
+
+ /**
* Create default WikiManagerMessageTool. Only look at WikiManager
properties file with system
* [EMAIL PROTECTED] Locale}.
*/
- WikiManagerMessageTool()
+ private WikiManagerMessageTool()
{
- super(null, null);
+ super(ResourceBundle.getBundle(WikiManagerPlugin.PLUGIN_NAME +
"/ApplicationResources"));
}
/**
@@ -196,4 +238,19 @@
{
super(locale, plugin, context);
}
+
+ /**
+ * Get Wiki Manager message tool registered in XWiki context. If not
return default.
+ *
+ * @param context the XWiki context from which to get message tool.
+ * @return the default Wiki Manager message tool.
+ * @since 1.1
+ */
+ public static WikiManagerMessageTool getDefault(XWikiContext context)
+ {
+ Object messagetool = context.get(MESSAGETOOL_CONTEXT_KEY);
+
+ return messagetool != null && messagetool instanceof
WikiManagerMessageTool
+ ? (WikiManagerMessageTool) messagetool : DEFAULTMESSAGETOOL;
+ }
}
Modified:
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/WikiManagerPluginApi.java
===================================================================
---
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/WikiManagerPluginApi.java
2008-02-05 13:04:34 UTC (rev 7295)
+++
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/WikiManagerPluginApi.java
2008-02-05 13:45:31 UTC (rev 7296)
@@ -93,7 +93,7 @@
// Message Tool
Locale locale = (Locale) context.get("locale");
this.messageTool = new WikiManagerMessageTool(locale, plugin, context);
- context.put(WikiManager.MESSAGETOOL_CONTEXT_KEY, this.messageTool);
+ context.put(WikiManagerMessageTool.MESSAGETOOL_CONTEXT_KEY,
this.messageTool);
searchApi = plugin.getGlobalSearchApiPlugin(context);
}
@@ -199,9 +199,10 @@
}
/**
- * Delete wiki descriptor document from database.
+ * Delete wiki descriptor document and wiki's database.
*
* @param wikiName the name of the wiki to delete.
+ * @param deleteDatabase if true wiki's database is also removed.
* @return If there is error, it add error code in context [EMAIL
PROTECTED] #CONTEXT_LASTERRORCODE} field
* and exception in context's [EMAIL PROTECTED]
#CONTEXT_LASTEXCEPTION} field.
* <p>
@@ -210,12 +211,55 @@
* <li>[EMAIL PROTECTED] XWikiExceptionApi#ERROR_NOERROR}: methods
succeed.</li>
* <li>[EMAIL PROTECTED]
WikiManagerException#ERROR_WM_WIKIDOESNOTEXISTS}: wiki to delete does
* not exists.</li>
+ * <li>[EMAIL PROTECTED]
XWikiException#ERROR_XWIKI_ACCESS_DENIED}: you don't have right to
+ * delete wiki.</li>
* </ul>
* @throws XWikiException critical error in xwiki engine.
+ * @since 1.1
*/
+ public int deleteWiki(String wikiName, boolean deleteDatabase) throws
XWikiException
+ {
+ int returncode = XWikiExceptionApi.ERROR_NOERROR;
+
+ try {
+ if (!hasAdminRights()) {
+ throw new
WikiManagerException(XWikiException.ERROR_XWIKI_ACCESS_DENIED,
+
messageTool.get(WikiManagerMessageTool.ERROR_RIGHTTODELETEWIKI, wikiName));
+ }
+
+ WikiManager.getInstance().deleteWiki(wikiName, deleteDatabase,
this.context);
+ } catch (WikiManagerException e) {
+ LOG.error(messageTool.get(WikiManagerMessageTool.LOG_WIKIDELETION,
wikiName), e);
+
+ this.context.put(CONTEXT_LASTERRORCODE, new Integer(e.getCode()));
+ this.context.put(CONTEXT_LASTEXCEPTION, new XWikiExceptionApi(e,
this.context));
+
+ returncode = e.getCode();
+ }
+
+ return returncode;
+ }
+
+ /**
+ * Delete wiki descriptor document and wiki's database.
+ *
+ * @param wikiName the name of the wiki to delete.
+ * @return If there is error, it add error code in context [EMAIL
PROTECTED] #CONTEXT_LASTERRORCODE} field
+ * and exception in context's [EMAIL PROTECTED]
#CONTEXT_LASTEXCEPTION} field.
+ * <p>
+ * Error codes can be :
+ * <ul>
+ * <li>[EMAIL PROTECTED] XWikiExceptionApi#ERROR_NOERROR}: methods
succeed.</li>
+ * <li>[EMAIL PROTECTED]
WikiManagerException#ERROR_WM_WIKIDOESNOTEXISTS}: wiki to delete does
+ * not exists.</li>
+ * <li>[EMAIL PROTECTED]
XWikiException#ERROR_XWIKI_ACCESS_DENIED}: you don't have right to
+ * delete wiki.</li>
+ * </ul>
+ * @throws XWikiException critical error in xwiki engine.
+ */
public int deleteWiki(String wikiName) throws XWikiException
{
- return deleteWiki(wikiName, 0);
+ return deleteWiki(wikiName, true);
}
/**
@@ -231,19 +275,47 @@
* <li>[EMAIL PROTECTED] XWikiExceptionApi#ERROR_NOERROR}: methods
succeed.</li>
* <li>[EMAIL PROTECTED]
WikiManagerException#ERROR_WM_WIKIDOESNOTEXISTS}: wiki to delete does
* not exists.</li>
+ * <li>[EMAIL PROTECTED]
XWikiException#ERROR_XWIKI_ACCESS_DENIED}: you don't have right to
+ * delete wiki.</li>
* </ul>
* @throws XWikiException critical error in xwiki engine.
+ * @deprecated Use [EMAIL PROTECTED] #deleteWikiAlias(String, int)} since
1.1.
*/
public int deleteWiki(String wikiName, int objectId) throws XWikiException
{
- if (!hasAdminRights()) {
- return XWikiException.ERROR_XWIKI_ACCESS_DENIED;
- }
+ return deleteWikiAlias(wikiName, objectId);
+ }
+ /**
+ * Delete wiki descriptor alias document from database.
+ *
+ * @param wikiName the name of the wiki to delete.
+ * @param objectId the id of the XWiki object included in the document to
manage.
+ * @return If there is error, it add error code in context [EMAIL
PROTECTED] #CONTEXT_LASTERRORCODE} field
+ * and exception in context's [EMAIL PROTECTED]
#CONTEXT_LASTEXCEPTION} field.
+ * <p>
+ * Error codes can be :
+ * <ul>
+ * <li>[EMAIL PROTECTED] XWikiExceptionApi#ERROR_NOERROR}: methods
succeed.</li>
+ * <li>[EMAIL PROTECTED]
WikiManagerException#ERROR_WM_WIKIDOESNOTEXISTS}: wiki to delete does
+ * not exists.</li>
+ * <li>[EMAIL PROTECTED]
XWikiException#ERROR_XWIKI_ACCESS_DENIED}: you don't have right to
+ * delete wiki.</li>
+ * </ul>
+ * @throws XWikiException critical error in xwiki engine.
+ * @since 1.1
+ */
+ public int deleteWikiAlias(String wikiName, int objectId) throws
XWikiException
+ {
int returncode = XWikiExceptionApi.ERROR_NOERROR;
try {
- WikiManager.getInstance().deleteWiki(wikiName, objectId,
this.context);
+ if (!hasAdminRights()) {
+ throw new
WikiManagerException(XWikiException.ERROR_XWIKI_ACCESS_DENIED,
+
messageTool.get(WikiManagerMessageTool.ERROR_RIGHTTODELETEWIKI, wikiName));
+ }
+
+ WikiManager.getInstance().deleteWikiAlias(wikiName, objectId,
this.context);
} catch (WikiManagerException e) {
LOG.error(messageTool.get(WikiManagerMessageTool.LOG_WIKIDELETION,
wikiName), e);
Modified:
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/doc/Wiki.java
===================================================================
---
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/doc/Wiki.java
2008-02-05 13:04:34 UTC (rev 7295)
+++
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/doc/Wiki.java
2008-02-05 13:45:31 UTC (rev 7296)
@@ -2,12 +2,15 @@
import java.util.Collection;
import java.util.Iterator;
+import java.util.List;
import com.xpn.xwiki.XWikiContext;
import com.xpn.xwiki.XWikiException;
import com.xpn.xwiki.api.Document;
import com.xpn.xwiki.doc.XWikiDocument;
import com.xpn.xwiki.objects.BaseObject;
+import com.xpn.xwiki.plugin.wikimanager.WikiManagerException;
+import com.xpn.xwiki.plugin.wikimanager.WikiManagerMessageTool;
/**
* This class manage wiki document descriptor.
@@ -39,6 +42,73 @@
}
/**
+ * Delete the wiki.
+ *
+ * @param deleteDatabase if true wiki's database is also removed.
+ * @throws XWikiException error deleting the wiki.
+ * @since 1.1
+ */
+ public void delete(boolean deleteDatabase) throws XWikiException
+ {
+ if (hasAdminRights()) {
+ this.context.getWiki().getStore().deleteWiki(getWikiName(),
context);
+ } else {
+ throw new
WikiManagerException(XWikiException.ERROR_XWIKI_ACCESS_DENIED,
+ WikiManagerMessageTool.getDefault(context).get(
+ WikiManagerMessageTool.ERROR_RIGHTTODELETEWIKI,
getWikiName()));
+ }
+
+ super.delete();
+ }
+
+ /**
+ * @return the number of wiki aliases in this wiki.
+ * @throws XWikiException when getting the number of wiki aliases.
+ * @since 1.1
+ */
+ public int countWikiAliases() throws XWikiException
+ {
+ List objects =
getObjects(XWikiServerClass.getInstance(context).getClassFullName());
+
+ int nb = 0;
+ for (Iterator it = objects.iterator(); it.hasNext();) {
+ if (it.next() != null) {
+ ++nb;
+ }
+ }
+
+ return nb;
+ }
+
+ /**
+ * Get wiki alias id from domain name.
+ *
+ * @param domain the wiki alias domain name.
+ * @return the wiki alias id.
+ * @throws XWikiException error when getting wiki alias id from domain
name.
+ * @since 1.1
+ */
+ public int getWikiAliasIdFromDomain(String domain) throws XWikiException
+ {
+ Collection objects =
+
doc.getObjects(XWikiServerClass.getInstance(context).getClassFullName());
+
+ for (Iterator it = objects.iterator(); it.hasNext();) {
+ BaseObject bobect = (BaseObject) it.next();
+
+ if (bobect != null
+ &&
bobect.getStringValue(XWikiServerClass.FIELD_SERVER).equals(domain)) {
+ return bobect.getNumber();
+ }
+ }
+
+ throw new
WikiManagerException(WikiManagerException.ERROR_WM_WIKIALIASDOESNOTEXISTS,
+ WikiManagerMessageTool.getDefault(context).get(
+ WikiManagerMessageTool.ERROR_WIKIALIASDOESNOTEXISTS,
+ getWikiName() + " - " + domain));
+ }
+
+ /**
* @return the list of aliases to of this wiki.
* @throws XWikiException error when getting aliases.
*/
@@ -60,19 +130,9 @@
*/
public XWikiServer getWikiAlias(String domain) throws XWikiException
{
- Collection objects =
-
doc.getObjects(XWikiServerClass.getInstance(context).getClassFullName());
+ int id = getWikiAliasIdFromDomain(domain);
- for (Iterator it = objects.iterator(); it.hasNext();) {
- BaseObject bobect = (BaseObject) it.next();
-
- if (bobect != null
- &&
bobect.getStringValue(XWikiServerClass.FIELD_SERVER).equals(domain)) {
- return getWikiAlias(bobect.getNumber());
- }
- }
-
- return null;
+ return getWikiAlias(id);
}
/**
@@ -87,10 +147,10 @@
return (XWikiServer)
XWikiServerClass.getInstance(context).newXObjectDocument(doc, id,
context);
}
-
+
/**
* [EMAIL PROTECTED]
- *
+ *
* @see java.lang.Object#toString()
*/
public String toString()
Modified:
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/doc/XWikiServerClass.java
===================================================================
---
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/doc/XWikiServerClass.java
2008-02-05 13:04:34 UTC (rev 7295)
+++
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/java/com/xpn/xwiki/plugin/wikimanager/doc/XWikiServerClass.java
2008-02-05 13:45:31 UTC (rev 7296)
@@ -28,6 +28,7 @@
import
com.xpn.xwiki.plugin.applicationmanager.core.doc.objects.classes.XObjectDocumentDoesNotExistException;
import com.xpn.xwiki.objects.classes.BaseClass;
import com.xpn.xwiki.plugin.wikimanager.WikiManagerException;
+import com.xpn.xwiki.plugin.wikimanager.WikiManagerMessageTool;
/**
* [EMAIL PROTECTED]
com.xpn.xwiki.plugin.applicationmanager.core.doc.objects.classes.XClassManager}
@@ -288,7 +289,7 @@
}
/**
- * Get wiki descriptor [EMAIL PROTECTED] XWikiServer}.
+ * Get wiki alias [EMAIL PROTECTED] XWikiServer}.
*
* @param wikiName the name of the wiki.
* @param objectId the id of the XWiki object included in the document to
manage.
@@ -305,13 +306,14 @@
return (XWikiServer) getXObjectDocument(wikiName, objectId,
validate, context);
} catch (XObjectDocumentDoesNotExistException e) {
throw new
WikiManagerException(WikiManagerException.ERROR_WM_WIKIDOESNOTEXISTS,
- wikiName + " wiki descriptor document does not exist",
+ WikiManagerMessageTool.getDefault(context).get(
+ WikiManagerMessageTool.ERROR_WIKIALIASDOESNOTEXISTS,
wikiName),
e);
}
}
/**
- * Get wiki template descriptor [EMAIL PROTECTED] XWikiServer}.
+ * Get wiki template alias [EMAIL PROTECTED] XWikiServer}.
*
* @param wikiName the name of the wiki.
* @param objectId the id of the XWiki object included in the document to
manage.
@@ -328,7 +330,8 @@
if (validate &&
!wiki.getVisibility().equals(FIELDL_VISIBILITY_TEMPLATE)) {
throw new
WikiManagerException(WikiManagerException.ERROR_WM_WIKIDOESNOTEXISTS,
- wikiName + " wiki template descriptor document does not
exist");
+ WikiManagerMessageTool.getDefault(context).get(
+
WikiManagerMessageTool.ERROR_WIKITEMPLATEALIASDOESNOTEXISTS, wikiName));
}
return wiki;
Modified:
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/resources/wikimanager/ApplicationResources.properties
===================================================================
---
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/resources/wikimanager/ApplicationResources.properties
2008-02-05 13:04:34 UTC (rev 7295)
+++
xwiki-platform/xwiki-plugins/trunk/wiki-manager/src/main/resources/wikimanager/ApplicationResources.properties
2008-02-05 13:45:31 UTC (rev 7296)
@@ -1,35 +1,38 @@
# comments
-wikimanager.plugin.comment.createwiki=create wiki \"{0}\"
-wikimanager.plugin.comment.createwikifromtemplat=import wiki \"{0}\" from wiki
template \"{1}\"
-wikimanager.plugin.comment.createwikifrompackage=reload wiki \"{0}\" from
package \"{1}\"
-wikimanager.plugin.comment.createwikitemplate=create wiki template \"{0}\"
from package \"{1}\"
+wikimanager.plugin.comment.createwiki=create wiki [{0}]
+wikimanager.plugin.comment.createwikifromtemplat=import wiki [{0}] from wiki
template [{1}]
+wikimanager.plugin.comment.createwikifrompackage=reload wiki [{0}] from
package [{1}]
+wikimanager.plugin.comment.createwikitemplate=create wiki template [{0}] from
package [{1}]
# messages
wikimanager.plugin.error.xwikinotvirtual=XWiki is not in virtual mode. Make
sure property \"xwiki.virtual\" is setted to \"xwiki.virtual=1\" in xwiki.cfg
file
-wikimanager.plugin.error.userdoesnotexists=User \"{0}\" does not exist
-wikimanager.plugin.error.usernotactive=User \"{0}\" is not active
-wikimanager.plugin.error.wikinameforbidden=Wiki name \"{0}\" forbidden
-wikimanager.plugin.error.descriptoralreadyexists=Wiki \"{0}\" document already
exist
-wikimanager.plugin.error.updatedatabase=Wiki \"{0}\" database update failed
-wikimanager.plugin.error.packagedoesnotexists=Package \"{0}\" does not exists
-wikimanager.plugin.error.packageimport=Fail to import package {0}
-wikimanager.plugin.error.packageinstall=Fail to install package {0}
+wikimanager.plugin.error.userdoesnotexists=User [{0}] does not exist
+wikimanager.plugin.error.usernotactive=User [{0}] is not active
+wikimanager.plugin.error.wikinameforbidden=Wiki name [{0}] forbidden
+wikimanager.plugin.error.descriptoralreadyexists=Wiki [{0}] document already
exist
+wikimanager.plugin.error.updatedatabase=Wiki [{0}] database update failed
+wikimanager.plugin.error.packagedoesnotexists=Package [{0}] does not exists
+wikimanager.plugin.error.packageimport=Fail to import package [{0}]
+wikimanager.plugin.error.packageinstall=Fail to install package [{0}]
+wikimanager.plugin.error.righttodeletewiki=You don't have right to delete wiki
[{0}]
+wikimanager.plugin.error.wikialiasdoesnotexists=Wiki alias [{0}] document does
not exist
+wikimanager.plugin.error.wikitemplatealiasdoesnotexists=Wiki template alias
[{0}] document does not exist
# log
-wikimanager.plugin.log.createwiki.userdoesnotexist=Wiki \"{0}\" creation
failed: user does not exist
-wikimanager.plugin.log.createwiki.usernotactive=Wiki \"{0}\" creation failed:
user is not active
-wikimanager.plugin.log.createwiki.wikinameforbidden=Wiki \"{0}\" creation
failed: wiki name is forbidden
-wikimanager.plugin.log.createwiki.descriptoralreadyexists=Wiki \"{0}\"
creation failed: wiki descriptor page already exists
-wikimanager.plugin.log.createwiki.databasealreadyexist=Wiki \"{0}\" creation
failed: wiki database already exists
-wikimanager.plugin.log.createwiki.databasecreation=Wiki \"{0}\" creation
failed: wiki database creation failed
-wikimanager.plugin.log.createwiki.databasecreationexception=Wiki \"{0}\"
creation failed: wiki database creation threw exception
-wikimanager.plugin.log.wikicreation=Wiki ({0}) creation failed
-wikimanager.plugin.log.wikideletion=Wiki \"{0}\" deletion failed
-wikimanager.plugin.log.wikiget=Wiki \"{0}\" descriptor can't be found
+wikimanager.plugin.log.createwiki.userdoesnotexist=Wiki [{0}] creation failed:
user does not exist
+wikimanager.plugin.log.createwiki.usernotactive=Wiki \"{0}} creation failed:
user is not active
+wikimanager.plugin.log.createwiki.wikinameforbidden=Wiki [{0}] creation
failed: wiki name is forbidden
+wikimanager.plugin.log.createwiki.descriptoralreadyexists=Wiki [{0}] creation
failed: wiki descriptor page already exists
+wikimanager.plugin.log.createwiki.databasealreadyexist=Wiki [{0}] creation
failed: wiki database already exists
+wikimanager.plugin.log.createwiki.databasecreation=Wiki [{0}] creation failed:
wiki database creation failed
+wikimanager.plugin.log.createwiki.databasecreationexception=Wiki [{0}]
creation failed: wiki database creation threw exception
+wikimanager.plugin.log.wikicreation=Wiki [{0}] creation failed
+wikimanager.plugin.log.wikideletion=Wiki [{0}] deletion failed
+wikimanager.plugin.log.wikiget=Wiki [{0}] descriptor can't be found
wikimanager.plugin.log.wikigetall=All wikis descriptors can't be found
-wikimanager.plugin.log.wikialiasget=Wiki \"{0}\" alias can't be found
+wikimanager.plugin.log.wikialiasget=Wiki [{0}] alias can't be found
wikimanager.plugin.log.wikialiasgetall=All wikis aliases can't be found
-wikimanager.plugin.log.wikisetvisibility=Wiki \"{0}\" visibility field can't
be modified
-wikimanager.plugin.log.wikitemplatecreation=Wiki template \"{0}\" creation
failed
-wikimanager.plugin.log.wikitemplateget=Wiki template \"{0}\" descriptor can't
be found
+wikimanager.plugin.log.wikisetvisibility=Wiki [{0}] visibility field can't be
modified
+wikimanager.plugin.log.wikitemplatecreation=Wiki template [{0}] creation failed
+wikimanager.plugin.log.wikitemplateget=Wiki template [{0}] descriptor can't be
found
wikimanager.plugin.log.wikitemplategetall=All wikis templates descriptors
can't be found
\ No newline at end of file
_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications