r913 - in trunk/src: main/java/org/ourproject/kune/app/server main/java/org/ourproject/kune/chat/server main/java/org/ourproject/kune/docs/client main/java/org/ourproject/kune/docs/server main/java/org/ourproject/kune/platf/client/dto main/java/org/ourproject/kune/platf/client/errors main/java/org/ourproject/kune/platf/client/rpc main/java/org/ourproject/kune/platf/client/services main/java/org/ourproject/kune/platf/client/state main/java/org/ourproject/kune/platf/client/tool main/java/org/ou
Author: vjrj Date: 2008-10-16 16:34:33 +0200 (Thu, 16 Oct 2008) New Revision: 913 Added: trunk/src/main/java/org/ourproject/kune/platf/client/dto/ToolSimpleDTO.java trunk/src/main/java/org/ourproject/kune/platf/client/errors/NoDefaultContentException.java trunk/src/main/java/org/ourproject/kune/platf/server/tool/ServerToolRegistry.java trunk/src/main/java/org/ourproject/kune/platf/server/tool/ServerToolTarget.java trunk/src/main/java/org/ourproject/kune/platf/server/tool/ToolSimple.java Removed: trunk/src/main/java/org/ourproject/kune/platf/server/tool/ToolRegistry.java Modified: trunk/src/main/java/org/ourproject/kune/app/server/KuneContainerListener.java trunk/src/main/java/org/ourproject/kune/chat/server/ChatServerTool.java trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java trunk/src/main/java/org/ourproject/kune/docs/server/DocumentServerTool.java trunk/src/main/java/org/ourproject/kune/platf/client/dto/GroupDTO.java trunk/src/main/java/org/ourproject/kune/platf/client/dto/InitDataDTO.java trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateDTO.java trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupService.java trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupServiceAsync.java trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneErrorHandler.java trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java trunk/src/main/java/org/ourproject/kune/platf/client/tool/ToolSelectorItem.java trunk/src/main/java/org/ourproject/kune/platf/client/tool/ToolSelectorItemPresenter.java trunk/src/main/java/org/ourproject/kune/platf/client/tool/ToolSelectorItemView.java trunk/src/main/java/org/ourproject/kune/platf/client/tool/ToolSelectorPresenter.java trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/DefaultForm.java trunk/src/main/java/org/ourproject/kune/platf/server/InitData.java trunk/src/main/java/org/ourproject/kune/platf/server/PlatformServerModule.java trunk/src/main/java/org/ourproject/kune/platf/server/access/AccessServiceDefault.java trunk/src/main/java/org/ourproject/kune/platf/server/access/FinderServiceDefault.java trunk/src/main/java/org/ourproject/kune/platf/server/content/CreationServiceDefault.java trunk/src/main/java/org/ourproject/kune/platf/server/domain/Container.java trunk/src/main/java/org/ourproject/kune/platf/server/domain/Content.java trunk/src/main/java/org/ourproject/kune/platf/server/domain/Group.java trunk/src/main/java/org/ourproject/kune/platf/server/domain/ToolConfiguration.java trunk/src/main/java/org/ourproject/kune/platf/server/domain/User.java trunk/src/main/java/org/ourproject/kune/platf/server/init/DatabaseInitializer.java trunk/src/main/java/org/ourproject/kune/platf/server/manager/GroupManager.java trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/GroupManagerDefault.java trunk/src/main/java/org/ourproject/kune/platf/server/rpc/ContentRPC.java trunk/src/main/java/org/ourproject/kune/platf/server/rpc/GroupRPC.java trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SiteRPC.java trunk/src/main/java/org/ourproject/kune/platf/server/rpc/UserRPC.java trunk/src/main/java/org/ourproject/kune/platf/server/state/State.java trunk/src/main/java/org/ourproject/kune/platf/server/state/StateServiceDefault.java trunk/src/main/java/org/ourproject/kune/platf/server/tool/ServerTool.java trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPresenter.java trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterForm.java trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInForm.java trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPanel.java trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPresenter.java trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInView.java trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserService.java trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserServiceAsync.java trunk/src/main/resources/dozerBeanMapping.xml trunk/src/test/java/org/ourproject/kune/platf/integration/DatabaseInitializationTest.java trunk/src/test/java/org/ourproject/kune/platf/integration/IntegrationTestHelper.java trunk/src/test/java/org/ourproject/kune/platf/integration/kuneservice/GroupServiceTest.java trunk/src/test/java/org/ourproject/kune/platf/integration/site/UserServiceTest.java trunk/src/test/java/org/ourproject/kune/platf/server/PersistenceTest.java trunk/src/test/java/org/ourproject/kune/platf/server/manager/ContentManagerTest.java trunk/src/test/java/org/ourproject/kune/platf/server/manager/GroupManagerTest.java trunk/src/test/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenterTest.java Log: Incomplete - task Resolve signIn dialog issues (margins, message, overflow) Incomplete - task Tools must me optional and User/Group creation must reflect this Modified: trunk/src/main/java/org/ourproject/kune/app/server/KuneContainerListener.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/app/server/KuneContainerListener.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/app/server/KuneContainerListener.java 2008-10-16 14:34:33 UTC (rev 913) @@ -31,19 +31,19 @@ import org.apache.log4j.PropertyConfigurator; import org.ourproject.kune.docs.server.DocumentServerTool; import org.ourproject.kune.platf.server.KunePersistenceService; -import org.ourproject.kune.platf.server.tool.ToolRegistry; +import org.ourproject.kune.platf.server.tool.ServerToolRegistry; import org.ourproject.kune.rack.ContainerListener; import com.google.inject.Inject; class KuneContainerListener implements ContainerListener { KunePersistenceService persistenceService; - ToolRegistry toolRegistry; + ServerToolRegistry toolRegistry; DocumentServerTool documentTool; Logger logger; @Inject - public KuneContainerListener(KunePersistenceService persistenceService, ToolRegistry toolRegistry, DocumentServerTool documentTool, Logger logger) { + public KuneContainerListener(KunePersistenceService persistenceService, ServerToolRegistry toolRegistry, DocumentServerTool documentTool, Logger logger) { this.persistenceService = persistenceService; this.toolRegistry = toolRegistry; this.documentTool = documentTool; Modified: trunk/src/main/java/org/ourproject/kune/chat/server/ChatServerTool.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/chat/server/ChatServerTool.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/chat/server/ChatServerTool.java 2008-10-16 14:34:33 UTC (rev 913) @@ -30,7 +30,8 @@ import org.ourproject.kune.platf.server.domain.User; import org.ourproject.kune.platf.server.manager.ToolConfigurationManager; import org.ourproject.kune.platf.server.tool.ServerTool; -import org.ourproject.kune.platf.server.tool.ToolRegistry; +import org.ourproject.kune.platf.server.tool.ServerToolRegistry; +import org.ourproject.kune.platf.server.tool.ServerToolTarget; import com.google.inject.Inject; @@ -45,49 +46,57 @@ @Inject public ChatServerTool(final ToolConfigurationManager configurationManager, final ContainerManager containerManager) { - this.configurationManager = configurationManager; - this.containerManager = containerManager; + this.configurationManager = configurationManager; + this.containerManager = containerManager; } public String getName() { - return NAME; + return NAME; } + public String getRootName() { + return ROOT_NAME; + } + public Group initGroup(final User user, final Group group) { - final ToolConfiguration config = new ToolConfiguration(); - final Container container = containerManager.createRootFolder(group, NAME, ROOT_NAME, TYPE_ROOT); - config.setRoot(container); - group.setToolConfig(NAME, config); - configurationManager.persist(config); - return group; + final ToolConfiguration config = new ToolConfiguration(); + final Container container = containerManager.createRootFolder(group, NAME, ROOT_NAME, TYPE_ROOT); + config.setRoot(container); + group.setToolConfig(NAME, config); + configurationManager.persist(config); + return group; } public void onCreateContainer(final Container container, final Container parent, final String typeId) { - checkTypeId(parent.getTypeId(), typeId); - container.setTypeId(typeId); + checkTypeId(parent.getTypeId(), typeId); + container.setTypeId(typeId); } public void onCreateContent(final Content content, final Container parent) { - if (parent.getTypeId().equals(TYPE_ROOM)) { - throw new RuntimeException(); - } - content.setTypeId(TYPE_CHAT); + if (parent.getTypeId().equals(TYPE_ROOM)) { + throw new RuntimeException(); + } + content.setTypeId(TYPE_CHAT); } @Inject - public void register(final ToolRegistry registry) { - registry.register(this); + public void register(final ServerToolRegistry registry) { + registry.register(this); } + public ServerToolTarget getTarget() { + return ServerToolTarget.forGroups; + } + private void checkTypeId(final String parentTypeId, final String typeId) { - if (typeId.equals(TYPE_ROOM)) { - if (!parentTypeId.equals(TYPE_ROOT)) { - throw new ContainerNotPermittedException(); - } - // ok valid container - } else { - throw new ContainerNotPermittedException(); - } + if (typeId.equals(TYPE_ROOM)) { + if (!parentTypeId.equals(TYPE_ROOT)) { + throw new ContainerNotPermittedException(); + } + // ok valid container + } else { + throw new ContainerNotPermittedException(); + } } } Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2008-10-16 14:34:33 UTC (rev 913) @@ -67,441 +67,442 @@ private final DocumentContent documentContent; public DocumentClientActions(final I18nUITranslationService i18n, final ContextNavigator contextNavigator, - final Session session, final StateManager stateManager, - final Provider<ContentServiceAsync> contentServiceProvider, - final Provider<GroupServiceAsync> groupServiceProvider, final Provider<FileUploader> fileUploaderProvider, - final ContentActionRegistry contentActionRegistry, final ContextActionRegistry contextActionRegistry, - final Provider<FileDownloadUtils> fileDownloadProvider, final EntityLogo entityLogo, - final Provider<TextEditor> textEditorProvider, final KuneErrorHandler errorHandler, - final DocumentContent documentContent) { - this.i18n = i18n; - this.contextNavigator = contextNavigator; - this.session = session; - this.stateManager = stateManager; - this.contentServiceProvider = contentServiceProvider; - this.groupServiceProvider = groupServiceProvider; - this.fileUploaderProvider = fileUploaderProvider; - this.contextActionRegistry = contextActionRegistry; - this.contentActionRegistry = contentActionRegistry; - this.fileDownloadProvider = fileDownloadProvider; - this.entityLogo = entityLogo; - this.textEditorProvider = textEditorProvider; - this.errorHandler = errorHandler; - this.documentContent = documentContent; - createActions(); + final Session session, final StateManager stateManager, + final Provider<ContentServiceAsync> contentServiceProvider, + final Provider<GroupServiceAsync> groupServiceProvider, final Provider<FileUploader> fileUploaderProvider, + final ContentActionRegistry contentActionRegistry, final ContextActionRegistry contextActionRegistry, + final Provider<FileDownloadUtils> fileDownloadProvider, final EntityLogo entityLogo, + final Provider<TextEditor> textEditorProvider, final KuneErrorHandler errorHandler, + final DocumentContent documentContent) { + this.i18n = i18n; + this.contextNavigator = contextNavigator; + this.session = session; + this.stateManager = stateManager; + this.contentServiceProvider = contentServiceProvider; + this.groupServiceProvider = groupServiceProvider; + this.fileUploaderProvider = fileUploaderProvider; + this.contextActionRegistry = contextActionRegistry; + this.contentActionRegistry = contentActionRegistry; + this.fileDownloadProvider = fileDownloadProvider; + this.entityLogo = entityLogo; + this.textEditorProvider = textEditorProvider; + this.errorHandler = errorHandler; + this.documentContent = documentContent; + createActions(); } private void createActions() { - final ActionToolbarMenuAndItemDescriptor<StateToken> addFolder = createFolderAction(TYPE_FOLDER, - "images/nav/folder_add.png", i18n.t("New folder"), i18n.t("Folder"), i18n.t("New"), i18n - .t("New folder")); - final ActionToolbarMenuAndItemDescriptor<StateToken> addGallery = createFolderAction(TYPE_GALLERY, - "images/nav/gallery_add.png", i18n.t("New gallery"), i18n.t("Folder"), i18n.t("New"), i18n - .t("New gallery")); - final ActionToolbarMenuAndItemDescriptor<StateToken> addWiki = createFolderAction(TYPE_WIKI, - "images/nav/wiki_add.png", i18n.t("New wiki"), i18n.t("Folder"), i18n.t("New"), i18n.t("wiki")); + final ActionToolbarMenuAndItemDescriptor<StateToken> addFolder = createFolderAction(TYPE_FOLDER, + "images/nav/folder_add.png", i18n.t("New folder"), i18n.t("Folder"), i18n.t("New"), i18n + .t("New folder")); + final ActionToolbarMenuAndItemDescriptor<StateToken> addGallery = createFolderAction(TYPE_GALLERY, + "images/nav/gallery_add.png", i18n.t("New gallery"), i18n.t("Folder"), i18n.t("New"), i18n + .t("New gallery")); + final ActionToolbarMenuAndItemDescriptor<StateToken> addWiki = createFolderAction(TYPE_WIKI, + "images/nav/wiki_add.png", i18n.t("New wiki"), i18n.t("Folder"), i18n.t("New"), i18n.t("wiki")); - final ActionToolbarMenuAndItemDescriptor<StateToken> addDoc = new ActionToolbarMenuAndItemDescriptor<StateToken>( - AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() { - public void onEvent(final StateToken token) { - Site.showProgressProcessing(); - contentServiceProvider.get().addContent(session.getUserHash(), - session.getCurrentState().getStateToken(), i18n.t("New document"), - new AsyncCallbackSimple<StateDTO>() { - public void onSuccess(final StateDTO state) { - contextNavigator.setEditOnNextStateChange(true); - stateManager.setRetrievedState(state); - } - }); - } - }); - addDoc.setTextDescription(i18n.t("New document")); - addDoc.setParentMenuTitle(i18n.t("Folder")); - addDoc.setParentSubMenuTitle(i18n.t("New")); - addDoc.setIconUrl("images/nav/page_add.png"); + final ActionToolbarMenuAndItemDescriptor<StateToken> addDoc = new ActionToolbarMenuAndItemDescriptor<StateToken>( + AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() { + public void onEvent(final StateToken token) { + Site.showProgressProcessing(); + contentServiceProvider.get().addContent(session.getUserHash(), + session.getCurrentState().getStateToken(), i18n.t("New document"), + new AsyncCallbackSimple<StateDTO>() { + public void onSuccess(final StateDTO state) { + contextNavigator.setEditOnNextStateChange(true); + stateManager.setRetrievedState(state); + } + }); + } + }); + addDoc.setTextDescription(i18n.t("New document")); + addDoc.setParentMenuTitle(i18n.t("Folder")); + addDoc.setParentSubMenuTitle(i18n.t("New")); + addDoc.setIconUrl("images/nav/page_add.png"); - final ActionToolbarMenuAndItemDescriptor<StateToken> delContainer = new ActionToolbarMenuAndItemDescriptor<StateToken>( - AccessRolDTO.Administrator, ActionToolbarPosition.topbar, new Listener<StateToken>() { - public void onEvent(final StateToken token) { - Site.info("Sorry, in development"); - } - }); - delContainer.setParentMenuTitle(i18n.t("Folder")); - delContainer.setTextDescription(i18n.t("Delete folder")); - delContainer.setMustBeConfirmed(true); - delContainer.setConfirmationTitle(i18n.t("Please confirm")); - delContainer.setConfirmationText(i18n.t("You will delete it and also all its contents. Are you sure?")); + final ActionToolbarMenuAndItemDescriptor<StateToken> delContainer = new ActionToolbarMenuAndItemDescriptor<StateToken>( + AccessRolDTO.Administrator, ActionToolbarPosition.topbar, new Listener<StateToken>() { + public void onEvent(final StateToken token) { + Site.info("Sorry, in development"); + } + }); + delContainer.setParentMenuTitle(i18n.t("Folder")); + delContainer.setTextDescription(i18n.t("Delete folder")); + delContainer.setMustBeConfirmed(true); + delContainer.setConfirmationTitle(i18n.t("Please confirm")); + delContainer.setConfirmationText(i18n.t("You will delete it and also all its contents. Are you sure?")); - final ActionToolbarMenuAndItemDescriptor<StateToken> delContent = new ActionToolbarMenuAndItemDescriptor<StateToken>( - AccessRolDTO.Administrator, ActionToolbarPosition.topbar, new Listener<StateToken>() { - public void onEvent(final StateToken token) { - contentServiceProvider.get().delContent(session.getUserHash(), token, - new AsyncCallbackSimple<String>() { - public void onSuccess(final String result) { - final StateToken parent = token.clone().clearDocument(); - stateManager.gotoToken(parent); - } - }); - } - }); - delContent.setParentMenuTitle(i18n.t("File")); - delContent.setTextDescription(i18n.t("Delete")); - delContent.setMustBeConfirmed(true); - delContent.setConfirmationTitle(i18n.t("Please confirm")); - delContent.setConfirmationText(i18n.t("Are you sure?")); - delContent.setEnableCondition(new ActionEnableCondition<StateToken>() { - public boolean mustBeEnabled(final StateToken itemToken) { - final StateToken defContentToken = session.getCurrentState().getGroup().getDefaultContent() - .getStateToken(); - return !itemToken.equals(defContentToken); - } - }); + final ActionToolbarMenuAndItemDescriptor<StateToken> delContent = new ActionToolbarMenuAndItemDescriptor<StateToken>( + AccessRolDTO.Administrator, ActionToolbarPosition.topbar, new Listener<StateToken>() { + public void onEvent(final StateToken token) { + contentServiceProvider.get().delContent(session.getUserHash(), token, + new AsyncCallbackSimple<String>() { + public void onSuccess(final String result) { + final StateToken parent = token.clone().clearDocument(); + stateManager.gotoToken(parent); + } + }); + } + }); + delContent.setParentMenuTitle(i18n.t("File")); + delContent.setTextDescription(i18n.t("Delete")); + delContent.setMustBeConfirmed(true); + delContent.setConfirmationTitle(i18n.t("Please confirm")); + delContent.setConfirmationText(i18n.t("Are you sure?")); + delContent.setEnableCondition(new ActionEnableCondition<StateToken>() { + public boolean mustBeEnabled(final StateToken itemToken) { + final StateToken defContentToken = session.getCurrentState().getGroup().getDefaultContent() + .getStateToken(); + return !itemToken.equals(defContentToken); + } + }); - final ActionMenuItemDescriptor<StateToken> go = new ActionMenuItemDescriptor<StateToken>(AccessRolDTO.Viewer, - new Listener<StateToken>() { - public void onEvent(final StateToken token) { - stateManager.gotoToken(token); - } - }); - go.setMustBeAuthenticated(false); - go.setTextDescription(i18n.t("Open")); - go.setIconUrl("images/nav/go.png"); - go.setEnableCondition(new ActionEnableCondition<StateToken>() { - public boolean mustBeEnabled(final StateToken itemToken) { - return !contextNavigator.isSelected(itemToken); - } - }); + final ActionMenuItemDescriptor<StateToken> go = new ActionMenuItemDescriptor<StateToken>(AccessRolDTO.Viewer, + new Listener<StateToken>() { + public void onEvent(final StateToken token) { + stateManager.gotoToken(token); + } + }); + go.setMustBeAuthenticated(false); + go.setTextDescription(i18n.t("Open")); + go.setIconUrl("images/nav/go.png"); + go.setEnableCondition(new ActionEnableCondition<StateToken>() { + public boolean mustBeEnabled(final StateToken itemToken) { + return !contextNavigator.isSelected(itemToken); + } + }); - final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtn = new ActionToolbarMenuAndItemDescriptor<StateToken>( - AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() { - public void onEvent(final StateToken stateToken) { - contextNavigator.editItem(stateToken); - } - }); - renameCtn.setTextDescription(i18n.t("Rename")); - renameCtn.setParentMenuTitle(i18n.t("File")); + final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtn = new ActionToolbarMenuAndItemDescriptor<StateToken>( + AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() { + public void onEvent(final StateToken stateToken) { + contextNavigator.editItem(stateToken); + } + }); + renameCtn.setTextDescription(i18n.t("Rename")); + renameCtn.setParentMenuTitle(i18n.t("File")); - final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtx = new ActionToolbarMenuAndItemDescriptor<StateToken>( - AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() { - public void onEvent(final StateToken stateToken) { - contextNavigator.editItem(stateToken); - } - }); - renameCtx.setTextDescription(i18n.t("Rename")); - renameCtx.setParentMenuTitle(i18n.t("Folder")); + final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtx = new ActionToolbarMenuAndItemDescriptor<StateToken>( + AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() { + public void onEvent(final StateToken stateToken) { + contextNavigator.editItem(stateToken); + } + }); + renameCtx.setTextDescription(i18n.t("Rename")); + renameCtx.setParentMenuTitle(i18n.t("Folder")); - final ActionToolbarButtonDescriptor<StateToken> goGroupHome = new ActionToolbarButtonDescriptor<StateToken>( - AccessRolDTO.Viewer, ActionToolbarPosition.topbar, new Listener<StateToken>() { - public void onEvent(final StateToken token) { - stateManager.gotoToken(token.getGroup()); - } - }); - goGroupHome.setMustBeAuthenticated(false); - goGroupHome.setIconUrl("images/group-home.png"); - goGroupHome.setEnableCondition(new ActionEnableCondition<StateToken>() { - public boolean mustBeEnabled(final StateToken itemToken) { - final StateToken defContentToken = session.getCurrentState().getGroup().getDefaultContent() - .getStateToken(); - return !itemToken.equals(defContentToken); - } - }); + final ActionToolbarButtonDescriptor<StateToken> goGroupHome = new ActionToolbarButtonDescriptor<StateToken>( + AccessRolDTO.Viewer, ActionToolbarPosition.topbar, new Listener<StateToken>() { + public void onEvent(final StateToken token) { + stateManager.gotoToken(token.getGroup()); + } + }); + goGroupHome.setMustBeAuthenticated(false); + goGroupHome.setIconUrl("images/group-home.png"); + goGroupHome.setEnableCondition(new ActionEnableCondition<StateToken>() { + public boolean mustBeEnabled(final StateToken itemToken) { + final StateToken defContentToken = session.getCurrentState().getGroup().getDefaultContent() + .getStateToken(); + return !itemToken.equals(defContentToken); + } + }); - final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupCnt; - setAsDefGroupCnt = createSetAsDefContent(); - setAsDefGroupCnt.setParentMenuTitle(i18n.t("File")); + final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupCnt; + setAsDefGroupCnt = createSetAsDefContent(); + setAsDefGroupCnt.setParentMenuTitle(i18n.t("File")); - final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupCxt; - setAsDefGroupCxt = createSetAsDefContent(); - setAsDefGroupCxt.setParentMenuTitle(i18n.t("Folder")); + final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupCxt; + setAsDefGroupCxt = createSetAsDefContent(); + setAsDefGroupCxt.setParentMenuTitle(i18n.t("Folder")); - final ActionToolbarMenuDescriptor<StateToken> refreshCtx = new ActionToolbarMenuDescriptor<StateToken>( - AccessRolDTO.Viewer, ActionToolbarPosition.topbar, new Listener<StateToken>() { - public void onEvent(final StateToken stateToken) { - stateManager.reload(); - contextNavigator.selectItem(stateToken); - } - }); - refreshCtx.setMustBeAuthenticated(false); - refreshCtx.setParentMenuTitle(i18n.t("Folder")); - refreshCtx.setTextDescription(i18n.t("Refresh")); - refreshCtx.setIconUrl("images/nav/refresh.png"); + final ActionToolbarMenuDescriptor<StateToken> refreshCtx = new ActionToolbarMenuDescriptor<StateToken>( + AccessRolDTO.Viewer, ActionToolbarPosition.topbar, new Listener<StateToken>() { + public void onEvent(final StateToken stateToken) { + Site.important("Refresh with state token: " + stateToken); + stateManager.reload(); + contextNavigator.selectItem(stateToken); + } + }); + refreshCtx.setMustBeAuthenticated(false); + refreshCtx.setParentMenuTitle(i18n.t("Folder")); + refreshCtx.setTextDescription(i18n.t("Refresh")); + refreshCtx.setIconUrl("images/nav/refresh.png"); - final ActionToolbarMenuDescriptor<StateToken> refreshCnt = new ActionToolbarMenuDescriptor<StateToken>( - AccessRolDTO.Viewer, ActionToolbarPosition.topbar, new Listener<StateToken>() { - public void onEvent(final StateToken stateToken) { - stateManager.reload(); - contextNavigator.selectItem(stateToken); - } - }); - refreshCnt.setMustBeAuthenticated(false); - refreshCnt.setParentMenuTitle(i18n.t("File")); - refreshCnt.setTextDescription(i18n.t("Refresh")); - refreshCnt.setIconUrl("images/nav/refresh.png"); + final ActionToolbarMenuDescriptor<StateToken> refreshCnt = new ActionToolbarMenuDescriptor<StateToken>( + AccessRolDTO.Viewer, ActionToolbarPosition.topbar, new Listener<StateToken>() { + public void onEvent(final StateToken stateToken) { + stateManager.reload(); + contextNavigator.selectItem(stateToken); + } + }); + refreshCnt.setMustBeAuthenticated(false); + refreshCnt.setParentMenuTitle(i18n.t("File")); + refreshCnt.setTextDescription(i18n.t("Refresh")); + refreshCnt.setIconUrl("images/nav/refresh.png"); - final ActionToolbarButtonAndItemDescriptor<StateToken> uploadFile = createUploadAction(i18n.t("Upload file"), - "images/nav/upload.png", i18n.t("Upload some files (images, PDFs, ...)"), null); + final ActionToolbarButtonAndItemDescriptor<StateToken> uploadFile = createUploadAction(i18n.t("Upload file"), + "images/nav/upload.png", i18n.t("Upload some files (images, PDFs, ...)"), null); - session.onInitDataReceived(new Listener<InitDataDTO>() { - public void onEvent(final InitDataDTO parameter) { - final ActionToolbarButtonAndItemDescriptor<StateToken> uploadMedia = createUploadAction(i18n - .t("Upload media"), "images/nav/upload.png", i18n.t("Upload some media (images, videos)"), - session.getGalleryPermittedExtensions()); - contextActionRegistry.addAction(uploadMedia, TYPE_GALLERY); - } - }); + session.onInitDataReceived(new Listener<InitDataDTO>() { + public void onEvent(final InitDataDTO parameter) { + final ActionToolbarButtonAndItemDescriptor<StateToken> uploadMedia = createUploadAction(i18n + .t("Upload media"), "images/nav/upload.png", i18n.t("Upload some media (images, videos)"), + session.getGalleryPermittedExtensions()); + contextActionRegistry.addAction(uploadMedia, TYPE_GALLERY); + } + }); - final ActionToolbarButtonDescriptor<StateToken> download = new ActionToolbarButtonDescriptor<StateToken>( - AccessRolDTO.Viewer, ActionToolbarPosition.topbar, new Listener<StateToken>() { - public void onEvent(final StateToken token) { - downloadContent(token); - } - }); - download.setMustBeAuthenticated(false); - download.setTextDescription(i18n.t("Download")); - download.setToolTip(i18n.t("Download this file")); - download.setIconUrl("images/nav/download.png"); + final ActionToolbarButtonDescriptor<StateToken> download = new ActionToolbarButtonDescriptor<StateToken>( + AccessRolDTO.Viewer, ActionToolbarPosition.topbar, new Listener<StateToken>() { + public void onEvent(final StateToken token) { + downloadContent(token); + } + }); + download.setMustBeAuthenticated(false); + download.setTextDescription(i18n.t("Download")); + download.setToolTip(i18n.t("Download this file")); + download.setIconUrl("images/nav/download.png"); - final ActionMenuItemDescriptor<StateToken> downloadCtx = new ActionMenuItemDescriptor<StateToken>( - AccessRolDTO.Viewer, new Listener<StateToken>() { - public void onEvent(final StateToken token) { - downloadContent(token); - } - }); - downloadCtx.setMustBeAuthenticated(false); - downloadCtx.setTextDescription(i18n.t("Download")); - downloadCtx.setIconUrl("images/nav/download.png"); + final ActionMenuItemDescriptor<StateToken> downloadCtx = new ActionMenuItemDescriptor<StateToken>( + AccessRolDTO.Viewer, new Listener<StateToken>() { + public void onEvent(final StateToken token) { + downloadContent(token); + } + }); + downloadCtx.setMustBeAuthenticated(false); + downloadCtx.setTextDescription(i18n.t("Download")); + downloadCtx.setIconUrl("images/nav/download.png"); - final ActionToolbarMenuAndItemDescriptor<StateToken> setGroupLogo = new ActionToolbarMenuAndItemDescriptor<StateToken>( - AccessRolDTO.Administrator, ActionToolbarPosition.topbar, new Listener<StateToken>() { - public void onEvent(final StateToken token) { - groupServiceProvider.get().setGroupLogo(session.getUserHash(), token, - new AsyncCallbackSimple<GroupDTO>() { - public void onSuccess(GroupDTO newGroup) { - Site.info("Logo selected"); - if (session.getCurrentState().getGroup().getShortName().equals( - newGroup.getShortName())) { - session.getCurrentState().setGroup(newGroup); - } - entityLogo.refreshGroupLogo(); - } - }); - } - }); - setGroupLogo.setParentMenuTitle(i18n.t("File")); - setGroupLogo.setTextDescription(i18n.t("Set this as the group logo")); - setGroupLogo.setIconUrl("images/nav/picture.png"); - setGroupLogo.setEnableCondition(new ActionEnableCondition<StateToken>() { - public boolean mustBeEnabled(final StateToken itemToken) { - final BasicMimeTypeDTO mime = session.getCurrentState().getMimeType(); - return mime != null && mime.getType().equals("image"); - } - }); + final ActionToolbarMenuAndItemDescriptor<StateToken> setGroupLogo = new ActionToolbarMenuAndItemDescriptor<StateToken>( + AccessRolDTO.Administrator, ActionToolbarPosition.topbar, new Listener<StateToken>() { + public void onEvent(final StateToken token) { + groupServiceProvider.get().setGroupLogo(session.getUserHash(), token, + new AsyncCallbackSimple<GroupDTO>() { + public void onSuccess(GroupDTO newGroup) { + Site.info("Logo selected"); + if (session.getCurrentState().getGroup().getShortName().equals( + newGroup.getShortName())) { + session.getCurrentState().setGroup(newGroup); + } + entityLogo.refreshGroupLogo(); + } + }); + } + }); + setGroupLogo.setParentMenuTitle(i18n.t("File")); + setGroupLogo.setTextDescription(i18n.t("Set this as the group logo")); + setGroupLogo.setIconUrl("images/nav/picture.png"); + setGroupLogo.setEnableCondition(new ActionEnableCondition<StateToken>() { + public boolean mustBeEnabled(final StateToken itemToken) { + final BasicMimeTypeDTO mime = session.getCurrentState().getMimeType(); + return mime != null && mime.getType().equals("image"); + } + }); - final ActionToolbarMenuDescriptor<StateToken> setPublishStatus = createSetStatusAction( - AccessRolDTO.Administrator, i18n.t("Published online"), ContentStatusDTO.publishedOnline); - final ActionToolbarMenuDescriptor<StateToken> setEditionInProgressStatus = createSetStatusAction( - AccessRolDTO.Administrator, i18n.t("Editing in progress"), ContentStatusDTO.editingInProgress); - final ActionToolbarMenuDescriptor<StateToken> setRejectStatus = createSetStatusAction( - AccessRolDTO.Administrator, i18n.t("Rejected"), ContentStatusDTO.rejected); - final ActionToolbarMenuDescriptor<StateToken> setSubmittedForPublishStatus = createSetStatusAction( - AccessRolDTO.Administrator, i18n.t("Submitted for publish"), ContentStatusDTO.publishedOnline); - final ActionToolbarMenuDescriptor<StateToken> setInTheDustBinStatus = createSetStatusAction( - AccessRolDTO.Administrator, i18n.t("In the dustbin"), ContentStatusDTO.inTheDustbin); + final ActionToolbarMenuDescriptor<StateToken> setPublishStatus = createSetStatusAction( + AccessRolDTO.Administrator, i18n.t("Published online"), ContentStatusDTO.publishedOnline); + final ActionToolbarMenuDescriptor<StateToken> setEditionInProgressStatus = createSetStatusAction( + AccessRolDTO.Administrator, i18n.t("Editing in progress"), ContentStatusDTO.editingInProgress); + final ActionToolbarMenuDescriptor<StateToken> setRejectStatus = createSetStatusAction( + AccessRolDTO.Administrator, i18n.t("Rejected"), ContentStatusDTO.rejected); + final ActionToolbarMenuDescriptor<StateToken> setSubmittedForPublishStatus = createSetStatusAction( + AccessRolDTO.Administrator, i18n.t("Submitted for publish"), ContentStatusDTO.publishedOnline); + final ActionToolbarMenuDescriptor<StateToken> setInTheDustBinStatus = createSetStatusAction( + AccessRolDTO.Administrator, i18n.t("In the dustbin"), ContentStatusDTO.inTheDustbin); - final ActionToolbarButtonDescriptor<StateToken> translateContent = new ActionToolbarButtonDescriptor<StateToken>( - AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() { - public void onEvent(final StateToken stateToken) { - Site.important(i18n.t("Sorry, this functionality is currently in development")); - } - }); - translateContent.setTextDescription(i18n.tWithNT("Translate", "used in button")); - translateContent.setToolTip(i18n.t("Translate this document to other languages")); - translateContent.setIconUrl("images/language.gif"); - translateContent.setLeftSeparator(ActionToolbarButtonSeparator.spacer); + final ActionToolbarButtonDescriptor<StateToken> translateContent = new ActionToolbarButtonDescriptor<StateToken>( + AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() { + public void onEvent(final StateToken stateToken) { + Site.important(i18n.t("Sorry, this functionality is currently in development")); + } + }); + translateContent.setTextDescription(i18n.tWithNT("Translate", "used in button")); + translateContent.setToolTip(i18n.t("Translate this document to other languages")); + translateContent.setIconUrl("images/language.gif"); + translateContent.setLeftSeparator(ActionToolbarButtonSeparator.spacer); - final ActionToolbarButtonDescriptor<StateToken> editContent = new ActionToolbarButtonDescriptor<StateToken>( - AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() { - public void onEvent(final StateToken stateToken) { - session.check(new AsyncCallbackSimple<Object>() { - public void onSuccess(final Object result) { - final TextEditor editor = textEditorProvider.get(); - documentContent.detach(); - editor.editContent(session.getCurrentState().getContent(), new Listener<String>() { - public void onEvent(final String html) { - Site.showProgressSaving(); - contentServiceProvider.get().save(session.getUserHash(), stateToken, html, - new AsyncCallback<Integer>() { - public void onFailure(final Throwable caught) { - Site.hideProgress(); - try { - throw caught; - } catch (final SessionExpiredException e) { - errorHandler.doSessionExpired(); - } catch (final Throwable e) { - Site.error(i18n.t("Error saving document. Retrying...")); - errorHandler.process(caught); - editor.onSaveFailed(); - } - } + final ActionToolbarButtonDescriptor<StateToken> editContent = new ActionToolbarButtonDescriptor<StateToken>( + AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() { + public void onEvent(final StateToken stateToken) { + session.check(new AsyncCallbackSimple<Object>() { + public void onSuccess(final Object result) { + final TextEditor editor = textEditorProvider.get(); + documentContent.detach(); + editor.editContent(session.getCurrentState().getContent(), new Listener<String>() { + public void onEvent(final String html) { + Site.showProgressSaving(); + contentServiceProvider.get().save(session.getUserHash(), stateToken, html, + new AsyncCallback<Integer>() { + public void onFailure(final Throwable caught) { + Site.hideProgress(); + try { + throw caught; + } catch (final SessionExpiredException e) { + errorHandler.doSessionExpired(); + } catch (final Throwable e) { + Site.error(i18n.t("Error saving document. Retrying...")); + errorHandler.process(caught); + editor.onSaveFailed(); + } + } - public void onSuccess(final Integer newVersion) { - Site.hideProgress(); - session.getCurrentState().setVersion(newVersion); - session.getCurrentState().setContent(html); - editor.onSaved(); - } - }); - } - }, new Listener0() { - public void onEvent() { - // onClose - if (session.getCurrentStateToken().equals(stateToken)) { - documentContent.refreshState(); - } - } - }); - } - }); - } - }); - editContent.setTextDescription(i18n.tWithNT("Edit", "used in button")); - editContent.setIconUrl("images/content_edit.png"); - editContent.setLeftSeparator(ActionToolbarButtonSeparator.spacer); + public void onSuccess(final Integer newVersion) { + Site.hideProgress(); + session.getCurrentState().setVersion(newVersion); + session.getCurrentState().setContent(html); + editor.onSaved(); + } + }); + } + }, new Listener0() { + public void onEvent() { + // onClose + if (session.getCurrentStateToken().equals(stateToken)) { + documentContent.refreshState(); + } + } + }); + } + }); + } + }); + editContent.setTextDescription(i18n.tWithNT("Edit", "used in button")); + editContent.setIconUrl("images/content_edit.png"); + editContent.setLeftSeparator(ActionToolbarButtonSeparator.spacer); - final String[] all = { TYPE_ROOT, TYPE_FOLDER, TYPE_DOCUMENT, TYPE_GALLERY, TYPE_BLOG, TYPE_POST, TYPE_WIKI, - TYPE_WIKIPAGE, TYPE_UPLOADEDFILE }; - final String[] containersNoRoot = { TYPE_FOLDER, TYPE_GALLERY, TYPE_BLOG, TYPE_WIKI }; - final String[] containers = { TYPE_ROOT, TYPE_FOLDER, TYPE_GALLERY, TYPE_BLOG, TYPE_WIKI }; - final String[] contents = { TYPE_DOCUMENT, TYPE_POST, TYPE_WIKIPAGE, TYPE_UPLOADEDFILE }; - final String[] contentsModerated = { TYPE_DOCUMENT, TYPE_POST, TYPE_UPLOADEDFILE }; + final String[] all = { TYPE_ROOT, TYPE_FOLDER, TYPE_DOCUMENT, TYPE_GALLERY, TYPE_BLOG, TYPE_POST, TYPE_WIKI, + TYPE_WIKIPAGE, TYPE_UPLOADEDFILE }; + final String[] containersNoRoot = { TYPE_FOLDER, TYPE_GALLERY, TYPE_BLOG, TYPE_WIKI }; + final String[] containers = { TYPE_ROOT, TYPE_FOLDER, TYPE_GALLERY, TYPE_BLOG, TYPE_WIKI }; + final String[] contents = { TYPE_DOCUMENT, TYPE_POST, TYPE_WIKIPAGE, TYPE_UPLOADEDFILE }; + final String[] contentsModerated = { TYPE_DOCUMENT, TYPE_POST, TYPE_UPLOADEDFILE }; - contentActionRegistry.addAction(setPublishStatus, contentsModerated); - contentActionRegistry.addAction(setEditionInProgressStatus, contentsModerated); - contentActionRegistry.addAction(setRejectStatus, contentsModerated); - contentActionRegistry.addAction(setSubmittedForPublishStatus, contentsModerated); - contentActionRegistry.addAction(setInTheDustBinStatus, contentsModerated); - contextActionRegistry.addAction(addDoc, TYPE_ROOT, TYPE_FOLDER); - contextActionRegistry.addAction(addFolder, TYPE_ROOT, TYPE_FOLDER); - contextActionRegistry.addAction(addGallery, TYPE_ROOT); - contextActionRegistry.addAction(addWiki, TYPE_ROOT); - contextActionRegistry.addAction(go, all); - contentActionRegistry.addAction(renameCtn, contents); - contextActionRegistry.addAction(renameCtx, containersNoRoot); - contextActionRegistry.addAction(refreshCtx, containers); - contentActionRegistry.addAction(refreshCnt, contents); - contextActionRegistry.addAction(uploadFile, TYPE_ROOT, TYPE_FOLDER, TYPE_BLOG); - contentActionRegistry.addAction(download, TYPE_UPLOADEDFILE); - contentActionRegistry.addAction(delContent, contents); - contextActionRegistry.addAction(delContainer, containersNoRoot); - contentActionRegistry.addAction(setAsDefGroupCnt, TYPE_DOCUMENT, TYPE_UPLOADEDFILE); - contentActionRegistry.addAction(setAsDefGroupCxt, TYPE_BLOG); - contextActionRegistry.addAction(goGroupHome, containers); - contentActionRegistry.addAction(setGroupLogo, TYPE_UPLOADEDFILE); - contextActionRegistry.addAction(downloadCtx, TYPE_UPLOADEDFILE); - contentActionRegistry.addAction(editContent, TYPE_DOCUMENT, TYPE_POST, TYPE_WIKIPAGE); - contentActionRegistry.addAction(translateContent, TYPE_DOCUMENT, TYPE_FOLDER, TYPE_GALLERY, TYPE_UPLOADEDFILE, - TYPE_WIKI, TYPE_WIKIPAGE); + contentActionRegistry.addAction(setPublishStatus, contentsModerated); + contentActionRegistry.addAction(setEditionInProgressStatus, contentsModerated); + contentActionRegistry.addAction(setRejectStatus, contentsModerated); + contentActionRegistry.addAction(setSubmittedForPublishStatus, contentsModerated); + contentActionRegistry.addAction(setInTheDustBinStatus, contentsModerated); + contextActionRegistry.addAction(addDoc, TYPE_ROOT, TYPE_FOLDER); + contextActionRegistry.addAction(addFolder, TYPE_ROOT, TYPE_FOLDER); + contextActionRegistry.addAction(addGallery, TYPE_ROOT); + contextActionRegistry.addAction(addWiki, TYPE_ROOT); + contextActionRegistry.addAction(go, all); + contentActionRegistry.addAction(renameCtn, contents); + contextActionRegistry.addAction(renameCtx, containersNoRoot); + contextActionRegistry.addAction(refreshCtx, containers); + contentActionRegistry.addAction(refreshCnt, contents); + contextActionRegistry.addAction(uploadFile, TYPE_ROOT, TYPE_FOLDER, TYPE_BLOG); + contentActionRegistry.addAction(download, TYPE_UPLOADEDFILE); + contentActionRegistry.addAction(delContent, contents); + contextActionRegistry.addAction(delContainer, containersNoRoot); + contentActionRegistry.addAction(setAsDefGroupCnt, TYPE_DOCUMENT, TYPE_UPLOADEDFILE); + contentActionRegistry.addAction(setAsDefGroupCxt, TYPE_BLOG); + contextActionRegistry.addAction(goGroupHome, containers); + contentActionRegistry.addAction(setGroupLogo, TYPE_UPLOADEDFILE); + contextActionRegistry.addAction(downloadCtx, TYPE_UPLOADEDFILE); + contentActionRegistry.addAction(editContent, TYPE_DOCUMENT, TYPE_POST, TYPE_WIKIPAGE); + contentActionRegistry.addAction(translateContent, TYPE_DOCUMENT, TYPE_FOLDER, TYPE_GALLERY, TYPE_UPLOADEDFILE, + TYPE_WIKI, TYPE_WIKIPAGE); } private ActionToolbarMenuAndItemDescriptor<StateToken> createFolderAction(final String contentTypeId, - final String iconUrl, final String textDescription, final String parentMenuTitle, - final String parentMenuSubtitle, final String defaultName) { - final ActionToolbarMenuAndItemDescriptor<StateToken> addFolder; - addFolder = new ActionToolbarMenuAndItemDescriptor<StateToken>(AccessRolDTO.Editor, - ActionToolbarPosition.topbar, new Listener<StateToken>() { - public void onEvent(final StateToken stateToken) { - Site.showProgressProcessing(); - contentServiceProvider.get().addFolder(session.getUserHash(), stateToken, defaultName, - contentTypeId, new AsyncCallbackSimple<StateDTO>() { - public void onSuccess(final StateDTO state) { - contextNavigator.setEditOnNextStateChange(true); - stateManager.setRetrievedState(state); - } - }); - } - }); - addFolder.setTextDescription(textDescription); - addFolder.setParentMenuTitle(parentMenuTitle); - addFolder.setParentSubMenuTitle(parentMenuSubtitle); - addFolder.setIconUrl(iconUrl); - return addFolder; + final String iconUrl, final String textDescription, final String parentMenuTitle, + final String parentMenuSubtitle, final String defaultName) { + final ActionToolbarMenuAndItemDescriptor<StateToken> addFolder; + addFolder = new ActionToolbarMenuAndItemDescriptor<StateToken>(AccessRolDTO.Editor, + ActionToolbarPosition.topbar, new Listener<StateToken>() { + public void onEvent(final StateToken stateToken) { + Site.showProgressProcessing(); + contentServiceProvider.get().addFolder(session.getUserHash(), stateToken, defaultName, + contentTypeId, new AsyncCallbackSimple<StateDTO>() { + public void onSuccess(final StateDTO state) { + contextNavigator.setEditOnNextStateChange(true); + stateManager.setRetrievedState(state); + } + }); + } + }); + addFolder.setTextDescription(textDescription); + addFolder.setParentMenuTitle(parentMenuTitle); + addFolder.setParentSubMenuTitle(parentMenuSubtitle); + addFolder.setIconUrl(iconUrl); + return addFolder; } private ActionToolbarMenuDescriptor<StateToken> createSetAsDefContent() { - final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupContent; - setAsDefGroupContent = new ActionToolbarMenuDescriptor<StateToken>(AccessRolDTO.Administrator, - ActionToolbarPosition.topbar, new Listener<StateToken>() { - public void onEvent(final StateToken token) { - Site.showProgressProcessing(); - contentServiceProvider.get().setAsDefaultContent(session.getUserHash(), token, - new AsyncCallbackSimple<ContentSimpleDTO>() { - public void onSuccess(final ContentSimpleDTO defContent) { - session.getCurrentState().getGroup().setDefaultContent(defContent); - Site.hideProgress(); - Site.info(i18n.t("Document selected as the group homepage")); - } - }); - } - }); - setAsDefGroupContent.setTextDescription(i18n.t("Set this as the group default page")); - setAsDefGroupContent.setIconUrl("images/group-home.png"); - setAsDefGroupContent.setEnableCondition(new ActionEnableCondition<StateToken>() { - public boolean mustBeEnabled(final StateToken itemToken) { - final StateToken defContentToken = session.getCurrentState().getGroup().getDefaultContent() - .getStateToken(); - return !itemToken.equals(defContentToken); - } - }); - return setAsDefGroupContent; + final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupContent; + setAsDefGroupContent = new ActionToolbarMenuDescriptor<StateToken>(AccessRolDTO.Administrator, + ActionToolbarPosition.topbar, new Listener<StateToken>() { + public void onEvent(final StateToken token) { + Site.showProgressProcessing(); + contentServiceProvider.get().setAsDefaultContent(session.getUserHash(), token, + new AsyncCallbackSimple<ContentSimpleDTO>() { + public void onSuccess(final ContentSimpleDTO defContent) { + session.getCurrentState().getGroup().setDefaultContent(defContent); + Site.hideProgress(); + Site.info(i18n.t("Document selected as the group homepage")); + } + }); + } + }); + setAsDefGroupContent.setTextDescription(i18n.t("Set this as the group default page")); + setAsDefGroupContent.setIconUrl("images/group-home.png"); + setAsDefGroupContent.setEnableCondition(new ActionEnableCondition<StateToken>() { + public boolean mustBeEnabled(final StateToken itemToken) { + final StateToken defContentToken = session.getCurrentState().getGroup().getDefaultContent() + .getStateToken(); + return !itemToken.equals(defContentToken); + } + }); + return setAsDefGroupContent; } private ActionToolbarMenuAndItemDescriptor<StateToken> createSetStatusAction(final AccessRolDTO rol, - final String textDescription, final ContentStatusDTO status) { - final ActionToolbarMenuAndItemDescriptor<StateToken> action = new ActionToolbarMenuAndItemDescriptor<StateToken>( - rol, ActionToolbarPosition.topbar, new Listener<StateToken>() { - public void onEvent(final StateToken stateToken) { - final AsyncCallbackSimple<Object> callback = new AsyncCallbackSimple<Object>() { - public void onSuccess(final Object result) { - session.getCurrentState().setStatus(status); - } - }; - if (status.equals(ContentStatusDTO.publishedOnline) || status.equals(ContentStatusDTO.rejected)) { - contentServiceProvider.get().setStatusAsAdmin(session.getUserHash(), stateToken, status, - callback); - } else { - contentServiceProvider.get().setStatus(session.getUserHash(), stateToken, status, callback); - } - } - }); - action.setTextDescription(textDescription); - action.setParentMenuTitle(i18n.t("File")); - action.setParentSubMenuTitle(i18n.t("Change the status")); - return action; + final String textDescription, final ContentStatusDTO status) { + final ActionToolbarMenuAndItemDescriptor<StateToken> action = new ActionToolbarMenuAndItemDescriptor<StateToken>( + rol, ActionToolbarPosition.topbar, new Listener<StateToken>() { + public void onEvent(final StateToken stateToken) { + final AsyncCallbackSimple<Object> callback = new AsyncCallbackSimple<Object>() { + public void onSuccess(final Object result) { + session.getCurrentState().setStatus(status); + } + }; + if (status.equals(ContentStatusDTO.publishedOnline) || status.equals(ContentStatusDTO.rejected)) { + contentServiceProvider.get().setStatusAsAdmin(session.getUserHash(), stateToken, status, + callback); + } else { + contentServiceProvider.get().setStatus(session.getUserHash(), stateToken, status, callback); + } + } + }); + action.setTextDescription(textDescription); + action.setParentMenuTitle(i18n.t("File")); + action.setParentSubMenuTitle(i18n.t("Change the status")); + return action; } private ActionToolbarButtonAndItemDescriptor<StateToken> createUploadAction(final String textDescription, - final String iconUrl, final String toolTip, final String permitedExtensions) { - final ActionToolbarButtonAndItemDescriptor<StateToken> uploadFile; - uploadFile = new ActionToolbarButtonAndItemDescriptor<StateToken>(AccessRolDTO.Editor, - ActionToolbarPosition.bottombar, new Listener<StateToken>() { - public void onEvent(final StateToken token) { - if (permitedExtensions != null) { - // FIXME: can't be reset ... - // fileUploaderProvider.get().setPermittedExtensions(permitedExtensions); - } else { - // FIXME: can't be reset ... - // fileUploaderProvider.get().resetPermittedExtensions(); - } - fileUploaderProvider.get().show(); - } - }); - uploadFile.setTextDescription(textDescription); - uploadFile.setIconUrl(iconUrl); - uploadFile.setToolTip(toolTip); - return uploadFile; + final String iconUrl, final String toolTip, final String permitedExtensions) { + final ActionToolbarButtonAndItemDescriptor<StateToken> uploadFile; + uploadFile = new ActionToolbarButtonAndItemDescriptor<StateToken>(AccessRolDTO.Editor, + ActionToolbarPosition.bottombar, new Listener<StateToken>() { + public void onEvent(final StateToken token) { + if (permitedExtensions != null) { + // FIXME: can't be reset ... + // fileUploaderProvider.get().setPermittedExtensions(permitedExtensions); + } else { + // FIXME: can't be reset ... + // fileUploaderProvider.get().resetPermittedExtensions(); + } + fileUploaderProvider.get().show(); + } + }); + uploadFile.setTextDescription(textDescription); + uploadFile.setIconUrl(iconUrl); + uploadFile.setToolTip(toolTip); + return uploadFile; } private void downloadContent(final StateToken token) { - fileDownloadProvider.get().downloadFile(token); + fileDownloadProvider.get().downloadFile(token); } } Modified: trunk/src/main/java/org/ourproject/kune/docs/server/DocumentServerTool.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/docs/server/DocumentServerTool.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/docs/server/DocumentServerTool.java 2008-10-16 14:34:33 UTC (rev 913) @@ -32,7 +32,8 @@ import org.ourproject.kune.platf.server.domain.User; import org.ourproject.kune.platf.server.manager.ToolConfigurationManager; import org.ourproject.kune.platf.server.tool.ServerTool; -import org.ourproject.kune.platf.server.tool.ToolRegistry; +import org.ourproject.kune.platf.server.tool.ServerToolRegistry; +import org.ourproject.kune.platf.server.tool.ServerToolTarget; import com.google.inject.Inject; @@ -57,61 +58,67 @@ @Inject public DocumentServerTool(final ContentManager contentManager, final ContainerManager containerManager, - final ToolConfigurationManager configurationManager, final I18nTranslationService translationService) { - this.contentManager = contentManager; - this.containerManager = containerManager; - this.configurationManager = configurationManager; - this.i18n = translationService; + final ToolConfigurationManager configurationManager, final I18nTranslationService translationService) { + this.contentManager = contentManager; + this.containerManager = containerManager; + this.configurationManager = configurationManager; + this.i18n = translationService; } public String getName() { - return NAME; + return NAME; } + public String getRootName() { + return ROOT_NAME; + } + + public ServerToolTarget getTarget() { + return ServerToolTarget.forBoth; + } + public Group initGroup(final User user, final Group group) { - final ToolConfiguration config = new ToolConfiguration(); - final Container container = containerManager.createRootFolder(group, NAME, ROOT_NAME, TYPE_ROOT); - config.setRoot(container); - group.setToolConfig(NAME, config); - configurationManager.persist(config); - final String longName = group.getLongName(); - final String publicDesc = group.getPublicDesc(); - final Content descriptor = contentManager.createContent(i18n.t("About [%s]", longName), publicDesc == null ? "" - : publicDesc, user, container); - descriptor.addAuthor(user); - descriptor.setLanguage(user.getLanguage()); - descriptor.setTypeId(TYPE_DOCUMENT); - descriptor.setStatus(ContentStatus.publishedOnline); - group.setDefaultContent(descriptor); - return group; + final ToolConfiguration config = new ToolConfiguration(); + final Container container = containerManager.createRootFolder(group, NAME, ROOT_NAME, TYPE_ROOT); + config.setRoot(container); + group.setToolConfig(NAME, config); + configurationManager.persist(config); + final String longName = group.getLongName(); + final Content descriptor = contentManager.createContent(i18n.t("About [%s]", longName), "", user, container); + descriptor.addAuthor(user); + descriptor.setLanguage(user.getLanguage()); + descriptor.setTypeId(TYPE_DOCUMENT); + descriptor.setStatus(ContentStatus.publishedOnline); + group.setDefaultContent(descriptor); + return group; } public void onCreateContainer(final Container container, final Container parent, final String typeId) { - checkTypeId(parent.getTypeId(), typeId); - container.setTypeId(typeId); + checkTypeId(parent.getTypeId(), typeId); + container.setTypeId(typeId); } public void onCreateContent(final Content content, final Container parent) { - content.setTypeId(TYPE_DOCUMENT); + content.setTypeId(TYPE_DOCUMENT); } @Inject - public void register(final ToolRegistry registry) { - registry.register(this); + public void register(final ServerToolRegistry registry) { + registry.register(this); } private void checkTypeId(final String parentTypeId, final String typeId) { - if (typeId.equals(TYPE_FOLDER) || typeId.equals(TYPE_GALLERY) || typeId.equals(TYPE_WIKI)) { - // ok valid container - if (typeId.equals(TYPE_GALLERY) && !parentTypeId.equals(TYPE_ROOT)) { - throw new ContainerNotPermittedException(); - } - if (typeId.equals(TYPE_WIKI) && !parentTypeId.equals(TYPE_ROOT)) { - throw new ContainerNotPermittedException(); - } - } else { - throw new ContainerNotPermittedException(); - } + if (typeId.equals(TYPE_FOLDER) || typeId.equals(TYPE_GALLERY) || typeId.equals(TYPE_WIKI)) { + // ok valid container + if (typeId.equals(TYPE_GALLERY) && !parentTypeId.equals(TYPE_ROOT)) { + throw new ContainerNotPermittedException(); + } + if (typeId.equals(TYPE_WIKI) && !parentTypeId.equals(TYPE_ROOT)) { + throw new ContainerNotPermittedException(); + } + } else { + throw new ContainerNotPermittedException(); + } } } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/GroupDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/GroupDTO.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/GroupDTO.java 2008-10-16 14:34:33 UTC (rev 913) @@ -27,136 +27,119 @@ private Long id; private String shortName; private String longName; - private String publicDesc; private GroupType type; private ContentSimpleDTO defaultContent; private ContentSimpleDTO groupLogo; private LicenseDTO defaultLicense; private String workspaceTheme; - private String tags; public GroupDTO() { - this(null, null, null, GroupType.ORGANIZATION); + this(null, null, GroupType.ORGANIZATION); } - public GroupDTO(final String shortName, final String longName, final String publicDesc, final GroupType type) { - this.shortName = shortName; - this.longName = longName; - this.publicDesc = publicDesc; - this.type = type; + public GroupDTO(final String shortName, final String longName, final GroupType type) { + this.shortName = shortName; + this.longName = longName; + this.type = type; } + @Override public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - final GroupDTO other = (GroupDTO) obj; - if (shortName == null) { - if (other.shortName != null) { - return false; - } - } else if (!shortName.equals(other.shortName)) { - return false; - } - return true; + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + final GroupDTO other = (GroupDTO) obj; + if (shortName == null) { + if (other.shortName != null) { + return false; + } + } else if (!shortName.equals(other.shortName)) { + return false; + } + return true; } public ContentSimpleDTO getDefaultContent() { - return defaultContent; + return defaultContent; } public LicenseDTO getDefaultLicense() { - return defaultLicense; + return defaultLicense; } public ContentSimpleDTO getGroupLogo() { - return groupLogo; + return groupLogo; } public Long getId() { - return id; + return id; } public String getLongName() { - return longName; + return longName; } - public String getPublicDesc() { - return publicDesc; - } - public String getShortName() { - return shortName; + return shortName; } - public String getTags() { - return tags; - } - public GroupType getType() { - return type; + return type; } public String getWorkspaceTheme() { - return workspaceTheme; + return workspaceTheme; } + @Override public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + (defaultLicense == null ? 0 : defaultLicense.hashCode()); - result = prime * result + (id == null ? 0 : id.hashCode()); - result = prime * result + (longName == null ? 0 : longName.hashCode()); - result = prime * result + (publicDesc == null ? 0 : publicDesc.hashCode()); - result = prime * result + (shortName == null ? 0 : shortName.hashCode()); - result = prime * result + (type == null ? 0 : type.hashCode()); - return result; + final int prime = 31; + int result = 1; + result = prime * result + (defaultLicense == null ? 0 : defaultLicense.hashCode()); + result = prime * result + (id == null ? 0 : id.hashCode()); + result = prime * result + (longName == null ? 0 : longName.hashCode()); + result = prime * result + (shortName == null ? 0 : shortName.hashCode()); + result = prime * result + (type == null ? 0 : type.hashCode()); + return result; } public void setDefaultContent(final ContentSimpleDTO defaultContent) { - this.defaultContent = defaultContent; + this.defaultContent = defaultContent; } public void setDefaultLicense(final LicenseDTO defaultLicense) { - this.defaultLicense = defaultLicense; + this.defaultLicense = defaultLicense; } public void setGroupLogo(final ContentSimpleDTO groupLogo) { - this.groupLogo = groupLogo; + this.groupLogo = groupLogo; } public void setId(final Long id) { - this.id = id; + this.id = id; } public void setLongName(final String name) { - this.longName = name; + this.longName = name; } - public void setPublicDesc(final String publicDesc) { - this.publicDesc = publicDesc; - } - public void setShortName(final String shortName) { - this.shortName = shortName; + this.shortName = shortName; } - public void setTags(final String tags) { - this.tags = tags; - } - public void setType(final GroupType type) { - this.type = type; + this.type = type; } public void setWorkspaceTheme(final String workspaceTheme) { - this.workspaceTheme = workspaceTheme; + this.workspaceTheme = workspaceTheme; } + @Override public String toString() { - return "GroupDTO[" + shortName + "]"; + return "GroupDTO[" + shortName + "]"; } } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/InitDataDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/InitDataDTO.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/InitDataDTO.java 2008-10-16 14:34:33 UTC (rev 913) @@ -20,6 +20,7 @@ package org.ourproject.kune.platf.client.dto; import java.util.ArrayList; +import java.util.Collection; import com.google.gwt.user.client.rpc.IsSerializable; @@ -38,121 +39,139 @@ private String siteLogoUrl; private String galleryPermittedExtensions; private String maxFileSizeInMb; + private Collection<ToolSimpleDTO> userTools; + private Collection<ToolSimpleDTO> groupTools; public String getChatDomain() { - return chatDomain; + return chatDomain; } public String getChatHttpBase() { - return chatHttpBase; + return chatHttpBase; } public String getChatRoomHost() { - return chatRoomHost; + return chatRoomHost; } public ArrayList<I18nCountryDTO> getCountries() { - return countries; + return countries; } public String getDefaultWsTheme() { - return defaultWsTheme; + return defaultWsTheme; } public String getGalleryPermittedExtensions() { - return galleryPermittedExtensions; + return galleryPermittedExtensions; } + public Collection<ToolSimpleDTO> getGroupTools() { + return groupTools; + } + public ArrayList<I18nLanguageSimpleDTO> getLanguages() { - return languages; + return languages; } public ArrayList<LicenseDTO> getLicenses() { - return licenses; + return licenses; } public String getMaxFileSizeInMb() { - return maxFileSizeInMb; + return maxFileSizeInMb; } public String getSiteDomain() { - return siteDomain; + return siteDomain; } public String getSiteLogoUrl() { - return siteLogoUrl; + return siteLogoUrl; } public String[] getTimezones() { - return timezones; + return timezones; } public UserInfoDTO getUserInfo() { - return userInfo; + return userInfo; } + public Collection<ToolSimpleDTO> getUserTools() { + return userTools; + } + public String[] getWsThemes() { - return wsThemes; + return wsThemes; } public boolean hasUser() { - return getUserInfo() != null; + return getUserInfo() != null; } public void setChatDomain(final String chatDomain) { - this.chatDomain = chatDomain; + this.chatDomain = chatDomain; } public void setChatHttpBase(final String chatHttpBase) { - this.chatHttpBase = chatHttpBase; + this.chatHttpBase = chatHttpBase; } public void setChatRoomHost(final String chatRoomHost) { - this.chatRoomHost = chatRoomHost; + this.chatRoomHost = chatRoomHost; } public void setCountries(final ArrayList<I18nCountryDTO> countries) { - this.countries = countries; + this.countries = countries; } public void setDefaultWsTheme(final String defaultWsTheme) { - this.defaultWsTheme = defaultWsTheme; + this.defaultWsTheme = defaultWsTheme; } public void setGalleryPermittedExtensions(final String galleryPermittedExtensions) { - this.galleryPermittedExtensions = galleryPermittedExtensions; + this.galleryPermittedExtensions = galleryPermittedExtensions; } + public void setGroupTools(Collection<ToolSimpleDTO> groupTools) { + this.groupTools = groupTools; + } + public void setLanguages(final ArrayList<I18nLanguageSimpleDTO> languages) { - this.languages = languages; + this.languages = languages; } public void setLicenses(final ArrayList<LicenseDTO> licenses) { - this.licenses = licenses; + this.licenses = licenses; } public void setMaxFileSizeInMb(final String maxFileSizeInMb) { - this.maxFileSizeInMb = maxFileSizeInMb; + this.maxFileSizeInMb = maxFileSizeInMb; } public void setSiteDomain(final String siteDomain) { - this.siteDomain = siteDomain; + this.siteDomain = siteDomain; } public void setSiteLogoUrl(final String siteLogoUrl) { - this.siteLogoUrl = siteLogoUrl; + this.siteLogoUrl = siteLogoUrl; } public void setTimezones(final String[] timezones) { - this.timezones = timezones; + this.timezones = timezones; } public void setUserInfo(final UserInfoDTO currentUser) { - this.userInfo = currentUser; + this.userInfo = currentUser; } + public void setUserTools(Collection<ToolSimpleDTO> userTools) { + this.userTools = userTools; + } + public void setWsThemes(final String[] wsThemes) { - this.wsThemes = wsThemes; + this.wsThemes = wsThemes; } } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateDTO.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateDTO.java 2008-10-16 14:34:33 UTC (rev 913) @@ -55,6 +55,7 @@ private SocialNetworkDTO groupMembers; private ParticipationDataDTO participation; private StateToken stateToken; + private List<String> enabledTools; public StateDTO() { this(null, null, null); @@ -98,6 +99,10 @@ return documentId; } + public List<String> getEnabledTools() { + return enabledTools; + } + public GroupDTO getGroup() { return this.group; } @@ -219,6 +224,10 @@ this.documentId = docRef; } + public void setEnabledTools(List<String> enabledTools) { + this.enabledTools = enabledTools; + } + public void setGroup(final GroupDTO group) { this.group = group; } Added: trunk/src/main/java/org/ourproject/kune/platf/client/dto/ToolSimpleDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/ToolSimpleDTO.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/ToolSimpleDTO.java 2008-10-16 14:34:33 UTC (rev 913) @@ -0,0 +1,33 @@ +package org.ourproject.kune.platf.client.dto; + +import com.google.gwt.user.client.rpc.IsSerializable; + +public class ToolSimpleDTO implements IsSerializable { + private String name; + private String rootName; + + public ToolSimpleDTO() { + this(null, null); + } + + public ToolSimpleDTO(String name, String rootName) { + this.name = name; + this.rootName = rootName; + } + + public String getName() { + return name; + } + + public String getRootName() { + return rootName; + } + + public void setName(String name) { + this.name = name; + } + + public void setRootName(String rootName) { + this.rootName = rootName; + } +} Added: trunk/src/main/java/org/ourproject/kune/platf/client/errors/NoDefaultContentException.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/errors/NoDefaultContentException.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/client/errors/NoDefaultContentException.java 2008-10-16 14:34:33 UTC (rev 913) @@ -0,0 +1,26 @@ +/* + * + * Copyright (C) 2007-2008 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +package org.ourproject.kune.platf.client.errors; + + +public class NoDefaultContentException extends DefaultException { + private static final long serialVersionUID = 1L; +} Modified: trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupService.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupService.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupService.java 2008-10-16 14:34:33 UTC (rev 913) @@ -30,7 +30,8 @@ void changeGroupWsTheme(String userHash, StateToken groupToken, String theme) throws DefaultException; - StateToken createNewGroup(String userHash, GroupDTO group) throws DefaultException; + StateToken createNewGroup(String userHash, GroupDTO group, String publicDesc, String tags, String[] enabledTools) + throws DefaultException; GroupDTO setGroupLogo(String userHash, StateToken token); Modified: trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupServiceAsync.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupServiceAsync.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupServiceAsync.java 2008-10-16 14:34:33 UTC (rev 913) @@ -29,7 +29,8 @@ void changeGroupWsTheme(String userHash, StateToken groupToken, String theme, AsyncCallback<?> callback); - void createNewGroup(String userHash, GroupDTO group, AsyncCallback<StateToken> callback); + void createNewGroup(String userHash, GroupDTO group, String publicDesc, String tags, String[] enabledTools, + AsyncCallback<StateToken> callback); void setGroupLogo(String userHash, StateToken token, AsyncCallback<GroupDTO> asyncCallback); Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneErrorHandler.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneErrorHandler.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneErrorHandler.java 2008-10-16 14:34:33 UTC (rev 913) @@ -26,6 +26,7 @@ import org.ourproject.kune.platf.client.errors.ContentNotFoundException; import org.ourproject.kune.platf.client.errors.GroupNotFoundException; import org.ourproject.kune.platf.client.errors.LastAdminInGroupException; +import org.ourproject.kune.platf.client.errors.NoDefaultContentException; import org.ourproject.kune.platf.client.errors.SessionExpiredException; import org.ourproject.kune.platf.client.errors.UserMustBeLoggedException; import org.ourproject.kune.platf.client.state.Session; @@ -48,88 +49,90 @@ private final Provider<StateManager> stateManagerProvider; public KuneErrorHandler(final Session session, final I18nTranslationService i18n, - final Provider<WorkspaceSkeleton> wsProvider, final Provider<StateManager> stateManagerProvider) { - this.session = session; - this.i18n = i18n; - this.wsProvider = wsProvider; - this.stateManagerProvider = stateManagerProvider; - this.onSessionExpired = new Event0("onSessionExpired"); + final Provider<WorkspaceSkeleton> wsProvider, final Provider<StateManager> stateManagerProvider) { + this.session = session; + this.i18n = i18n; + this.wsProvider = wsProvider; + this.stateManagerProvider = stateManagerProvider; + this.onSessionExpired = new Event0("onSessionExpired"); } public void doSessionExpired() { - onSessionExpired.fire(); - getWorkspaceSkeleton().showAlertMessage(i18n.t("Session expired"), - i18n.t("Your session has expired. Please login again.")); + onSessionExpired.fire(); + getWorkspaceSkeleton().showAlertMessage(i18n.t("Session expired"), + i18n.t("Your session has expired. Please login again.")); } public WorkspaceSkeleton getWorkspaceSkeleton() { - return wsProvider.get(); + return wsProvider.get(); } public void onSessionExpired(final Listener0 listener) { - onSessionExpired.add(listener); + onSessionExpired.add(listener); } public void process(final Throwable caught) { - Site.hideProgress(); - try { - throw caught; - } catch (final AccessViolationException e) { - logException(e); - Site.error(i18n.t("You don't have rights to do that")); - } catch (final SessionExpiredException e) { - logException(e); - doSessionExpired(); - } catch (final UserMustBeLoggedException e) { - logException(e); - if (session.isLogged()) { - doSessionExpired(); - } else { - Site.important(i18n.t("Please sign in or register to collaborate")); - } - } catch (final GroupNotFoundException e) { - logException(e); - Site.error(i18n.t("Group not found")); - stateManagerProvider.get().gotoToken(""); - } catch (final IncompatibleRemoteServiceException e) { - Site.error(i18n.t("Your browser is outdated from the server software. Please reload this page.")); - } catch (final ContentNotFoundException e) { - logException(e); - Site.error(i18n.t("Content not found")); - stateManagerProvider.get().gotoToken(""); - } catch (final ContainerNotPermittedException e) { - logException(e); - Site.error(i18n.t("Action not permitted in this location")); - stateManagerProvider.get().gotoToken(""); - } catch (final LastAdminInGroupException e) { - logException(e); - getWorkspaceSkeleton().showAlertMessage( - i18n.t("Warning"), - i18n.t("Sorry, you are the last admin of this group." - + " Look for someone to substitute you appropriately as admin before unjoin this group.")); - } catch (final AlreadyGroupMemberException e) { - logException(e); - Site.error(i18n.t("This group is already a group member")); - } catch (final AlreadyUserMemberException e) { - logException(e); - Site.error(i18n.t("This user is already a member of this group")); - } catch (final Throwable e) { - logException(e, true); - Site.error(i18n.t("Error performing operation")); - GWT.log("Other kind of exception in StateManagerDefault/processErrorException", null); - } + Site.hideProgress(); + try { + throw caught; + } catch (final AccessViolationException e) { + logException(e); + Site.error(i18n.t("You don't have rights to do that")); + } catch (final SessionExpiredException e) { + logException(e); + doSessionExpired(); + } catch (final NoDefaultContentException e) { + stateManagerProvider.get().restorePreviousState(); + } catch (final UserMustBeLoggedException e) { + logException(e); + if (session.isLogged()) { + doSessionExpired(); + } else { + Site.important(i18n.t("Please sign in or register to collaborate")); + } + } catch (final GroupNotFoundException e) { + logException(e); + Site.error(i18n.t("Group not found")); + stateManagerProvider.get().gotoToken(""); + } catch (final IncompatibleRemoteServiceException e) { + Site.error(i18n.t("Your browser is outdated from the server software. Please reload this page.")); + } catch (final ContentNotFoundException e) { + logException(e); + Site.error(i18n.t("Content not found")); + stateManagerProvider.get().gotoToken(""); + } catch (final ContainerNotPermittedException e) { + logException(e); + Site.error(i18n.t("Action not permitted in this location")); + stateManagerProvider.get().gotoToken(""); + } catch (final LastAdminInGroupException e) { + logException(e); + getWorkspaceSkeleton().showAlertMessage( + i18n.t("Warning"), + i18n.t("Sorry, you are the last admin of this group." + + " Look for someone to substitute you appropriately as admin before unjoin this group.")); + } catch (final AlreadyGroupMemberException e) { + logException(e); + Site.error(i18n.t("This group is already a group member")); + } catch (final AlreadyUserMemberException e) { + logException(e); + Site.error(i18n.t("This user is already a member of this group")); + } catch (final Throwable e) { + logException(e, true); + Site.error(i18n.t("Error performing operation")); + GWT.log("Other kind of exception in StateManagerDefault/processErrorException", null); + } } private void logException(final Throwable e) { - logException(e, false); + logException(e, false); } private void logException(final Throwable e, final boolean showException) { - if (showException) { - Log.debug("Exception in KuneErrorHandler", e); - } else { - Log.debug(e.getMessage()); - } + if (showException) { + Log.debug("Exception in KuneErrorHandler", e); + } else { + Log.debug(e.getMessage()); + } } } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java 2008-10-16 14:34:33 UTC (rev 913) @@ -49,6 +49,8 @@ void removeSiteToken(String token); + void restorePreviousState(); + void setRetrievedState(StateDTO state); void setSocialNetwork(SocialNetworkResultDTO socialNet); Modified: trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java 2008-10-16 14:34:33 UTC (rev 913) @@ -52,77 +52,77 @@ private final Event2<GroupDTO, GroupDTO> onGroupChanged; public StateManagerDefault(final ContentProvider contentProvider, final Session session, - final HistoryWrapper history) { - this.contentProvider = contentProvider; - this.session = session; - this.history = history; - this.oldState = null; - this.onStateChanged = new Event<StateDTO>("onStateChanged"); - this.onGroupChanged = new Event2<GroupDTO, GroupDTO>("onGroupChanged"); - this.onToolChanged = new Event2<String, String>("onToolChanged"); - this.onSocialNetworkChanged = new Event<StateDTO>("onSocialNetworkChanged"); - session.onUserSignIn(new Listener<UserInfoDTO>() { - public void onEvent(final UserInfoDTO parameter) { - if (oldState != null) { - restorePreviousState(); - } else { - reload(); - } - } - }); - session.onUserSignOut(new Listener0() { - public void onEvent() { - reload(); - } - }); - siteTokens = new HashMap<String, Listener<StateToken>>(); + final HistoryWrapper history) { + this.contentProvider = contentProvider; + this.session = session; + this.history = history; + this.oldState = null; + this.onStateChanged = new Event<StateDTO>("onStateChanged"); + this.onGroupChanged = new Event2<GroupDTO, GroupDTO>("onGroupChanged"); + this.onToolChanged = new Event2<String, String>("onToolChanged"); + this.onSocialNetworkChanged = new Event<StateDTO>("onSocialNetworkChanged"); + session.onUserSignIn(new Listener<UserInfoDTO>() { + public void onEvent(final UserInfoDTO parameter) { + if (oldState != null) { + restorePreviousState(); + } else { + reload(); + } + } + }); + session.onUserSignOut(new Listener0() { + public void onEvent() { + reload(); + } + }); + siteTokens = new HashMap<String, Listener<StateToken>>(); } public void addSiteToken(final String token, final Listener<StateToken> listener) { - siteTokens.put(token, listener); + siteTokens.put(token, listener); } public void gotoToken(final StateToken state) { - Log.debug("StateManager: history goto-token newItem (" + state + ")"); - history.newItem(state.getEncoded()); + Log.debug("StateManager: history goto-token newItem (" + state + ")"); + history.newItem(state.getEncoded()); } public void gotoToken(final String token) { - gotoToken(new StateToken(token)); + gotoToken(new StateToken(token)); } public void onGroupChanged(final Listener2<GroupDTO, GroupDTO> listener) { - onGroupChanged.add(listener); + onGroupChanged.add(listener); } public void onHistoryChanged(final String historyToken) { - final Listener<StateToken> tokenListener = siteTokens.get(historyToken); - Log.debug("StateManager: history token changed (" + historyToken + ")"); - if (tokenListener == null) { - onHistoryChanged(new StateToken(historyToken)); - } else { - StateToken stateToken; - if (oldState == null) { - // Starting with some token like "signin": load defContent also - stateToken = new StateToken(); - onHistoryChanged(stateToken); - } else { - stateToken = oldState.getStateToken(); - } - tokenListener.onEvent(stateToken); - } + final Listener<StateToken> tokenListener = siteTokens.get(historyToken); + Log.debug("StateManager: history token changed (" + historyToken + ")"); + if (tokenListener == null) { + onHistoryChanged(new StateToken(historyToken)); + } else { + StateToken stateToken; + if (oldState == null) { + // Starting with some token like "signin": load defContent also + stateToken = new StateToken(); + onHistoryChanged(stateToken); + } else { + stateToken = oldState.getStateToken(); + } + tokenListener.onEvent(stateToken); + } } public void onSocialNetworkChanged(final Listener<StateDTO> listener) { - onSocialNetworkChanged.add(listener); + onSocialNetworkChanged.add(listener); } public void onStateChanged(final Listener<StateDTO> listener) { - onStateChanged.add(listener); + onStateChanged.add(listener); } public void onToolChanged(final Listener2<String, String> listener) { - onToolChanged.add(listener); + onToolChanged.add(listener); } /** @@ -131,68 +131,68 @@ * </p> */ public void reload() { - onHistoryChanged(history.getToken()); + onHistoryChanged(history.getToken()); } public void removeSiteToken(final String token) { - siteTokens.remove(token); + siteTokens.remove(token); } + public void restorePreviousState() { + if (oldState == null) { + onHistoryChanged(new StateToken()); + } else { + final StateDTO newState = oldState; + oldState = session.getCurrentState(); + setState(newState); + } + } + public void setRetrievedState(final StateDTO newState) { - contentProvider.cache(newState.getStateToken(), newState); - setState(newState); + contentProvider.cache(newState.getStateToken(), newState); + setState(newState); } public void setSocialNetwork(final SocialNetworkResultDTO socialNet) { - StateDTO state; - if (session != null && (state = session.getCurrentState()) != null) { - // After a SN operation, usually returns a SocialNetworkResultDTO - // with new SN data and we refresh the state - // to avoid to reload() again the state - final SocialNetworkDTO groupMembers = socialNet.getGroupMembers(); - final ParticipationDataDTO userParticipation = socialNet.getUserParticipation(); - state.setGroupMembers(groupMembers); - state.setParticipation(userParticipation); - onSocialNetworkChanged.fire(state); - } + StateDTO state; + if (session != null && (state = session.getCurrentState()) != null) { + // After a SN operation, usually returns a SocialNetworkResultDTO + // with new SN data and we refresh the state + // to avoid to reload() again the state + final SocialNetworkDTO groupMembers = socialNet.getGroupMembers(); + final ParticipationDataDTO userParticipation = socialNet.getUserParticipation(); + state.setGroupMembers(groupMembers); + state.setParticipation(userParticipation); + onSocialNetworkChanged.fire(state); + } } private void checkGroupAndToolChange(final StateDTO oldState, final StateDTO newState) { - final GroupDTO oldGroup = oldState != null ? oldState.getGroup() : null; - final GroupDTO newGroup = newState.getGroup(); - final String oldToolName = oldState != null ? oldState.getToolName() : null; - final String newToolName = newState.getToolName(); - if (oldState == null || !oldGroup.equals(newGroup)) { - onGroupChanged.fire(oldGroup, newGroup); - } - if (oldState == null || !oldToolName.equals(newToolName)) { - onToolChanged.fire(oldToolName, newToolName); - } + final GroupDTO oldGroup = oldState != null ? oldState.getGroup() : null; + final GroupDTO newGroup = newState.getGroup(); + final String oldToolName = oldState != null ? oldState.getToolName() : null; + final String newToolName = newState.getToolName(); + if (oldState == null || !oldGroup.equals(newGroup)) { + onGroupChanged.fire(oldGroup, newGroup); + } + if (oldState == null || !oldToolName.equals(newToolName)) { + onToolChanged.fire(oldToolName, newToolName); + } } private void onHistoryChanged(final StateToken newState) { - contentProvider.getContent(session.getUserHash(), newState, new AsyncCallbackSimple<StateDTO>() { - public void onSuccess(final StateDTO newState) { - setState(newState); - } - }); + contentProvider.getContent(session.getUserHash(), newState, new AsyncCallbackSimple<StateDTO>() { + public void onSuccess(final StateDTO newState) { + setState(newState); + } + }); } - private void restorePreviousState() { - if (oldState == null) { - onHistoryChanged(new StateToken()); - } else { - final StateDTO newState = oldState; - oldState = session.getCurrentState(); - setState(newState); - } - } - private void setState(final StateDTO newState) { - session.setCurrent(newState); - onStateChanged.fire(newState); - Site.hideProgress(); - checkGroupAndToolChange(oldState, newState); - oldState = newState; + session.setCurrent(newState); + onStateChanged.fire(newState); + Site.hideProgress(); + checkGroupAndToolChange(oldState, newState); + oldState = newState; } } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/tool/ToolSelectorItem.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/tool/ToolSelectorItem.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/client/tool/ToolSelectorItem.java 2008-10-16 14:34:33 UTC (rev 913) @@ -8,4 +8,6 @@ void setSelected(boolean selected); + void setVisible(boolean visible); + } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/tool/ToolSelectorItemPresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/tool/ToolSelectorItemPresenter.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/client/tool/ToolSelectorItemPresenter.java 2008-10-16 14:34:33 UTC (rev 913) @@ -16,42 +16,45 @@ private final String longName; public ToolSelectorItemPresenter(final String shortName, final String longName, final ToolSelector toolSelector, - final WsThemePresenter wsThemePresenter) { - this.shortName = shortName; - this.longName = longName; - this.toolSelector = toolSelector; - this.wsThemePresenter = wsThemePresenter; + final WsThemePresenter wsThemePresenter) { + this.shortName = shortName; + this.longName = longName; + this.toolSelector = toolSelector; + this.wsThemePresenter = wsThemePresenter; } public String getShortName() { - return shortName; + return shortName; } public View getView() { - return view; + return view; } public void init(final ToolSelectorItemView view) { - this.view = view; - toolSelector.addTool(this); - wsThemePresenter.onThemeChanged(new Listener2<WsTheme, WsTheme>() { - public void onEvent(final WsTheme oldTheme, final WsTheme newTheme) { - setTheme(oldTheme, newTheme); - } - }); + this.view = view; + toolSelector.addTool(this); + wsThemePresenter.onThemeChanged(new Listener2<WsTheme, WsTheme>() { + public void onEvent(final WsTheme oldTheme, final WsTheme newTheme) { + setTheme(oldTheme, newTheme); + } + }); } public void setGroupShortName(final String groupShortName) { - final StateToken token = new StateToken(groupShortName, getShortName(), null, null); - view.setLink(longName, token.toString()); + final StateToken token = new StateToken(groupShortName, getShortName(), null, null); + view.setLink(longName, token.toString()); } public void setSelected(final boolean selected) { - view.setSelected(selected); + view.setSelected(selected); } + public void setVisible(boolean visible) { + view.setVisible(visible); + } + private void setTheme(final WsTheme oldTheme, final WsTheme newTheme) { - view.setTheme(oldTheme, newTheme); + view.setTheme(oldTheme, newTheme); } - } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/tool/ToolSelectorItemView.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/tool/ToolSelectorItemView.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/client/tool/ToolSelectorItemView.java 2008-10-16 14:34:33 UTC (rev 913) @@ -10,4 +10,6 @@ void setSelected(boolean selected); void setTheme(WsTheme oldTheme, WsTheme newTheme); + + void setVisible(boolean visible); } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/tool/ToolSelectorPresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/tool/ToolSelectorPresenter.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/client/tool/ToolSelectorPresenter.java 2008-10-16 14:34:33 UTC (rev 913) @@ -1,11 +1,14 @@ package org.ourproject.kune.platf.client.tool; import java.util.HashMap; +import java.util.List; import org.ourproject.kune.platf.client.dto.GroupDTO; +import org.ourproject.kune.platf.client.dto.StateDTO; import org.ourproject.kune.platf.client.state.StateManager; import org.ourproject.kune.workspace.client.themes.WsThemePresenter; +import com.calclab.suco.client.listener.Listener; import com.calclab.suco.client.listener.Listener2; public class ToolSelectorPresenter implements ToolSelector { @@ -13,42 +16,54 @@ private final HashMap<String, ToolSelectorItem> tools; public ToolSelectorPresenter(final StateManager stateManager, final WsThemePresenter wsThemePresenter) { - tools = new HashMap<String, ToolSelectorItem>(); - stateManager.onGroupChanged(new Listener2<GroupDTO, GroupDTO>() { - public void onEvent(final GroupDTO oldGroup, final GroupDTO newGroup) { - onGroupChanged(newGroup.getShortName()); - } - }); - stateManager.onToolChanged(new Listener2<String, String>() { - public void onEvent(final String oldTool, final String newTool) { - onToolChanged(oldTool, newTool); - } - }); + tools = new HashMap<String, ToolSelectorItem>(); + stateManager.onStateChanged(new Listener<StateDTO>() { + public void onEvent(StateDTO state) { + for (String tool : tools.keySet()) { + List<String> enabledTools = state.getEnabledTools(); + if (enabledTools != null && enabledTools.contains(tool)) { + tools.get(tool).setVisible(true); + } else { + tools.get(tool).setVisible(false); + } + } + } + }); + stateManager.onGroupChanged(new Listener2<GroupDTO, GroupDTO>() { + public void onEvent(final GroupDTO oldGroup, final GroupDTO newGroup) { + onGroupChanged(newGroup.getShortName()); + } + }); + stateManager.onToolChanged(new Listener2<String, String>() { + public void onEvent(final String oldTool, final String newTool) { + onToolChanged(oldTool, newTool); + } + }); } public void addTool(final ToolSelectorItem item) { - final String name = item.getShortName(); - if (name == null) { - throw new RuntimeException("You cannot add a tool without a name"); - } - if (tools.get(name) != null) { - throw new RuntimeException("A tool with the same name already added"); - } - tools.put(name, item); - item.setSelected(false); + final String name = item.getShortName(); + if (name == null) { + throw new RuntimeException("You cannot add a tool without a name"); + } + if (tools.get(name) != null) { + throw new RuntimeException("A tool with the same name already added"); + } + tools.put(name, item); + item.setSelected(false); } void onGroupChanged(final String newGroupName) { - for (final String name : tools.keySet()) { - tools.get(name).setGroupShortName(newGroupName); - } + for (final String name : tools.keySet()) { + tools.get(name).setGroupShortName(newGroupName); + } } void onToolChanged(final String oldTool, final String newTool) { - if (oldTool != null) { - tools.get(oldTool).setSelected(false); - } - tools.get(newTool).setSelected(true); + if (oldTool != null) { + tools.get(oldTool).setSelected(false); + } + tools.get(newTool).setSelected(true); } } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/DefaultForm.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/DefaultForm.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/DefaultForm.java 2008-10-16 14:34:33 UTC (rev 913) @@ -2,62 +2,69 @@ import com.gwtext.client.core.Position; import com.gwtext.client.widgets.form.Field; +import com.gwtext.client.widgets.form.FieldSet; import com.gwtext.client.widgets.form.FormPanel; public class DefaultForm { protected static final int DEF_FIELD_WIDTH = 200; + protected static final int DEF_SMALL_FIELD_WIDTH = 100; + protected static final int DEF_MEDIUM_FIELD_WIDTH = 150; private static final int DEF_FIELD_LABEL_WITH = 75; private final FormPanel form; public DefaultForm() { - form = new FormPanel(); - form.setPaddings(10); - form.setBorder(false); - form.setLabelWidth(DEF_FIELD_LABEL_WITH); - form.setLabelAlign(Position.RIGHT); - form.setButtonAlign(Position.RIGHT); - form.setHeader(false); + form = new FormPanel(); + form.setPaddings(10); + form.setBorder(false); + form.setLabelWidth(DEF_FIELD_LABEL_WITH); + form.setLabelAlign(Position.RIGHT); + form.setButtonAlign(Position.RIGHT); + form.setHeader(false); } public void add(final Field field) { - form.add(field); + form.add(field); } + public void add(final FieldSet fieldset) { + form.add(fieldset); + } + public void addStyleName(final String cls) { - form.addStyleName(cls); + form.addStyleName(cls); } public FormPanel getForm() { - return form; + return form; } public boolean isValid() { - return form.getForm().isValid(); + return form.getForm().isValid(); } public void removeStyleName(final String cls) { - form.removeStyleName(cls); + form.removeStyleName(cls); } public void reset() { - form.getForm().reset(); + form.getForm().reset(); } public void setAutoHeight(final boolean autoHeight) { - form.setAutoHeight(autoHeight); + form.setAutoHeight(autoHeight); } public void setAutoWidth(final boolean autoWidth) { - form.setAutoWidth(autoWidth); + form.setAutoWidth(autoWidth); } public void validate() { - final Field[] fields = form.getFields(); - for (int i = 0; i < fields.length; i++) { - fields[i].validate(); - } + final Field[] fields = form.getFields(); + for (Field field : fields) { + field.validate(); + } } } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/InitData.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/InitData.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/server/InitData.java 2008-10-16 14:34:33 UTC (rev 913) @@ -19,11 +19,13 @@ */ package org.ourproject.kune.platf.server; +import java.util.Collection; import java.util.List; import org.ourproject.kune.platf.server.domain.I18nCountry; import org.ourproject.kune.platf.server.domain.I18nLanguage; import org.ourproject.kune.platf.server.domain.License; +import org.ourproject.kune.platf.server.tool.ToolSimple; import org.ourproject.kune.platf.server.users.UserInfo; public class InitData { @@ -41,117 +43,135 @@ private String siteLogoUrl; private String galleryPermittedExtensions; private String maxFileSizeInMb; + private Collection<ToolSimple> userTools; + private Collection<ToolSimple> groupTools; public String getChatDomain() { - return chatDomain; + return chatDomain; } public String getChatHttpBase() { - return chatHttpBase; + return chatHttpBase; } public String getChatRoomHost() { - return chatRoomHost; + return chatRoomHost; } public List<I18nCountry> getCountries() { - return countries; + return countries; } public String getDefaultWsTheme() { - return defaultWsTheme; + return defaultWsTheme; } public String getGalleryPermittedExtensions() { - return galleryPermittedExtensions; + return galleryPermittedExtensions; } + public Collection<ToolSimple> getGroupTools() { + return groupTools; + } + public List<I18nLanguage> getLanguages() { - return languages; + return languages; } public List<License> getLicenses() { - return licenses; + return licenses; } public String getMaxFileSizeInMb() { - return maxFileSizeInMb; + return maxFileSizeInMb; } public String getSiteDomain() { - return siteDomain; + return siteDomain; } public String getSiteLogoUrl() { - return siteLogoUrl; + return siteLogoUrl; } public String[] getTimezones() { - return timezones; + return timezones; } public UserInfo getUserInfo() { - return userInfo; + return userInfo; } + public Collection<ToolSimple> getUserTools() { + return userTools; + } + public String[] getWsThemes() { - return wsThemes; + return wsThemes; } public void setChatDomain(final String chatDomain) { - this.chatDomain = chatDomain; + this.chatDomain = chatDomain; } public void setChatHttpBase(final String chatHttpBase) { - this.chatHttpBase = chatHttpBase; + this.chatHttpBase = chatHttpBase; } public void setChatRoomHost(final String chatRoomHost) { - this.chatRoomHost = chatRoomHost; + this.chatRoomHost = chatRoomHost; } public void setCountries(final List<I18nCountry> countries) { - this.countries = countries; + this.countries = countries; } public void setDefaultWsTheme(final String defaultWsTheme) { - this.defaultWsTheme = defaultWsTheme; + this.defaultWsTheme = defaultWsTheme; } public void setGalleryPermittedExtensions(final String galleryPermittedExtensions) { - this.galleryPermittedExtensions = galleryPermittedExtensions; + this.galleryPermittedExtensions = galleryPermittedExtensions; } + public void setGroupTools(Collection<ToolSimple> groupTools) { + this.groupTools = groupTools; + } + public void setLanguages(final List<I18nLanguage> languages) { - this.languages = languages; + this.languages = languages; } public void setLicenses(final List<License> licenses) { - this.licenses = licenses; + this.licenses = licenses; } public void setMaxFileSizeInMb(final String maxFileSizeInMb) { - this.maxFileSizeInMb = maxFileSizeInMb; + this.maxFileSizeInMb = maxFileSizeInMb; } public void setSiteDomain(final String siteDomain) { - this.siteDomain = siteDomain; + this.siteDomain = siteDomain; } public void setSiteLogoUrl(final String siteLogoUrl) { - this.siteLogoUrl = siteLogoUrl; + this.siteLogoUrl = siteLogoUrl; } public void setTimezones(final String[] timezones) { - this.timezones = timezones; + this.timezones = timezones; } public void setUserInfo(final UserInfo currentUserInfo) { - this.userInfo = currentUserInfo; + this.userInfo = currentUserInfo; } + public void setUserTools(Collection<ToolSimple> userTools) { + this.userTools = userTools; + } + public void setWsThemes(final String[] wsThemes) { - this.wsThemes = wsThemes; + this.wsThemes = wsThemes; } } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/PlatformServerModule.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/PlatformServerModule.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/server/PlatformServerModule.java 2008-10-16 14:34:33 UTC (rev 913) @@ -88,7 +88,7 @@ import org.ourproject.kune.platf.server.rpc.UserRPC; import org.ourproject.kune.platf.server.state.StateService; import org.ourproject.kune.platf.server.state.StateServiceDefault; -import org.ourproject.kune.platf.server.tool.ToolRegistry; +import org.ourproject.kune.platf.server.tool.ServerToolRegistry; import org.ourproject.kune.platf.server.users.UserInfoService; import org.ourproject.kune.platf.server.users.UserInfoServiceDefault; import org.ourproject.kune.workspace.client.site.rpc.UserService; @@ -108,7 +108,7 @@ bindServices(); bind(KuneProperties.class).to(KunePropertiesDefault.class); bind(Mapper.class).to(DozerMapper.class); - bind(ToolRegistry.class); + bind(ServerToolRegistry.class); bind(FileUploadManager.class); bind(FileDownloadManager.class); Modified: trunk/src/main/java/org/ourproject/kune/platf/server/access/AccessServiceDefault.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/access/AccessServiceDefault.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/server/access/AccessServiceDefault.java 2008-10-16 14:34:33 UTC (rev 913) @@ -26,6 +26,7 @@ import org.ourproject.kune.platf.client.errors.AccessViolationException; import org.ourproject.kune.platf.client.errors.ContentNotFoundException; import org.ourproject.kune.platf.client.errors.DefaultException; +import org.ourproject.kune.platf.client.errors.NoDefaultContentException; import org.ourproject.kune.platf.server.domain.Container; import org.ourproject.kune.platf.server.domain.Content; import org.ourproject.kune.platf.server.domain.Group; @@ -43,91 +44,94 @@ @Inject public AccessServiceDefault(final FinderService finder, final AccessRightsService accessRightsService, - final Group groupFinder) { - this.finder = finder; - this.accessRightsService = accessRightsService; - this.groupFinder = groupFinder; + final Group groupFinder) { + this.finder = finder; + this.accessRightsService = accessRightsService; + this.groupFinder = groupFinder; } public Container accessToContainer(final Long folderId, final User user, final AccessRol accessRol) - throws DefaultException { - final Container folder = finder.getFolder(folderId); - final Access access = new Access(null, folder); - addFolderRights(access, user); - addGroupRights(access, user); - return check(access, access.getContainerRights(), accessRol).getContainer(); + throws DefaultException { + final Container folder = finder.getFolder(folderId); + final Access access = new Access(null, folder); + addFolderRights(access, user); + addGroupRights(access, user); + return check(access, access.getContainerRights(), accessRol).getContainer(); } public Content accessToContent(final Long contentId, final User user, final AccessRol accessRol) - throws DefaultException { - final Content descriptor = finder.getContent(contentId); - final Access access = new Access(descriptor, null); - addContentRights(access, user); - return check(access, access.getContentRights(), accessRol).getContent(); + throws DefaultException { + final Content descriptor = finder.getContent(contentId); + final Access access = new Access(descriptor, null); + addContentRights(access, user); + return check(access, access.getContentRights(), accessRol).getContent(); } public Access getAccess(final User user, final StateToken token, final Group defaultGroup, final AccessRol accessRol) - throws DefaultException { - checkGroupExistence(token); - final Content descriptor = finder.getContent(token, defaultGroup); - final Access access = new Access(descriptor, descriptor.getContainer()); - addContentRights(access, user); - addFolderRights(access, user); - addGroupRights(access, user); - if (!isValid(accessRol, access.getContentRights()) || !isValid(accessRol, access.getContainerRights())) { - throw new AccessViolationException(); - } - return access; + throws DefaultException { + checkGroupExistence(token); + final Content descriptor = finder.getContent(token, defaultGroup); + if (descriptor.equals(Content.NO_CONTENT)) { + throw new NoDefaultContentException(); + } + final Access access = new Access(descriptor, descriptor.getContainer()); + addContentRights(access, user); + addFolderRights(access, user); + addGroupRights(access, user); + if (!isValid(accessRol, access.getContentRights()) || !isValid(accessRol, access.getContainerRights())) { + throw new AccessViolationException(); + } + return access; } private void addContentRights(final Access access, final User user) { - if (!access.hasContentRights()) { - access.setContentRights(accessRightsService.get(user, access.getContentAccessLists())); - } + if (!access.hasContentRights()) { + access.setContentRights(accessRightsService.get(user, access.getContentAccessLists())); + } } private void addFolderRights(final Access access, final User user) { - if (!access.hasContainerRights()) { - access.setContainerRights(accessRightsService.get(user, access.getContainerAccessLists())); - } + if (!access.hasContainerRights()) { + access.setContainerRights(accessRightsService.get(user, access.getContainerAccessLists())); + } } private void addGroupRights(final Access access, final User user) { - if (!access.hasGroupRights()) { - access.setGroupRights(accessRightsService.get(user, access.getGroupAccessLists())); - } + if (!access.hasGroupRights()) { + access.setGroupRights(accessRightsService.get(user, access.getGroupAccessLists())); + } } private Access check(final Access access, final AccessRights rights, final AccessRol accessRol) - throws AccessViolationException { - if (!isValid(accessRol, rights)) { - throw new AccessViolationException(); - } - return access; + throws AccessViolationException { + if (!isValid(accessRol, rights)) { + throw new AccessViolationException(); + } + return access; } private void checkGroupExistence(final StateToken token) throws ContentNotFoundException { - if (token.hasGroup()) { - try { - final String tokenGroup = token.getGroup(); - groupFinder.findByShortName(tokenGroup); - } catch (final NoResultException e) { - throw new ContentNotFoundException(); - } - } + if (token.hasGroup()) { + try { + final String tokenGroup = token.getGroup(); + groupFinder.findByShortName(tokenGroup); + } catch (final NoResultException e) { + throw new ContentNotFoundException(); + } + } } private boolean isValid(final AccessRol accessRol, final AccessRights rights) { - switch (accessRol) { - case Viewer: - return rights.isVisible(); - case Editor: - return rights.isEditable(); - case Administrator: - return rights.isAdministrable(); - default: - return false; - } + switch (accessRol) { + case Viewer: + return rights.isVisible(); + case Editor: + return rights.isEditable(); + case Administrator: + return rights.isAdministrable(); + default: + return false; + } } } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/access/FinderServiceDefault.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/access/FinderServiceDefault.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/server/access/FinderServiceDefault.java 2008-10-16 14:34:33 UTC (rev 913) @@ -72,6 +72,14 @@ return null; } + public Comment getComment(final Long commentId) throws ContentNotFoundException { + try { + return commentManager.find(commentId); + } catch (final PersistenceException e) { + throw new ContentNotFoundException(); + } + } + public Content getContent(final Long contentId) throws ContentNotFoundException { try { return contentManager.find(contentId); @@ -91,7 +99,8 @@ } else if (token.hasGroupAndTool()) { return findByRootOnGroup(token.getGroup(), token.getTool()); } else if (token.hasGroup()) { - return findDefaultOfGroup(token.getGroup()); + Content defaultOfGroup = findDefaultOfGroup(token.getGroup()); + return defaultOfGroup == null ? Content.NO_CONTENT : defaultOfGroup; } else if (token.hasNothing()) { return findDefaultOfGroup(defaultGroup); } else { @@ -107,14 +116,6 @@ } } - public Comment getComment(final Long commentId) throws ContentNotFoundException { - try { - return commentManager.find(commentId); - } catch (final PersistenceException e) { - throw new ContentNotFoundException(); - } - } - public Rate getRate(final User user, final Content content) { return rateManager.find(user, content); } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/content/CreationServiceDefault.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/content/CreationServiceDefault.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/server/content/CreationServiceDefault.java 2008-10-16 14:34:33 UTC (rev 913) @@ -25,7 +25,7 @@ import org.ourproject.kune.platf.server.domain.Group; import org.ourproject.kune.platf.server.domain.I18nLanguage; import org.ourproject.kune.platf.server.domain.User; -import org.ourproject.kune.platf.server.tool.ToolRegistry; +import org.ourproject.kune.platf.server.tool.ServerToolRegistry; import com.google.inject.Inject; import com.google.inject.Singleton; @@ -34,11 +34,11 @@ public class CreationServiceDefault implements CreationService { private final ContainerManager containerManager; private final ContentManager contentManager; - private final ToolRegistry tools; + private final ServerToolRegistry tools; @Inject public CreationServiceDefault(final ContainerManager containerManager, final ContentManager contentManager, - final ToolRegistry toolRegistry) { + final ServerToolRegistry toolRegistry) { this.containerManager = containerManager; this.contentManager = contentManager; this.tools = toolRegistry; Modified: trunk/src/main/java/org/ourproject/kune/platf/server/domain/Container.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/domain/Container.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/Container.java 2008-10-16 14:34:33 UTC (rev 913) @@ -91,149 +91,147 @@ private List<ContainerTranslation> containerTranslations; public Container() { - this(null, null, null); + this(null, null, null); } public Container(final String title, final Group group, final String toolName) { - this.name = title; - owner = group; - this.toolName = toolName; - this.contents = new HashSet<Content>(); - this.childs = new HashSet<Container>(); - this.absolutePath = new ArrayList<Container>(); + this.name = title; + owner = group; + this.toolName = toolName; + this.contents = new HashSet<Content>(); + this.childs = new HashSet<Container>(); + this.absolutePath = new ArrayList<Container>(); } public void addChild(final Container child) { - // childs.size(); - // childs.add(container); - child.setParent(this); - childs.add(child); + child.setParent(this); + childs.add(child); } public void addContent(final Content descriptor) { - // FIXME: something related with lazy initialization (workaround using - // size()) - contents.size(); - contents.add(descriptor); + // FIXME: something related with lazy initialization (workaround using + // size()) + contents.size(); + contents.add(descriptor); } public List<Container> getAbsolutePath() { - return absolutePath; + return absolutePath; } public List<ContainerTranslation> getAliases() { - return containerTranslations; + return containerTranslations; } public Set<Container> getChilds() { - return childs; + return childs; } public List<ContainerTranslation> getContainerTranslations() { - return containerTranslations; + return containerTranslations; } public Set<Content> getContents() { - return contents; + return contents; } public Long getId() { - return id; + return id; } public I18nLanguage getLanguage() { - return language; + return language; } public String getName() { - return name; + return name; } public Group getOwner() { - return owner; + return owner; } public Container getParent() { - return parent; + return parent; } public Long getParentFolderId() { - return parent != null ? parent.getId() : null; + return parent != null ? parent.getId() : null; } @Transient public StateToken getStateToken() { - return new StateToken(getOwner().getShortName(), getToolName(), getId()); + return new StateToken(getOwner().getShortName(), getToolName(), getId()); } @Transient public String getStateTokenEncoded() { - return getStateToken().getEncoded(); + return getStateToken().getEncoded(); } public String getToolName() { - return toolName; + return toolName; } public String getTypeId() { - return typeId; + return typeId; } @Transient public boolean isLeaf() { - return childs.size() == 0 && contents.size() == 0; + return childs.size() == 0 && contents.size() == 0; } @Transient public boolean isRoot() { - return parent == null; + return parent == null; } public void setAbsolutePath(final List<Container> absolutePath) { - this.absolutePath = absolutePath; + this.absolutePath = absolutePath; } public void setAliases(final List<ContainerTranslation> containerTranslations) { - this.containerTranslations = containerTranslations; + this.containerTranslations = containerTranslations; } public void setChilds(final Set<Container> childs) { - this.childs = childs; + this.childs = childs; } public void setContainerTranslations(final List<ContainerTranslation> containerTranslations) { - this.containerTranslations = containerTranslations; + this.containerTranslations = containerTranslations; } public void setContents(final HashSet<Content> contents) { - this.contents = contents; + this.contents = contents; } public void setId(final Long id) { - this.id = id; + this.id = id; } public void setLanguage(final I18nLanguage language) { - this.language = language; + this.language = language; } public void setName(final String name) { - this.name = name; + this.name = name; } public void setOwner(final Group owner) { - this.owner = owner; + this.owner = owner; } public void setParent(final Container parent) { - this.parent = parent; + this.parent = parent; } public void setToolName(final String toolName) { - this.toolName = toolName; + this.toolName = toolName; } public void setTypeId(final String typeId) { - this.typeId = typeId; + this.typeId = typeId; } } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/domain/Content.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/domain/Content.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/Content.java 2008-10-16 14:34:33 UTC (rev 913) @@ -61,6 +61,8 @@ @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) public class Content implements HasStateToken { + public static Content NO_CONTENT = new Content(); + @Id @DocumentId @GeneratedValue @@ -128,218 +130,218 @@ private String filename; public Content() { - translations = new ArrayList<ContentTranslation>(); - authors = new ArrayList<User>(); - tags = new ArrayList<Tag>(); - comments = new HashSet<Comment>(); - this.createdOn = System.currentTimeMillis(); - this.lastRevision = new Revision(this); - accessLists = null; - status = ContentStatus.editingInProgress; + translations = new ArrayList<ContentTranslation>(); + authors = new ArrayList<User>(); + tags = new ArrayList<Tag>(); + comments = new HashSet<Comment>(); + this.createdOn = System.currentTimeMillis(); + this.lastRevision = new Revision(this); + accessLists = null; + status = ContentStatus.editingInProgress; } public void addAuthor(final User user) { - if (!this.authors.contains(user)) { - this.authors.add(user); - } + if (!this.authors.contains(user)) { + this.authors.add(user); + } } public void addComment(final Comment comment) { - // FIXME: something related with lazy initialization (workaround using - // size()) - comments.size(); - comments.add(comment); + // FIXME: something related with lazy initialization (workaround using + // size()) + comments.size(); + comments.add(comment); } public void addRevision(final Revision revision) { - if (lastRevision == null) { - lastRevision = revision; - } else { - revision.setPrevious(lastRevision); - lastRevision = revision; - } + if (lastRevision == null) { + lastRevision = revision; + } else { + revision.setPrevious(lastRevision); + lastRevision = revision; + } } public AccessLists getAccessLists() { - return accessLists; + return accessLists; } public List<User> getAuthors() { - return authors; + return authors; } public Set<Comment> getComments() { - return comments; + return comments; } public Container getContainer() { - return container; + return container; } public Long getCreatedOn() { - return createdOn; + return createdOn; } public Date getDeletedOn() { - return deletedOn; + return deletedOn; } public String getFilename() { - return filename; + return filename; } public Long getId() { - return id; + return id; } public I18nLanguage getLanguage() { - return language; + return language; } public Revision getLastRevision() { - return lastRevision; + return lastRevision; } public License getLicense() { - return license; + return license; } public BasicMimeType getMimeType() { - return mimeType; + return mimeType; } public Group getOwner(final Group group) { - return container.getOwner(); + return container.getOwner(); } public Date getPublishedOn() { - return publishedOn; + return publishedOn; } @Transient public StateToken getStateToken() { - return getContainer().getStateToken().clone().setDocument(getId()); + return getContainer().getStateToken().clone().setDocument(getId()); } @Transient public String getStateTokenEncoded() { - return getStateToken().getEncoded(); + return getStateToken().getEncoded(); } public ContentStatus getStatus() { - return status; + return status; } public List<Tag> getTags() { - return tags; + return tags; } public String getTagsAsString() { - String tagConcatenated = ""; - for (final Iterator<Tag> iterator = tags.iterator(); iterator.hasNext();) { - final Tag tag = iterator.next(); - tagConcatenated = tagConcatenated + tag.getName(); - if (iterator.hasNext()) { - tagConcatenated = tagConcatenated + " "; - } - } - return tagConcatenated; + String tagConcatenated = ""; + for (final Iterator<Tag> iterator = tags.iterator(); iterator.hasNext();) { + final Tag tag = iterator.next(); + tagConcatenated = tagConcatenated + tag.getName(); + if (iterator.hasNext()) { + tagConcatenated = tagConcatenated + " "; + } + } + return tagConcatenated; } public String getTitle() { - return lastRevision.getTitle(); + return lastRevision.getTitle(); } public List<ContentTranslation> getTranslations() { - return translations; + return translations; } public String getTypeId() { - return typeId; + return typeId; } public int getVersion() { - return version; + return version; } public boolean hasAccessList() { - return accessLists != null; + return accessLists != null; } public void removeAuthor(final User user) { - this.authors.remove(user); + this.authors.remove(user); } public void setAccessLists(final AccessLists accessLists) { - this.accessLists = accessLists; + this.accessLists = accessLists; } public void setAuthors(final List<User> authors) { - this.authors = authors; + this.authors = authors; } public void setComments(final Set<Comment> comments) { - this.comments = comments; + this.comments = comments; } public void setContainer(final Container container) { - this.container = container; + this.container = container; } public void setCreatedOn(final Long createdOn) { - this.createdOn = createdOn; + this.createdOn = createdOn; } public void setDeletedOn(final Date date) { - this.deletedOn = date; + this.deletedOn = date; } public void setFilename(final String filename) { - this.filename = filename; + this.filename = filename; } public void setId(final Long id) { - this.id = id; + this.id = id; } public void setLanguage(final I18nLanguage language) { - this.language = language; + this.language = language; } public void setLastRevision(final Revision revision) { - this.lastRevision = revision; + this.lastRevision = revision; } public void setLicense(final License license) { - this.license = license; + this.license = license; } public void setMimeType(final BasicMimeType mimeType) { - this.mimeType = mimeType; + this.mimeType = mimeType; } public void setPublishedOn(final Date publishedOn) { - this.publishedOn = publishedOn; + this.publishedOn = publishedOn; } public void setStatus(final ContentStatus status) { - this.status = status; + this.status = status; } public void setTags(final List<Tag> tags) { - this.tags = tags; + this.tags = tags; } public void setTranslations(final List<ContentTranslation> translations) { - this.translations = translations; + this.translations = translations; } public void setTypeId(final String typeId) { - this.typeId = typeId; + this.typeId = typeId; } public void setVersion(final int version) { - this.version = version; + this.version = version; } } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/domain/Group.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/domain/Group.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/Group.java 2008-10-16 14:34:33 UTC (rev 913) @@ -80,10 +80,6 @@ @Length(min = 3, max = 50, message = "longName between 3 and 50 chars of lenght") private String longName; - @Field(index = Index.TOKENIZED, store = Store.NO) - @Length(max = 255, message = "Public desc max 255 chars of lenght") - private String publicDesc; - @OneToOne private Content defaultContent; @@ -102,186 +98,182 @@ private String workspaceTheme; public Group() { - this(null, null, null, null); + this(null, null, null, null); } public Group(final String shortName, final String longName) { - this(shortName, longName, null, GroupType.PROJECT); + this(shortName, longName, null, GroupType.PROJECT); } public Group(final String shortName, final String longName, final License defaultLicense, final GroupType type) { - this.shortName = shortName; - this.longName = longName; - this.toolsConfig = new HashMap<String, ToolConfiguration>(); - this.socialNetwork = new SocialNetwork(); - this.defaultLicense = defaultLicense; - this.type = type; - this.admissionType = AdmissionType.Moderated; + this.shortName = shortName; + this.longName = longName; + this.toolsConfig = new HashMap<String, ToolConfiguration>(); + this.socialNetwork = new SocialNetwork(); + this.defaultLicense = defaultLicense; + this.type = type; + this.admissionType = AdmissionType.Moderated; } @Override public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - final Group other = (Group) obj; - if (shortName == null) { - if (other.shortName != null) { - return false; - } - } else if (!shortName.equals(other.shortName)) { - return false; - } - return true; + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final Group other = (Group) obj; + if (shortName == null) { + if (other.shortName != null) { + return false; + } + } else if (!shortName.equals(other.shortName)) { + return false; + } + return true; } public boolean existToolConfig(final String toolName) { - return toolsConfig.get(toolName) != null; + return toolsConfig.get(toolName) != null; } @Finder(query = "FROM Group g WHERE g.id IN (SELECT g.id FROM g.socialNetwork.accessLists.admins.list adm WHERE adm.id = :groupid)") - public List<Group> findAdminInGroups(@Named("groupid") - final Long groupId) { - return null; + public List<Group> findAdminInGroups(@Named("groupid") final Long groupId) { + return null; } @Finder(query = "FROM Group g WHERE g.shortName = :shortName") - public Group findByShortName(@Named("shortName") - final String shortName) { - return null; + public Group findByShortName(@Named("shortName") final String shortName) { + return null; } @Finder(query = "FROM Group g WHERE g.id IN (SELECT g.id FROM g.socialNetwork.accessLists.editors.list AS ed WHERE ed.id = :groupid)") - public List<Group> findCollabInGroups(@Named("groupid") - final Long groupId) { - return null; + public List<Group> findCollabInGroups(@Named("groupid") final Long groupId) { + return null; } + @Finder(query = "SELECT t.root.toolName FROM ToolConfiguration t WHERE t.enabled=true AND t.root.owner.id = :groupid") + public List<String> findEnabledTools(@Named("groupid") final Long groupId) { + return null; + } + public AdmissionType getAdmissionType() { - return admissionType; + return admissionType; } @Finder(query = "FROM Group") public List<Group> getAll() { - return null; + return null; } public Content getDefaultContent() { - return defaultContent; + return defaultContent; } public License getDefaultLicense() { - return defaultLicense; + return defaultLicense; } public Content getGroupLogo() { - return groupLogo; + return groupLogo; } public Long getId() { - return id; + return id; } public String getLongName() { - return longName; + return longName; } - public String getPublicDesc() { - return publicDesc; - } - public Container getRoot(final String toolName) { - return toolsConfig.get(toolName).getRoot(); + return toolsConfig.get(toolName).getRoot(); } public String getShortName() { - return shortName; + return shortName; } public SocialNetwork getSocialNetwork() { - return socialNetwork; + return socialNetwork; } public ToolConfiguration getToolConfiguration(final String name) { - return toolsConfig.get(name); + return toolsConfig.get(name); } public Map<String, ToolConfiguration> getToolsConfig() { - return toolsConfig; + return toolsConfig; } public GroupType getType() { - return type; + return type; } public String getWorkspaceTheme() { - return workspaceTheme; + return workspaceTheme; } @Override public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + (shortName == null ? 0 : shortName.hashCode()); - return result; + final int prime = 31; + int result = 1; + result = prime * result + (shortName == null ? 0 : shortName.hashCode()); + return result; } public void setAdmissionType(final AdmissionType admissionType) { - this.admissionType = admissionType; + this.admissionType = admissionType; } public void setDefaultContent(final Content defaultContent) { - this.defaultContent = defaultContent; + this.defaultContent = defaultContent; } public void setDefaultLicense(final License defaultLicense) { - this.defaultLicense = defaultLicense; + this.defaultLicense = defaultLicense; } public void setGroupLogo(final Content groupLogo) { - this.groupLogo = groupLogo; + this.groupLogo = groupLogo; } public void setId(final Long id) { - this.id = id; + this.id = id; } public void setLongName(final String longName) { - this.longName = longName; + this.longName = longName; } - public void setPublicDesc(final String publicDesc) { - this.publicDesc = publicDesc; - } - public void setShortName(final String shortName) { - this.shortName = shortName; + this.shortName = shortName; } public void setSocialNetwork(final SocialNetwork socialNetwork) { - this.socialNetwork = socialNetwork; + this.socialNetwork = socialNetwork; } public ToolConfiguration setToolConfig(final String name, final ToolConfiguration config) { - toolsConfig.put(name, config); - return config; + toolsConfig.put(name, config); + return config; } public void setType(final GroupType type) { - this.type = type; + this.type = type; } public void setWorkspaceTheme(final String workspaceTheme) { - this.workspaceTheme = workspaceTheme; + this.workspaceTheme = workspaceTheme; } + @Override public String toString() { - return "Group[" + shortName + "]"; + return "Group[" + shortName + "]"; } + } \ No newline at end of file Modified: trunk/src/main/java/org/ourproject/kune/platf/server/domain/ToolConfiguration.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/domain/ToolConfiguration.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/ToolConfiguration.java 2008-10-16 14:34:33 UTC (rev 913) @@ -34,25 +34,19 @@ @Id @GeneratedValue private Long id; - private boolean enabled; @OneToOne(cascade = { CascadeType.MERGE, CascadeType.PERSIST }) private Container root; - public Container setRoot(final Container root) { - this.root = root; - return root; + public ToolConfiguration() { + enabled = true; } public Long getId() { return id; } - public void setId(final Long id) { - this.id = id; - } - public Container getRoot() { return root; } @@ -65,4 +59,13 @@ this.enabled = enabled; } + public void setId(final Long id) { + this.id = id; + } + + public Container setRoot(final Container root) { + this.root = root; + return root; + } + } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/domain/User.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/domain/User.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/User.java 2008-10-16 14:34:33 UTC (rev 913) @@ -55,7 +55,7 @@ public static final User UNKNOWN_USER = new User(); public static boolean isKnownUser(final User user) { - return user != UNKNOWN_USER; + return user != UNKNOWN_USER; } @Id @@ -102,118 +102,117 @@ private final CustomProperties customProperties; public User() { - this(null, null, null, null, null, null, null); + this(null, null, null, null, null, null, null); } public User(final String shortName, final String longName, final String email, final String passwd, - final I18nLanguage language, final I18nCountry country, final TimeZone timezone) { - this.shortName = shortName; - this.name = longName; - this.email = email; - this.password = passwd; - this.userGroup = Group.NO_GROUP; - this.language = language; - this.country = country; - this.timezone = timezone; - customProperties = new CustomProperties(); + final I18nLanguage language, final I18nCountry country, final TimeZone timezone) { + this.shortName = shortName; + this.name = longName; + this.email = email; + this.password = passwd; + this.userGroup = null; + this.language = language; + this.country = country; + this.timezone = timezone; + customProperties = new CustomProperties(); } @Finder(query = "from User") public List<User> getAll() { - return null; + return null; } @Finder(query = "from User where email = :email") - public User getByEmail(@Named("email") - final String email) { - return null; + public User getByEmail(@Named("email") final String email) { + return null; } @Finder(query = "from User where shortName = :shortName") - public User getByShortName(@Named("shortName") - final String shortName) { - return null; + public User getByShortName(@Named("shortName") final String shortName) { + return null; } public I18nCountry getCountry() { - return country; + return country; } public CustomProperties getCustomProperties() { - return customProperties; + return customProperties; } public String getEmail() { - return email; + return email; } public Long getId() { - return id; + return id; } public I18nLanguage getLanguage() { - return language; + return language; } public String getName() { - return name; + return name; } public String getPassword() { - return password; + return password; } public String getShortName() { - return shortName; + return shortName; } public TimeZone getTimezone() { - return timezone; + return timezone; } public Group getUserGroup() { - return userGroup; + return userGroup; } public void setCountry(final I18nCountry country) { - this.country = country; + this.country = country; } public void setEmail(final String email) { - this.email = email; + this.email = email; } public void setId(final Long id) { - this.id = id; + this.id = id; } public void setLanguage(final I18nLanguage language) { - this.language = language; + this.language = language; } public void setName(final String name) { - this.name = name; + this.name = name; } public void setPassword(final String password) { - this.password = password; - // http://www.dynamic.net.au/christos/crypt/ - // Use UnixCrypt (jetty) + this.password = password; + // http://www.dynamic.net.au/christos/crypt/ + // Use UnixCrypt (jetty) } public void setShortName(final String shortName) { - this.shortName = shortName; + this.shortName = shortName; } public void setTimezone(final TimeZone timezone) { - this.timezone = timezone; + this.timezone = timezone; } public void setUserGroup(final Group userGroup) { - this.userGroup = userGroup; + this.userGroup = userGroup; } + @Override public String toString() { - return "User[" + shortName + "]"; + return "User[" + shortName + "]"; } } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/init/DatabaseInitializer.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/init/DatabaseInitializer.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/server/init/DatabaseInitializer.java 2008-10-16 14:34:33 UTC (rev 913) @@ -59,134 +59,134 @@ @Inject public DatabaseInitializer(final DatabaseProperties properties, final UserManager userManager, - final GroupManager groupManager, final LicenseManager licenseManager, - final I18nLanguageManager languageManager, final I18nCountryManager countryManager, - final I18nTranslationManager translationManager, final ContentManager contentManager) { - this.properties = properties; - this.userManager = userManager; - this.groupManager = groupManager; - this.licenseManager = licenseManager; - this.languageManager = languageManager; - this.countryManager = countryManager; - this.translationManager = translationManager; - this.contentManager = contentManager; + final GroupManager groupManager, final LicenseManager licenseManager, + final I18nLanguageManager languageManager, final I18nCountryManager countryManager, + final I18nTranslationManager translationManager, final ContentManager contentManager) { + this.properties = properties; + this.userManager = userManager; + this.groupManager = groupManager; + this.licenseManager = licenseManager; + this.languageManager = languageManager; + this.countryManager = countryManager; + this.translationManager = translationManager; + this.contentManager = contentManager; } public void createOthers() { - final I18nLanguage english = new I18nLanguage(new Long(1819), "en", "ltr", "English", "", "", "en", "eng", - "eng", false, "", "", "", "c == 1 ? 1 : 2", null, "L"); - final I18nLanguage spanish = new I18nLanguage(new Long(5889), "es", "ltr", "Spanish", "", "", "es", "spa", - "spa", true, "Español", "", "", "c == 1 ? 1 : 2", null, "L"); - languageManager.persist(english); - languageManager.persist(spanish); - final I18nCountry gb = new I18nCountry(new Long(75), "GB", "GBP", ".", "£%n", "", ".", "United Kingdom", - "western", ","); - countryManager.persist(gb); - final I18nTranslation test = new I18nTranslation("test", english, "test"); - translationManager.persist(test); + final I18nLanguage english = new I18nLanguage(new Long(1819), "en", "ltr", "English", "", "", "en", "eng", + "eng", false, "", "", "", "c == 1 ? 1 : 2", null, "L"); + final I18nLanguage spanish = new I18nLanguage(new Long(5889), "es", "ltr", "Spanish", "", "", "es", "spa", + "spa", true, "Español", "", "", "c == 1 ? 1 : 2", null, "L"); + languageManager.persist(english); + languageManager.persist(spanish); + final I18nCountry gb = new I18nCountry(new Long(75), "GB", "GBP", ".", "£%n", "", ".", "United Kingdom", + "western", ","); + countryManager.persist(gb); + final I18nTranslation test = new I18nTranslation("test", english, "test"); + translationManager.persist(test); } public void initConditional() throws Exception { - try { - groupManager.getDefaultGroup(); - } catch (final NoResultException e) { - initDatabase(); - } + try { + groupManager.getDefaultGroup(); + } catch (final NoResultException e) { + initDatabase(); + } } @Transactional(type = TransactionType.READ_WRITE) public void initDatabase() throws Exception { - createOthers(); - createLicenses(); - createDefUsersGroup(); + createOthers(); + createLicenses(); + createDefUsersGroup(); } private void createDefUsersGroup() throws Exception, UserMustBeLoggedException { - final String adminName = properties.getAdminUserName(); - final String adminShortName = properties.getAdminShortName(); - final String adminEmail = properties.getAdminEmail(); - final String adminPassword = properties.getAdminPassword(); - // FIXME: - final User user = new User(adminShortName, adminName, adminEmail, adminPassword, languageManager - .findByCode("en"), countryManager.findByCode("GB"), TimeZone.getDefault()); - groupManager.createUserGroup(user); + final String adminName = properties.getAdminUserName(); + final String adminShortName = properties.getAdminShortName(); + final String adminEmail = properties.getAdminEmail(); + final String adminPassword = properties.getAdminPassword(); + // FIXME: + final User user = new User(adminShortName, adminName, adminEmail, adminPassword, languageManager + .findByCode("en"), countryManager.findByCode("GB"), TimeZone.getDefault()); + groupManager.createUserGroup(user, false); - final String siteName = properties.getDefaultSiteName(); - final String siteShortName = properties.getDefaultSiteShortName(); - final String defaultLicenseId = properties.getDefaultLicense(); - final License defaultLicense = licenseManager.findByShortName(defaultLicenseId); + final String siteName = properties.getDefaultSiteName(); + final String siteShortName = properties.getDefaultSiteShortName(); + final String defaultLicenseId = properties.getDefaultLicense(); + final License defaultLicense = licenseManager.findByShortName(defaultLicenseId); - final Group siteGroup = new Group(siteShortName, siteName, defaultLicense, GroupType.PROJECT); - groupManager.createGroup(siteGroup, user); + final Group siteGroup = new Group(siteShortName, siteName, defaultLicense, GroupType.PROJECT); + groupManager.createGroup(siteGroup, user); - userManager.reIndex(); - groupManager.reIndex(); + userManager.reIndex(); + groupManager.reIndex(); - final Content defaultContent = siteGroup.getDefaultContent(); - contentManager - .save(user, defaultContent, - "<img src=\"http://kune.ourproject.org/IMG/cache-200x37/siteon0-200x37.png\" " - + "align=\"right\">This a initial demo of " - + "<a href=\"http://kune.ourproject.org\">kune</a>." - + "<br><div style=\"text-align: right;\"><br></div>" - + "Kune is currently under initial development.<br>" - + "<br>To test it, <a href=\"#signin\">sign in registering an user</a>, " - + "but take into account that:<br><ul><li>kune is not optimized yet, " - + "then the initial load and other operations maybe are slow.</li>" - + "<li>Don\'t use passwords that you are using in other sites " - + "(kune isn\'t secure yet storing passwords).</li>" - + "<li>The site is divided in two main areas: the public " - + "space and the workspace:</li><ul>" - + "<li>The workspace is the most important part of kune, " - + "because is where users collaborate and communicates which each others. " - + "This part is the most dynamic and we are using modern " - + "(and sometimes experimental) web technologies to improve the end user " - + "experience. I heavily under development.<br></li>" - + "<li>The public space is currently lest developed. " - + "Our main goal is to offer customs and configurable styles " - + "for groups/users contents.</li></ul></ul><font size=\"4\"><br>" - + "We need your feedback<br><br></font>Please help us to improve this software " - + "reporting <a href=\"http://code.google.com/p/kune/issues\">bugs and/or " - + "suggestions</a>. Also you <a href=\"#translate\">help us to translate it</a> " - + "into other languages.<br><br>Thank you,<br>" - + "<br>--<br><span style=\"font-style: italic;\">" - + "The kune development team</span><br><br>"); - contentManager.renameContent(user, defaultContent.getId(), "Welcome to kune demo"); - contentManager.setStatus(defaultContent.getId(), ContentStatus.publishedOnline); + final Content defaultContent = siteGroup.getDefaultContent(); + contentManager + .save(user, defaultContent, + "<img src=\"http://kune.ourproject.org/IMG/cache-200x37/siteon0-200x37.png\" " + + "align=\"right\">This a initial demo of " + + "<a href=\"http://kune.ourproject.org\">kune</a>." + + "<br><div style=\"text-align: right;\"><br></div>" + + "Kune is currently under initial development.<br>" + + "<br>To test it, <a href=\"#signin\">sign in registering an user</a>, " + + "but take into account that:<br><ul><li>kune is not optimized yet, " + + "then the initial load and other operations maybe are slow.</li>" + + "<li>Don\'t use passwords that you are using in other sites " + + "(kune isn\'t secure yet storing passwords).</li>" + + "<li>The site is divided in two main areas: the public " + + "space and the workspace:</li><ul>" + + "<li>The workspace is the most important part of kune, " + + "because is where users collaborate and communicates which each others. " + + "This part is the most dynamic and we are using modern " + + "(and sometimes experimental) web technologies to improve the end user " + + "experience. I heavily under development.<br></li>" + + "<li>The public space is currently lest developed. " + + "Our main goal is to offer customs and configurable styles " + + "for groups/users contents.</li></ul></ul><font size=\"4\"><br>" + + "We need your feedback<br><br></font>Please help us to improve this software " + + "reporting <a href=\"http://code.google.com/p/kune/issues\">bugs and/or " + + "suggestions</a>. Also you <a href=\"#translate\">help us to translate it</a> " + + "into other languages.<br><br>Thank you,<br>" + + "<br>--<br><span style=\"font-style: italic;\">" + + "The kune development team</span><br><br>"); + contentManager.renameContent(user, defaultContent.getId(), "Welcome to kune demo"); + contentManager.setStatus(defaultContent.getId(), ContentStatus.publishedOnline); } private void createLicenses() { - // FIXME: add version to name - License license = new License("by", "Creative Commons Attribution", "None", - "http://creativecommons.org/licenses/by/3.0/", true, false, false, "FIXME: Here CC RDF", - "images/lic/by80x15.png"); - licenseManager.persist(license); - license = new License("by-sa", "Creative Commons Attribution-ShareAlike", "None", - "http://creativecommons.org/licenses/by-sa/3.0/", true, true, false, "FIXME: Here CC RDF", - "images/lic/bysa80x15.png"); - licenseManager.persist(license); - license = new License("by-nd", "Creative Commons Attribution-NoDerivs", "None", - "http://creativecommons.org/licenses/by-nd/3.0/", true, false, false, "FIXME: Here CC RDF", - "images/lic/bynd80x15.png"); - licenseManager.persist(license); - license = new License("by-nc", "Creative Commons Attribution-NonCommercial", "None", - "http://creativecommons.org/licenses/by-nc/3.0/", true, false, false, "FIXME: Here CC RDF", - "images/lic/bync80x15.png"); - licenseManager.persist(license); - license = new License("by-nc-sa", "Creative Commons Attribution-NonCommercial-ShareAlike", "None", - "http://creativecommons.org/licenses/by-nc-sa/3.0/", true, false, false, "FIXME: Here CC RDF", - "images/lic/byncsa80x15.png"); - licenseManager.persist(license); - license = new License("by-nc-nd", "Creative Commons Attribution-NonCommercial-NoDerivs", "None", - "http://creativecommons.org/licenses/by-nc-nd/3.0/", true, false, false, "FIXME: Here CC RDF", - "images/lic/byncnd80x15.png"); - licenseManager.persist(license); - license = new License("gfdl", "GNU Free Documentation License", "None", "http://www.gnu.org/copyleft/fdl.html", - false, true, false, "", "images/lic/gnu-fdl.gif"); - licenseManager.persist(license); - license = new License("fal", "Free Art License", "None", "http://artlibre.org/licence/lal/en/", false, true, - false, "", "images/lic/fal-license.gif"); - licenseManager.persist(license); + // FIXME: add version to name + License license = new License("by", "Creative Commons Attribution", "None", + "http://creativecommons.org/licenses/by/3.0/", true, false, false, "FIXME: Here CC RDF", + "images/lic/by80x15.png"); + licenseManager.persist(license); + license = new License("by-sa", "Creative Commons Attribution-ShareAlike", "None", + "http://creativecommons.org/licenses/by-sa/3.0/", true, true, false, "FIXME: Here CC RDF", + "images/lic/bysa80x15.png"); + licenseManager.persist(license); + license = new License("by-nd", "Creative Commons Attribution-NoDerivs", "None", + "http://creativecommons.org/licenses/by-nd/3.0/", true, false, false, "FIXME: Here CC RDF", + "images/lic/bynd80x15.png"); + licenseManager.persist(license); + license = new License("by-nc", "Creative Commons Attribution-NonCommercial", "None", + "http://creativecommons.org/licenses/by-nc/3.0/", true, false, false, "FIXME: Here CC RDF", + "images/lic/bync80x15.png"); + licenseManager.persist(license); + license = new License("by-nc-sa", "Creative Commons Attribution-NonCommercial-ShareAlike", "None", + "http://creativecommons.org/licenses/by-nc-sa/3.0/", true, false, false, "FIXME: Here CC RDF", + "images/lic/byncsa80x15.png"); + licenseManager.persist(license); + license = new License("by-nc-nd", "Creative Commons Attribution-NonCommercial-NoDerivs", "None", + "http://creativecommons.org/licenses/by-nc-nd/3.0/", true, false, false, "FIXME: Here CC RDF", + "images/lic/byncnd80x15.png"); + licenseManager.persist(license); + license = new License("gfdl", "GNU Free Documentation License", "None", "http://www.gnu.org/copyleft/fdl.html", + false, true, false, "", "images/lic/gnu-fdl.gif"); + licenseManager.persist(license); + license = new License("fal", "Free Art License", "None", "http://artlibre.org/licence/lal/en/", false, true, + false, "", "images/lic/fal-license.gif"); + licenseManager.persist(license); } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/manager/GroupManager.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/manager/GroupManager.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/GroupManager.java 2008-10-16 14:34:33 UTC (rev 913) @@ -39,12 +39,17 @@ Group createUserGroup(User user) throws GroupNameInUseException, EmailAddressInUseException; + Group createUserGroup(User user, boolean wantPersonalHomepage) throws GroupNameInUseException, + EmailAddressInUseException; + List<Group> findAdminInGroups(Long groupId); Group findByShortName(String groupName); List<Group> findCollabInGroups(Long groupId); + List<String> findEnabledTools(Long id); + Group getDefaultGroup(); /** Modified: trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/GroupManagerDefault.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/GroupManagerDefault.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/GroupManagerDefault.java 2008-10-16 14:34:33 UTC (rev 913) @@ -20,6 +20,7 @@ package org.ourproject.kune.platf.server.manager.impl; +import java.util.Collection; import java.util.List; import javax.persistence.EntityExistsException; @@ -48,7 +49,7 @@ import org.ourproject.kune.platf.server.properties.DatabaseProperties; import org.ourproject.kune.platf.server.properties.KuneProperties; import org.ourproject.kune.platf.server.tool.ServerTool; -import org.ourproject.kune.platf.server.tool.ToolRegistry; +import org.ourproject.kune.platf.server.tool.ServerToolRegistry; import com.google.inject.Inject; import com.google.inject.Provider; @@ -58,152 +59,167 @@ public class GroupManagerDefault extends DefaultManager<Group, Long> implements GroupManager { private final Group finder; - private final ToolRegistry registry; + private final ServerToolRegistry registry; private final DatabaseProperties properties; private final License licenseFinder; private final KuneProperties kuneProperties; private final User userFinder; + private final ServerToolRegistry serverToolRegistry; @Inject public GroupManagerDefault(final Provider<EntityManager> provider, final Group finder, final User userFinder, - final KuneProperties kuneProperties, final DatabaseProperties properties, final ToolRegistry registry, - final License licenseFinder) { - super(provider, Group.class); - this.finder = finder; - this.userFinder = userFinder; - this.kuneProperties = kuneProperties; - this.properties = properties; - this.registry = registry; - this.licenseFinder = licenseFinder; + final KuneProperties kuneProperties, final DatabaseProperties properties, + final ServerToolRegistry registry, final License licenseFinder, ServerToolRegistry serverToolRegistry) { + super(provider, Group.class); + this.finder = finder; + this.userFinder = userFinder; + this.kuneProperties = kuneProperties; + this.properties = properties; + this.registry = registry; + this.licenseFinder = licenseFinder; + this.serverToolRegistry = serverToolRegistry; } public void changeWsTheme(final User user, final Group group, final String theme) throws AccessViolationException { - // TODO: check theme - group.setWorkspaceTheme(theme); + // TODO: check theme + group.setWorkspaceTheme(theme); } public Group createGroup(final Group group, final User user) throws GroupNameInUseException, - UserMustBeLoggedException { - final String defaultSiteWorkspaceTheme = kuneProperties.get(KuneProperties.WS_THEMES_DEF); - if (User.isKnownUser(user)) { - if (group.getType().equals(GroupType.COMMUNITY)) { - group.setAdmissionType(AdmissionType.Open); - } else if (group.getType().equals(GroupType.ORGANIZATION)) { - group.setAdmissionType(AdmissionType.Moderated); - } else if (group.getType().equals(GroupType.PROJECT)) { - group.setAdmissionType(AdmissionType.Moderated); - } else if (group.getType().equals(GroupType.ORPHANED_PROJECT)) { - group.setAdmissionType(AdmissionType.Open); - } - final String licName = group.getDefaultLicense().getShortName(); - final License license = licenseFinder.findByShortName(licName); - group.setDefaultLicense(license); - group.setWorkspaceTheme(defaultSiteWorkspaceTheme); - initSocialNetwork(group, user.getUserGroup()); - initGroup(user, group); - return group; - } else { - throw new UserMustBeLoggedException(); - } - + UserMustBeLoggedException { + final String defaultSiteWorkspaceTheme = kuneProperties.get(KuneProperties.WS_THEMES_DEF); + if (User.isKnownUser(user)) { + if (group.getType().equals(GroupType.COMMUNITY)) { + group.setAdmissionType(AdmissionType.Open); + } else if (group.getType().equals(GroupType.ORGANIZATION)) { + group.setAdmissionType(AdmissionType.Moderated); + } else if (group.getType().equals(GroupType.PROJECT)) { + group.setAdmissionType(AdmissionType.Moderated); + } else if (group.getType().equals(GroupType.ORPHANED_PROJECT)) { + group.setAdmissionType(AdmissionType.Open); + } + final String licName = group.getDefaultLicense().getShortName(); + final License license = licenseFinder.findByShortName(licName); + group.setDefaultLicense(license); + group.setWorkspaceTheme(defaultSiteWorkspaceTheme); + initSocialNetwork(group, user.getUserGroup()); + initGroup(user, group, serverToolRegistry.getToolsForGroupsKeys()); + return group; + } else { + throw new UserMustBeLoggedException(); + } } public Group createUserGroup(final User user) throws GroupNameInUseException, EmailAddressInUseException { - final String defaultSiteWorkspaceTheme = kuneProperties.get(KuneProperties.WS_THEMES_DEF); - final String licenseDefId = properties.getDefaultLicense(); - final License licenseDef = licenseFinder.findByShortName(licenseDefId); - final Group userGroup = new Group(user.getShortName(), user.getName(), licenseDef, GroupType.PERSONAL); - User userSameEmail = null; - try { - userSameEmail = userFinder.getByEmail(user.getEmail()); - } catch (final NoResultException e) { - // Ok, no more with this email - } - if (userSameEmail != null) { - throw new EmailAddressInUseException(); - } - userGroup.setAdmissionType(AdmissionType.Closed); - userGroup.setWorkspaceTheme(defaultSiteWorkspaceTheme); - user.setUserGroup(userGroup); - initSocialNetwork(userGroup, userGroup); - try { - initGroup(user, userGroup); - super.persist(user, User.class); - } catch (final EntityExistsException e) { - throw new GroupNameInUseException(); - } - return userGroup; + return createUserGroup(user, true); } + public Group createUserGroup(User user, boolean wantPersonalHomepage) throws GroupNameInUseException, + EmailAddressInUseException { + final String defaultSiteWorkspaceTheme = kuneProperties.get(KuneProperties.WS_THEMES_DEF); + final String licenseDefId = properties.getDefaultLicense(); + final License licenseDef = licenseFinder.findByShortName(licenseDefId); + final Group userGroup = new Group(user.getShortName(), user.getName(), licenseDef, GroupType.PERSONAL); + User userSameEmail = null; + try { + userSameEmail = userFinder.getByEmail(user.getEmail()); + } catch (final NoResultException e) { + // Ok, no more with this email + } + if (userSameEmail != null) { + throw new EmailAddressInUseException(); + } + userGroup.setAdmissionType(AdmissionType.Closed); + userGroup.setWorkspaceTheme(defaultSiteWorkspaceTheme); + userGroup.setDefaultContent(null); + user.setUserGroup(userGroup); + initSocialNetwork(userGroup, userGroup); + try { + initGroup(user, userGroup, wantPersonalHomepage ? serverToolRegistry.getToolsForUserKeys() + : ServerToolRegistry.emptyToolList); + super.persist(user, User.class); + } catch (final EntityExistsException e) { + throw new GroupNameInUseException(); + } + return userGroup; + } + public List<Group> findAdminInGroups(final Long groupId) { - return finder.findAdminInGroups(groupId); + return finder.findAdminInGroups(groupId); } public Group findByShortName(final String shortName) { - return finder.findByShortName(shortName); + return finder.findByShortName(shortName); } public List<Group> findCollabInGroups(final Long groupId) { - return finder.findCollabInGroups(groupId); + return finder.findCollabInGroups(groupId); } + public List<String> findEnabledTools(Long id) { + return finder.findEnabledTools(id); + } + public Group getDefaultGroup() { - final String shortName = properties.getDefaultSiteShortName(); - return findByShortName(shortName); + final String shortName = properties.getDefaultSiteShortName(); + return findByShortName(shortName); } public Group getGroupOfUserWithId(final Long userId) { - return userId != null ? find(User.class, userId).getUserGroup() : null; + return userId != null ? find(User.class, userId).getUserGroup() : null; } public SearchResult<Group> search(final String search) { - return this.search(search, null, null); + return this.search(search, null, null); } public SearchResult<Group> search(final String search, final Integer firstResult, final Integer maxResults) { - final MultiFieldQueryParser parser = new MultiFieldQueryParser(new String[] { "longName", "shortName", - "publicDesc" }, new StandardAnalyzer()); - Query query; - try { - query = parser.parse(search); - } catch (final ParseException e) { - throw new RuntimeException("Error parsing search"); - } - return super.search(query, firstResult, maxResults); + final MultiFieldQueryParser parser = new MultiFieldQueryParser(new String[] { "longName", "shortName", + "publicDesc" }, new StandardAnalyzer()); + Query query; + try { + query = parser.parse(search); + } catch (final ParseException e) { + throw new RuntimeException("Error parsing search"); + } + return super.search(query, firstResult, maxResults); } public void setDefaultContent(final String groupShortName, final Content content) { - final Group group = findByShortName(groupShortName); - group.setDefaultContent(content); + final Group group = findByShortName(groupShortName); + group.setDefaultContent(content); } public void setGroupLogo(final Group group, final Content content) { - if (content.getMimeType().getType().equals("image")) { - group.setGroupLogo(content); - } else { - new DefaultException("Trying to set not a image as group logo"); - } + if (content.getMimeType().getType().equals("image")) { + group.setGroupLogo(content); + } else { + new DefaultException("Trying to set not a image as group logo"); + } } - private void initGroup(final User user, final Group group) throws GroupNameInUseException { - try { - persist(group); - } catch (final EntityExistsException e) { - throw new GroupNameInUseException(); - } - for (final ServerTool tool : registry.all()) { - tool.initGroup(user, group); - } + private void initGroup(final User user, final Group group, Collection<String> toolsToEnable) + throws GroupNameInUseException { + try { + persist(group); + } catch (final EntityExistsException e) { + throw new GroupNameInUseException(); + } + for (final ServerTool tool : registry.all()) { + if (toolsToEnable.contains(tool.getName())) { + tool.initGroup(user, group); + } + } } private void initSocialNetwork(final Group group, final Group userGroup) { - final SocialNetwork network = group.getSocialNetwork(); - final AccessLists lists = network.getAccessLists(); - lists.getEditors().setMode(GroupListMode.NOBODY); - lists.getViewers().setMode(GroupListMode.EVERYONE); - if (!group.getType().equals(GroupType.ORPHANED_PROJECT)) { - network.addAdmin(userGroup); - } + final SocialNetwork network = group.getSocialNetwork(); + final AccessLists lists = network.getAccessLists(); + lists.getEditors().setMode(GroupListMode.NOBODY); + lists.getViewers().setMode(GroupListMode.EVERYONE); + if (!group.getType().equals(GroupType.ORPHANED_PROJECT)) { + network.addAdmin(userGroup); + } } } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/rpc/ContentRPC.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/rpc/ContentRPC.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/server/rpc/ContentRPC.java 2008-10-16 14:34:33 UTC (rev 913) @@ -93,133 +93,133 @@ @Inject public ContentRPC(final Provider<UserSession> userSessionProvider, final AccessService accessService, - final AccessRightsService rightsService, final StateService stateService, - final CreationService creationService, final GroupManager groupManager, final XmppManager xmppManager, - final ContentManager contentManager, final ContainerManager containerManager, final TagManager tagManager, - final SocialNetworkManager socialNetworkManager, final CommentManager commentManager, final Mapper mapper) { - this.userSessionProvider = userSessionProvider; - this.accessService = accessService; - this.rightsService = rightsService; - this.stateService = stateService; - this.creationService = creationService; - this.groupManager = groupManager; - this.xmppManager = xmppManager; - this.contentManager = contentManager; - this.containerManager = containerManager; - this.tagManager = tagManager; - this.socialNetworkManager = socialNetworkManager; - this.commentManager = commentManager; - this.mapper = mapper; + final AccessRightsService rightsService, final StateService stateService, + final CreationService creationService, final GroupManager groupManager, final XmppManager xmppManager, + final ContentManager contentManager, final ContainerManager containerManager, final TagManager tagManager, + final SocialNetworkManager socialNetworkManager, final CommentManager commentManager, final Mapper mapper) { + this.userSessionProvider = userSessionProvider; + this.accessService = accessService; + this.rightsService = rightsService; + this.stateService = stateService; + this.creationService = creationService; + this.groupManager = groupManager; + this.xmppManager = xmppManager; + this.contentManager = contentManager; + this.containerManager = containerManager; + this.tagManager = tagManager; + this.socialNetworkManager = socialNetworkManager; + this.commentManager = commentManager; + this.mapper = mapper; } @Authenticated @Authorizated(accessRolRequired = AccessRol.Editor) @Transactional(type = TransactionType.READ_WRITE) public void addAuthor(final String userHash, final StateToken token, final String authorShortName) - throws DefaultException { - final Long contentId = ContentUtils.parseId(token.getDocument()); - final UserSession userSession = getUserSession(); - final User user = userSession.getUser(); - contentManager.addAuthor(user, contentId, authorShortName); + throws DefaultException { + final Long contentId = ContentUtils.parseId(token.getDocument()); + final UserSession userSession = getUserSession(); + final User user = userSession.getUser(); + contentManager.addAuthor(user, contentId, authorShortName); } @Authenticated @Authorizated(accessRolRequired = AccessRol.Viewer) @Transactional(type = TransactionType.READ_WRITE) public CommentDTO addComment(final String userHash, final StateToken token, final Long parentCommentId, - final String commentText) throws DefaultException { - final UserSession userSession = getUserSession(); - final User author = userSession.getUser(); - final Long contentId = ContentUtils.parseId(token.getDocument()); - final Comment comment = commentManager.addComment(author, contentId, commentText, parentCommentId); - return mapper.map(comment, CommentDTO.class); + final String commentText) throws DefaultException { + final UserSession userSession = getUserSession(); + final User author = userSession.getUser(); + final Long contentId = ContentUtils.parseId(token.getDocument()); + final Comment comment = commentManager.addComment(author, contentId, commentText, parentCommentId); + return mapper.map(comment, CommentDTO.class); } @Authenticated @Authorizated(accessRolRequired = AccessRol.Viewer) @Transactional(type = TransactionType.READ_WRITE) public CommentDTO addComment(final String userHash, final StateToken token, final String commentText) - throws DefaultException { - final UserSession userSession = getUserSession(); - final User author = userSession.getUser(); - final Long contentId = ContentUtils.parseId(token.getDocument()); - final Comment comment = commentManager.addComment(author, contentId, commentText); - return mapper.map(comment, CommentDTO.class); + throws DefaultException { + final UserSession userSession = getUserSession(); + final User author = userSession.getUser(); + final Long contentId = ContentUtils.parseId(token.getDocument()); + final Comment comment = commentManager.addComment(author, contentId, commentText); + return mapper.map(comment, CommentDTO.class); } @Authenticated @Authorizated(actionLevel = ActionLevel.container, accessRolRequired = AccessRol.Editor) @Transactional(type = TransactionType.READ_WRITE) public StateDTO addContent(final String userHash, final StateToken parentToken, final String title) - throws DefaultException { - final Group group = groupManager.findByShortName(parentToken.getGroup()); - final UserSession userSession = getUserSession(); - final User user = userSession.getUser(); - final boolean userIsLoggedIn = userSession.isUserLoggedIn(); - final Container container = accessService.accessToContainer(ContentUtils.parseId(parentToken.getFolder()), - user, AccessRol.Editor); - final Content addedContent = creationService.createContent(title, "", user, container); - final Access access = accessService.getAccess(user, addedContent.getStateToken(), group, AccessRol.Editor); - final State state = stateService.create(access); - completeState(user, userIsLoggedIn, group, state); - return mapState(state, user, group); + throws DefaultException { + final Group group = groupManager.findByShortName(parentToken.getGroup()); + final UserSession userSession = getUserSession(); + final User user = userSession.getUser(); + final boolean userIsLoggedIn = userSession.isUserLoggedIn(); + final Container container = accessService.accessToContainer(ContentUtils.parseId(parentToken.getFolder()), + user, AccessRol.Editor); + final Content addedContent = creationService.createContent(title, "", user, container); + final Access access = accessService.getAccess(user, addedContent.getStateToken(), group, AccessRol.Editor); + final State state = stateService.create(access); + completeState(user, userIsLoggedIn, group, state); + return mapState(state, user, group); } @Authenticated @Authorizated(actionLevel = ActionLevel.container, accessRolRequired = AccessRol.Editor) @Transactional(type = TransactionType.READ_WRITE) public StateDTO addFolder(final String userHash, final StateToken parentToken, final String title, - final String contentTypeId) throws DefaultException { - final Group group = groupManager.findByShortName(parentToken.getGroup()); - final UserSession userSession = getUserSession(); - final User user = userSession.getUser(); - final boolean userIsLoggedIn = userSession.isUserLoggedIn(); - final State state = createFolder(parentToken.getGroup(), ContentUtils.parseId(parentToken.getFolder()), title, - contentTypeId); - completeState(user, userIsLoggedIn, group, state); - return mapState(state, user, group); + final String contentTypeId) throws DefaultException { + final Group group = groupManager.findByShortName(parentToken.getGroup()); + final UserSession userSession = getUserSession(); + final User user = userSession.getUser(); + final boolean userIsLoggedIn = userSession.isUserLoggedIn(); + final State state = createFolder(parentToken.getGroup(), ContentUtils.parseId(parentToken.getFolder()), title, + contentTypeId); + completeState(user, userIsLoggedIn, group, state); + return mapState(state, user, group); } @Authenticated @Authorizated(actionLevel = ActionLevel.container, accessRolRequired = AccessRol.Editor) @Transactional(type = TransactionType.READ_WRITE) public StateDTO addRoom(final String userHash, final StateToken parentToken, final String roomName) - throws DefaultException { - final String groupShortName = parentToken.getGroup(); - final Group group = groupManager.findByShortName(groupShortName); - final UserSession userSession = getUserSession(); - final User user = userSession.getUser(); - final boolean userIsLoggedIn = userSession.isUserLoggedIn(); - final String userShortName = user.getShortName(); - final ChatConnection connection = xmppManager.login(userShortName, userSession.getUser().getPassword(), - userHash); - xmppManager.createRoom(connection, roomName, userShortName + userHash); - xmppManager.disconnect(connection); - try { - final State state = createFolder(groupShortName, ContentUtils.parseId(parentToken.getFolder()), roomName, - ChatServerTool.TYPE_ROOM); - completeState(user, userIsLoggedIn, group, state); - return mapState(state, user, group); - } catch (final ContentNotFoundException e) { - xmppManager.destroyRoom(connection, roomName); - throw new ContentNotFoundException(); - } catch (final AccessViolationException e) { - xmppManager.destroyRoom(connection, roomName); - throw new AccessViolationException(); - } catch (final GroupNotFoundException e) { - xmppManager.destroyRoom(connection, roomName); - throw new GroupNotFoundException(); - } + throws DefaultException { + final String groupShortName = parentToken.getGroup(); + final Group group = groupManager.findByShortName(groupShortName); + final UserSession userSession = getUserSession(); + final User user = userSession.getUser(); + final boolean userIsLoggedIn = userSession.isUserLoggedIn(); + final String userShortName = user.getShortName(); + final ChatConnection connection = xmppManager.login(userShortName, userSession.getUser().getPassword(), + userHash); + xmppManager.createRoom(connection, roomName, userShortName + userHash); + xmppManager.disconnect(connection); + try { + final State state = createFolder(groupShortName, ContentUtils.parseId(parentToken.getFolder()), roomName, + ChatServerTool.TYPE_ROOM); + completeState(user, userIsLoggedIn, group, state); + return mapState(state, user, group); + } catch (final ContentNotFoundException e) { + xmppManager.destroyRoom(connection, roomName); + throw new ContentNotFoundException(); + } catch (final AccessViolationException e) { + xmppManager.destroyRoom(connection, roomName); + throw new AccessViolationException(); + } catch (final GroupNotFoundException e) { + xmppManager.destroyRoom(connection, roomName); + throw new GroupNotFoundException(); + } } @Authenticated @Authorizated(accessRolRequired = AccessRol.Administrator) @Transactional(type = TransactionType.READ_WRITE) public void delContent(final String userHash, final StateToken token) throws DefaultException { - final Long contentId = ContentUtils.parseId(token.getDocument()); - final UserSession userSession = getUserSession(); - final User user = userSession.getUser(); - contentManager.delContent(user, contentId); + final Long contentId = ContentUtils.parseId(token.getDocument()); + final UserSession userSession = getUserSession(); + final User user = userSession.getUser(); + contentManager.delContent(user, contentId); } // Not using @Authorizated because accessService is doing this job and is @@ -228,257 +228,258 @@ @Authenticated(mandatory = false) @Transactional(type = TransactionType.READ_ONLY) public StateDTO getContent(final String userHash, final StateToken token) throws DefaultException { - Group defaultGroup; - final UserSession userSession = getUserSession(); - final User user = userSession.getUser(); - final boolean userIsLoggedIn = userSession.isUserLoggedIn(); - if (userIsLoggedIn) { - defaultGroup = groupManager.getGroupOfUserWithId(user.getId()); - } else { - defaultGroup = groupManager.getDefaultGroup(); - } - Access access; - try { - access = accessService.getAccess(user, token, defaultGroup, AccessRol.Viewer); - } catch (final NoResultException e) { - throw new ContentNotFoundException(); - } catch (final ToolNotFoundException e) { - throw new ContentNotFoundException(); - } - final State state = stateService.create(access); - final Group group = state.getGroup(); - completeState(user, userIsLoggedIn, group, state); - return mapState(state, user, group); + Group defaultGroup; + final UserSession userSession = getUserSession(); + final User user = userSession.getUser(); + final boolean userIsLoggedIn = userSession.isUserLoggedIn(); + if (userIsLoggedIn) { + defaultGroup = groupManager.getGroupOfUserWithId(user.getId()); + } else { + defaultGroup = groupManager.getDefaultGroup(); + } + Access access; + try { + access = accessService.getAccess(user, token, defaultGroup, AccessRol.Viewer); + } catch (final NoResultException e) { + throw new ContentNotFoundException(); + } catch (final ToolNotFoundException e) { + throw new ContentNotFoundException(); + } + final State state = stateService.create(access); + final Group group = state.getGroup(); + completeState(user, userIsLoggedIn, group, state); + return mapState(state, user, group); } @Authenticated(mandatory = false) @Authorizated(accessRolRequired = AccessRol.Viewer) @Transactional(type = TransactionType.READ_ONLY) public List<TagResultDTO> getSummaryTags(final String userHash, final StateToken groupToken) { - final Group group = groupManager.findByShortName(groupToken.getGroup()); - return getSummaryTags(group); + final Group group = groupManager.findByShortName(groupToken.getGroup()); + return getSummaryTags(group); } @Authenticated @Authorizated(accessRolRequired = AccessRol.Viewer) @Transactional(type = TransactionType.READ_WRITE) public CommentDTO markCommentAsAbuse(final String userHash, final StateToken token, final Long commentId) - throws DefaultException { - final UserSession userSession = getUserSession(); - final User informer = userSession.getUser(); - final Long contentId = ContentUtils.parseId(token.getDocument()); - final Comment comment = commentManager.markAsAbuse(informer, contentId, commentId); - return mapper.map(comment, CommentDTO.class); + throws DefaultException { + final UserSession userSession = getUserSession(); + final User informer = userSession.getUser(); + final Long contentId = ContentUtils.parseId(token.getDocument()); + final Comment comment = commentManager.markAsAbuse(informer, contentId, commentId); + return mapper.map(comment, CommentDTO.class); } @Authenticated @Authorizated(accessRolRequired = AccessRol.Viewer) @Transactional(type = TransactionType.READ_WRITE) public void rateContent(final String userHash, final StateToken token, final Double value) throws DefaultException { - final UserSession userSession = getUserSession(); - final User rater = userSession.getUser(); - final Long contentId = ContentUtils.parseId(token.getDocument()); + final UserSession userSession = getUserSession(); + final User rater = userSession.getUser(); + final Long contentId = ContentUtils.parseId(token.getDocument()); - if (userSession.isUserLoggedIn()) { - contentManager.rateContent(rater, contentId, value); - } else { - throw new AccessViolationException(); - } + if (userSession.isUserLoggedIn()) { + contentManager.rateContent(rater, contentId, value); + } else { + throw new AccessViolationException(); + } } @Authenticated @Authorizated(accessRolRequired = AccessRol.Editor) @Transactional(type = TransactionType.READ_WRITE) public void removeAuthor(final String userHash, final StateToken token, final String authorShortName) - throws DefaultException { - final Long contentId = ContentUtils.parseId(token.getDocument()); - final UserSession userSession = getUserSession(); - final User user = userSession.getUser(); - contentManager.removeAuthor(user, contentId, authorShortName); + throws DefaultException { + final Long contentId = ContentUtils.parseId(token.getDocument()); + final UserSession userSession = getUserSession(); + final User user = userSession.getUser(); + contentManager.removeAuthor(user, contentId, authorShortName); } @Authenticated @Authorizated(actionLevel = ActionLevel.container, accessRolRequired = AccessRol.Editor) @Transactional(type = TransactionType.READ_WRITE) public String renameContainer(final String userHash, final StateToken token, final String newName) - throws DefaultException { - return renameFolder(token.getGroup(), ContentUtils.parseId(token.getFolder()), newName); + throws DefaultException { + return renameFolder(token.getGroup(), ContentUtils.parseId(token.getFolder()), newName); } @Authenticated @Authorizated(accessRolRequired = AccessRol.Editor) @Transactional(type = TransactionType.READ_WRITE) public String renameContent(final String userHash, final StateToken token, final String newName) - throws DefaultException { - final UserSession userSession = getUserSession(); - final User user = userSession.getUser(); - try { - accessService.accessToContent(ContentUtils.parseId(token.getDocument()), user, AccessRol.Editor); - } catch (final NoResultException e) { - throw new AccessViolationException(); - } - return renameContent(token.getDocument(), newName); + throws DefaultException { + final UserSession userSession = getUserSession(); + final User user = userSession.getUser(); + try { + accessService.accessToContent(ContentUtils.parseId(token.getDocument()), user, AccessRol.Editor); + } catch (final NoResultException e) { + throw new AccessViolationException(); + } + return renameContent(token.getDocument(), newName); } @Authenticated @Authorizated(accessRolRequired = AccessRol.Editor) @Transactional(type = TransactionType.READ_WRITE) public Integer save(final String userHash, final StateToken token, final String textContent) - throws DefaultException { + throws DefaultException { - final Long contentId = ContentUtils.parseId(token.getDocument()); - final UserSession userSession = getUserSession(); - final User user = userSession.getUser(); - final Content content = accessService.accessToContent(contentId, user, AccessRol.Editor); - final Content descriptor = creationService.saveContent(user, content, textContent); - return descriptor.getVersion(); + final Long contentId = ContentUtils.parseId(token.getDocument()); + final UserSession userSession = getUserSession(); + final User user = userSession.getUser(); + final Content content = accessService.accessToContent(contentId, user, AccessRol.Editor); + final Content descriptor = creationService.saveContent(user, content, textContent); + return descriptor.getVersion(); } @Authenticated @Authorizated(accessRolRequired = AccessRol.Administrator) @Transactional(type = TransactionType.READ_WRITE) public ContentSimpleDTO setAsDefaultContent(final String userHash, final StateToken token) { - final Content content = contentManager.find(ContentUtils.parseId(token.getDocument())); - groupManager.setDefaultContent(token.getGroup(), content); - return mapper.map(content, ContentSimpleDTO.class); + final Content content = contentManager.find(ContentUtils.parseId(token.getDocument())); + groupManager.setDefaultContent(token.getGroup(), content); + return mapper.map(content, ContentSimpleDTO.class); } @Authenticated @Authorizated(accessRolRequired = AccessRol.Editor) @Transactional(type = TransactionType.READ_WRITE) public I18nLanguageDTO setLanguage(final String userHash, final StateToken token, final String languageCode) - throws DefaultException { - final Long contentId = ContentUtils.parseId(token.getDocument()); - final UserSession userSession = getUserSession(); - final User user = userSession.getUser(); - return mapper.map(contentManager.setLanguage(user, contentId, languageCode), I18nLanguageDTO.class); + throws DefaultException { + final Long contentId = ContentUtils.parseId(token.getDocument()); + final UserSession userSession = getUserSession(); + final User user = userSession.getUser(); + return mapper.map(contentManager.setLanguage(user, contentId, languageCode), I18nLanguageDTO.class); } @Authenticated @Authorizated(accessRolRequired = AccessRol.Editor) @Transactional(type = TransactionType.READ_WRITE) public void setPublishedOn(final String userHash, final StateToken token, final Date publishedOn) - throws DefaultException { - final Long contentId = ContentUtils.parseId(token.getDocument()); - final UserSession userSession = getUserSession(); - final User user = userSession.getUser(); - contentManager.setPublishedOn(user, contentId, publishedOn); + throws DefaultException { + final Long contentId = ContentUtils.parseId(token.getDocument()); + final UserSession userSession = getUserSession(); + final User user = userSession.getUser(); + contentManager.setPublishedOn(user, contentId, publishedOn); } @Authenticated @Authorizated(accessRolRequired = AccessRol.Editor) @Transactional(type = TransactionType.READ_WRITE) public void setStatus(final String userHash, final StateToken token, final ContentStatusDTO status) { - if (status.equals(ContentStatusDTO.publishedOnline) || status.equals(ContentStatusDTO.rejected)) { - throw new AccessViolationException(); - } - contentManager.setStatus(ContentUtils.parseId(token.getDocument()), ContentStatus.valueOf(status.toString())); + if (status.equals(ContentStatusDTO.publishedOnline) || status.equals(ContentStatusDTO.rejected)) { + throw new AccessViolationException(); + } + contentManager.setStatus(ContentUtils.parseId(token.getDocument()), ContentStatus.valueOf(status.toString())); } @Authenticated @Authorizated(accessRolRequired = AccessRol.Administrator) @Transactional(type = TransactionType.READ_WRITE) public void setStatusAsAdmin(final String userHash, final StateToken token, final ContentStatusDTO status) { - contentManager.setStatus(ContentUtils.parseId(token.getDocument()), ContentStatus.valueOf(status.toString())); + contentManager.setStatus(ContentUtils.parseId(token.getDocument()), ContentStatus.valueOf(status.toString())); } @Authenticated @Authorizated(accessRolRequired = AccessRol.Editor) @Transactional(type = TransactionType.READ_WRITE) public List<TagResultDTO> setTags(final String userHash, final StateToken token, final String tags) - throws DefaultException { - final Long contentId = ContentUtils.parseId(token.getDocument()); - final UserSession userSession = getUserSession(); - final User user = userSession.getUser(); - final Group group = groupManager.findByShortName(token.getGroup()); - contentManager.setTags(user, contentId, tags); - return getSummaryTags(group); + throws DefaultException { + final Long contentId = ContentUtils.parseId(token.getDocument()); + final UserSession userSession = getUserSession(); + final User user = userSession.getUser(); + final Group group = groupManager.findByShortName(token.getGroup()); + contentManager.setTags(user, contentId, tags); + return getSummaryTags(group); } @Authenticated @Authorizated(accessRolRequired = AccessRol.Viewer) @Transactional(type = TransactionType.READ_WRITE) public CommentDTO voteComment(final String userHash, final StateToken token, final Long commentId, - final boolean votePositive) throws DefaultException { - final UserSession userSession = getUserSession(); - final User voter = userSession.getUser(); - final Long contentId = ContentUtils.parseId(token.getDocument()); - final Comment comment = commentManager.vote(voter, contentId, commentId, votePositive); - return mapper.map(comment, CommentDTO.class); + final boolean votePositive) throws DefaultException { + final UserSession userSession = getUserSession(); + final User voter = userSession.getUser(); + final Long contentId = ContentUtils.parseId(token.getDocument()); + final Comment comment = commentManager.vote(voter, contentId, commentId, votePositive); + return mapper.map(comment, CommentDTO.class); } private void completeState(final User user, final boolean userIsLoggedIn, final Group group, final State state) { - if (state.isRateable()) { - final Long contentId = ContentUtils.parseId(state.getDocumentId()); - final Content content = contentManager.find(contentId); - if (userIsLoggedIn) { - state.setCurrentUserRate(contentManager.getRateContent(user, content)); - } - state.setRate(contentManager.getRateAvg(content)); - state.setRateByUsers(contentManager.getRateByUsers(content)); - } - - state.setGroupTags(tagManager.getSummaryByGroup(group)); - state.setGroupMembers(socialNetworkManager.get(user, group)); - state.setParticipation(socialNetworkManager.findParticipation(user, group)); + if (state.isRateable()) { + final Long contentId = ContentUtils.parseId(state.getDocumentId()); + final Content content = contentManager.find(contentId); + if (userIsLoggedIn) { + state.setCurrentUserRate(contentManager.getRateContent(user, content)); + } + state.setRate(contentManager.getRateAvg(content)); + state.setRateByUsers(contentManager.getRateByUsers(content)); + } + state.setEnabledTools(groupManager.findEnabledTools(group.getId())); + state.setGroupTags(tagManager.getSummaryByGroup(group)); + state.setGroupMembers(socialNetworkManager.get(user, group)); + state.setParticipation(socialNetworkManager.findParticipation(user, group)); } private State createFolder(final String groupShortName, final Long parentFolderId, final String title, - final String typeId) throws DefaultException { - final UserSession userSession = getUserSession(); - final User user = userSession.getUser(); - final Group group = groupManager.findByShortName(groupShortName); + final String typeId) throws DefaultException { + final UserSession userSession = getUserSession(); + final User user = userSession.getUser(); + final Group group = groupManager.findByShortName(groupShortName); - accessService.accessToContainer(parentFolderId, user, AccessRol.Editor); + accessService.accessToContainer(parentFolderId, user, AccessRol.Editor); - final Container container = creationService.createFolder(group, parentFolderId, title, user.getLanguage(), - typeId); - final Access access = accessService.getAccess(user, container.getStateToken(), group, AccessRol.Editor); - final State state = stateService.create(access); - return state; + final Container container = creationService.createFolder(group, parentFolderId, title, user.getLanguage(), + typeId); + final Access access = accessService.getAccess(user, container.getStateToken(), group, AccessRol.Editor); + final State state = stateService.create(access); + return state; } private List<TagResultDTO> getSummaryTags(final Group group) { - return mapper.mapList(tagManager.getSummaryByGroup(group), TagResultDTO.class); + return mapper.mapList(tagManager.getSummaryByGroup(group), TagResultDTO.class); } private UserSession getUserSession() { - return userSessionProvider.get(); + return userSessionProvider.get(); } - private void mapContentRightsInstate(final User user, final AccessLists groupAccessList, final ContentSimpleDTO siblingDTO) { - final Content sibling = contentManager.find(siblingDTO.getId()); - final AccessLists lists = sibling.hasAccessList() ? sibling.getAccessLists() : groupAccessList; - siblingDTO.setRights(mapper.map(rightsService.get(user, lists), AccessRightsDTO.class)); + private void mapContentRightsInstate(final User user, final AccessLists groupAccessList, + final ContentSimpleDTO siblingDTO) { + final Content sibling = contentManager.find(siblingDTO.getId()); + final AccessLists lists = sibling.hasAccessList() ? sibling.getAccessLists() : groupAccessList; + siblingDTO.setRights(mapper.map(rightsService.get(user, lists), AccessRightsDTO.class)); } private StateDTO mapState(final State state, final User user, final Group group) { - final StateDTO stateDTO = mapper.map(state, StateDTO.class); - final AccessLists groupAccessList = group.getSocialNetwork().getAccessLists(); - for (final ContentSimpleDTO siblingDTO : stateDTO.getRootContainer().getContents()) { - mapContentRightsInstate(user, groupAccessList, siblingDTO); - } - for (final ContentSimpleDTO siblingDTO : stateDTO.getContainer().getContents()) { - mapContentRightsInstate(user, groupAccessList, siblingDTO); - } - return stateDTO; + final StateDTO stateDTO = mapper.map(state, StateDTO.class); + final AccessLists groupAccessList = group.getSocialNetwork().getAccessLists(); + for (final ContentSimpleDTO siblingDTO : stateDTO.getRootContainer().getContents()) { + mapContentRightsInstate(user, groupAccessList, siblingDTO); + } + for (final ContentSimpleDTO siblingDTO : stateDTO.getContainer().getContents()) { + mapContentRightsInstate(user, groupAccessList, siblingDTO); + } + return stateDTO; } private String renameContent(final String documentId, final String newName) throws ContentNotFoundException, - DefaultException { - final Long contentId = ContentUtils.parseId(documentId); - final UserSession userSession = getUserSession(); - final User user = userSession.getUser(); - return contentManager.renameContent(user, contentId, newName); + DefaultException { + final Long contentId = ContentUtils.parseId(documentId); + final UserSession userSession = getUserSession(); + final User user = userSession.getUser(); + return contentManager.renameContent(user, contentId, newName); } private String renameFolder(final String groupShortName, final Long folderId, final String newName) - throws DefaultException { - final Group group = groupManager.findByShortName(groupShortName); - final UserSession userSession = getUserSession(); - final User user = userSession.getUser(); - final Container container = accessService.accessToContainer(folderId, user, AccessRol.Editor); - return containerManager.renameFolder(group, container, newName); + throws DefaultException { + final Group group = groupManager.findByShortName(groupShortName); + final UserSession userSession = getUserSession(); + final User user = userSession.getUser(); + final Container container = accessService.accessToContainer(folderId, user, AccessRol.Editor); + return containerManager.renameFolder(group, container, newName); } } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/rpc/GroupRPC.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/rpc/GroupRPC.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/server/rpc/GroupRPC.java 2008-10-16 14:34:33 UTC (rev 913) @@ -20,8 +20,6 @@ package org.ourproject.kune.platf.server.rpc; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.ourproject.kune.platf.client.dto.GroupDTO; import org.ourproject.kune.platf.client.dto.StateToken; import org.ourproject.kune.platf.client.errors.DefaultException; @@ -47,7 +45,6 @@ @Singleton public class GroupRPC implements RPC, GroupService { - private static final Log log = LogFactory.getLog(GroupRPC.class); private final Mapper mapper; private final GroupManager groupManager; private final Provider<UserSession> userSessionProvider; @@ -55,50 +52,50 @@ @Inject public GroupRPC(final Provider<UserSession> userSessionProvider, final GroupManager groupManager, - final ContentManager contentManager, final Mapper mapper) { - this.userSessionProvider = userSessionProvider; - this.groupManager = groupManager; - this.contentManager = contentManager; - this.mapper = mapper; + final ContentManager contentManager, final Mapper mapper) { + this.userSessionProvider = userSessionProvider; + this.groupManager = groupManager; + this.contentManager = contentManager; + this.mapper = mapper; } @Authenticated @Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator) @Transactional(type = TransactionType.READ_WRITE) public void changeGroupWsTheme(final String userHash, final StateToken groupToken, final String theme) - throws DefaultException { - final UserSession userSession = getUserSession(); - final User user = userSession.getUser(); - final Group group = groupManager.findByShortName(groupToken.getGroup()); - groupManager.changeWsTheme(user, group, theme); + throws DefaultException { + final UserSession userSession = getUserSession(); + final User user = userSession.getUser(); + final Group group = groupManager.findByShortName(groupToken.getGroup()); + groupManager.changeWsTheme(user, group, theme); } @Authenticated @Transactional(type = TransactionType.READ_WRITE, rollbackOn = DefaultException.class) - public StateToken createNewGroup(final String userHash, final GroupDTO groupDTO) throws DefaultException { - log.debug(groupDTO.getShortName() + groupDTO.getLongName() + groupDTO.getPublicDesc() - + groupDTO.getDefaultLicense() + groupDTO.getType()); - final UserSession userSession = getUserSession(); - final User user = userSession.getUser(); - final Group group = mapper.map(groupDTO, Group.class); - final Group newGroup = groupManager.createGroup(group, user); - final Long defContentId = newGroup.getDefaultContent().getId(); - contentManager.setTags(user, defContentId, groupDTO.getTags()); - return newGroup.getDefaultContent().getStateToken(); + public StateToken createNewGroup(final String userHash, final GroupDTO groupDTO, String publicDesc, String tags, + String[] enabledTools) throws DefaultException { + final UserSession userSession = getUserSession(); + final User user = userSession.getUser(); + final Group group = mapper.map(groupDTO, Group.class); + final Group newGroup = groupManager.createGroup(group, user); + final Long defContentId = newGroup.getDefaultContent().getId(); + contentManager.save(user, newGroup.getDefaultContent(), publicDesc); + contentManager.setTags(user, defContentId, tags); + return newGroup.getDefaultContent().getStateToken(); } @Authenticated @Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator) @Transactional(type = TransactionType.READ_WRITE) public GroupDTO setGroupLogo(final String userHash, final StateToken token) { - final Group group = groupManager.findByShortName(token.getGroup()); - final Content content = contentManager.find(ContentUtils.parseId(token.getDocument())); - groupManager.setGroupLogo(group, content); - return mapper.map(group, GroupDTO.class); + final Group group = groupManager.findByShortName(token.getGroup()); + final Content content = contentManager.find(ContentUtils.parseId(token.getDocument())); + groupManager.setGroupLogo(group, content); + return mapper.map(group, GroupDTO.class); } private UserSession getUserSession() { - return userSessionProvider.get(); + return userSessionProvider.get(); } } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SiteRPC.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SiteRPC.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SiteRPC.java 2008-10-16 14:34:33 UTC (rev 913) @@ -34,6 +34,7 @@ import org.ourproject.kune.platf.server.mapper.Mapper; import org.ourproject.kune.platf.server.properties.ChatProperties; import org.ourproject.kune.platf.server.properties.KuneProperties; +import org.ourproject.kune.platf.server.tool.ServerToolRegistry; import org.ourproject.kune.platf.server.users.UserInfoService; import com.google.inject.Inject; @@ -53,48 +54,53 @@ private final KuneProperties kuneProperties; private final I18nLanguageManager languageManager; private final I18nCountryManager countryManager; + private final ServerToolRegistry serverToolRegistry; // TODO: refactor: too many parameters! refactor to Facade Pattern @Inject public SiteRPC(final Provider<UserSession> userSessionProvider, final UserManager userManager, - final UserInfoService userInfoService, final LicenseManager licenseManager, final Mapper mapper, - final KuneProperties kuneProperties, final ChatProperties chatProperties, - final I18nLanguageManager languageManager, final I18nCountryManager countryManager) { - this.userSessionProvider = userSessionProvider; - this.userManager = userManager; - this.userInfoService = userInfoService; - this.licenseManager = licenseManager; - this.mapper = mapper; - this.kuneProperties = kuneProperties; - this.chatProperties = chatProperties; - this.languageManager = languageManager; - this.countryManager = countryManager; + final UserInfoService userInfoService, final LicenseManager licenseManager, final Mapper mapper, + final KuneProperties kuneProperties, final ChatProperties chatProperties, + final I18nLanguageManager languageManager, final I18nCountryManager countryManager, + final ServerToolRegistry serverToolRegistry) { + this.userSessionProvider = userSessionProvider; + this.userManager = userManager; + this.userInfoService = userInfoService; + this.licenseManager = licenseManager; + this.mapper = mapper; + this.kuneProperties = kuneProperties; + this.chatProperties = chatProperties; + this.languageManager = languageManager; + this.countryManager = countryManager; + this.serverToolRegistry = serverToolRegistry; } @Transactional(type = TransactionType.READ_ONLY) public InitDataDTO getInitData(final String userHash) throws DefaultException { - final InitData data = new InitData(); - final UserSession userSession = getUserSession(); + final InitData data = new InitData(); + final UserSession userSession = getUserSession(); - data.setLicenses(licenseManager.getAll()); - data.setLanguages(languageManager.getAll()); - data.setCountries(countryManager.getAll()); - data.setTimezones(TimeZone.getAvailableIDs()); - data.setUserInfo(userInfoService.buildInfo(userManager.find(userSession.getUser().getId()), userSession - .getHash())); - data.setChatHttpBase(chatProperties.getHttpBase()); - data.setChatDomain(chatProperties.getDomain()); - data.setSiteDomain(kuneProperties.get(KuneProperties.SITE_DOMAIN)); - data.setChatRoomHost(chatProperties.getRoomHost()); - data.setWsThemes(this.kuneProperties.get(KuneProperties.WS_THEMES).split(",")); - data.setDefaultWsTheme(this.kuneProperties.get(KuneProperties.WS_THEMES_DEF)); - data.setSiteLogoUrl(kuneProperties.get(KuneProperties.SITE_LOGO_URL)); - data.setGalleryPermittedExtensions(kuneProperties.get(KuneProperties.UPLOAD_GALLERY_PERMITTED_EXTS)); - data.setMaxFileSizeInMb(kuneProperties.get(KuneProperties.UPLOAD_MAX_FILE_SIZE)); - return mapper.map(data, InitDataDTO.class); + data.setLicenses(licenseManager.getAll()); + data.setLanguages(languageManager.getAll()); + data.setCountries(countryManager.getAll()); + data.setTimezones(TimeZone.getAvailableIDs()); + data.setUserInfo(userInfoService.buildInfo(userManager.find(userSession.getUser().getId()), userSession + .getHash())); + data.setChatHttpBase(chatProperties.getHttpBase()); + data.setChatDomain(chatProperties.getDomain()); + data.setSiteDomain(kuneProperties.get(KuneProperties.SITE_DOMAIN)); + data.setChatRoomHost(chatProperties.getRoomHost()); + data.setWsThemes(this.kuneProperties.get(KuneProperties.WS_THEMES).split(",")); + data.setDefaultWsTheme(this.kuneProperties.get(KuneProperties.WS_THEMES_DEF)); + data.setSiteLogoUrl(kuneProperties.get(KuneProperties.SITE_LOGO_URL)); + data.setGalleryPermittedExtensions(kuneProperties.get(KuneProperties.UPLOAD_GALLERY_PERMITTED_EXTS)); + data.setMaxFileSizeInMb(kuneProperties.get(KuneProperties.UPLOAD_MAX_FILE_SIZE)); + data.setUserTools(serverToolRegistry.getToolsForUsers()); + data.setGroupTools(serverToolRegistry.getToolsForGroups()); + return mapper.map(data, InitDataDTO.class); } private UserSession getUserSession() { - return userSessionProvider.get(); + return userSessionProvider.get(); } } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/rpc/UserRPC.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/rpc/UserRPC.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/server/rpc/UserRPC.java 2008-10-16 14:34:33 UTC (rev 913) @@ -55,74 +55,74 @@ @Inject public UserRPC(final Provider<SessionService> sessionServiceProvider, - final Provider<UserSession> userSessionProvider, final UserManager userManager, - final GroupManager groupManager, final UserInfoService userInfoService, final Mapper mapper) { + final Provider<UserSession> userSessionProvider, final UserManager userManager, + final GroupManager groupManager, final UserInfoService userInfoService, final Mapper mapper) { - this.sessionServiceProvider = sessionServiceProvider; - this.userSessionProvider = userSessionProvider; - this.userManager = userManager; - this.groupManager = groupManager; - this.userInfoService = userInfoService; - this.mapper = mapper; + this.sessionServiceProvider = sessionServiceProvider; + this.userSessionProvider = userSessionProvider; + this.userManager = userManager; + this.groupManager = groupManager; + this.userInfoService = userInfoService; + this.mapper = mapper; } @Transactional(type = TransactionType.READ_WRITE, rollbackOn = DefaultException.class) - public UserInfoDTO createUser(final UserDTO userDTO) throws DefaultException { - final User user = userManager.createUser(userDTO.getShortName(), userDTO.getName(), userDTO.getEmail(), userDTO - .getPassword(), userDTO.getLanguage().getCode(), userDTO.getCountry().getCode(), userDTO.getTimezone() - .getId()); - groupManager.createUserGroup(user); - return loginUser(user); + public UserInfoDTO createUser(final UserDTO userDTO, boolean wantPersonalHomepage) throws DefaultException { + final User user = userManager.createUser(userDTO.getShortName(), userDTO.getName(), userDTO.getEmail(), userDTO + .getPassword(), userDTO.getLanguage().getCode(), userDTO.getCountry().getCode(), userDTO.getTimezone() + .getId()); + groupManager.createUserGroup(user, wantPersonalHomepage); + return loginUser(user); } @Transactional(type = TransactionType.READ_ONLY) public UserInfoDTO login(final String nickOrEmail, final String passwd) throws DefaultException { - final SessionService sessionService = sessionServiceProvider.get(); - sessionService.getNewSession(); - final User user = userManager.login(nickOrEmail, passwd); - return loginUser(user); + final SessionService sessionService = sessionServiceProvider.get(); + sessionService.getNewSession(); + final User user = userManager.login(nickOrEmail, passwd); + return loginUser(user); } @Authenticated @Transactional(type = TransactionType.READ_ONLY) public void logout(final String userHash) throws DefaultException { - getUserSession().logout(); - final SessionService sessionService = sessionServiceProvider.get(); - sessionService.getNewSession(); + getUserSession().logout(); + final SessionService sessionService = sessionServiceProvider.get(); + sessionService.getNewSession(); } @Authenticated(mandatory = false) @Transactional(type = TransactionType.READ_ONLY) public void onlyCheckSession(final String userHash) throws DefaultException { - // Do nothing @Authenticated checks user session + // Do nothing @Authenticated checks user session } @Authenticated @Transactional(type = TransactionType.READ_ONLY) public UserInfoDTO reloadUserInfo(final String userHash) throws DefaultException { - final UserSession userSession = getUserSession(); - final User user = userSession.getUser(); - return loadUserInfo(user); + final UserSession userSession = getUserSession(); + final User user = userSession.getUser(); + return loadUserInfo(user); }; private UserSession getUserSession() { - return userSessionProvider.get(); + return userSessionProvider.get(); } private UserInfoDTO loadUserInfo(final User user) throws DefaultException { - final UserInfo userInfo = userInfoService.buildInfo(user, getUserSession().getHash()); - final UserInfoDTO map = mapper.map(userInfo, UserInfoDTO.class); - return map; + final UserInfo userInfo = userInfoService.buildInfo(user, getUserSession().getHash()); + final UserInfoDTO map = mapper.map(userInfo, UserInfoDTO.class); + return map; } private UserInfoDTO loginUser(final User user) throws DefaultException { - if (user != null) { - // Maybe use terracotta.org for http session clustering - getUserSession().login(user, UUID.randomUUID().toString()); - return loadUserInfo(user); - } else { - throw new UserAuthException(); - } + if (user != null) { + // Maybe use terracotta.org for http session clustering + getUserSession().login(user, UUID.randomUUID().toString()); + return loadUserInfo(user); + } else { + throw new UserAuthException(); + } } } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/state/State.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/state/State.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/server/state/State.java 2008-10-16 14:34:33 UTC (rev 913) @@ -65,235 +65,245 @@ private SocialNetwork groupMembers; private ParticipationData participation; private StateToken stateToken; + private List<String> enabledTools; public State() { } public AccessLists getAccessLists() { - return accessLists; + return accessLists; } public List<User> getAuthors() { - return authors; + return authors; } public Container getContainer() { - return container; + return container; } public AccessRights getContainerRights() { - return containerRights; + return containerRights; } public String getContent() { - return content; + return content; } public AccessRights getContentRights() { - return contentRights; + return contentRights; } public Double getCurrentUserRate() { - return currentUserRate; + return currentUserRate; } public String getDocumentId() { - return documentId; + return documentId; } + public List<String> getEnabledTools() { + return enabledTools; + } + public Group getGroup() { - return group; + return group; } public SocialNetwork getGroupMembers() { - return groupMembers; + return groupMembers; } public AccessRights getGroupRights() { - return groupRights; + return groupRights; } public List<TagResult> getGroupTags() { - return groupTags; + return groupTags; } public I18nLanguage getLanguage() { - return language; + return language; } public License getLicense() { - return license; + return license; } public BasicMimeType getMimeType() { - return mimeType; + return mimeType; } public ParticipationData getParticipation() { - return participation; + return participation; } public Date getPublishedOn() { - return publishedOn; + return publishedOn; } public Double getRate() { - return rate; + return rate; } public Integer getRateByUsers() { - return rateByUsers; + return rateByUsers; } public Container getRootContainer() { - return rootContainer; + return rootContainer; } public StateToken getStateToken() { - return stateToken; + return stateToken; } public ContentStatus getStatus() { - return status; + return status; } public String getTags() { - return tags; + return tags; } public String getTitle() { - return title; + return title; } public String getToolName() { - return toolName; + return toolName; } public String getTypeId() { - return typeId; + return typeId; } public boolean isRateable() { - return isRateable; + return isRateable; } public void setAccessLists(final AccessLists accessLists) { - this.accessLists = accessLists; + this.accessLists = accessLists; } public void setAuthors(final List<User> authors) { - this.authors = authors; + this.authors = authors; } public void setContainer(final Container container) { - this.container = container; + this.container = container; } public void setContainerRights(final AccessRights containerRights) { - this.containerRights = containerRights; + this.containerRights = containerRights; } public void setContent(final String content) { - this.content = content; + this.content = content; } public void setContentRights(final AccessRights accessRights) { - this.contentRights = accessRights; + this.contentRights = accessRights; } public void setCurrentUserRate(final Double currentUserRate) { - this.currentUserRate = currentUserRate; + this.currentUserRate = currentUserRate; } public void setDocumentId(final String docRef) { - this.documentId = docRef; + this.documentId = docRef; } + public void setEnabledTools(List<String> enabledTools) { + this.enabledTools = enabledTools; + } + public void setGroup(final Group group) { - this.group = group; + this.group = group; } public void setGroupMembers(final SocialNetwork groupMembers) { - this.groupMembers = groupMembers; + this.groupMembers = groupMembers; } public void setGroupRights(final AccessRights groupRights) { - this.groupRights = groupRights; + this.groupRights = groupRights; } public void setGroupTags(final List<TagResult> groupTags) { - this.groupTags = groupTags; + this.groupTags = groupTags; } public void setIsRateable(final boolean isRateable) { - this.isRateable = isRateable; + this.isRateable = isRateable; } public void setLanguage(final I18nLanguage language) { - this.language = language; + this.language = language; } public void setLicense(final License license) { - this.license = license; + this.license = license; } public void setMimeType(final BasicMimeType mimeType) { - this.mimeType = mimeType; + this.mimeType = mimeType; } public void setParticipation(final ParticipationData participation) { - this.participation = participation; + this.participation = participation; } public void setPublishedOn(final Date publishedOn) { - this.publishedOn = publishedOn; + this.publishedOn = publishedOn; } public void setRate(final Double rate) { - if (rate != null) { - this.rate = rate; - } else { - this.rate = 0d; - } + if (rate != null) { + this.rate = rate; + } else { + this.rate = 0d; + } } public void setRateByUsers(final Long rateByUsers) { - if (rateByUsers != null) { - this.rateByUsers = rateByUsers.intValue(); - } else { - this.rateByUsers = 0; - } + if (rateByUsers != null) { + this.rateByUsers = rateByUsers.intValue(); + } else { + this.rateByUsers = 0; + } } public void setRootContainer(final Container rootContainer) { - this.rootContainer = rootContainer; + this.rootContainer = rootContainer; } public void setStateToken(final StateToken stateToken) { - this.stateToken = stateToken; + this.stateToken = stateToken; } public void setStatus(final ContentStatus status) { - this.status = status; + this.status = status; } public void setTags(final String tags) { - this.tags = tags; + this.tags = tags; } public void setTitle(final String title) { - this.title = title; + this.title = title; } public void setToolName(final String toolName) { - this.toolName = toolName; + this.toolName = toolName; } public void setTypeId(final String typeId) { - this.typeId = typeId; + this.typeId = typeId; } + @Override public String toString() { - return "State[" + stateToken + "/" + typeId + "]"; + return "State[" + stateToken + "/" + typeId + "]"; } } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/state/StateServiceDefault.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/state/StateServiceDefault.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/server/state/StateServiceDefault.java 2008-10-16 14:34:33 UTC (rev 913) @@ -23,6 +23,7 @@ import org.ourproject.kune.platf.server.access.Access; import org.ourproject.kune.platf.server.domain.Container; import org.ourproject.kune.platf.server.domain.Content; +import org.ourproject.kune.platf.server.domain.Group; import org.ourproject.kune.platf.server.domain.License; import org.ourproject.kune.platf.server.domain.Revision; @@ -32,54 +33,55 @@ public class StateServiceDefault implements StateService { public State create(final Access access) { - final Content content = access.getContent(); - final Container container = access.getContainer(); - final State state = new State(); + final Content content = access.getContent(); + final Container container = access.getContainer(); + final State state = new State(); - final Long documentId = content.getId(); - if (documentId != null) { - state.setTypeId(content.getTypeId()); - state.setMimeType(content.getMimeType()); - state.setDocumentId(documentId.toString()); - state.setIsRateable(true); - state.setLanguage(content.getLanguage()); - state.setPublishedOn(content.getPublishedOn()); - state.setAuthors(content.getAuthors()); - state.setTags(content.getTagsAsString()); - state.setStatus(content.getStatus()); - state.setStateToken(content.getStateToken()); - } else { - state.setTypeId(container.getTypeId()); - state.setDocumentId(null); - state.setIsRateable(false); - state.setLanguage(container.getLanguage()); - state.setStateToken(container.getStateToken()); - } - if (!container.isRoot()) { - state.setRootContainer(container.getAbsolutePath().get(0)); - } else { - state.setRootContainer(container); - } - final Revision revision = content.getLastRevision(); - final char[] text = revision.getBody(); - state.setContent(text == null ? null : new String(text)); - if (documentId != null) { - state.setTitle(revision.getTitle()); - } else { - state.setTitle(container.getName()); - } - state.setToolName(container.getToolName()); - state.setGroup(container.getOwner()); - state.setContainer(container); - state.setAccessLists(access.getContentAccessLists()); - state.setContentRights(access.getContentRights()); - state.setContainerRights(access.getContainerRights()); - state.setGroupRights(access.getGroupRights()); - License contentLicense = content.getLicense(); - if (contentLicense == null) { - contentLicense = container.getOwner().getDefaultLicense(); - } - state.setLicense(contentLicense); - return state; + final Long documentId = content.getId(); + if (documentId != null) { + state.setTypeId(content.getTypeId()); + state.setMimeType(content.getMimeType()); + state.setDocumentId(documentId.toString()); + state.setIsRateable(true); + state.setLanguage(content.getLanguage()); + state.setPublishedOn(content.getPublishedOn()); + state.setAuthors(content.getAuthors()); + state.setTags(content.getTagsAsString()); + state.setStatus(content.getStatus()); + state.setStateToken(content.getStateToken()); + } else { + state.setTypeId(container.getTypeId()); + state.setDocumentId(null); + state.setIsRateable(false); + state.setLanguage(container.getLanguage()); + state.setStateToken(container.getStateToken()); + } + if (!container.isRoot()) { + state.setRootContainer(container.getAbsolutePath().get(0)); + } else { + state.setRootContainer(container); + } + final Revision revision = content.getLastRevision(); + final char[] text = revision.getBody(); + state.setContent(text == null ? null : new String(text)); + if (documentId != null) { + state.setTitle(revision.getTitle()); + } else { + state.setTitle(container.getName()); + } + state.setToolName(container.getToolName()); + Group group = container.getOwner(); + state.setGroup(group); + state.setContainer(container); + state.setAccessLists(access.getContentAccessLists()); + state.setContentRights(access.getContentRights()); + state.setContainerRights(access.getContainerRights()); + state.setGroupRights(access.getGroupRights()); + License contentLicense = content.getLicense(); + if (contentLicense == null) { + contentLicense = group.getDefaultLicense(); + } + state.setLicense(contentLicense); + return state; } } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/tool/ServerTool.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/tool/ServerTool.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/server/tool/ServerTool.java 2008-10-16 14:34:33 UTC (rev 913) @@ -26,20 +26,24 @@ import org.ourproject.kune.platf.server.domain.User; /** - * ATENCIÓN: las tools hay que registrarlas en el módulo correspondiente - * marcándolas como asEagerSingleton!! y el método register tiene que tener la - * anotacion de Inject * + * Tools must have a corresponding module and must be marked asEagerSingleton. + * The register method must have the @Inject annotation + * */ public interface ServerTool { - public void onCreateContainer(Container container, Container parent, String typeId); + String getName(); - public void onCreateContent(Content content, Container parent); + String getRootName(); - public void register(ToolRegistry registry); + Group initGroup(User user, Group group); - String getName(); + void onCreateContainer(Container container, Container parent, String typeId); - Group initGroup(User user, Group group); + void onCreateContent(Content content, Container parent); + + void register(ServerToolRegistry registry); + + ServerToolTarget getTarget(); } Copied: trunk/src/main/java/org/ourproject/kune/platf/server/tool/ServerToolRegistry.java (from rev 909, trunk/src/main/java/org/ourproject/kune/platf/server/tool/ToolRegistry.java) =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/tool/ToolRegistry.java 2008-10-14 13:39:30 UTC (rev 909) +++ trunk/src/main/java/org/ourproject/kune/platf/server/tool/ServerToolRegistry.java 2008-10-16 14:34:33 UTC (rev 913) @@ -0,0 +1,104 @@ +/* + * + * Copyright (C) 2007-2008 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +package org.ourproject.kune.platf.server.tool; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import com.google.inject.Singleton; + +@Singleton +public class ServerToolRegistry { + static Log log = LogFactory.getLog(ServerToolRegistry.class); + + public static Collection<String> emptyToolList = new ArrayList<String>(); + + private final HashMap<String, ServerTool> tools; + // private final List<ToolSimple> toolsForGroupsList; + // private final List<ToolSimple> toolsForUsersList; + private final HashMap<String, ToolSimple> toolsForUsersMap; + private final HashMap<String, ToolSimple> toolsForGroupsMap; + + public ServerToolRegistry() { + tools = new HashMap<String, ServerTool>(); + toolsForUsersMap = new HashMap<String, ToolSimple>(); + toolsForGroupsMap = new HashMap<String, ToolSimple>(); + // toolsForGroupsList = new ArrayList<ToolSimple>(); + // toolsForUsersList = new ArrayList<ToolSimple>(); + } + + public Collection<ServerTool> all() { + return tools.values(); + } + + public ServerTool get(final String toolName) { + return tools.get(toolName); + } + + // + // public List<ToolSimple> getToolsForGroupsList() { + // return toolsForGroupsList; + // } + + public Collection<ToolSimple> getToolsForGroups() { + return toolsForGroupsMap.values(); + } + + public Collection<String> getToolsForGroupsKeys() { + return toolsForGroupsMap.keySet(); + } + + public Collection<String> getToolsForUserKeys() { + return toolsForUsersMap.keySet(); + } + + public Collection<ToolSimple> getToolsForUsers() { + return toolsForUsersMap.values(); + } + + // public List<ToolSimple> getToolsForUsersList() { + // return toolsForUsersList; + // } + + public void register(final ServerTool tool) { + String name = tool.getName(); + String rootName = tool.getRootName(); + tools.put(name, tool); + switch (tool.getTarget()) { + case forGroups: + toolsForGroupsMap.put(name, new ToolSimple(name, rootName)); + break; + case forUsers: + // toolsForUsersList.add(new ToolSimple(name, rootName)); + toolsForUsersMap.put(name, new ToolSimple(name, rootName)); + break; + case forBoth: + toolsForGroupsMap.put(name, new ToolSimple(name, rootName)); + toolsForUsersMap.put(name, new ToolSimple(name, rootName)); + // toolsForUsersList.add(new ToolSimple(name, rootName)); + break; + } + } +} Property changes on: trunk/src/main/java/org/ourproject/kune/platf/server/tool/ServerToolRegistry.java ___________________________________________________________________ Name: svn:mergeinfo + Added: trunk/src/main/java/org/ourproject/kune/platf/server/tool/ServerToolTarget.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/tool/ServerToolTarget.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/server/tool/ServerToolTarget.java 2008-10-16 14:34:33 UTC (rev 913) @@ -0,0 +1,5 @@ +package org.ourproject.kune.platf.server.tool; + +public enum ServerToolTarget { + forUsers, forGroups, forBoth +} Deleted: trunk/src/main/java/org/ourproject/kune/platf/server/tool/ToolRegistry.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/tool/ToolRegistry.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/server/tool/ToolRegistry.java 2008-10-16 14:34:33 UTC (rev 913) @@ -1,55 +0,0 @@ -/* - * - * Copyright (C) 2007-2008 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -package org.ourproject.kune.platf.server.tool; - -import java.util.Collection; -import java.util.concurrent.ConcurrentHashMap; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import com.google.inject.Singleton; - -@Singleton -public class ToolRegistry { - static Log log = LogFactory.getLog(ToolRegistry.class); - - // TODO: ConcurrentHashMap, sure? - private final ConcurrentHashMap<String, ServerTool> tools; - - public ToolRegistry() { - this.tools = new ConcurrentHashMap<String, ServerTool>(); - } - - public void register(final ServerTool tool) { - tools.put(tool.getName(), tool); - } - - public Collection<ServerTool> all() { - return tools.values(); - } - - public ServerTool get(final String toolName) { - return tools.get(toolName); - - } - -} Added: trunk/src/main/java/org/ourproject/kune/platf/server/tool/ToolSimple.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/tool/ToolSimple.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/platf/server/tool/ToolSimple.java 2008-10-16 14:34:33 UTC (rev 913) @@ -0,0 +1,59 @@ +package org.ourproject.kune.platf.server.tool; + +public class ToolSimple { + + private final String name; + private final String rootName; + + public ToolSimple(String name, String rootName) { + this.name = name; + this.rootName = rootName; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + ToolSimple other = (ToolSimple) obj; + if (name == null) { + if (other.name != null) { + return false; + } + } else if (!name.equals(other.name)) { + return false; + } + if (rootName == null) { + if (other.rootName != null) { + return false; + } + } else if (!rootName.equals(other.rootName)) { + return false; + } + return true; + } + + public String getName() { + return name; + } + + public String getRootName() { + return rootName; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + result = prime * result + ((rootName == null) ? 0 : rootName.hashCode()); + return result; + } + +} Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPresenter.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPresenter.java 2008-10-16 14:34:33 UTC (rev 913) @@ -47,124 +47,124 @@ private final Provider<GroupServiceAsync> groupServiceProvider; public NewGroupPresenter(final I18nTranslationService i18n, final Session session, final StateManager stateManager, - final Provider<GroupServiceAsync> groupServiceProvider) { - this.i18n = i18n; - this.session = session; - this.stateManager = stateManager; - this.groupServiceProvider = groupServiceProvider; - stateManager.addSiteToken(SiteToken.newgroup.toString(), new Listener<StateToken>() { - public void onEvent(final StateToken previousStateToken) { - doNewGroup(previousStateToken); - } - }); + final Provider<GroupServiceAsync> groupServiceProvider) { + this.i18n = i18n; + this.session = session; + this.stateManager = stateManager; + this.groupServiceProvider = groupServiceProvider; + stateManager.addSiteToken(SiteToken.newgroup.toString(), new Listener<StateToken>() { + public void onEvent(final StateToken previousStateToken) { + doNewGroup(previousStateToken); + } + }); } public void doNewGroup(final StateToken previousToken) { - this.previousToken = previousToken; - session.check(new AsyncCallbackSimple<Object>() { - public void onSuccess(final Object result) { - if (session.isLogged()) { - Site.showProgressProcessing(); - view.show(); - view.center(); - Site.hideProgress(); - } else { - stateManager.gotoToken(previousToken); - Site.info(i18n.t("Sign in or register to create a group")); - } - } - }); + this.previousToken = previousToken; + session.check(new AsyncCallbackSimple<Object>() { + public void onSuccess(final Object result) { + if (session.isLogged()) { + Site.showProgressProcessing(); + view.show(); + view.center(); + Site.hideProgress(); + } else { + stateManager.gotoToken(previousToken); + Site.info(i18n.t("Sign in or register to create a group")); + } + } + }); } public View getView() { - return view; + return view; } public void init(final NewGroupView view) { - this.view = view; + this.view = view; } public void onBack() { - view.setEnabledBackButton(false); - view.setEnabledFinishButton(false); - view.setEnabledNextButton(true); - view.showNewGroupInitialDataForm(); + view.setEnabledBackButton(false); + view.setEnabledFinishButton(false); + view.setEnabledNextButton(true); + view.showNewGroupInitialDataForm(); } public void onCancel() { - view.hide(); - reset(); - stateManager.gotoToken(previousToken); + view.hide(); + reset(); + stateManager.gotoToken(previousToken); } public void onClose() { - reset(); - stateManager.gotoToken(previousToken); + reset(); + stateManager.gotoToken(previousToken); } public void onFinish() { - view.maskProcessing(); - final String shortName = view.getShortName(); - final String longName = view.getLongName(); - final String publicDesc = view.getPublicDesc(); - final LicenseDTO license = view.getLicense(); - final GroupDTO group = new GroupDTO(shortName, longName, publicDesc, getTypeOfGroup()); - group.setDefaultLicense(license); - group.setTags(view.getTags()); + view.maskProcessing(); + final String shortName = view.getShortName(); + final String longName = view.getLongName(); + final String publicDesc = view.getPublicDesc(); + final LicenseDTO license = view.getLicense(); + final GroupDTO group = new GroupDTO(shortName, longName, getTypeOfGroup()); + group.setDefaultLicense(license); - final AsyncCallback<StateToken> callback = new AsyncCallback<StateToken>() { - public void onFailure(final Throwable caught) { - try { - throw caught; - } catch (final GroupNameInUseException e) { - onBack(); - view.unMask(); - setMessage(i18n.t("This name in already in use, try with a different name."), SiteErrorType.error); - } catch (final Throwable e) { - onBack(); // The messageP is in first page of wizard :-/ - view.unMask(); - setMessage(i18n.t("Error creating group"), SiteErrorType.error); - GWT.log("Other kind of exception in group registration", null); - throw new RuntimeException(); - } - } + final AsyncCallback<StateToken> callback = new AsyncCallback<StateToken>() { + public void onFailure(final Throwable caught) { + try { + throw caught; + } catch (final GroupNameInUseException e) { + onBack(); + view.unMask(); + setMessage(i18n.t("This name in already in use, try with a different name."), SiteErrorType.error); + } catch (final Throwable e) { + onBack(); // The messageP is in first page of wizard :-/ + view.unMask(); + setMessage(i18n.t("Error creating group"), SiteErrorType.error); + GWT.log("Other kind of exception in group registration", null); + throw new RuntimeException(); + } + } - public void onSuccess(final StateToken token) { - stateManager.gotoToken(token); - view.hide(); - reset(); - view.unMask(); - } - }; - groupServiceProvider.get().createNewGroup(session.getUserHash(), group, callback); + public void onSuccess(final StateToken token) { + stateManager.gotoToken(token); + view.hide(); + reset(); + view.unMask(); + } + }; + groupServiceProvider.get().createNewGroup(session.getUserHash(), group, publicDesc, view.getTags(), null, + callback); } public void onNext() { - if (view.isFormValid()) { - view.setEnabledBackButton(true); - view.setEnabledFinishButton(true); - view.setEnabledNextButton(false); - view.showLicenseForm(); - } + if (view.isFormValid()) { + view.setEnabledBackButton(true); + view.setEnabledFinishButton(true); + view.setEnabledNextButton(false); + view.showLicenseForm(); + } } public void setMessage(final String message, final SiteErrorType type) { - view.setMessage(message, type); + view.setMessage(message, type); } private GroupType getTypeOfGroup() { - if (view.isProject()) { - return GroupType.PROJECT; - } else if (view.isOrphanedProject()) { - return GroupType.ORPHANED_PROJECT; - } else if (view.isOrganization()) { - return GroupType.ORGANIZATION; - } else { - return GroupType.COMMUNITY; - } + if (view.isProject()) { + return GroupType.PROJECT; + } else if (view.isOrphanedProject()) { + return GroupType.ORPHANED_PROJECT; + } else if (view.isOrganization()) { + return GroupType.ORGANIZATION; + } else { + return GroupType.COMMUNITY; + } } private void reset() { - view.clearData(); + view.clearData(); } } Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterForm.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterForm.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterForm.java 2008-10-16 14:34:33 UTC (rev 913) @@ -6,6 +6,8 @@ import com.gwtext.client.data.SimpleStore; import com.gwtext.client.data.Store; import com.gwtext.client.widgets.form.ComboBox; +import com.gwtext.client.widgets.form.FieldSet; +import com.gwtext.client.widgets.form.Radio; import com.gwtext.client.widgets.form.TextField; import com.gwtext.client.widgets.form.VType; import com.gwtext.client.widgets.form.ValidationException; @@ -23,6 +25,8 @@ private static final String LANG_FIELD = "kune-urf-lang-f"; private static final String COUNTRY_FIELD = "kune-urf-country-f"; private static final String TIMEZONE_FIELD = "kune-urf-timezone-f"; + private static final String WANNAPERSONALHOMEPAGE_FIELD = "kune-urf-wphp-f"; + private static final String NOPERSONALHOMEPAGE_FIELD = "kune-urf-nphp-f"; private final TextField shortNameRegField; private final TextField longNameRegField; @@ -32,14 +36,18 @@ private final ComboBox languageCombo; private final ComboBox countryCombo; private final ComboBox timezoneCombo; + private final Radio wantPersonalHomePage; + private final Radio noPersonalHomePage; + private final I18nUITranslationService i18n; public RegisterForm(final SignInPresenter presenter, final I18nUITranslationService i18n) { + this.i18n = i18n; super.addStyleName("kune-Margin-Large-l"); shortNameRegField = new TextField(); shortNameRegField.setFieldLabel(i18n.t("Nickname")); shortNameRegField.setName(NICK_FIELD); - shortNameRegField.setWidth(DEF_FIELD_WIDTH); + shortNameRegField.setWidth(DEF_SMALL_FIELD_WIDTH); shortNameRegField.setAllowBlank(false); shortNameRegField.setMinLength(3); shortNameRegField.setMaxLength(15); @@ -67,7 +75,7 @@ passwdRegField.setPassword(true); passwdRegField.setAllowBlank(false); passwdRegField.setMaxLength(40); - passwdRegField.setWidth(DEF_FIELD_WIDTH); + passwdRegField.setWidth(DEF_MEDIUM_FIELD_WIDTH); passwdRegField.setValidationEvent(false); passwdRegField.setId(PASSWORD_FIELD); add(passwdRegField); @@ -79,7 +87,7 @@ passwdRegFieldDup.setAllowBlank(false); passwdRegFieldDup.setMinLength(6); passwdRegFieldDup.setMaxLength(40); - passwdRegFieldDup.setWidth(DEF_FIELD_WIDTH); + passwdRegFieldDup.setWidth(DEF_MEDIUM_FIELD_WIDTH); passwdRegFieldDup.setInvalidText(i18n.t("Passwords do not match")); passwdRegFieldDup.setValidator(new Validator() { public boolean validate(final String value) throws ValidationException { @@ -94,7 +102,7 @@ emailRegField.setFieldLabel(i18n.t("Email")); emailRegField.setName(EMAIL_FIELD); emailRegField.setVtype(VType.EMAIL); - emailRegField.setWidth(DEF_FIELD_WIDTH); + emailRegField.setWidth(DEF_MEDIUM_FIELD_WIDTH); emailRegField.setAllowBlank(false); emailRegField.setValidationEvent(false); emailRegField.setId(EMAIL_FIELD); @@ -116,7 +124,7 @@ languageCombo.setTypeAhead(true); languageCombo.setTypeAheadDelay(1000); languageCombo.setSelectOnFocus(false); - languageCombo.setWidth(186); + languageCombo.setWidth(DEF_MEDIUM_FIELD_WIDTH); languageCombo.setAllowBlank(false); languageCombo.setValueField("abbr"); languageCombo.setValue(presenter.getCurrentLanguage().getCode()); @@ -142,7 +150,7 @@ countryCombo.setTypeAhead(true); countryCombo.setTypeAheadDelay(1000); countryCombo.setSelectOnFocus(false); - countryCombo.setWidth(186); + countryCombo.setWidth(DEF_MEDIUM_FIELD_WIDTH); countryCombo.setAllowBlank(false); countryCombo.setValueField("abbr"); countryCombo.setPageSize(7); @@ -167,7 +175,7 @@ timezoneCombo.setTypeAhead(true); timezoneCombo.setTypeAheadDelay(1000); timezoneCombo.setSelectOnFocus(false); - timezoneCombo.setWidth(186); + timezoneCombo.setWidth(DEF_MEDIUM_FIELD_WIDTH); timezoneCombo.setAllowBlank(false); timezoneCombo.setValueField("id"); timezoneCombo.setPageSize(7); @@ -175,6 +183,17 @@ timezoneCombo.setValidationEvent(false); timezoneCombo.setId(TIMEZONE_FIELD); add(timezoneCombo); + + final FieldSet personalSpaceFieldSet = new FieldSet(i18n.t("Do you want a personal homepage?")); + wantPersonalHomePage = new Radio(); + noPersonalHomePage = new Radio(); + personalSpaceFieldSet.setCollapsible(false); + createRadio(personalSpaceFieldSet, wantPersonalHomePage, i18n + .t("Yes, I want a homepage for publish my contents."), WANNAPERSONALHOMEPAGE_FIELD); + wantPersonalHomePage.setChecked(true); + createRadio(personalSpaceFieldSet, noPersonalHomePage, i18n.t("No, I don't want. Maybe in the future."), + NOPERSONALHOMEPAGE_FIELD); + add(personalSpaceFieldSet); } public String getCountry() { @@ -209,4 +228,17 @@ return timezoneCombo.getValueAsString(); } + public boolean wantPersonalHomepage() { + return wantPersonalHomePage.getValue(); + } + + private void createRadio(final FieldSet fieldSet, final Radio radio, final String radioLabel, final String radioId) { + radio.setName(radioId); + radio.setBoxLabel(i18n.t(radioLabel)); + radio.setAutoCreate(true); + radio.setHideLabel(true); + radio.setId(radioId); + fieldSet.add(radio); + } + } Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInForm.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInForm.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInForm.java 2008-10-16 14:34:33 UTC (rev 913) @@ -13,38 +13,38 @@ private final TextField loginPassField; public SignInForm(final I18nTranslationService i18n) { - super.addStyleName("kune-Margin-Large-trbl"); + super.addStyleName("kune-Margin-Large-trbl"); - loginNickOrEmailField = new TextField(); - loginNickOrEmailField.setFieldLabel(i18n.t("Nickname or email")); - loginNickOrEmailField.setName(NICKOREMAIL_FIELD); - loginNickOrEmailField.setWidth(DEF_FIELD_WIDTH); - loginNickOrEmailField.setAllowBlank(false); - loginNickOrEmailField.setValidationEvent(false); - loginNickOrEmailField.setId(NICKOREMAIL_FIELD); - super.add(loginNickOrEmailField); + loginNickOrEmailField = new TextField(); + loginNickOrEmailField.setFieldLabel(i18n.t("Nickname or email")); + loginNickOrEmailField.setName(NICKOREMAIL_FIELD); + loginNickOrEmailField.setWidth(DEF_SMALL_FIELD_WIDTH); + loginNickOrEmailField.setAllowBlank(false); + loginNickOrEmailField.setValidationEvent(false); + loginNickOrEmailField.setId(NICKOREMAIL_FIELD); + super.add(loginNickOrEmailField); - loginPassField = new TextField(); - loginPassField.setFieldLabel(i18n.t("Password")); - loginPassField.setName(PASSWORD_FIELD); - loginPassField.setWidth(DEF_FIELD_WIDTH); - loginPassField.setPassword(true); - loginPassField.setAllowBlank(false); - loginPassField.setValidationEvent(false); - loginPassField.setId(PASSWORD_FIELD); - super.add(loginPassField); + loginPassField = new TextField(); + loginPassField.setFieldLabel(i18n.t("Password")); + loginPassField.setName(PASSWORD_FIELD); + loginPassField.setWidth(DEF_MEDIUM_FIELD_WIDTH); + loginPassField.setPassword(true); + loginPassField.setAllowBlank(false); + loginPassField.setValidationEvent(false); + loginPassField.setId(PASSWORD_FIELD); + super.add(loginPassField); } public void focusLogin() { - loginNickOrEmailField.focus(); + loginNickOrEmailField.focus(); } public String getLoginPassword() { - return loginPassField.getValueAsString(); + return loginPassField.getValueAsString(); } public String getNickOrEmail() { - return loginNickOrEmailField.getValueAsString(); + return loginNickOrEmailField.getValueAsString(); } } Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPanel.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPanel.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPanel.java 2008-10-16 14:34:33 UTC (rev 913) @@ -35,50 +35,51 @@ import com.google.gwt.user.client.Cookies; import com.google.gwt.user.client.DeferredCommand; import com.google.gwt.user.client.ui.ClickListener; +import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; import com.gwtext.client.core.EventObject; -import com.gwtext.client.core.RegionPosition; import com.gwtext.client.widgets.Button; import com.gwtext.client.widgets.Component; import com.gwtext.client.widgets.Panel; import com.gwtext.client.widgets.TabPanel; +import com.gwtext.client.widgets.Toolbar; import com.gwtext.client.widgets.event.ButtonListenerAdapter; import com.gwtext.client.widgets.event.PanelListenerAdapter; import com.gwtext.client.widgets.event.WindowListenerAdapter; import com.gwtext.client.widgets.form.Field; -import com.gwtext.client.widgets.layout.BorderLayout; -import com.gwtext.client.widgets.layout.BorderLayoutData; import com.gwtext.client.widgets.layout.FitLayout; public class SignInPanel implements SignInView { private class MessagePanel extends Panel { - private static final String SIGNIN_MESSAGE_PANEL = "kune-sip-mp"; - private final SimpleMessagePanel messagesPanel; + private static final String SIGNIN_MESSAGE_PANEL = "kune-sip-mp"; + private final SimpleMessagePanel messagesPanel; - public MessagePanel() { - setPaddings(10); - setBorder(false); - setHeight(60); - messagesPanel = new SimpleMessagePanel(); - messagesPanel.ensureDebugId(SIGNIN_MESSAGE_PANEL); - messagesPanel.setMessage("", SiteErrorType.info, SiteErrorType.error); - add(messagesPanel); - } + public MessagePanel() { + setPaddings(10); + setBorder(false); + setHeight(60); + messagesPanel = new SimpleMessagePanel(); + messagesPanel.ensureDebugId(SIGNIN_MESSAGE_PANEL); + messagesPanel.setMessage("", SiteErrorType.info, SiteErrorType.error); + add(messagesPanel); + } - public void hide() { - messagesPanel.hide(); - super.hide(); - } + @Override + public void hide() { + messagesPanel.hide(); + super.hide(); + } - public void setMessage(final String message, final SiteErrorType lastMessageType, final SiteErrorType type) { - messagesPanel.setMessage(message, lastMessageType, type); - } + public void setMessage(final String message, final SiteErrorType lastMessageType, final SiteErrorType type) { + messagesPanel.setMessage(message, lastMessageType, type); + } - public void show() { - messagesPanel.show(); - super.show(); - } + @Override + public void show() { + messagesPanel.show(); + super.show(); + } } private static final String USER_SIGN_IN_PANEL = "kune-sip-usp"; @@ -96,275 +97,300 @@ private TabPanel centerPanel; private MessagePanel messagesRegisterPanel; private final I18nUITranslationService i18n; + private Label errorLabel; public SignInPanel(final SignInPresenter presenter, final I18nUITranslationService i18n, final WorkspaceSkeleton ws) { - this.i18n = i18n; - Field.setMsgTarget("side"); - this.presenter = presenter; - createPanel(); + this.i18n = i18n; + Field.setMsgTarget("side"); + this.presenter = presenter; + createPanel(); } public void center() { - dialog.center(); + dialog.center(); } public String getCountry() { - return registerForm.getCountry(); + return registerForm.getCountry(); } public String getEmail() { - return registerForm.getEmail(); + return registerForm.getEmail(); } public String getLanguage() { - return registerForm.getLanguage(); + return registerForm.getLanguage(); } public String getLoginPassword() { - return signInForm.getLoginPassword(); + return signInForm.getLoginPassword(); } public String getLongName() { - return registerForm.getLongName(); + return registerForm.getLongName(); } public String getNickOrEmail() { - return signInForm.getNickOrEmail(); + return signInForm.getNickOrEmail(); } public String getRegisterPassword() { - return registerForm.getRegisterPassword(); + return registerForm.getRegisterPassword(); } public String getRegisterPasswordDup() { - return registerForm.getRegisterPasswordDup(); + return registerForm.getRegisterPasswordDup(); } public String getShortName() { - return registerForm.getShortName(); + return registerForm.getShortName(); } public String getTimezone() { - return registerForm.getTimezone(); + return registerForm.getTimezone(); } public void hide() { - dialog.hide(); + dialog.hide(); } public void hideMessages() { - messagesSignInPanel.hide(); - if (messagesRegisterPanel != null) { - messagesRegisterPanel.hide(); - } - renderDialogIfNeeded(); + errorLabel.setText(""); + messagesSignInPanel.hide(); + if (messagesRegisterPanel != null) { + messagesRegisterPanel.hide(); + } + renderDialogIfNeeded(); } public boolean isRegisterFormValid() { - return registerForm.isValid(); + return registerForm.isValid(); } public boolean isSignInFormValid() { - return signInForm.isValid(); + return signInForm.isValid(); } public void mask(final String message) { - dialog.getEl().mask(message, "x-mask-loading"); + dialog.getEl().mask(message, "x-mask-loading"); } public void maskProcessing() { - mask(i18n.t("Processing")); + mask(i18n.t("Processing")); } public void reset() { - DeferredCommand.addCommand(new Command() { - public void execute() { - signInForm.reset(); - if (registerForm != null) { - registerForm.reset(); - } - } - }); + DeferredCommand.addCommand(new Command() { + public void execute() { + signInForm.reset(); + if (registerForm != null) { + registerForm.reset(); + } + } + }); } public void setCookie(final String userHash) { - // http://code.google.com/p/google-web-toolkit-incubator/wiki/LoginSecurityFAQ - final long duration = Session.SESSION_DURATION; - final Date expires = new Date(System.currentTimeMillis() + duration); - Cookies.setCookie(Site.USERHASH, userHash, expires, null, "/", false); - GWT.log("Received hash: " + userHash, null); + // http://code.google.com/p/google-web-toolkit-incubator/wiki/LoginSecurityFAQ + final long duration = Session.SESSION_DURATION; + final Date expires = new Date(System.currentTimeMillis() + duration); + Cookies.setCookie(Site.USERHASH, userHash, expires, null, "/", false); + GWT.log("Received hash: " + userHash, null); } public void setRegisterMessage(final String message, final SiteErrorType type) { - messagesRegisterPanel.setMessage(message, type, type); - messagesRegisterPanel.show(); - renderDialogIfNeeded(); + messagesRegisterPanel.setMessage(message, type, type); + messagesRegisterPanel.show(); + renderDialogIfNeeded(); } public void setSignInMessage(final String message, final SiteErrorType type) { - messagesSignInPanel.setMessage(message, type, type); - messagesSignInPanel.show(); - renderDialogIfNeeded(); + errorLabel.setText(message); + messagesSignInPanel.setMessage(message, type, type); + messagesSignInPanel.show(); + renderDialogIfNeeded(); } public void show() { - centerPanel.activate(0); - dialog.setVisible(true); - dialog.show(); - Site.hideProgress(); - dialog.focus(); - signInForm.focusLogin(); + centerPanel.activate(0); + dialog.setVisible(true); + dialog.show(); + Site.hideProgress(); + dialog.focus(); + signInForm.focusLogin(); } public void showWelcolmeDialog() { - if (welcomeDialog == null) { - welcomeDialog = new InfoDialog(i18n.t("Welcome"), i18n.t("Thanks for registering"), i18n - .t("Now you can participate more actively in this site with other people and groups. " - + "You can also use your personal space to publish contents. " - + "Your email is not verified, please follow the instructions you will receive by email."), - i18n.t("Ok"), true, true, 400, 270); - } - welcomeDialog.show(); + if (welcomeDialog == null) { + welcomeDialog = new InfoDialog(i18n.t("Welcome"), i18n.t("Thanks for registering"), i18n + .t("Now you can participate more actively in this site with other people and groups. " + + "You can also use your personal space to publish contents. " + + "Your email is not verified, please follow the instructions you will receive by email."), + i18n.t("Ok"), true, true, 400, 270); + } + welcomeDialog.show(); } public void unMask() { - dialog.getEl().unmask(); + dialog.getEl().unmask(); } + public boolean wantPersonalHomepage() { + return registerForm.wantPersonalHomepage(); + } + private void confPanel(final Panel panel) { - // panel.setLayout(new FormLayout()); - // panel.setAutoWidth(true); - // anel.setAutoHeight(true); + // panel.setLayout(new FormLayout()); + // panel.setAutoWidth(true); + // anel.setAutoHeight(true); + panel.setAutoScroll(true); } private Panel createNoAccountRegister() { - final Panel noAccRegisterPanel = new Panel(); - noAccRegisterPanel.setBorder(false); - noAccRegisterPanel.setMargins(0, 90, 0, 0); - final Label dontHaveAccountLabel = new Label(i18n.t("Don't have an account?")); - final Label registerLabel = new Label(i18n.t("Create one.")); - registerLabel.addClickListener(new ClickListener() { - public void onClick(final Widget arg0) { - centerPanel.activate(1); - } - }); - registerLabel.addStyleName("kune-Margin-Medium-l"); - registerLabel.addStyleName("kune-link"); - noAccRegisterPanel.add(dontHaveAccountLabel); - noAccRegisterPanel.add(registerLabel); - return noAccRegisterPanel; + final Panel noAccRegisterPanel = new Panel(); + noAccRegisterPanel.setBorder(false); + noAccRegisterPanel.setMargins(0, 20, 0, 0); + HorizontalPanel hp = new HorizontalPanel(); + final Label dontHaveAccountLabel = new Label(i18n.t("Don't have an account?")); + final Label registerLabel = new Label(i18n.t("Create one.")); + registerLabel.addClickListener(new ClickListener() { + public void onClick(final Widget arg0) { + centerPanel.activate(1); + } + }); + registerLabel.addStyleName("kune-Margin-Medium-l"); + registerLabel.addStyleName("kune-link"); + hp.add(dontHaveAccountLabel); + hp.add(registerLabel); + noAccRegisterPanel.add(hp); + return noAccRegisterPanel; } private void createPanel() { - dialog = new BasicDialog(i18n.t("Sign in"), true, false, 370, 400); - dialog.setLayout(new FitLayout()); - final Panel dialogPanel = new Panel(); - dialogPanel.setLayout(new BorderLayout()); - // dialog.setAutoHeight(false); - // dialog.setAutoWidth(false); - // dialog.setAutoHeight(true); - // dialog.setAutoWidth(true); - dialogPanel.setHeight("100%"); - dialogPanel.setWidth("auto"); - // dialog.setCollapsible(false); + dialog = new BasicDialog(i18n.t("Sign in"), true, false, 370, 400); + dialog.setLayout(new FitLayout()); + final Panel dialogPanel = new Panel(); + dialogPanel.setLayout(new FitLayout()); + dialogPanel.setBorder(false); + // dialog.setAutoHeight(false); + // dialog.setAutoWidth(false); + // dialog.setAutoHeight(true); + // dialog.setAutoWidth(true); + dialogPanel.setHeight("100%"); + dialogPanel.setWidth("auto"); + // dialog.setCollapsible(false); - centerPanel = new TabPanel(); - centerPanel.setActiveTab(0); - // centerPanel.setAutoWidth(true); - // centerPanel.setAutoHeight(true); - centerPanel.setClosable(false); + centerPanel = new TabPanel(); + centerPanel.setBorder(false); + centerPanel.setActiveTab(0); + // centerPanel.setAutoWidth(true); + // centerPanel.setAutoHeight(true); + centerPanel.setClosable(false); - final Panel signInPanel = new Panel(i18n.t("Sign in")); - confPanel(signInPanel); - signInForm = new SignInForm(i18n); - signInPanel.add(signInForm.getForm()); - signInPanel.setCls(USER_SIGN_IN_PANEL); - signInPanel.add(createNoAccountRegister()); - messagesSignInPanel = new MessagePanel(); - signInPanel.add(messagesSignInPanel); + final Panel signInPanel = new Panel(i18n.t("Sign in")); + signInPanel.setBorder(false); + signInPanel.setMargins(20); + confPanel(signInPanel); + signInForm = new SignInForm(i18n); + signInPanel.add(signInForm.getForm()); + signInPanel.setCls(USER_SIGN_IN_PANEL); + signInPanel.add(createNoAccountRegister()); + messagesSignInPanel = new MessagePanel(); + signInPanel.add(messagesSignInPanel); - final Panel registerPanel = new Panel(i18n.t("Register")); - registerPanel.setCls(USER_REGISTER_PANEL); - confPanel(registerPanel); + final Panel registerPanel = new Panel(i18n.t("Register")); + signInPanel.setBorder(false); + registerPanel.setCls(USER_REGISTER_PANEL); + confPanel(registerPanel); - centerPanel.add(signInPanel); - centerPanel.add(registerPanel); - dialogPanel.add(centerPanel, new BorderLayoutData(RegionPosition.CENTER)); - dialog.add(dialogPanel); + centerPanel.add(signInPanel); + centerPanel.add(registerPanel); + dialogPanel.add(centerPanel); + errorLabel = new Label(""); + Toolbar messageToolbar = new Toolbar(); + messageToolbar.addElement(errorLabel.getElement()); + dialog.setBottomToolbar(messageToolbar); + dialog.add(dialogPanel); - final Button signInBtn = new Button(i18n.t("Sign in")); - signInBtn.addListener(new ButtonListenerAdapter() { - public void onClick(final Button button, final EventObject e) { - signInForm.validate(); - if (signInForm.isValid()) { - presenter.onFormSignIn(); - } - } - }); - signInBtn.setId(SIGN_IN_BUTTON_ID); - dialog.addButton(signInBtn); + final Button signInBtn = new Button(i18n.t("Sign in")); + signInBtn.addListener(new ButtonListenerAdapter() { + @Override + public void onClick(final Button button, final EventObject e) { + signInForm.validate(); + if (signInForm.isValid()) { + presenter.onFormSignIn(); + } + } + }); + signInBtn.setId(SIGN_IN_BUTTON_ID); + dialog.addButton(signInBtn); - final Button registerBtn = new Button(i18n.t("Register")); - registerBtn.addListener(new ButtonListenerAdapter() { - public void onClick(final Button button, final EventObject e) { - registerForm.validate(); - if (registerForm.isValid()) { - presenter.onFormRegister(); - } - } - }); - dialog.addButton(registerBtn); - registerBtn.setId(REGISTER_BUTTON_ID); - registerBtn.hide(); + final Button registerBtn = new Button(i18n.t("Register")); + registerBtn.addListener(new ButtonListenerAdapter() { + @Override + public void onClick(final Button button, final EventObject e) { + registerForm.validate(); + if (registerForm.isValid()) { + presenter.onFormRegister(); + } + } + }); + dialog.addButton(registerBtn); + registerBtn.setId(REGISTER_BUTTON_ID); + registerBtn.hide(); - final Button cancel = new Button(); - cancel.setId(CANCEL_BUTTON_ID); - dialog.addButton(cancel); - cancel.setText(i18n.tWithNT("Cancel", "used in button")); - cancel.addListener(new ButtonListenerAdapter() { - public void onClick(final Button button, final EventObject e) { - presenter.onCancel(); - } - }); + final Button cancel = new Button(); + cancel.setId(CANCEL_BUTTON_ID); + dialog.addButton(cancel); + cancel.setText(i18n.tWithNT("Cancel", "used in button")); + cancel.addListener(new ButtonListenerAdapter() { + @Override + public void onClick(final Button button, final EventObject e) { + presenter.onCancel(); + } + }); - signInPanel.addListener(new PanelListenerAdapter() { - public void onActivate(final Panel panel) { - dialog.setTitle(i18n.t("Sign in")); - registerBtn.hide(); - signInBtn.show(); - } - }); + signInPanel.addListener(new PanelListenerAdapter() { + @Override + public void onActivate(final Panel panel) { + dialog.setTitle(i18n.t("Sign in")); + registerBtn.hide(); + signInBtn.show(); + } + }); - registerPanel.addListener(new PanelListenerAdapter() { - public void onActivate(final Panel panel) { - if (registerForm == null) { - maskProcessing(); - registerForm = new RegisterForm(presenter, i18n); - registerPanel.add(registerForm.getForm()); - messagesRegisterPanel = new MessagePanel(); - registerPanel.add(messagesRegisterPanel); - messagesRegisterPanel.hide(); - renderDialogIfNeeded(); - unMask(); - } - dialog.setTitle(i18n.t("Register")); - signInBtn.hide(); - registerBtn.show(); - } - }); + registerPanel.addListener(new PanelListenerAdapter() { + @Override + public void onActivate(final Panel panel) { + if (registerForm == null) { + maskProcessing(); + registerForm = new RegisterForm(presenter, i18n); + registerPanel.add(registerForm.getForm()); + messagesRegisterPanel = new MessagePanel(); + registerPanel.add(messagesRegisterPanel); + messagesRegisterPanel.hide(); + renderDialogIfNeeded(); + unMask(); + } + dialog.setTitle(i18n.t("Register")); + signInBtn.hide(); + registerBtn.show(); + } + }); - dialog.addListener(new WindowListenerAdapter() { - public void onHide(final Component component) { - presenter.onClose(); - } - }); - hideMessages(); - renderDialogIfNeeded(); + dialog.addListener(new WindowListenerAdapter() { + @Override + public void onHide(final Component component) { + presenter.onClose(); + } + }); + hideMessages(); + renderDialogIfNeeded(); } private void renderDialogIfNeeded() { - if (dialog.isRendered()) { - dialog.doLayout(); - } + if (dialog.isRendered()) { + dialog.doLayout(); + } } } Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPresenter.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPresenter.java 2008-10-16 14:34:33 UTC (rev 913) @@ -50,159 +50,161 @@ private StateToken previousStateToken; public SignInPresenter(final Session session, final StateManager stateManager, final I18nUITranslationService i18n, - final UserServiceAsync userService) { - this.session = session; - this.stateManager = stateManager; - this.userService = userService; - this.i18n = i18n; + final UserServiceAsync userService) { + this.session = session; + this.stateManager = stateManager; + this.userService = userService; + this.i18n = i18n; } public void doSignIn(final StateToken previousStateToken) { - this.previousStateToken = previousStateToken; - if (!session.isLogged()) { - Site.showProgressProcessing(); - view.show(); - view.center(); - Site.hideProgress(); - } else { - stateManager.gotoToken(previousStateToken); - } + this.previousStateToken = previousStateToken; + if (!session.isLogged()) { + Site.showProgressProcessing(); + view.show(); + view.center(); + Site.hideProgress(); + } else { + stateManager.gotoToken(previousStateToken); + } } public Object[][] getCountries() { - return session.getCountriesArray(); + return session.getCountriesArray(); } public I18nLanguageDTO getCurrentLanguage() { - return session.getCurrentLanguage(); + return session.getCurrentLanguage(); } public Object[][] getLanguages() { - return session.getLanguagesArray(); + return session.getLanguagesArray(); } public Object[][] getTimezones() { - return session.getTimezones(); + return session.getTimezones(); } public void init(final SignInView loginview) { - this.view = loginview; + this.view = loginview; } public void onCancel() { - resetMessages(); - reset(); - view.hide(); - stateManager.gotoToken(previousStateToken); + resetMessages(); + reset(); + view.hide(); + stateManager.gotoToken(previousStateToken); } public void onClose() { - reset(); - view.hideMessages(); - if (!session.isLogged()) { - stateManager.gotoToken(previousStateToken); - } + reset(); + view.hideMessages(); + if (!session.isLogged()) { + stateManager.gotoToken(previousStateToken); + } } public void onFormRegister() { - if (view.isRegisterFormValid()) { - view.maskProcessing(); + if (view.isRegisterFormValid()) { + view.maskProcessing(); - final I18nLanguageDTO language = new I18nLanguageDTO(); - language.setCode(view.getLanguage()); + final I18nLanguageDTO language = new I18nLanguageDTO(); + language.setCode(view.getLanguage()); - final I18nCountryDTO country = new I18nCountryDTO(); - country.setCode(view.getCountry()); + final I18nCountryDTO country = new I18nCountryDTO(); + country.setCode(view.getCountry()); - final TimeZoneDTO timezone = new TimeZoneDTO(); - timezone.setId(view.getTimezone()); + final TimeZoneDTO timezone = new TimeZoneDTO(); + timezone.setId(view.getTimezone()); - final UserDTO user = new UserDTO(view.getLongName(), view.getShortName(), view.getRegisterPassword(), view - .getEmail(), language, country, timezone, null, true, SubscriptionMode.manual, "blue"); - final AsyncCallback<UserInfoDTO> callback = new AsyncCallback<UserInfoDTO>() { - public void onFailure(final Throwable caught) { - view.unMask(); - try { - throw caught; - } catch (final EmailAddressInUseException e) { - view.setRegisterMessage(i18n.t("This email in in use by other person, try with another."), - SiteErrorType.error); - } catch (final GroupNameInUseException e) { - view.setRegisterMessage(i18n.t("This name in already in use, try with a different name."), - SiteErrorType.error); - } catch (final Throwable e) { - view.setRegisterMessage(i18n.t("Error during registration."), SiteErrorType.error); - GWT.log("Other kind of exception in user registration" + e.getMessage() + ", " - + e.getLocalizedMessage(), null); - e.printStackTrace(); - throw new RuntimeException(); - } - } + boolean wantPersonalHomepage = view.wantPersonalHomepage(); - public void onSuccess(final UserInfoDTO userInfoDTO) { - stateManager.gotoToken(userInfoDTO.getHomePage()); - onSignIn(userInfoDTO); - view.hide(); - view.unMask(); - view.showWelcolmeDialog(); - } - }; - userService.createUser(user, callback); - } + final UserDTO user = new UserDTO(view.getLongName(), view.getShortName(), view.getRegisterPassword(), view + .getEmail(), language, country, timezone, null, true, SubscriptionMode.manual, "blue"); + final AsyncCallback<UserInfoDTO> callback = new AsyncCallback<UserInfoDTO>() { + public void onFailure(final Throwable caught) { + view.unMask(); + try { + throw caught; + } catch (final EmailAddressInUseException e) { + view.setRegisterMessage(i18n.t("This email in in use by other person, try with another."), + SiteErrorType.error); + } catch (final GroupNameInUseException e) { + view.setRegisterMessage(i18n.t("This name in already in use, try with a different name."), + SiteErrorType.error); + } catch (final Throwable e) { + view.setRegisterMessage(i18n.t("Error during registration."), SiteErrorType.error); + GWT.log("Other kind of exception in user registration" + e.getMessage() + ", " + + e.getLocalizedMessage(), null); + e.printStackTrace(); + throw new RuntimeException(); + } + } + + public void onSuccess(final UserInfoDTO userInfoDTO) { + stateManager.gotoToken(userInfoDTO.getHomePage()); + onSignIn(userInfoDTO); + view.hide(); + view.unMask(); + view.showWelcolmeDialog(); + } + }; + userService.createUser(user, wantPersonalHomepage, callback); + } } protected void onFormSignIn() { - if (view.isSignInFormValid()) { - view.maskProcessing(); + if (view.isSignInFormValid()) { + view.maskProcessing(); - final String nickOrEmail = view.getNickOrEmail(); - final String passwd = view.getLoginPassword(); + final String nickOrEmail = view.getNickOrEmail(); + final String passwd = view.getLoginPassword(); - final UserDTO user = new UserDTO(); - user.setShortName(nickOrEmail); - user.setPassword(passwd); + final UserDTO user = new UserDTO(); + user.setShortName(nickOrEmail); + user.setPassword(passwd); - final AsyncCallback<UserInfoDTO> callback = new AsyncCallback<UserInfoDTO>() { - public void onFailure(final Throwable caught) { - view.unMask(); - Site.hideProgress(); - try { - throw caught; - } catch (final UserAuthException e) { - view.setSignInMessage(i18n.t("Incorrect nickname/email or password"), SiteErrorType.error); - } catch (final Throwable e) { - view.setSignInMessage("Error in login", SiteErrorType.error); - Log.error("Other kind of exception in LoginFormPresenter/doLogin"); - } - } + final AsyncCallback<UserInfoDTO> callback = new AsyncCallback<UserInfoDTO>() { + public void onFailure(final Throwable caught) { + view.unMask(); + Site.hideProgress(); + try { + throw caught; + } catch (final UserAuthException e) { + view.setSignInMessage(i18n.t("Incorrect nickname/email or password"), SiteErrorType.error); + } catch (final Throwable e) { + view.setSignInMessage("Error in login", SiteErrorType.error); + Log.error("Other kind of exception in LoginFormPresenter/doLogin"); + } + } - public void onSuccess(final UserInfoDTO userInfoDTO) { - onSignIn(userInfoDTO); - stateManager.gotoToken(previousStateToken); - view.hide(); - view.unMask(); - } - }; - userService.login(user.getShortName(), user.getPassword(), callback); - } + public void onSuccess(final UserInfoDTO userInfoDTO) { + onSignIn(userInfoDTO); + stateManager.gotoToken(previousStateToken); + view.hide(); + view.unMask(); + } + }; + userService.login(user.getShortName(), user.getPassword(), callback); + } } private void onSignIn(final UserInfoDTO userInfoDTO) { - final String userHash = userInfoDTO.getUserHash(); - view.setCookie(userHash); - session.setUserHash(userHash); - session.setCurrentUserInfo(userInfoDTO); - final I18nLanguageDTO language = userInfoDTO.getLanguage(); - i18n.changeCurrentLanguage(language.getCode()); - session.setCurrentLanguage(language); + final String userHash = userInfoDTO.getUserHash(); + view.setCookie(userHash); + session.setUserHash(userHash); + session.setCurrentUserInfo(userInfoDTO); + final I18nLanguageDTO language = userInfoDTO.getLanguage(); + i18n.changeCurrentLanguage(language.getCode()); + session.setCurrentLanguage(language); } private void reset() { - view.reset(); + view.reset(); } private void resetMessages() { - view.hideMessages(); + view.hideMessages(); } } Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInView.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInView.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInView.java 2008-10-16 14:34:33 UTC (rev 913) @@ -64,6 +64,8 @@ public void unMask(); + public boolean wantPersonalHomepage(); + void setCookie(String userHash); void setRegisterMessage(String message, SiteErrorType type); Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserService.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserService.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserService.java 2008-10-16 14:34:33 UTC (rev 913) @@ -28,7 +28,7 @@ public interface UserService extends RemoteService { - UserInfoDTO createUser(UserDTO user) throws DefaultException; + UserInfoDTO createUser(UserDTO user, boolean wantPersonalHomepage) throws DefaultException; UserInfoDTO login(String nickOrEmail, String passwd) throws DefaultException; Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserServiceAsync.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserServiceAsync.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserServiceAsync.java 2008-10-16 14:34:33 UTC (rev 913) @@ -26,14 +26,14 @@ public interface UserServiceAsync { + void createUser(UserDTO user, boolean wantPersonalHomepage, AsyncCallback<UserInfoDTO> asyncCallback); + void login(String nickOrEmail, String passwd, AsyncCallback<UserInfoDTO> callback); void logout(String userHash, AsyncCallback<?> callback); - void createUser(UserDTO user, AsyncCallback<UserInfoDTO> asyncCallback); + void onlyCheckSession(String userHash, AsyncCallback<?> asyncCallback); void reloadUserInfo(String userHash, AsyncCallback<UserInfoDTO> asyncCallback); - void onlyCheckSession(String userHash, AsyncCallback<?> asyncCallback); - } Modified: trunk/src/main/resources/dozerBeanMapping.xml =================================================================== --- trunk/src/main/resources/dozerBeanMapping.xml 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/main/resources/dozerBeanMapping.xml 2008-10-16 14:34:33 UTC (rev 913) @@ -2,439 +2,448 @@ <!DOCTYPE mappings PUBLIC "-//DOZER//DTD MAPPINGS//EN" "http://dozer.sourceforge.net/dtd/dozerbeanmapping.dtd"> <mappings> - <configuration> - <stop-on-errors>true</stop-on-errors> - <date-format>dd/mm/yyyy</date-format> - <wildcard>true</wildcard> - </configuration> + <configuration> + <stop-on-errors>true</stop-on-errors> + <date-format>dd/mm/yyyy</date-format> + <wildcard>true</wildcard> + </configuration> - <mapping> - <class-a> - org.ourproject.kune.platf.client.dto.InitDataDTO - </class-a> - <class-b>org.ourproject.kune.platf.server.InitData</class-b> - <field> - <a>licenses</a> - <b>licenses</b> - <a-hint> - org.ourproject.kune.platf.client.dto.LicenseDTO - </a-hint> - <b-hint> - org.ourproject.kune.platf.server.domain.License - </b-hint> - </field> - <field> - <a>languages</a> - <b>languages</b> - <a-hint> - org.ourproject.kune.platf.client.dto.I18nLanguageSimpleDTO - </a-hint> - <b-hint> - org.ourproject.kune.platf.server.domain.I18nLanguage - </b-hint> - </field> - <field> - <a>countries</a> - <b>countries</b> - <a-hint> - org.ourproject.kune.platf.client.dto.I18nCountryDTO - </a-hint> - <b-hint> - org.ourproject.kune.platf.server.domain.I18nCountry - </b-hint> - </field> - </mapping> + <mapping> + <class-a> + org.ourproject.kune.platf.client.dto.InitDataDTO + </class-a> + <class-b>org.ourproject.kune.platf.server.InitData</class-b> + <field> + <a>licenses</a> + <b>licenses</b> + <a-hint> + org.ourproject.kune.platf.client.dto.LicenseDTO + </a-hint> + <b-hint> + org.ourproject.kune.platf.server.domain.License + </b-hint> + </field> + <field> + <a>languages</a> + <b>languages</b> + <a-hint> + org.ourproject.kune.platf.client.dto.I18nLanguageSimpleDTO + </a-hint> + <b-hint> + org.ourproject.kune.platf.server.domain.I18nLanguage + </b-hint> + </field> + <field> + <a>countries</a> + <b>countries</b> + <a-hint> + org.ourproject.kune.platf.client.dto.I18nCountryDTO + </a-hint> + <b-hint> + org.ourproject.kune.platf.server.domain.I18nCountry + </b-hint> + </field> + </mapping> - <mapping> - <class-a>org.ourproject.kune.platf.client.dto.GroupDTO</class-a> - <class-b>org.ourproject.kune.platf.server.domain.Group</class-b> - </mapping> + <mapping> + <class-a>org.ourproject.kune.platf.client.dto.GroupDTO</class-a> + <class-b>org.ourproject.kune.platf.server.domain.Group</class-b> + </mapping> - <mapping> - <class-a> - org.ourproject.kune.platf.client.dto.GroupListDTO - </class-a> - <class-b> - org.ourproject.kune.platf.server.domain.GroupList - </class-b> - <field> - <a>list</a> - <b>list</b> - <a-hint> - org.ourproject.kune.platf.client.dto.GroupDTO - </a-hint> - <b-hint> - org.ourproject.kune.platf.server.domain.Group - </b-hint> - </field> - <field - custom-converter="org.ourproject.kune.platf.server.mapper.GroupListModeConverter"> - <a>mode</a> - <b>mode</b> - </field> - </mapping> + <mapping> + <class-a> + org.ourproject.kune.platf.client.dto.GroupListDTO + </class-a> + <class-b> + org.ourproject.kune.platf.server.domain.GroupList + </class-b> + <field> + <a>list</a> + <b>list</b> + <a-hint> + org.ourproject.kune.platf.client.dto.GroupDTO + </a-hint> + <b-hint> + org.ourproject.kune.platf.server.domain.Group + </b-hint> + </field> + <field + custom-converter="org.ourproject.kune.platf.server.mapper.GroupListModeConverter"> + <a>mode</a> + <b>mode</b> + </field> + </mapping> - <mapping> - <class-a> - org.ourproject.kune.platf.client.dto.AccessListsDTO - </class-a> - <class-b> - org.ourproject.kune.platf.server.domain.AccessLists - </class-b> - <field> - <a>admins</a> - <b>admins</b> - <a-hint> - org.ourproject.kune.platf.client.dto.GroupListDTO - </a-hint> - <b-hint> - org.ourproject.kune.platf.server.domain.GroupList - </b-hint> - </field> - <field> - <a>editors</a> - <b>editors</b> - <a-hint> - org.ourproject.kune.platf.client.dto.GroupListDTO - </a-hint> - <b-hint> - org.ourproject.kune.platf.server.domain.GroupList - </b-hint> - </field> - <field> - <a>viewers</a> - <b>viewers</b> - <a-hint> - org.ourproject.kune.platf.client.dto.GroupListDTO - </a-hint> - <b-hint> - org.ourproject.kune.platf.server.domain.GroupList - </b-hint> - </field> - </mapping> + <mapping> + <class-a> + org.ourproject.kune.platf.client.dto.AccessListsDTO + </class-a> + <class-b> + org.ourproject.kune.platf.server.domain.AccessLists + </class-b> + <field> + <a>admins</a> + <b>admins</b> + <a-hint> + org.ourproject.kune.platf.client.dto.GroupListDTO + </a-hint> + <b-hint> + org.ourproject.kune.platf.server.domain.GroupList + </b-hint> + </field> + <field> + <a>editors</a> + <b>editors</b> + <a-hint> + org.ourproject.kune.platf.client.dto.GroupListDTO + </a-hint> + <b-hint> + org.ourproject.kune.platf.server.domain.GroupList + </b-hint> + </field> + <field> + <a>viewers</a> + <b>viewers</b> + <a-hint> + org.ourproject.kune.platf.client.dto.GroupListDTO + </a-hint> + <b-hint> + org.ourproject.kune.platf.server.domain.GroupList + </b-hint> + </field> + </mapping> - <mapping> - <class-a> - org.ourproject.kune.platf.client.dto.AccessRightsDTO - </class-a> - <class-b> - org.ourproject.kune.platf.server.access.AccessRights - </class-b> - </mapping> + <mapping> + <class-a> + org.ourproject.kune.platf.client.dto.AccessRightsDTO + </class-a> + <class-b> + org.ourproject.kune.platf.server.access.AccessRights + </class-b> + </mapping> - <mapping> - <class-a>org.ourproject.kune.platf.client.dto.StateDTO</class-a> - <class-b>org.ourproject.kune.platf.server.state.State</class-b> - <field> - <a>authors</a> - <b>authors</b> - <a-hint> - org.ourproject.kune.platf.client.dto.UserSimpleDTO - </a-hint> - <b-hint> - org.ourproject.kune.platf.server.domain.User - </b-hint> - </field> - <field> - <a>groupTags</a> - <b>groupTags</b> - <a-hint> - org.ourproject.kune.platf.client.dto.TagResultDTO - </a-hint> - <b-hint> - org.ourproject.kune.platf.server.domain.TagResult - </b-hint> - </field> - </mapping> + <mapping> + <class-a>org.ourproject.kune.platf.client.dto.StateDTO</class-a> + <class-b>org.ourproject.kune.platf.server.state.State</class-b> + <field> + <a>authors</a> + <b>authors</b> + <a-hint> + org.ourproject.kune.platf.client.dto.UserSimpleDTO + </a-hint> + <b-hint> + org.ourproject.kune.platf.server.domain.User + </b-hint> + </field> + <field> + <a>groupTags</a> + <b>groupTags</b> + <a-hint> + org.ourproject.kune.platf.client.dto.TagResultDTO + </a-hint> + <b-hint> + org.ourproject.kune.platf.server.domain.TagResult + </b-hint> + </field> + </mapping> - <mapping> - <class-a> - org.ourproject.kune.platf.client.dto.StateToken - </class-a> - <class-b> - org.ourproject.kune.platf.client.dto.StateToken - </class-b> - <field> - <a>encoded</a> - <b>encoded</b> - </field> - </mapping> + <mapping> + <class-a> + org.ourproject.kune.platf.client.dto.StateToken + </class-a> + <class-b> + org.ourproject.kune.platf.client.dto.StateToken + </class-b> + <field> + <a>encoded</a> + <b>encoded</b> + </field> + </mapping> - <mapping> - <class-a> - org.ourproject.kune.platf.client.dto.BasicMimeTypeDTO - </class-a> - <class-b> - org.ourproject.kune.platf.server.domain.BasicMimeType - </class-b> - </mapping> + <mapping> + <class-a> + org.ourproject.kune.platf.client.dto.BasicMimeTypeDTO + </class-a> + <class-b> + org.ourproject.kune.platf.server.domain.BasicMimeType + </class-b> + </mapping> - <mapping> - <class-a> - org.ourproject.kune.platf.client.dto.LicenseDTO - </class-a> - <class-b> - org.ourproject.kune.platf.server.domain.License - </class-b> - </mapping> + <mapping> + <class-a> + org.ourproject.kune.platf.client.dto.LicenseDTO + </class-a> + <class-b> + org.ourproject.kune.platf.server.domain.License + </class-b> + </mapping> - <mapping> - <class-a> - org.ourproject.kune.platf.client.dto.ContainerSimpleDTO - </class-a> - <class-b> - org.ourproject.kune.platf.server.domain.Container - </class-b> - <field> - <a get-method="getStateToken">stateToken</a> - <b>stateToken</b> - </field> - </mapping> + <mapping> + <class-a> + org.ourproject.kune.platf.client.dto.ContainerSimpleDTO + </class-a> + <class-b> + org.ourproject.kune.platf.server.domain.Container + </class-b> + <field> + <a get-method="getStateToken">stateToken</a> + <b>stateToken</b> + </field> + </mapping> - <mapping> - <class-a> - org.ourproject.kune.platf.client.dto.ContentSimpleDTO - </class-a> - <class-b> - org.ourproject.kune.platf.server.domain.Content - </class-b> - <field> - <a>title</a> - <b>lastRevision.title</b> - </field> - <field> - <a get-method="getStateToken">stateToken</a> - <b>stateToken</b> - </field> - </mapping> + <mapping> + <class-a> + org.ourproject.kune.platf.client.dto.ContentSimpleDTO + </class-a> + <class-b> + org.ourproject.kune.platf.server.domain.Content + </class-b> + <field> + <a>title</a> + <b>lastRevision.title</b> + </field> + <field> + <a get-method="getStateToken">stateToken</a> + <b>stateToken</b> + </field> + </mapping> - <mapping type="one-way"> - <class-a> - org.ourproject.kune.platf.server.domain.Content - </class-a> - <class-b>org.ourproject.kune.platf.client.dto.LinkDTO</class-b> - <field> - <a>lastRevision.title</a> - <b>longName</b> - </field> - <field> - <a>container.owner.shortName</a> - <b>shortName</b> - </field> - <field> - <a get-method="getStateTokenEncoded">link</a> - <b>link</b> - </field> - </mapping> + <mapping type="one-way"> + <class-a> + org.ourproject.kune.platf.server.domain.Content + </class-a> + <class-b>org.ourproject.kune.platf.client.dto.LinkDTO</class-b> + <field> + <a>lastRevision.title</a> + <b>longName</b> + </field> + <field> + <a>container.owner.shortName</a> + <b>shortName</b> + </field> + <field> + <a get-method="getStateTokenEncoded">link</a> + <b>link</b> + </field> + </mapping> - <mapping> - <class-a> - org.ourproject.kune.platf.client.dto.ContainerDTO - </class-a> - <class-b> - org.ourproject.kune.platf.server.domain.Container - </class-b> - <field> - <a>contents</a> - <b>contents</b> - <a-hint> - org.ourproject.kune.platf.client.dto.ContentSimpleDTO - </a-hint> - <b-hint> - org.ourproject.kune.platf.server.domain.Content - </b-hint> - </field> + <mapping> + <class-a> + org.ourproject.kune.platf.client.dto.ContainerDTO + </class-a> + <class-b> + org.ourproject.kune.platf.server.domain.Container + </class-b> + <field> + <a>contents</a> + <b>contents</b> + <a-hint> + org.ourproject.kune.platf.client.dto.ContentSimpleDTO + </a-hint> + <b-hint> + org.ourproject.kune.platf.server.domain.Content + </b-hint> + </field> - <field> - <a>absolutePath</a> - <b>absolutePath</b> - <a-hint> - org.ourproject.kune.platf.client.dto.ContainerSimpleDTO - </a-hint> - <b-hint> - org.ourproject.kune.platf.server.domain.Container - </b-hint> - </field> + <field> + <a>absolutePath</a> + <b>absolutePath</b> + <a-hint> + org.ourproject.kune.platf.client.dto.ContainerSimpleDTO + </a-hint> + <b-hint> + org.ourproject.kune.platf.server.domain.Container + </b-hint> + </field> - <field> - <a>childs</a> - <b>childs</b> - <a-hint> - org.ourproject.kune.platf.client.dto.ContainerSimpleDTO - </a-hint> - <b-hint> - org.ourproject.kune.platf.server.domain.Container - </b-hint> - </field> + <field> + <a>childs</a> + <b>childs</b> + <a-hint> + org.ourproject.kune.platf.client.dto.ContainerSimpleDTO + </a-hint> + <b-hint> + org.ourproject.kune.platf.server.domain.Container + </b-hint> + </field> - <field> - <a get-method="getStateToken">stateToken</a> - <b>stateToken</b> - </field> - </mapping> + <field> + <a get-method="getStateToken">stateToken</a> + <b>stateToken</b> + </field> + </mapping> - <mapping> - <class-a> - org.ourproject.kune.platf.client.dto.UserInfoDTO - </class-a> - <class-b> - org.ourproject.kune.platf.server.users.UserInfo - </class-b> - <field> - <a>language</a> - <b>language</b> - <a-hint> - org.ourproject.kune.platf.client.dto.I18nLanguageDTO - </a-hint> - <b-hint> - org.ourproject.kune.platf.server.domain.I18nLanguage - </b-hint> - </field> - <field> - <a>country</a> - <b>country</b> - <a-hint> - org.ourproject.kune.platf.client.dto.I18nCountryDTO - </a-hint> - <b-hint> - org.ourproject.kune.platf.server.domain.I18nCountry - </b-hint> - </field> - </mapping> + <mapping> + <class-a> + org.ourproject.kune.platf.client.dto.UserInfoDTO + </class-a> + <class-b> + org.ourproject.kune.platf.server.users.UserInfo + </class-b> + <field> + <a>language</a> + <b>language</b> + <a-hint> + org.ourproject.kune.platf.client.dto.I18nLanguageDTO + </a-hint> + <b-hint> + org.ourproject.kune.platf.server.domain.I18nLanguage + </b-hint> + </field> + <field> + <a>country</a> + <b>country</b> + <a-hint> + org.ourproject.kune.platf.client.dto.I18nCountryDTO + </a-hint> + <b-hint> + org.ourproject.kune.platf.server.domain.I18nCountry + </b-hint> + </field> + </mapping> - <mapping> - <class-a> - org.ourproject.kune.platf.client.dto.ParticipationDataDTO - </class-a> - <class-b> - org.ourproject.kune.platf.server.ParticipationData - </class-b> - </mapping> + <mapping> + <class-a> + org.ourproject.kune.platf.client.dto.ParticipationDataDTO + </class-a> + <class-b> + org.ourproject.kune.platf.server.ParticipationData + </class-b> + </mapping> - <mapping> - <class-a> - org.ourproject.kune.platf.client.dto.I18nLanguageDTO - </class-a> - <class-b> - org.ourproject.kune.platf.server.domain.I18nLanguage - </class-b> - </mapping> + <mapping> + <class-a> + org.ourproject.kune.platf.client.dto.I18nLanguageDTO + </class-a> + <class-b> + org.ourproject.kune.platf.server.domain.I18nLanguage + </class-b> + </mapping> - <mapping> - <class-a> - org.ourproject.kune.platf.client.dto.I18nCountryDTO - </class-a> - <class-b> - org.ourproject.kune.platf.server.domain.I18nCountry - </class-b> - </mapping> + <mapping> + <class-a> + org.ourproject.kune.platf.client.dto.I18nCountryDTO + </class-a> + <class-b> + org.ourproject.kune.platf.server.domain.I18nCountry + </class-b> + </mapping> - <mapping> - <class-a> - org.ourproject.kune.platf.client.dto.UserSimpleDTO - </class-a> - <class-b>org.ourproject.kune.platf.server.domain.User</class-b> - </mapping> + <mapping> + <class-a> + org.ourproject.kune.platf.client.dto.UserSimpleDTO + </class-a> + <class-b>org.ourproject.kune.platf.server.domain.User</class-b> + </mapping> - <mapping> - <class-a>org.ourproject.kune.platf.client.dto.TagDTO</class-a> - <class-b>org.ourproject.kune.platf.server.domain.Tag</class-b> - </mapping> + <mapping> + <class-a>org.ourproject.kune.platf.client.dto.TagDTO</class-a> + <class-b>org.ourproject.kune.platf.server.domain.Tag</class-b> + </mapping> - <mapping> - <class-a> - org.ourproject.kune.platf.client.dto.TagResultDTO - </class-a> - <class-b> - org.ourproject.kune.platf.server.domain.TagResult - </class-b> - </mapping> + <mapping> + <class-a> + org.ourproject.kune.platf.client.dto.TagResultDTO + </class-a> + <class-b> + org.ourproject.kune.platf.server.domain.TagResult + </class-b> + </mapping> - <mapping> - <class-a> - org.ourproject.kune.platf.server.domain.Comment - </class-a> - <class-b> - org.ourproject.kune.platf.client.dto.CommentDTO - </class-b> - <field> - <a>author</a> - <b>author</b> - <a-hint> - org.ourproject.kune.platf.server.domain.User - </a-hint> - <b-hint> - org.ourproject.kune.platf.client.dto.UserSimpleDTO - </b-hint> - </field> + <mapping> + <class-a> + org.ourproject.kune.platf.server.domain.Comment + </class-a> + <class-b> + org.ourproject.kune.platf.client.dto.CommentDTO + </class-b> + <field> + <a>author</a> + <b>author</b> + <a-hint> + org.ourproject.kune.platf.server.domain.User + </a-hint> + <b-hint> + org.ourproject.kune.platf.client.dto.UserSimpleDTO + </b-hint> + </field> - <field> - <a>childs</a> - <b>childs</b> - <a-hint> - org.ourproject.kune.platf.server.domain.Comment - </a-hint> - <b-hint> - org.ourproject.kune.platf.client.dto.CommentDTO - </b-hint> - </field> + <field> + <a>childs</a> + <b>childs</b> + <a-hint> + org.ourproject.kune.platf.server.domain.Comment + </a-hint> + <b-hint> + org.ourproject.kune.platf.client.dto.CommentDTO + </b-hint> + </field> - <field type="one-way"> - <a get-method="getPositiveVotersCount"> - positiveVotersCount - </a> - <b>positiveVotersCount</b> - </field> + <field type="one-way"> + <a get-method="getPositiveVotersCount"> + positiveVotersCount + </a> + <b>positiveVotersCount</b> + </field> - <field type="one-way"> - <a get-method="getNegativeVotersCount"> - negativeVotersCount - </a> - <b>negativeVotersCount</b> - </field> + <field type="one-way"> + <a get-method="getNegativeVotersCount"> + negativeVotersCount + </a> + <b>negativeVotersCount</b> + </field> - <field type="one-way"> - <a get-method="getAbuseInformersCount"> - abuseInformersCount - </a> - <b>abuseInformersCount</b> - </field> - </mapping> + <field type="one-way"> + <a get-method="getAbuseInformersCount"> + abuseInformersCount + </a> + <b>abuseInformersCount</b> + </field> + </mapping> - <mapping> - <class-a>org.ourproject.kune.platf.client.dto.LinkDTO</class-a> - <class-b>org.ourproject.kune.platf.server.domain.User</class-b> - <field> - <a>longName</a> - <b>name</b> - </field> - </mapping> + <mapping> + <class-a>org.ourproject.kune.platf.client.dto.LinkDTO</class-a> + <class-b>org.ourproject.kune.platf.server.domain.User</class-b> + <field> + <a>longName</a> + <b>name</b> + </field> + </mapping> - <mapping> - <class-a> - org.ourproject.kune.platf.client.dto.ChatUserParamsDTO - </class-a> - <class-b> - org.ourproject.kune.platf.server.domain.ChatUserParams - </class-b> - </mapping> + <mapping> + <class-a> + org.ourproject.kune.platf.client.dto.ChatUserParamsDTO + </class-a> + <class-b> + org.ourproject.kune.platf.server.domain.ChatUserParams + </class-b> + </mapping> - <mapping> - <class-a> - org.ourproject.kune.platf.client.dto.ContentStatusDTO - </class-a> - <class-b> - org.ourproject.kune.platf.server.domain.ContentStatus - </class-b> - </mapping> + <mapping> + <class-a> + org.ourproject.kune.platf.client.dto.ContentStatusDTO + </class-a> + <class-b> + org.ourproject.kune.platf.server.domain.ContentStatus + </class-b> + </mapping> - <mapping> - <class-a> - org.ourproject.kune.platf.client.dto.AccessRolDTO - </class-a> - <class-b> - org.ourproject.kune.platf.server.access.AccessRol - </class-b> - </mapping> + <mapping> + <class-a> + org.ourproject.kune.platf.client.dto.AccessRolDTO + </class-a> + <class-b> + org.ourproject.kune.platf.server.access.AccessRol + </class-b> + </mapping> + <mapping> + <class-a> + org.ourproject.kune.platf.client.dto.ToolSimpleDTO + </class-a> + <class-b> + org.ourproject.kune.platf.server.tool.ToolSimple + </class-b> + </mapping> + </mappings> \ No newline at end of file Modified: trunk/src/test/java/org/ourproject/kune/platf/integration/DatabaseInitializationTest.java =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/integration/DatabaseInitializationTest.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/test/java/org/ourproject/kune/platf/integration/DatabaseInitializationTest.java 2008-10-16 14:34:33 UTC (rev 913) @@ -4,6 +4,8 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import java.util.List; + import org.junit.Before; import org.junit.Test; import org.ourproject.kune.chat.server.ChatServerTool; @@ -36,39 +38,44 @@ @Before public void init() { - new IntegrationTestHelper(this); - defaultGroup = groupManager.getDefaultGroup(); + new IntegrationTestHelper(this); + defaultGroup = groupManager.getDefaultGroup(); } @Test public void testDefaultContentAndLicenses() { - assertNotNull(defaultGroup.getDefaultContent()); - assertTrue(licenseManager.getAll().size() > 0); - assertNotNull(defaultGroup.getDefaultLicense()); + assertNotNull(defaultGroup.getDefaultContent()); + assertTrue(licenseManager.getAll().size() > 0); + assertNotNull(defaultGroup.getDefaultLicense()); } @Test public void testDefaultDocumentContent() { - final Content content = defaultGroup.getDefaultContent(); - assertEquals(DocumentServerTool.TYPE_DOCUMENT, content.getTypeId()); - final Container rootDocFolder = content.getContainer(); - assertEquals(true, rootDocFolder.isRoot()); + final Content content = defaultGroup.getDefaultContent(); + assertEquals(DocumentServerTool.TYPE_DOCUMENT, content.getTypeId()); + final Container rootDocFolder = content.getContainer(); + assertEquals(true, rootDocFolder.isRoot()); } @Test public void testI18n() { - assertNotNull(countryManager.find(new Long(75))); - assertNotNull(languageManager.findByCode("en")); - assertNotNull(languageManager.find(new Long(1819))); + assertNotNull(countryManager.find(new Long(75))); + assertNotNull(languageManager.findByCode("en")); + assertNotNull(languageManager.find(new Long(1819))); } @Test public void testToolConfiguration() { - assertNotNull(defaultGroup); - final ToolConfiguration docToolConfig = defaultGroup.getToolConfiguration(DocumentServerTool.NAME); - assertNotNull(docToolConfig); - final ToolConfiguration chatToolConfig = defaultGroup.getToolConfiguration(ChatServerTool.NAME); - assertNotNull(chatToolConfig); + assertNotNull(defaultGroup); + final ToolConfiguration docToolConfig = defaultGroup.getToolConfiguration(DocumentServerTool.NAME); + assertNotNull(docToolConfig); + assertTrue(docToolConfig.isEnabled()); + final ToolConfiguration chatToolConfig = defaultGroup.getToolConfiguration(ChatServerTool.NAME); + assertNotNull(chatToolConfig); + assertTrue(chatToolConfig.isEnabled()); + List<String> enabledTools = groupManager.findEnabledTools(defaultGroup.getId()); + assertNotNull(enabledTools); + assertTrue(enabledTools.size() > 0); } } Modified: trunk/src/test/java/org/ourproject/kune/platf/integration/IntegrationTestHelper.java =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/integration/IntegrationTestHelper.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/test/java/org/ourproject/kune/platf/integration/IntegrationTestHelper.java 2008-10-16 14:34:33 UTC (rev 913) @@ -18,26 +18,26 @@ public class IntegrationTestHelper { public static Injector createInjector() { - final Injector injector = Guice.createInjector(new PlatformServerModule(), new DocumentServerModule(), - new ChatServerModule(), new AbstractModule() { - @Override - protected void configure() { - bindScope(SessionScoped.class, Scopes.SINGLETON); - // test: use memory - // test_db: use mysql - bindConstant().annotatedWith(JpaUnit.class).to("test"); - bindConstant().annotatedWith(PropertiesFileName.class).to("kune.properties"); - bind(HttpServletRequest.class).to(HttpServletRequestMocked.class); - } - }); - return injector; + final Injector injector = Guice.createInjector(new PlatformServerModule(), new DocumentServerModule(), + new ChatServerModule(), new AbstractModule() { + @Override + protected void configure() { + bindScope(SessionScoped.class, Scopes.SINGLETON); + // test: use memory + // test_db: use mysql + bindConstant().annotatedWith(JpaUnit.class).to("test"); + bindConstant().annotatedWith(PropertiesFileName.class).to("kune.properties"); + bind(HttpServletRequest.class).to(HttpServletRequestMocked.class); + } + }); + return injector; } public IntegrationTestHelper(final Object... tests) { - final Injector injector = createInjector(); - injector.getInstance(KunePersistenceService.class).start(); - for (final Object test : tests) { - injector.injectMembers(test); - } + final Injector injector = createInjector(); + injector.getInstance(KunePersistenceService.class).start(); + for (final Object test : tests) { + injector.injectMembers(test); + } } } Modified: trunk/src/test/java/org/ourproject/kune/platf/integration/kuneservice/GroupServiceTest.java =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/integration/kuneservice/GroupServiceTest.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/test/java/org/ourproject/kune/platf/integration/kuneservice/GroupServiceTest.java 2008-10-16 14:34:33 UTC (rev 913) @@ -30,104 +30,97 @@ @Test public void createCommunity() throws Exception { - doLogin(); + doLogin(); - final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", "Public Desc", - GroupType.COMMUNITY); + final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", GroupType.COMMUNITY); - final LicenseDTO license = new LicenseDTO(); - license.setShortName("by-sa"); - group.setDefaultLicense(license); - service.createNewGroup(session.getHash(), group); + final LicenseDTO license = new LicenseDTO(); + license.setShortName("by-sa"); + group.setDefaultLicense(license); + service.createNewGroup(session.getHash(), group, "Public desc", "tag1 tag2", null); - final Group groupCreated = groupFinder.findByShortName("ysei"); - assertEquals(groupCreated.getShortName(), group.getShortName()); - assertEquals(groupCreated.getLongName(), group.getLongName()); - assertEquals(groupCreated.getPublicDesc(), group.getPublicDesc()); - assertEquals(groupCreated.getAdmissionType(), AdmissionType.Open); - assertEquals(groupCreated.getType(), GroupType.COMMUNITY); + final Group groupCreated = groupFinder.findByShortName("ysei"); + assertEquals(groupCreated.getShortName(), group.getShortName()); + assertEquals(groupCreated.getLongName(), group.getLongName()); + + assertEquals(groupCreated.getAdmissionType(), AdmissionType.Open); + assertEquals(groupCreated.getType(), GroupType.COMMUNITY); } @Test(expected = Exception.class) public void createGroupNotLogged() throws Exception { - final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", "Public Desc", - GroupType.PROJECT); - service.createNewGroup(session.getHash(), group); + final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", GroupType.PROJECT); + service.createNewGroup(session.getHash(), group, "Public desc", "tag1 tag2", null); } @Test(expected = UserMustBeLoggedException.class) public void createGroupNullUserHash() throws Exception { - doLogin(); - final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", "Public Desc", - GroupType.PROJECT); - service.createNewGroup(null, group); + doLogin(); + final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", GroupType.PROJECT); + service.createNewGroup(null, group, "Public desc", "tag1 tag2", null); } @Test public void createGroupUserLogged() throws Exception { - doLogin(); + doLogin(); - final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", "Public Desc", - GroupType.PROJECT); + final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", GroupType.PROJECT); - final LicenseDTO license = new LicenseDTO(); - license.setShortName("by-sa"); - group.setDefaultLicense(license); - service.createNewGroup(session.getHash(), group); + final LicenseDTO license = new LicenseDTO(); + license.setShortName("by-sa"); + group.setDefaultLicense(license); + service.createNewGroup(session.getHash(), group, "Public desc", "tag1 tag2", null); - final Group groupCreated = groupFinder.findByShortName("ysei"); - assertEquals(groupCreated.getShortName(), group.getShortName()); - assertEquals(groupCreated.getLongName(), group.getLongName()); - assertEquals(groupCreated.getPublicDesc(), group.getPublicDesc()); - assertEquals(groupCreated.getAdmissionType(), AdmissionType.Moderated); - assertEquals(groupCreated.getType(), GroupType.PROJECT); + final Group groupCreated = groupFinder.findByShortName("ysei"); + assertEquals(groupCreated.getShortName(), group.getShortName()); + assertEquals(groupCreated.getLongName(), group.getLongName()); + + assertEquals(groupCreated.getAdmissionType(), AdmissionType.Moderated); + assertEquals(groupCreated.getType(), GroupType.PROJECT); } @Test public void createOrganization() throws Exception { - doLogin(); + doLogin(); - final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", "Public Desc", - GroupType.ORGANIZATION); + final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", GroupType.ORGANIZATION); - final LicenseDTO license = new LicenseDTO(); - license.setShortName("by-sa"); - group.setDefaultLicense(license); - service.createNewGroup(session.getHash(), group); + final LicenseDTO license = new LicenseDTO(); + license.setShortName("by-sa"); + group.setDefaultLicense(license); + service.createNewGroup(session.getHash(), group, "Public desc", "tag1 tag2", null); - final Group groupCreated = groupFinder.findByShortName("ysei"); - assertEquals(groupCreated.getShortName(), group.getShortName()); - assertEquals(groupCreated.getLongName(), group.getLongName()); - assertEquals(groupCreated.getPublicDesc(), group.getPublicDesc()); - assertEquals(groupCreated.getAdmissionType(), AdmissionType.Moderated); - assertEquals(groupCreated.getType(), GroupType.ORGANIZATION); + final Group groupCreated = groupFinder.findByShortName("ysei"); + assertEquals(groupCreated.getShortName(), group.getShortName()); + assertEquals(groupCreated.getLongName(), group.getLongName()); + assertEquals(groupCreated.getAdmissionType(), AdmissionType.Moderated); + assertEquals(groupCreated.getType(), GroupType.ORGANIZATION); } @Test public void createOrphanedProject() throws Exception { - doLogin(); + doLogin(); - final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", "Public Desc", - GroupType.ORPHANED_PROJECT); + final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", + GroupType.ORPHANED_PROJECT); - final LicenseDTO license = new LicenseDTO(); - license.setShortName("by-sa"); - group.setDefaultLicense(license); - service.createNewGroup(session.getHash(), group); + final LicenseDTO license = new LicenseDTO(); + license.setShortName("by-sa"); + group.setDefaultLicense(license); + service.createNewGroup(session.getHash(), group, "Public desc", "tag1 tag2", null); - final Group groupCreated = groupFinder.findByShortName("ysei"); - assertEquals(groupCreated.getShortName(), group.getShortName()); - assertEquals(groupCreated.getLongName(), group.getLongName()); - assertEquals(groupCreated.getPublicDesc(), group.getPublicDesc()); - assertEquals(groupCreated.getAdmissionType(), AdmissionType.Open); - assertEquals(groupCreated.getType(), GroupType.ORPHANED_PROJECT); - assertEquals(0, groupCreated.getSocialNetwork().getAccessLists().getAdmins().getList().size()); - assertEquals(0, groupCreated.getSocialNetwork().getAccessLists().getEditors().getList().size()); + final Group groupCreated = groupFinder.findByShortName("ysei"); + assertEquals(groupCreated.getShortName(), group.getShortName()); + assertEquals(groupCreated.getLongName(), group.getLongName()); + assertEquals(groupCreated.getAdmissionType(), AdmissionType.Open); + assertEquals(groupCreated.getType(), GroupType.ORPHANED_PROJECT); + assertEquals(0, groupCreated.getSocialNetwork().getAccessLists().getAdmins().getList().size()); + assertEquals(0, groupCreated.getSocialNetwork().getAccessLists().getEditors().getList().size()); } @Before public void init() { - new IntegrationTestHelper(this); + new IntegrationTestHelper(this); } } Modified: trunk/src/test/java/org/ourproject/kune/platf/integration/site/UserServiceTest.java =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/integration/site/UserServiceTest.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/test/java/org/ourproject/kune/platf/integration/site/UserServiceTest.java 2008-10-16 14:34:33 UTC (rev 913) @@ -50,77 +50,77 @@ @Test(expected = EmailAddressInUseException.class) public void createUserExistingEmailFails() throws Exception { - assertNull(session.getUser().getId()); - final UserDTO user = new UserDTO("test", "test", "123456", properties.getAdminEmail(), lang, country, timezone, - null, true, SubscriptionMode.manual, "blue"); - userService.createUser(user); + assertNull(session.getUser().getId()); + final UserDTO user = new UserDTO("test", "test", "123456", properties.getAdminEmail(), lang, country, timezone, + null, true, SubscriptionMode.manual, "blue"); + userService.createUser(user, false); } @Test(expected = GroupNameInUseException.class) public void createUserExistingNameFails() throws Exception { - assertNull(session.getUser().getId()); - final UserDTO user = new UserDTO("test", properties.getAdminShortName(), "123456", "[email protected]", lang, - country, timezone, null, true, SubscriptionMode.manual, "blue"); - userService.createUser(user); + assertNull(session.getUser().getId()); + final UserDTO user = new UserDTO("test", properties.getAdminShortName(), "123456", "[email protected]", lang, + country, timezone, null, true, SubscriptionMode.manual, "blue"); + userService.createUser(user, false); } @Before public void init() { - new IntegrationTestHelper(this); - lang = new I18nLanguageDTO(); - country = new I18nCountryDTO(); - timezone = new TimeZoneDTO(); - lang.setCode("en"); - country.setCode("GB"); - timezone.setId("GMT"); + new IntegrationTestHelper(this); + lang = new I18nLanguageDTO(); + country = new I18nCountryDTO(); + timezone = new TimeZoneDTO(); + lang.setCode("en"); + country.setCode("GB"); + timezone.setId("GMT"); } @Test(expected = SessionExpiredException.class) public void testReloadUserInfoNotLogged() throws Exception { - assertNull(session.getUser().getId()); - userService.reloadUserInfo("AndOldUserHash"); + assertNull(session.getUser().getId()); + userService.reloadUserInfo("AndOldUserHash"); } @Test public void testSiteEmailLogin() throws Exception { - assertNull(session.getUser().getId()); - userService.login(properties.getAdminEmail(), properties.getAdminPassword()); - assertNotNull(session.getUser().getId()); + assertNull(session.getUser().getId()); + userService.login(properties.getAdminEmail(), properties.getAdminPassword()); + assertNotNull(session.getUser().getId()); } @Test public void testSiteNameLogin() throws Exception { - assertNull(session.getUser().getId()); - userService.login(properties.getAdminShortName(), properties.getAdminPassword()); - assertNotNull(session.getUser().getId()); + assertNull(session.getUser().getId()); + userService.login(properties.getAdminShortName(), properties.getAdminPassword()); + assertNotNull(session.getUser().getId()); } @Test public void testUserInfo() throws Exception { - doLogin(); - final UserInfo userInfo = userInfoService.buildInfo(session.getUser(), session.getHash()); + doLogin(); + final UserInfo userInfo = userInfoService.buildInfo(session.getUser(), session.getHash()); - final UserInfoDTO userInfoDTO = mapper.map(userInfo, UserInfoDTO.class); - assertEquals(userInfo.getName(), userInfoDTO.getName()); - assertEquals(userInfo.getChatName(), userInfoDTO.getChatName()); - assertEquals(userInfo.getChatPassword(), userInfoDTO.getChatPassword()); - final List<Group> adminsGroup = userInfo.getGroupsIsAdmin(); - final List<GroupDTO> adminsGroupDTO = userInfoDTO.getGroupsIsAdmin(); - assertEqualGroupLists(adminsGroupDTO, adminsGroup); + final UserInfoDTO userInfoDTO = mapper.map(userInfo, UserInfoDTO.class); + assertEquals(userInfo.getName(), userInfoDTO.getName()); + assertEquals(userInfo.getChatName(), userInfoDTO.getChatName()); + assertEquals(userInfo.getChatPassword(), userInfoDTO.getChatPassword()); + final List<Group> adminsGroup = userInfo.getGroupsIsAdmin(); + final List<GroupDTO> adminsGroupDTO = userInfoDTO.getGroupsIsAdmin(); + assertEqualGroupLists(adminsGroupDTO, adminsGroup); } private void assertEqualGroupLists(final List<GroupDTO> listDTO, final List<Group> list) { - assertEquals(listDTO.size(), list.size()); - for (int i = 0; i < listDTO.size(); i++) { - final Object object = listDTO.get(i); - assertEquals(GroupDTO.class, object.getClass()); - final GroupDTO d = (GroupDTO) object; - final Group l = list.get(i); - assertNotNull(d); - assertNotNull(l); - final GroupDTO map = mapper.map(l, GroupDTO.class); - assertEquals(map.getShortName(), d.getShortName()); - } + assertEquals(listDTO.size(), list.size()); + for (int i = 0; i < listDTO.size(); i++) { + final Object object = listDTO.get(i); + assertEquals(GroupDTO.class, object.getClass()); + final GroupDTO d = (GroupDTO) object; + final Group l = list.get(i); + assertNotNull(d); + assertNotNull(l); + final GroupDTO map = mapper.map(l, GroupDTO.class); + assertEquals(map.getShortName(), d.getShortName()); + } } } Modified: trunk/src/test/java/org/ourproject/kune/platf/server/PersistenceTest.java =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/server/PersistenceTest.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/test/java/org/ourproject/kune/platf/server/PersistenceTest.java 2008-10-16 14:34:33 UTC (rev 913) @@ -17,52 +17,52 @@ private final String propetiesFileName; public PersistenceTest() { - // test: use memory - // test_db: use mysql - this("test", "kune.properties"); + // test: use memory + // test_db: use mysql + this("test", "kune.properties"); } public PersistenceTest(final String persistenceUnit, final String propetiesFileName) { - this.persistenceUnit = persistenceUnit; - this.propetiesFileName = propetiesFileName; + this.persistenceUnit = persistenceUnit; + this.propetiesFileName = propetiesFileName; } public void closeTransaction() { - getManager().getTransaction().commit(); + getManager().getTransaction().commit(); } public EntityTransaction getTransaction() { - return getManager().getTransaction(); + return getManager().getTransaction(); } public EntityManager openTransaction() { - final EntityManager manager = getManager(); - final EntityTransaction transaction = manager.getTransaction(); - transaction.begin(); - return manager; + final EntityManager manager = getManager(); + final EntityTransaction transaction = manager.getTransaction(); + transaction.begin(); + return manager; } public void persist(final Object... entities) { - for (final Object entity : entities) { - getManager().persist(entity); - } + for (final Object entity : entities) { + getManager().persist(entity); + } } @Before public void prepare() { - final Injector injector = TestHelper.create(new PlatformServerModule(), persistenceUnit, propetiesFileName); - final PersistenceService persistence = injector.getInstance(PersistenceService.class); - // To Debug insert breakpoint here - persistence.start(); - injector.injectMembers(this); + final Injector injector = TestHelper.create(new PlatformServerModule(), persistenceUnit, propetiesFileName); + final PersistenceService persistence = injector.getInstance(PersistenceService.class); + // To Debug insert breakpoint here + persistence.start(); + injector.injectMembers(this); } public void rollbackTransaction() { - getManager().getTransaction().rollback(); + getManager().getTransaction().rollback(); } private EntityManager getManager() { - return provider.get(); + return provider.get(); } } Modified: trunk/src/test/java/org/ourproject/kune/platf/server/manager/ContentManagerTest.java =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/server/manager/ContentManagerTest.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/test/java/org/ourproject/kune/platf/server/manager/ContentManagerTest.java 2008-10-16 14:34:33 UTC (rev 913) @@ -45,47 +45,47 @@ private License defLicense; public ContentManagerTest() { - // Testing with mysql because utf-8 normally fails with mysql and not in - // memory - super("test_db", "kune.properties"); + // Testing with mysql because utf-8 normally fails with mysql and not in + // memory + super("test_db", "kune.properties"); } @After public void close() { - if (getTransaction().isActive()) { - getTransaction().rollback(); - } + if (getTransaction().isActive()) { + getTransaction().rollback(); + } } @Before public void insertData() throws Exception { - openTransaction(); - assertEquals(0, userFinder.getAll().size()); - assertEquals(0, groupFinder.getAll().size()); - assertEquals(0, licenseFinder.getAll().size()); - final I18nLanguage english = new I18nLanguage(new Long(1819), "English", "English", "en"); - languageManager.persist(english); - final I18nCountry gb = new I18nCountry(new Long(75), "GB", "GBP", ".", "£%n", "", ".", "United Kingdom", - "western", ","); - countryManager.persist(gb); - user = userManager.createUser("username", "the user name", "[email protected]", "userPassword", "en", "GB", - TimeZone.getDefault().getID()); - defLicense = new License("by-sa", "Creative Commons Attribution-ShareAlike", "", - "http://creativecommons.org/licenses/by-sa/3.0/", true, true, false, "", ""); - licenseManager.persist(defLicense); - groupManager.createUserGroup(user); + openTransaction(); + assertEquals(0, userFinder.getAll().size()); + assertEquals(0, groupFinder.getAll().size()); + assertEquals(0, licenseFinder.getAll().size()); + final I18nLanguage english = new I18nLanguage(new Long(1819), "English", "English", "en"); + languageManager.persist(english); + final I18nCountry gb = new I18nCountry(new Long(75), "GB", "GBP", ".", "£%n", "", ".", "United Kingdom", + "western", ","); + countryManager.persist(gb); + user = userManager.createUser("username", "the user name", "[email protected]", "userPassword", "en", "GB", + TimeZone.getDefault().getID()); + defLicense = new License("by-sa", "Creative Commons Attribution-ShareAlike", "", + "http://creativecommons.org/licenses/by-sa/3.0/", true, true, false, "", ""); + licenseManager.persist(defLicense); + groupManager.createUserGroup(user, true); } @Test public void testBasicMimePersist() { - final String mimetype = "application/pdf"; - createContentWithMime(mimetype); + final String mimetype = "application/pdf"; + createContentWithMime(mimetype); } @Test public void testBasicMimePersistWithoutSubtype() { - final String mimetype = "application"; - createContentWithMime(mimetype); + final String mimetype = "application"; + createContentWithMime(mimetype); } /** @@ -94,18 +94,18 @@ */ @Test public void testUTF8Persist() { - final Container container = Mockito.mock(Container.class); - final Content cnt = contentManager.createContent("汉语/漢語", "汉语/漢語", user, container); - final Content newCnt = contentManager.find(cnt.getId()); - assertEquals("汉语/漢語", newCnt.getTitle()); + final Container container = Mockito.mock(Container.class); + final Content cnt = contentManager.createContent("汉语/漢語", "汉语/漢語", user, container); + final Content newCnt = contentManager.find(cnt.getId()); + assertEquals("汉语/漢語", newCnt.getTitle()); } private void createContentWithMime(final String mimetype) { - final Container container = Mockito.mock(Container.class); - final Content cnt = contentManager.createContent("title", "body", user, container); - cnt.setMimeType(new BasicMimeType(mimetype)); - persist(cnt); - final Content newCnt = contentManager.find(cnt.getId()); - assertEquals(mimetype, newCnt.getMimeType().toString()); + final Container container = Mockito.mock(Container.class); + final Content cnt = contentManager.createContent("title", "body", user, container); + cnt.setMimeType(new BasicMimeType(mimetype)); + persist(cnt); + final Content newCnt = contentManager.find(cnt.getId()); + assertEquals(mimetype, newCnt.getMimeType().toString()); } } Modified: trunk/src/test/java/org/ourproject/kune/platf/server/manager/GroupManagerTest.java =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/server/manager/GroupManagerTest.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/test/java/org/ourproject/kune/platf/server/manager/GroupManagerTest.java 2008-10-16 14:34:33 UTC (rev 913) @@ -48,168 +48,168 @@ @After public void close() { - if (getTransaction().isActive()) { - getTransaction().rollback(); - } + if (getTransaction().isActive()) { + getTransaction().rollback(); + } } @Test public void createdGroupShoudHaveValidSocialNetwork() throws Exception { - final Group group = new Group("short", "longName", defLicense, GroupType.PROJECT); - groupManager.createGroup(group, user); - final SocialNetwork socialNetwork = group.getSocialNetwork(); - final AccessLists lists = socialNetwork.getAccessLists(); - assertTrue(lists.getAdmins().includes(user.getUserGroup())); - assertTrue(lists.getEditors().isEmpty()); - assertTrue(lists.getViewers().isEmpty()); - closeTransaction(); + final Group group = new Group("short", "longName", defLicense, GroupType.PROJECT); + groupManager.createGroup(group, user); + final SocialNetwork socialNetwork = group.getSocialNetwork(); + final AccessLists lists = socialNetwork.getAccessLists(); + assertTrue(lists.getAdmins().includes(user.getUserGroup())); + assertTrue(lists.getEditors().isEmpty()); + assertTrue(lists.getViewers().isEmpty()); + closeTransaction(); } @Test public void createGroup() throws Exception { - final Group group = new Group("ysei", "Yellow Submarine Environmental Initiative", defLicense, - GroupType.PROJECT); - groupManager.createGroup(group, user); - final Group otherGroup = groupManager.findByShortName("ysei"); + final Group group = new Group("ysei", "Yellow Submarine Environmental Initiative", defLicense, + GroupType.PROJECT); + groupManager.createGroup(group, user); + final Group otherGroup = groupManager.findByShortName("ysei"); - assertEquals(group.getLongName(), otherGroup.getLongName()); - assertEquals(group.getShortName(), otherGroup.getShortName()); - closeTransaction(); + assertEquals(group.getLongName(), otherGroup.getLongName()); + assertEquals(group.getShortName(), otherGroup.getShortName()); + closeTransaction(); } @Test public void createGroupAndSearch() throws Exception, ParseException { - final Group group = new Group("ysei", "Yellow Submarine Environmental Initiative", defLicense, - GroupType.PROJECT); - groupManager.createGroup(group, user); - groupManager.reIndex(); - final SearchResult<Group> result = groupManager.search("ysei"); - assertEquals(1, (long) result.getSize()); - assertEquals("ysei", result.getList().get(0).getShortName()); - rollbackTransaction(); + final Group group = new Group("ysei", "Yellow Submarine Environmental Initiative", defLicense, + GroupType.PROJECT); + groupManager.createGroup(group, user); + groupManager.reIndex(); + final SearchResult<Group> result = groupManager.search("ysei"); + assertEquals(1, (long) result.getSize()); + assertEquals("ysei", result.getList().get(0).getShortName()); + rollbackTransaction(); } @Test(expected = GroupNameInUseException.class) public void createGroupWithExistingLongName() throws Exception { - final Group group = new Group("ysei", "Yellow Submarine Environmental Initiative", defLicense, - GroupType.PROJECT); - groupManager.createGroup(group, user); + final Group group = new Group("ysei", "Yellow Submarine Environmental Initiative", defLicense, + GroupType.PROJECT); + groupManager.createGroup(group, user); - final Group group2 = new Group("ysei2", "Yellow Submarine Environmental Initiative", defLicense, - GroupType.PROJECT); - group2.setDefaultLicense(defLicense); - groupManager.createGroup(group2, user); + final Group group2 = new Group("ysei2", "Yellow Submarine Environmental Initiative", defLicense, + GroupType.PROJECT); + group2.setDefaultLicense(defLicense); + groupManager.createGroup(group2, user); - rollbackTransaction(); + rollbackTransaction(); } @Test(expected = GroupNameInUseException.class) public void createGroupWithExistingShortName() throws Exception { - final Group group = new Group("ysei", "Yellow Submarine Environmental Initiative", defLicense, - GroupType.PROJECT); - groupManager.createGroup(group, user); + final Group group = new Group("ysei", "Yellow Submarine Environmental Initiative", defLicense, + GroupType.PROJECT); + groupManager.createGroup(group, user); - final Group group2 = new Group("ysei", "Yellow Submarine Environmental Initiative 2", defLicense, - GroupType.PROJECT); - groupManager.createGroup(group2, user); + final Group group2 = new Group("ysei", "Yellow Submarine Environmental Initiative 2", defLicense, + GroupType.PROJECT); + groupManager.createGroup(group2, user); - rollbackTransaction(); + rollbackTransaction(); } @Test(expected = EmailAddressInUseException.class) public void createUserExistingEmail() throws I18nNotFoundException, GroupNameInUseException, - EmailAddressInUseException { - final User user1 = userManager.createUser("test", "test 1 name", "[email protected]", "some password", "en", - "GB", "GMT"); - groupManager.createUserGroup(user1); - final User user2 = userManager.createUser("test2", "test 2 name", "[email protected]", "some password", "en", - "GB", "GMT"); - groupManager.createUserGroup(user2); + EmailAddressInUseException { + final User user1 = userManager.createUser("test", "test 1 name", "[email protected]", "some password", "en", + "GB", "GMT"); + groupManager.createUserGroup(user1); + final User user2 = userManager.createUser("test2", "test 2 name", "[email protected]", "some password", "en", + "GB", "GMT"); + groupManager.createUserGroup(user2); } @Test(expected = GroupNameInUseException.class) public void createUserExistingLongName() throws I18nNotFoundException, GroupNameInUseException, - EmailAddressInUseException { - final User user1 = userManager.createUser("test", "test 1 name", "[email protected]", "some password", "en", - "GB", "GMT"); - groupManager.createUserGroup(user1); - final User user2 = userManager.createUser("test2", "test 1 name", "[email protected]", "some password", "en", - "GB", "GMT"); - groupManager.createUserGroup(user2); + EmailAddressInUseException { + final User user1 = userManager.createUser("test", "test 1 name", "[email protected]", "some password", "en", + "GB", "GMT"); + groupManager.createUserGroup(user1); + final User user2 = userManager.createUser("test2", "test 1 name", "[email protected]", "some password", "en", + "GB", "GMT"); + groupManager.createUserGroup(user2); } @Test(expected = GroupNameInUseException.class) public void createUserExistingShortName() throws I18nNotFoundException, GroupNameInUseException, - EmailAddressInUseException { - final User user1 = userManager.createUser("test", "test 1 name", "[email protected]", "some password", "en", - "GB", "GMT"); - groupManager.createUserGroup(user1); - final User user2 = userManager.createUser("test", "test 2 name", "[email protected]", "some password", "en", - "GB", "GMT"); - groupManager.createUserGroup(user2); + EmailAddressInUseException { + final User user1 = userManager.createUser("test", "test 1 name", "[email protected]", "some password", "en", + "GB", "GMT"); + groupManager.createUserGroup(user1); + final User user2 = userManager.createUser("test", "test 2 name", "[email protected]", "some password", "en", + "GB", "GMT"); + groupManager.createUserGroup(user2); } @Test(expected = EmailAddressInUseException.class) public void createUserWithExistingEmail() throws Exception { - final User user2 = userManager.createUser("username2", "the user name 2", "[email protected]", "userPassword", - "en", "GB", TimeZone.getDefault().getID()); - groupManager.createUserGroup(user2); - rollbackTransaction(); + final User user2 = userManager.createUser("username2", "the user name 2", "[email protected]", "userPassword", + "en", "GB", TimeZone.getDefault().getID()); + groupManager.createUserGroup(user2); + rollbackTransaction(); } @Test(expected = GroupNameInUseException.class) public void createUserWithExistingLongName() throws Exception { - final User user2 = userManager.createUser("username2", "the user name", "[email protected]", "userPassword", - "en", "GB", TimeZone.getDefault().getID()); - groupManager.createUserGroup(user2); - rollbackTransaction(); + final User user2 = userManager.createUser("username2", "the user name", "[email protected]", "userPassword", + "en", "GB", TimeZone.getDefault().getID()); + groupManager.createUserGroup(user2); + rollbackTransaction(); } @Test(expected = GroupNameInUseException.class) public void createUserWithExistingShortName() throws Exception { - final User user2 = userManager.createUser("username", "the user name 2", "[email protected]", "userPassword", - "en", "GB", TimeZone.getDefault().getID()); - groupManager.createUserGroup(user2); - rollbackTransaction(); + final User user2 = userManager.createUser("username", "the user name 2", "[email protected]", "userPassword", + "en", "GB", TimeZone.getDefault().getID()); + groupManager.createUserGroup(user2); + rollbackTransaction(); } @Test public void groupSearchPagination() throws Exception, ParseException { - for (int i = 1; i < 10; i++) { - createTestGroup(i); - } - groupManager.reIndex(); - final SearchResult<Group> result = groupManager.search("Yellow", 0, 5); - assertEquals(9, (long) result.getSize()); - assertEquals(5, result.getList().size()); - final SearchResult<Group> result2 = groupManager.search("Yellow", 5, 5); - assertEquals(9, (long) result2.getSize()); - assertEquals(4, result2.getList().size()); - rollbackTransaction(); + for (int i = 1; i < 10; i++) { + createTestGroup(i); + } + groupManager.reIndex(); + final SearchResult<Group> result = groupManager.search("Yellow", 0, 5); + assertEquals(9, (long) result.getSize()); + assertEquals(5, result.getList().size()); + final SearchResult<Group> result2 = groupManager.search("Yellow", 5, 5); + assertEquals(9, (long) result2.getSize()); + assertEquals(4, result2.getList().size()); + rollbackTransaction(); } @Before public void insertData() throws Exception { - openTransaction(); - assertEquals(0, userFinder.getAll().size()); - assertEquals(0, groupFinder.getAll().size()); - assertEquals(0, licenseFinder.getAll().size()); - final I18nLanguage english = new I18nLanguage(new Long(1819), "English", "English", "en"); - languageManager.persist(english); - final I18nCountry gb = new I18nCountry(new Long(75), "GB", "GBP", ".", "£%n", "", ".", "United Kingdom", - "western", ","); - countryManager.persist(gb); - user = userManager.createUser("username", "the user name", "[email protected]", "userPassword", "en", "GB", - TimeZone.getDefault().getID()); - defLicense = new License("by-sa", "Creative Commons Attribution-ShareAlike", "", - "http://creativecommons.org/licenses/by-sa/3.0/", true, true, false, "", ""); - licenseManager.persist(defLicense); - groupManager.createUserGroup(user); + openTransaction(); + assertEquals(0, userFinder.getAll().size()); + assertEquals(0, groupFinder.getAll().size()); + assertEquals(0, licenseFinder.getAll().size()); + final I18nLanguage english = new I18nLanguage(new Long(1819), "English", "English", "en"); + languageManager.persist(english); + final I18nCountry gb = new I18nCountry(new Long(75), "GB", "GBP", ".", "£%n", "", ".", "United Kingdom", + "western", ","); + countryManager.persist(gb); + user = userManager.createUser("username", "the user name", "[email protected]", "userPassword", "en", "GB", + TimeZone.getDefault().getID()); + defLicense = new License("by-sa", "Creative Commons Attribution-ShareAlike", "", + "http://creativecommons.org/licenses/by-sa/3.0/", true, true, false, "", ""); + licenseManager.persist(defLicense); + groupManager.createUserGroup(user); } private void createTestGroup(final int number) throws Exception { - final Group g = new Group("ysei" + number, "Yellow Submarine Environmental Initiative " + number, defLicense, - GroupType.PROJECT); - groupManager.createGroup(g, user); + final Group g = new Group("ysei" + number, "Yellow Submarine Environmental Initiative " + number, defLicense, + GroupType.PROJECT); + groupManager.createGroup(g, user); } } Modified: trunk/src/test/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenterTest.java =================================================================== --- trunk/src/test/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenterTest.java 2008-10-15 17:33:40 UTC (rev 912) +++ trunk/src/test/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenterTest.java 2008-10-16 14:34:33 UTC (rev 913) @@ -2,7 +2,9 @@ import org.easymock.EasyMock; import org.junit.Before; -import org.junit.Test; +import org.junit.Ignore; +import org.mockito.Mockito; +import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService; public class TextEditorPresenterTest { private TextEditorPresenter presenter; @@ -10,97 +12,99 @@ @Before public void createObjects() { - presenter = new TextEditorPresenter(true, null, null); - view = EasyMock.createStrictMock(TextEditorView.class); + I18nUITranslationService i18n = Mockito.mock(I18nUITranslationService.class); + // ActionToolbar toolbar = Mockito.mock(ActionToolbar.class); + presenter = new TextEditorPresenter(true, null, i18n); + view = EasyMock.createStrictMock(TextEditorView.class); } - @Test + @Ignore public void testSave() { - viewInit(); - // view.setEnabledSaveButton(true); - view.scheduleSave(10000); - EasyMock.expect(view.getHTML()).andReturn("foo"); - viewReset(); - EasyMock.replay(view); - // listener.onSave("foo"); - // EasyMock.replay(listener); - presenter.init(view); - presenter.onEdit(); - presenter.onSave(); - presenter.onSaved(); - EasyMock.verify(view); - // EasyMock.verify(listener); + viewInit(); + // view.setEnabledSaveButton(true); + view.scheduleSave(10000); + EasyMock.expect(view.getHTML()).andReturn("foo"); + viewReset(); + EasyMock.replay(view); + // listener.onSave("foo"); + // EasyMock.replay(listener); + presenter.init(view); + presenter.onEdit(); + presenter.onSave(); + presenter.onSaved(); + EasyMock.verify(view); + // EasyMock.verify(listener); } - @Test + @Ignore public void testSavePending() { - viewInit(); - // view.setEnabledSaveButton(true); - view.scheduleSave(10000); - EasyMock.replay(view); - presenter.init(view); - presenter.onEdit(); - EasyMock.verify(view); + viewInit(); + // view.setEnabledSaveButton(true); + view.scheduleSave(10000); + EasyMock.replay(view); + presenter.init(view); + presenter.onEdit(); + EasyMock.verify(view); } - @Test + @Ignore public void testSavePendingCancel() { - viewInit(); - // view.setEnabledSaveButton(true); - view.scheduleSave(10000); - view.saveTimerCancel(); - view.showSaveBeforeDialog(); - EasyMock.expect(view.getHTML()).andReturn("foo"); - viewReset(); - EasyMock.replay(view); - // listener.onSave("foo"); - // listener.onEditCancelled(); - // EasyMock.replay(listener); - presenter.init(view); - presenter.onEdit(); - presenter.onCancel(); - presenter.onSaveAndClose(); - presenter.onSaved(); - EasyMock.verify(view); - // EasyMock.verify(listener); + viewInit(); + // view.setEnabledSaveButton(true); + view.scheduleSave(10000); + view.saveTimerCancel(); + view.showSaveBeforeDialog(); + EasyMock.expect(view.getHTML()).andReturn("foo"); + viewReset(); + EasyMock.replay(view); + // listener.onSave("foo"); + // listener.onEditCancelled(); + // EasyMock.replay(listener); + presenter.init(view); + presenter.onEdit(); + presenter.onCancel(); + presenter.onSaveAndClose(); + presenter.onSaved(); + EasyMock.verify(view); + // EasyMock.verify(listener); } - @Test + @Ignore public void testSavePendingCancelSaveFails() { - viewInit(); - // view.setEnabledSaveButton(true); - view.scheduleSave(10000); - view.saveTimerCancel(); - view.showSaveBeforeDialog(); - EasyMock.expect(view.getHTML()).andReturn("foo"); - view.scheduleSave(20000); - EasyMock.replay(view); - // listener.onSave("foo"); - // EasyMock.replay(listener); - presenter.init(view); - presenter.onEdit(); - presenter.onCancel(); - presenter.onSaveAndClose(); - presenter.onSaveFailed(); - EasyMock.verify(view); - // EasyMock.verify(listener); + viewInit(); + // view.setEnabledSaveButton(true); + view.scheduleSave(10000); + view.saveTimerCancel(); + view.showSaveBeforeDialog(); + EasyMock.expect(view.getHTML()).andReturn("foo"); + view.scheduleSave(20000); + EasyMock.replay(view); + // listener.onSave("foo"); + // EasyMock.replay(listener); + presenter.init(view); + presenter.onEdit(); + presenter.onCancel(); + presenter.onSaveAndClose(); + presenter.onSaveFailed(); + EasyMock.verify(view); + // EasyMock.verify(listener); } - @Test + @Ignore public void testViewInitialization() { - viewInit(); - EasyMock.replay(view); - presenter.init(view); - EasyMock.verify(view); + viewInit(); + EasyMock.replay(view); + presenter.init(view); + EasyMock.verify(view); } private void viewInit() { - // view.setEnabledSaveButton(false); - view.setEnabled(true); + // view.setEnabledSaveButton(false); + view.setEnabled(true); } private void viewReset() { - view.saveTimerCancel(); - // view.setEnabledSaveButton(false); + view.saveTimerCancel(); + // view.setEnabledSaveButton(false); } }
participants (1)
-
vjrj