Author: cvrabie Date: 2008-01-14 16:47:18 +0100 (Mon, 14 Jan 2008) New Revision: 6814
Modified: xwiki-products/curriki/trunk/plugins/currikispacemanager/src/main/java/org/curriki/plugin/spacemanager/impl/CurrikiSpace.java xwiki-products/curriki/trunk/plugins/spacemanager/src/main/java/org/xwiki/plugin/spacemanager/api/SpaceManagerException.java xwiki-products/curriki/trunk/plugins/spacemanager/src/main/java/org/xwiki/plugin/spacemanager/plugin/SpaceManagerPluginApi.java Log: CURRIKI-1193 Validation for space creation Modified: xwiki-products/curriki/trunk/plugins/currikispacemanager/src/main/java/org/curriki/plugin/spacemanager/impl/CurrikiSpace.java =================================================================== --- xwiki-products/curriki/trunk/plugins/currikispacemanager/src/main/java/org/curriki/plugin/spacemanager/impl/CurrikiSpace.java 2008-01-14 15:43:29 UTC (rev 6813) +++ xwiki-products/curriki/trunk/plugins/currikispacemanager/src/main/java/org/curriki/plugin/spacemanager/impl/CurrikiSpace.java 2008-01-14 15:47:18 UTC (rev 6814) @@ -1,5 +1,10 @@ package org.curriki.plugin.spacemanager.impl; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import org.xwiki.plugin.spacemanager.api.SpaceManagerException; import org.xwiki.plugin.spacemanager.impl.SpaceImpl; import org.xwiki.plugin.spacemanager.impl.SpaceManagerImpl; @@ -15,6 +20,18 @@ public static final String SPACE_EDUCATION_LEVEL = "educationLevel"; public static final String SPACE_TOPIC = "topic"; public static final String SPACE_LOGO = "logo"; + + public static final String VALIDATION_TITLE_SHORT = "title-short"; + public static final String VALIDATION_TITLE_LONG = "title-long"; + public static final String VALIDATION_DESC_SHORT = "desc-short"; + public static final String VALIDATION_DESC_LONG = "desc-long"; + public static final String VALIDATION_SPACE_EXISTS = "space-exists"; + public static final String VALIDATION_URL_EXISTS = "url-exists"; + public static final String VALIDATION_EDUCATION_REQUIRED = "education-required"; + public static final String VALIDATION_TYPE_REQUIRED = "type-required"; + public static final String VALIDATION_SUBJECT_REQUIRED = "subject-required"; + public static final String VALIDATION_LICENCE_REQUIRED = "licence-required"; + public static final String VALIDATION_PRIVACY_REQUIRED = "privacy-required"; public CurrikiSpace(String spaceName, String spaceTitle, boolean create, SpaceManagerImpl manager, XWikiContext context) throws SpaceManagerException { @@ -31,4 +48,73 @@ throw new SpaceManagerException(e); } } + + public boolean validateSpaceData() throws SpaceManagerException{ + boolean success = true; + Map errors = new HashMap(); + + try { + success &= doc.validate(context); + + //title + String title = this.getDisplayTitle(); + if(title.length() < 1) + errors.put( this.VALIDATION_TITLE_SHORT, "1" ); + if(title.length() > 32) + errors.put( this.VALIDATION_TITLE_LONG, "1" ); + + //existance of a group with this name + if(!this.isNew()) + errors.put( this.VALIDATION_SPACE_EXISTS, "1" ); + + //same shortcut url + //List list = context.getWiki().getStore().searchDocumentsNames("where doc.url='" + this.getHomeShortcutURL() + "'", context); + //if(list!=null && list.size()>0) + // errors.add( "There is already a group with this url! "); + + //description is set + String desc = this.getDescription(); + if(desc.length() < 5 ) + errors.put( this.VALIDATION_DESC_SHORT, "1" ); + if(desc.length() > 5 ) + errors.put( this.VALIDATION_DESC_LONG, "1" ); + + //categories is set + List categories = this.doc.getListValue(CurrikiSpace.SPACE_EDUCATION_LEVEL); + if(categories==null || categories.size()<1) + errors.put( this.VALIDATION_EDUCATION_REQUIRED, "1" ); + + //subject is set + List subjects = this.doc.getListValue(CurrikiSpace.SPACE_TOPIC); + if(subjects==null || subjects.size()<1) + errors.put( this.VALIDATION_SUBJECT_REQUIRED, "1" ); + + //type is set + String type = this.doc.getStringValue(CurrikiSpace.SPACE_TYPE); + if(type!=null && type=="") + errors.put( this.VALIDATION_TYPE_REQUIRED, "1" ); + + //licence is set + String licence = this.doc.getStringValue(CurrikiSpace.SPACE_LICENCE); + if(type!=null && type=="") + errors.put( this.VALIDATION_LICENCE_REQUIRED, "1" ); + + //privacy level is set + String privacy = this.doc.getStringValue(CurrikiSpace.SPACE_POLICY); + if(type!=null && type=="") + errors.put( this.VALIDATION_PRIVACY_REQUIRED, "1" ); + + if(errors.size()>0) + { + context.put("validation", errors); + success &= false; + } + + } catch (XWikiException e) { + success &= false; + throw new SpaceManagerException(e); + } + + return success; + } } \ No newline at end of file Modified: xwiki-products/curriki/trunk/plugins/spacemanager/src/main/java/org/xwiki/plugin/spacemanager/api/SpaceManagerException.java =================================================================== --- xwiki-products/curriki/trunk/plugins/spacemanager/src/main/java/org/xwiki/plugin/spacemanager/api/SpaceManagerException.java 2008-01-14 15:43:29 UTC (rev 6813) +++ xwiki-products/curriki/trunk/plugins/spacemanager/src/main/java/org/xwiki/plugin/spacemanager/api/SpaceManagerException.java 2008-01-14 15:47:18 UTC (rev 6814) @@ -33,6 +33,9 @@ public static final int ERROR_SPACE_MANAGER_REQUIRES_MAILSENDER_PLUGIN = 100006; public static final int ERROR_SPACE_SENDING_EMAIL_FAILED = 100007; public static final int ERROR_SPACE_CANNOT_FIND_EMAIL_ADDRESS = 100008; + + public static final int ERROR_VALIDATE_TITLE_TOO_SHORT = 100009; + public static final int ERROR_VALIDATE_TITLE_TOO_LONG = 100010; public SpaceManagerException(){ } Modified: xwiki-products/curriki/trunk/plugins/spacemanager/src/main/java/org/xwiki/plugin/spacemanager/plugin/SpaceManagerPluginApi.java =================================================================== --- xwiki-products/curriki/trunk/plugins/spacemanager/src/main/java/org/xwiki/plugin/spacemanager/plugin/SpaceManagerPluginApi.java 2008-01-14 15:43:29 UTC (rev 6813) +++ xwiki-products/curriki/trunk/plugins/spacemanager/src/main/java/org/xwiki/plugin/spacemanager/plugin/SpaceManagerPluginApi.java 2008-01-14 15:47:18 UTC (rev 6814) @@ -75,10 +75,17 @@ * @throws SpaceManagerException */ public Space createSpace(String spaceName) throws SpaceManagerException { - if (!hasProgrammingRights()) - return null; - Space space = - getSpaceManager().createSpace(spaceName, context); + Space space; + try{ + if (!hasProgrammingRights()) return null; + space = getSpaceManager().createSpace(spaceName, context); + }catch(SpaceManagerException e){ + if(e.getCode()==SpaceManagerException.ERROR_SPACE_DATA_INVALID){ + return null; + }else{ + throw e; + } + } return space; } @@ -90,12 +97,18 @@ * @return On success returns the newly created space and null on failure */ public Space createSpaceFromTemplate(String spaceName, String templateSpaceName) throws SpaceManagerException { - if (!hasProgrammingRights()) - return null; - Space space = - getSpaceManager().createSpaceFromTemplate(spaceName, templateSpaceName, context); + Space space; + try{ + if (!hasProgrammingRights()) return null; + space = getSpaceManager().createSpaceFromTemplate(spaceName, templateSpaceName, context); + }catch(SpaceManagerException e){ + if(e.getCode()==SpaceManagerException.ERROR_SPACE_DATA_INVALID){ + return null; + }else{ + throw e; + } + } return space; - } /** @@ -107,10 +120,17 @@ * @return On success returns the newly created space and null on failure */ public Space createSpaceFromApplication(String spaceName, String applicationName) throws SpaceManagerException { - if (!hasProgrammingRights()) - return null; - Space space = - getSpaceManager().createSpaceFromApplication(spaceName, applicationName, context); + Space space; + try{ + if (!hasProgrammingRights()) return null; + space = getSpaceManager().createSpaceFromApplication(spaceName, applicationName, context); + }catch(SpaceManagerException e){ + if(e.getCode()==SpaceManagerException.ERROR_SPACE_DATA_INVALID){ + return null; + }else{ + throw e; + } + } return space; } @@ -118,10 +138,17 @@ * @return On success returns the newly created space and null on failure */ public Space createSpaceFromRequest() throws SpaceManagerException { - if (!hasProgrammingRights()) - return null; - Space space = - getSpaceManager().createSpaceFromRequest(context); + Space space; + try{ + if (!hasProgrammingRights()) return null; + space = getSpaceManager().createSpaceFromRequest(context); + }catch(SpaceManagerException e){ + if(e.getCode()==SpaceManagerException.ERROR_SPACE_DATA_INVALID){ + return null; + }else{ + throw e; + } + } return space; } @@ -129,10 +156,17 @@ * @return On success returns the newly created space and null on failure */ public Space createSpaceFromRequest(String templateSpace) throws SpaceManagerException { - if (!hasProgrammingRights()) - return null; - Space space = - getSpaceManager().createSpaceFromRequest(templateSpace, context); + Space space; + try{ + if (!hasProgrammingRights()) return null; + space = getSpaceManager().createSpaceFromRequest(templateSpace, context); + }catch(SpaceManagerException e){ + if(e.getCode()==SpaceManagerException.ERROR_SPACE_DATA_INVALID){ + return null; + }else{ + throw e; + } + } return space; } _______________________________________________ notifications mailing list notifications@xwiki.org http://lists.xwiki.org/mailman/listinfo/notifications