From cac387508126917ba1af248332369679fc462d45 Mon Sep 17 00:00:00 2001 From: Alex Eng Date: Wed, 20 May 2015 14:45:27 +1000 Subject: [PATCH] Fix save editor option https://bugzilla.redhat.com/show_bug.cgi?id=1222710 Squashed commit of the following: commit 8db6ac44cae33a9cf21364130962b997f4433ac1 Author: Alex Eng Date: Tue May 19 13:14:02 2015 +1000 Add notification for save options, load options and restore to default options commit 5924c54acf92dd4095ccfea151a7280445f85f4c Merge: 2e68ba0 a149bba Author: Alex Eng Date: Tue May 19 12:34:35 2015 +1000 Merge branch 'integration/master' into rhbz1222710 commit 2e68ba0b69d80c736dc6823373eccc3fffdf62b2 Author: Alex Eng Date: Tue May 19 10:54:56 2015 +1000 Changed load user option message commit fe75a583475f9cd09a11d82ea42b445b25aeb37f Author: Alex Eng Date: Tue May 19 08:55:21 2015 +1000 Fix save editor option: https://bugzilla.redhat.com/show_bug.cgi?id=1222710 --- docs/release-notes.md | 1 + .../java/org/zanata/dao/AccountOptionDAO.java | 41 +++++++++++++++++++ .../DocumentListOptionsPresenter.java | 13 +++--- .../presenter/EditorOptionsPresenter.java | 15 +++++-- .../client/resources/WebTransMessages.java | 11 +++++ .../client/service/UserOptionsService.java | 8 +++- .../server/rpc/SaveOptionsHandler.java | 15 ++++--- .../DocumentListOptionsPresenterTest.java | 5 ++- .../presenter/EditorOptionsPresenterTest.java | 5 ++- .../service/UserOptionsServiceTest.java | 5 ++- .../server/rpc/LoadOptionsHandlerTest.java | 10 ++++- .../server/rpc/SaveOptionsHandlerTest.java | 9 ++-- 12 files changed, 115 insertions(+), 23 deletions(-) create mode 100644 zanata-war/src/main/java/org/zanata/dao/AccountOptionDAO.java diff --git a/docs/release-notes.md b/docs/release-notes.md index 9f03aabab6..6eea2c21e8 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -32,6 +32,7 @@ Example usage in html file: ` { + public AccountOptionDAO() { + super(HAccountOption.class); + } + + public AccountOptionDAO(Session session) { + super(HAccountOption.class, session); + } +} diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/DocumentListOptionsPresenter.java b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/DocumentListOptionsPresenter.java index d064ebaf16..8167c8c5e3 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/DocumentListOptionsPresenter.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/DocumentListOptionsPresenter.java @@ -29,6 +29,7 @@ import org.zanata.webtrans.client.events.UserConfigChangeEvent; import org.zanata.webtrans.client.events.WorkspaceContextUpdateEvent; import org.zanata.webtrans.client.events.WorkspaceContextUpdateEventHandler; +import org.zanata.webtrans.client.resources.WebTransMessages; import org.zanata.webtrans.client.rpc.CachingDispatchAsync; import org.zanata.webtrans.client.service.UserOptionsService; import org.zanata.webtrans.client.view.DocumentListOptionsDisplay; @@ -49,9 +50,11 @@ public class DocumentListOptionsPresenter extends private final CachingDispatchAsync dispatcher; private final UserWorkspaceContext userWorkspaceContext; private final UserOptionsService userOptionsService; + private final WebTransMessages messages; @Inject - public DocumentListOptionsPresenter(DocumentListOptionsDisplay display, + public DocumentListOptionsPresenter(WebTransMessages messages, + DocumentListOptionsDisplay display, EventBus eventBus, UserWorkspaceContext userWorkspaceContext, CachingDispatchAsync dispatcher, UserOptionsService userOptionsService) { @@ -59,7 +62,7 @@ public DocumentListOptionsPresenter(DocumentListOptionsDisplay display, this.userWorkspaceContext = userWorkspaceContext; this.dispatcher = dispatcher; this.userOptionsService = userOptionsService; - + this.messages = messages; } @Override @@ -111,7 +114,7 @@ public void onRevealDisplay() { @Override public void persistOptionChange() { userOptionsService.persistOptionChange(userOptionsService - .getDocumentListOptions()); + .getDocumentListOptions()); } @Override @@ -138,7 +141,7 @@ public void onSuccess(LoadOptionsResult result) { eventBus.fireEvent(UserConfigChangeEvent.DOCUMENT_CONFIG_CHANGE_EVENT); eventBus.fireEvent(new NotificationEvent( NotificationEvent.Severity.Warning, - "Loaded user options")); + messages.loadedUserOptions())); } }); } @@ -151,6 +154,6 @@ public void loadDefaultOptions() { eventBus.fireEvent(UserConfigChangeEvent.DOCUMENT_CONFIG_CHANGE_EVENT); eventBus.fireEvent(new NotificationEvent( NotificationEvent.Severity.Warning, - "Loaded default user options.")); + messages.restoreToDefaultOptions())); } } diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/EditorOptionsPresenter.java b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/EditorOptionsPresenter.java index 82471f91d8..9d2f170a5d 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/EditorOptionsPresenter.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/EditorOptionsPresenter.java @@ -34,6 +34,7 @@ import org.zanata.webtrans.client.events.UserConfigChangeEvent; import org.zanata.webtrans.client.events.WorkspaceContextUpdateEvent; import org.zanata.webtrans.client.events.WorkspaceContextUpdateEventHandler; +import org.zanata.webtrans.client.resources.WebTransMessages; import org.zanata.webtrans.client.rpc.CachingDispatchAsync; import org.zanata.webtrans.client.service.UserOptionsService; import org.zanata.webtrans.client.view.EditorOptionsDisplay; @@ -57,9 +58,11 @@ public class EditorOptionsPresenter extends private final UserWorkspaceContext userWorkspaceContext; private final CachingDispatchAsync dispatcher; private final UserOptionsService userOptionsService; + private final WebTransMessages messages; @Inject - public EditorOptionsPresenter(EditorOptionsDisplay display, + public EditorOptionsPresenter(WebTransMessages messages, + EditorOptionsDisplay display, EventBus eventBus, UserWorkspaceContext userWorkspaceContext, ValidationOptionsPresenter validationDetailsPresenter, ChangeReferenceLangPresenter changeReferenceLangPresenter, @@ -71,6 +74,7 @@ public EditorOptionsPresenter(EditorOptionsDisplay display, this.userWorkspaceContext = userWorkspaceContext; this.dispatcher = dispatcher; this.userOptionsService = userOptionsService; + this.messages = messages; display.setListener(this); } @@ -244,6 +248,9 @@ public void onFailure(Throwable caught) { public void onSuccess(LoadOptionsResult result) { userOptionsService.getConfigHolder().setState( result.getConfiguration()); + eventBus.fireEvent(new NotificationEvent( + NotificationEvent.Severity.Warning, + messages.loadedUserOptions())); refreshOptions(); } }); @@ -254,6 +261,9 @@ public void loadDefaultOptions() { userOptionsService.loadEditorDefaultOptions(); changeReferenceLangPresenter.loadDefaultOption(); refreshOptions(); + eventBus.fireEvent(new NotificationEvent( + NotificationEvent.Severity.Warning, + messages.restoreToDefaultOptions())); } @Override @@ -267,8 +277,5 @@ public void onReloadUserConfigUI(ReloadUserConfigUIEvent event) { private void refreshOptions() { display.setOptionsState(userOptionsService.getConfigHolder().getState()); eventBus.fireEvent(UserConfigChangeEvent.EDITOR_CONFIG_CHANGE_EVENT); - eventBus.fireEvent(new NotificationEvent( - NotificationEvent.Severity.Warning, - "Loaded default editor options.")); } } diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/resources/WebTransMessages.java b/zanata-war/src/main/java/org/zanata/webtrans/client/resources/WebTransMessages.java index f03dbf0ec3..7e756c6b03 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/resources/WebTransMessages.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/resources/WebTransMessages.java @@ -552,4 +552,15 @@ String undoUnsuccessful(@PluralCount int unsuccessfulCount, @DefaultMessage("Project ID or version ID has changed. Please copy your unsaved work into clipboard. Editor will reload in 10 seconds.") String workspaceUrlHasChanged(); + + @DefaultMessage("Loaded user options") + String loadedUserOptions(); + + @DefaultMessage("Restore to default options") + String restoreToDefaultOptions(); + + @DefaultMessage("Saved user options") + String savedOptions(); + + } diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/service/UserOptionsService.java b/zanata-war/src/main/java/org/zanata/webtrans/client/service/UserOptionsService.java index eab9a38af8..c958996c77 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/service/UserOptionsService.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/service/UserOptionsService.java @@ -29,6 +29,7 @@ import org.zanata.webtrans.client.events.NotificationEvent; import org.zanata.webtrans.client.presenter.UserConfigHolder; +import org.zanata.webtrans.client.resources.WebTransMessages; import org.zanata.webtrans.client.rpc.CachingDispatchAsync; import org.zanata.webtrans.shared.model.UserOptions; import org.zanata.webtrans.shared.model.ValidationId; @@ -51,13 +52,15 @@ public class UserOptionsService { private final EventBus eventBus; private final CachingDispatchAsync dispatcher; private final UserConfigHolder configHolder; + private final WebTransMessages messages; @Inject - public UserOptionsService(EventBus eventBus, + public UserOptionsService(WebTransMessages messages, EventBus eventBus, CachingDispatchAsync dispatcher, UserConfigHolder configHolder) { this.eventBus = eventBus; this.dispatcher = dispatcher; this.configHolder = configHolder; + this.messages = messages; } public void persistOptionChange(Map optsMap) { @@ -74,7 +77,8 @@ public void onFailure(Throwable caught) { @Override public void onSuccess(SaveOptionsResult result) { eventBus.fireEvent(new NotificationEvent( - NotificationEvent.Severity.Info, "Saved user options")); + NotificationEvent.Severity.Warning, + messages.savedOptions())); } }); } diff --git a/zanata-war/src/main/java/org/zanata/webtrans/server/rpc/SaveOptionsHandler.java b/zanata-war/src/main/java/org/zanata/webtrans/server/rpc/SaveOptionsHandler.java index 7c36bbdd09..21ef5e6d15 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/server/rpc/SaveOptionsHandler.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/server/rpc/SaveOptionsHandler.java @@ -31,6 +31,7 @@ import org.jboss.seam.annotations.Scope; import org.jboss.seam.security.management.JpaIdentityStore; import org.zanata.dao.AccountDAO; +import org.zanata.dao.AccountOptionDAO; import org.zanata.model.HAccount; import org.zanata.model.HAccountOption; import org.zanata.webtrans.server.ActionHandlerFor; @@ -53,6 +54,9 @@ public class SaveOptionsHandler extends @In private AccountDAO accountDAO; + @In + private AccountOptionDAO accountOptionDAO; + @Override public SaveOptionsResult execute(SaveOptionsAction action, ExecutionContext context) throws ActionException { @@ -61,12 +65,12 @@ public SaveOptionsResult execute(SaveOptionsAction action, for (Entry entry : action.getConfigurationMap() .entrySet()) { - this.setOrCreateOptionValue(account, entry.getKey(), - entry.getValue()); + HAccountOption option = updateOrCreateOption(account, entry.getKey(), + entry.getValue()); + accountOptionDAO.makePersistent(option); } - accountDAO.makePersistent(account); - accountDAO.flush(); + accountOptionDAO.flush(); SaveOptionsResult result = new SaveOptionsResult(); result.setSuccess(true); @@ -79,7 +83,7 @@ public void rollback(SaveOptionsAction action, SaveOptionsResult result, ExecutionContext context) throws ActionException { } - private void setOrCreateOptionValue(HAccount account, UserOptions name, + private HAccountOption updateOrCreateOption(HAccount account, UserOptions name, String newVal) { HAccountOption option = account.getEditorOptions().get(name.getPersistentName()); @@ -91,5 +95,6 @@ private void setOrCreateOptionValue(HAccount account, UserOptions name, } else { option.setValue(newVal); } + return option; } } diff --git a/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/DocumentListOptionsPresenterTest.java b/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/DocumentListOptionsPresenterTest.java index 7ee7d31162..ae64366a11 100644 --- a/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/DocumentListOptionsPresenterTest.java +++ b/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/DocumentListOptionsPresenterTest.java @@ -22,6 +22,7 @@ import org.zanata.webtrans.client.events.NotificationEvent; import org.zanata.webtrans.client.events.UserConfigChangeEvent; import org.zanata.webtrans.client.events.WorkspaceContextUpdateEvent; +import org.zanata.webtrans.client.resources.WebTransMessages; import org.zanata.webtrans.client.rpc.CachingDispatchAsync; import org.zanata.webtrans.client.service.UserOptionsService; import org.zanata.webtrans.client.view.DocumentListOptionsDisplay; @@ -53,6 +54,8 @@ public class DocumentListOptionsPresenterTest { private CachingDispatchAsync dispatcher; @Mock private UserOptionsService userOptionsService; + @Mock + private WebTransMessages messages; @Captor private ArgumentCaptor eventCaptor; @@ -64,7 +67,7 @@ public void beforeMethod() { MockitoAnnotations.initMocks(this); presenter = - new DocumentListOptionsPresenter(display, eventBus, + new DocumentListOptionsPresenter(messages, display, eventBus, userWorkspaceContext, dispatcher, userOptionsService); when(userOptionsService.getConfigHolder()).thenReturn(configHolder); diff --git a/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/EditorOptionsPresenterTest.java b/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/EditorOptionsPresenterTest.java index d698a7536a..1b92ee3e42 100644 --- a/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/EditorOptionsPresenterTest.java +++ b/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/EditorOptionsPresenterTest.java @@ -24,6 +24,7 @@ import org.zanata.webtrans.client.events.RefreshPageEvent; import org.zanata.webtrans.client.events.UserConfigChangeEvent; import org.zanata.webtrans.client.events.WorkspaceContextUpdateEvent; +import org.zanata.webtrans.client.resources.WebTransMessages; import org.zanata.webtrans.client.rpc.CachingDispatchAsync; import org.zanata.webtrans.client.service.UserOptionsService; import org.zanata.webtrans.client.view.EditorOptionsDisplay; @@ -65,6 +66,8 @@ public class EditorOptionsPresenterTest { private ArgumentCaptor eventCaptor; @Mock private UserOptionsService userOptionsService; + @Mock + private WebTransMessages messages; private UserConfigHolder configHolder = new UserConfigHolder(); @@ -76,7 +79,7 @@ public void beforeMethod() { when(userOptionsService.getConfigHolder()).thenReturn(configHolder); presenter = - new EditorOptionsPresenter(display, eventBus, + new EditorOptionsPresenter(messages, display, eventBus, userWorkspaceContext, validationDetailsPresenter, changeReferenceLangPresenter, dispatcher, userOptionsService); diff --git a/zanata-war/src/test/java/org/zanata/webtrans/client/service/UserOptionsServiceTest.java b/zanata-war/src/test/java/org/zanata/webtrans/client/service/UserOptionsServiceTest.java index 434105bc0e..01e523be6f 100644 --- a/zanata-war/src/test/java/org/zanata/webtrans/client/service/UserOptionsServiceTest.java +++ b/zanata-war/src/test/java/org/zanata/webtrans/client/service/UserOptionsServiceTest.java @@ -39,6 +39,7 @@ import org.testng.annotations.Test; import org.zanata.webtrans.client.events.NotificationEvent; import org.zanata.webtrans.client.presenter.UserConfigHolder; +import org.zanata.webtrans.client.resources.WebTransMessages; import org.zanata.webtrans.client.rpc.CachingDispatchAsync; import org.zanata.webtrans.shared.model.UserOptions; import org.zanata.webtrans.shared.rpc.NavOption; @@ -60,6 +61,8 @@ public class UserOptionsServiceTest { private EventBus eventBus; @Mock private CachingDispatchAsync dispatcher; + @Mock + private WebTransMessages messages; private UserConfigHolder configHolder = new UserConfigHolder(); @@ -67,7 +70,7 @@ public class UserOptionsServiceTest { public void beforeMethod() { MockitoAnnotations.initMocks(this); - service = new UserOptionsService(eventBus, dispatcher, configHolder); + service = new UserOptionsService(messages, eventBus, dispatcher, configHolder); } @Test diff --git a/zanata-war/src/test/java/org/zanata/webtrans/server/rpc/LoadOptionsHandlerTest.java b/zanata-war/src/test/java/org/zanata/webtrans/server/rpc/LoadOptionsHandlerTest.java index e5a0f7af16..304288c74e 100644 --- a/zanata-war/src/test/java/org/zanata/webtrans/server/rpc/LoadOptionsHandlerTest.java +++ b/zanata-war/src/test/java/org/zanata/webtrans/server/rpc/LoadOptionsHandlerTest.java @@ -12,6 +12,7 @@ import org.testng.annotations.Test; import org.zanata.ZanataDbunitJpaTest; import org.zanata.dao.AccountDAO; +import org.zanata.dao.AccountOptionDAO; import org.zanata.model.HAccount; import org.zanata.model.HAccountOption; import org.zanata.seam.SeamAutowire; @@ -31,6 +32,8 @@ public class LoadOptionsHandlerTest extends ZanataDbunitJpaTest { private LoadOptionsHandler handler; private SaveOptionsHandler saveHandler; + private final static SeamAutowire seam = SeamAutowire.instance(); + @Override protected void prepareDBUnitOperations() { beforeTestOperations.add(new DataSetOperation( @@ -45,15 +48,20 @@ protected void prepareDBUnitOperations() { @BeforeMethod public void setUp() throws Exception { AccountDAO accountDAO = new AccountDAO(getSession()); + AccountOptionDAO accountOptionDAO = new AccountOptionDAO(getSession()); HAccount authenticatedAccount = getEm().find(HAccount.class, 1L); // @formatter:off - handler = SeamAutowire.instance() + handler = seam .reset() .use(JpaIdentityStore.AUTHENTICATED_USER, authenticatedAccount) .use("accountDAO", accountDAO) .autowire(LoadOptionsHandler.class); saveHandler = SeamAutowire.instance() + .reset() + .use(JpaIdentityStore.AUTHENTICATED_USER, authenticatedAccount) + .use("accountDAO", accountDAO) + .use("accountOptionDAO", accountOptionDAO) .autowire(SaveOptionsHandler.class); // @formatter:on } diff --git a/zanata-war/src/test/java/org/zanata/webtrans/server/rpc/SaveOptionsHandlerTest.java b/zanata-war/src/test/java/org/zanata/webtrans/server/rpc/SaveOptionsHandlerTest.java index 22015e40bd..508e034f6a 100644 --- a/zanata-war/src/test/java/org/zanata/webtrans/server/rpc/SaveOptionsHandlerTest.java +++ b/zanata-war/src/test/java/org/zanata/webtrans/server/rpc/SaveOptionsHandlerTest.java @@ -15,6 +15,7 @@ import org.testng.annotations.Test; import org.zanata.ZanataDbunitJpaTest; import org.zanata.dao.AccountDAO; +import org.zanata.dao.AccountOptionDAO; import org.zanata.model.HAccount; import org.zanata.model.HAccountOption; import org.zanata.seam.SeamAutowire; @@ -32,6 +33,8 @@ public class SaveOptionsHandlerTest extends ZanataDbunitJpaTest { private SaveOptionsHandler handler; private HAccount authenticatedAccount; + private final static SeamAutowire seam = SeamAutowire.instance(); + @Override protected void prepareDBUnitOperations() { beforeTestOperations.add(new DataSetOperation( @@ -45,13 +48,13 @@ protected void prepareDBUnitOperations() { @BeforeMethod public void beforeMethod() { - AccountDAO accountDAO = new AccountDAO(getSession()); authenticatedAccount = getEm().find(HAccount.class, 1L); // @formatter:off - handler = SeamAutowire.instance() + handler = seam .reset() .use(JpaIdentityStore.AUTHENTICATED_USER, authenticatedAccount) - .use("accountDAO", accountDAO) + .use("accountDAO", new AccountDAO(getSession())) + .use("accountOptionDAO", new AccountOptionDAO(getSession())) .ignoreNonResolvable() .autowire(SaveOptionsHandler.class); // @formatter:on