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 notifications@xwiki.org http://lists.xwiki.org/mailman/listinfo/notifications