You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/12/13 16:45:42 UTC
[isis] branch master updated: ISIS-2918: fine-tuning LocaleValueSemantics
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 805d846 ISIS-2918: fine-tuning LocaleValueSemantics
805d846 is described below
commit 805d846c6c6cce4fc7b6397acb7a481f1e0f2abf
Author: andi-huber <ah...@apache.org>
AuthorDate: Mon Dec 13 17:44:50 2021 +0100
ISIS-2918: fine-tuning LocaleValueSemantics
---
.../valuesemantics/LocaleValueSemantics.java | 27 +++++++++++++++++++---
.../secman/applib/IsisModuleExtSecmanApplib.java | 2 ++
.../secman/applib/user/dom/ApplicationUser.java | 2 +-
.../dom/mixins/ApplicationUser_updateLocale.java | 25 +++++++++++++-------
4 files changed, 44 insertions(+), 12 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LocaleValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LocaleValueSemantics.java
index a1c33ea..e51fe92 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LocaleValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LocaleValueSemantics.java
@@ -59,19 +59,40 @@ implements
@Override
public String toEncodedString(final Locale object) {
- return object.toLanguageTag();
+ return object!=null
+ ? object.toLanguageTag()
+ : null;
}
@Override
public Locale fromEncodedString(final String data) {
- return Locale.forLanguageTag(data);
+ return data!=null
+ ? Locale.forLanguageTag(data)
+ : null;
}
// -- RENDERER
@Override
public String simpleTextPresentation(final ValueSemanticsProvider.Context context, final Locale value) {
- return value == null ? "" : value.getDisplayLanguage(context.getInteractionContext().getLocale());
+
+ return render(value, v->{
+
+ val language = value.getDisplayLanguage(context.getInteractionContext().getLocale());
+ if(_Strings.isEmpty(language)) {
+ return toEncodedString(v);
+ }
+
+ val country = value.getDisplayCountry(context.getInteractionContext().getLocale());
+ if(_Strings.isEmpty(country)) {
+ return language;
+ }
+
+ return String.format("%s (%s)",
+ value.getDisplayLanguage(context.getInteractionContext().getLocale()),
+ value.getDisplayCountry(context.getInteractionContext().getLocale()));
+
+ });
}
// -- PARSER
diff --git a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/IsisModuleExtSecmanApplib.java b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/IsisModuleExtSecmanApplib.java
index 96aba84..6e7fbc3 100644
--- a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/IsisModuleExtSecmanApplib.java
+++ b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/IsisModuleExtSecmanApplib.java
@@ -66,6 +66,7 @@ import org.apache.isis.extensions.secman.applib.user.dom.mixins.ApplicationUser_
import org.apache.isis.extensions.secman.applib.user.dom.mixins.ApplicationUser_updateAtPath;
import org.apache.isis.extensions.secman.applib.user.dom.mixins.ApplicationUser_updateEmailAddress;
import org.apache.isis.extensions.secman.applib.user.dom.mixins.ApplicationUser_updateFaxNumber;
+import org.apache.isis.extensions.secman.applib.user.dom.mixins.ApplicationUser_updateLocale;
import org.apache.isis.extensions.secman.applib.user.dom.mixins.ApplicationUser_updateName;
import org.apache.isis.extensions.secman.applib.user.dom.mixins.ApplicationUser_updatePassword;
import org.apache.isis.extensions.secman.applib.user.dom.mixins.ApplicationUser_updatePhoneNumber;
@@ -150,6 +151,7 @@ import org.apache.isis.testing.fixtures.applib.IsisModuleTestingFixturesApplib;
ApplicationUser_updateAtPath.class,
ApplicationUser_updateEmailAddress.class,
ApplicationUser_updateFaxNumber.class,
+ ApplicationUser_updateLocale.class,
ApplicationUser_updateName.class,
ApplicationUser_updatePassword.class,
ApplicationUser_updatePhoneNumber.class,
diff --git a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/dom/ApplicationUser.java b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/dom/ApplicationUser.java
index 052311b..79c44a0 100644
--- a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/dom/ApplicationUser.java
+++ b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/dom/ApplicationUser.java
@@ -391,7 +391,7 @@ public abstract class ApplicationUser
@Property(
domainEvent = UserLocale.DomainEvent.class,
- editing = Editing.ENABLED,
+ editing = Editing.DISABLED, // edit via update button
maxLength = UserLocale.MAX_LENGTH
)
@PropertyLayout(
diff --git a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateLocale.java b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateLocale.java
index bf79eb7..1d20b40 100644
--- a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateLocale.java
+++ b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateLocale.java
@@ -25,12 +25,12 @@ import java.util.stream.Collectors;
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.MemberSupport;
-import org.apache.isis.applib.annotation.MinLength;
import org.apache.isis.applib.annotation.PromptStyle;
import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.core.metamodel.valuesemantics.LocaleValueSemantics;
import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
import org.apache.isis.extensions.secman.applib.user.dom.ApplicationUser;
+import org.apache.isis.extensions.secman.applib.user.dom.ApplicationUser.UserLocale;
import org.apache.isis.extensions.secman.applib.user.dom.mixins.ApplicationUser_updateLocale.DomainEvent;
import lombok.RequiredArgsConstructor;
@@ -50,23 +50,32 @@ public class ApplicationUser_updateLocale {
public static class DomainEvent
extends IsisModuleExtSecmanApplib.ActionDomainEvent<ApplicationUser_updateLocale> {}
- private final ApplicationUser target;
+ private final ApplicationUser mixee;
@MemberSupport public ApplicationUser act(
+ @UserLocale
final Locale locale) {
- target.setLocale(locale);
- return target;
+ mixee.setLocale(locale);
+ return mixee;
}
@MemberSupport public String disableAct() {
- return target.isForSelfOrRunAsAdministrator()? null: "Can only update your own user record.";
+ return mixee.isForSelfOrRunAsAdministrator()? null: "Can only update your own user record.";
}
- @MemberSupport public Locale defaultLocale() { return target.getLocale(); }
- @MemberSupport public List<Locale> autoCompleteLocale(@MinLength(1) final String search) {
+ @MemberSupport public Locale defaultLocale() {
+ return mixee.getLocale();
+ }
+
+ @MemberSupport public List<Locale> choicesLocale() {
return LocaleValueSemantics.streamSupportedValues()
- .filter(locale->locale.toLanguageTag().toLowerCase().contains(search.toLowerCase()))
.collect(Collectors.toList());
}
+// @MemberSupport public List<Locale> autoCompleteLocale(@MinLength(1) final String search) {
+// return LocaleValueSemantics.streamSupportedValues()
+// .filter(locale->locale.toLanguageTag().toLowerCase().contains(search.toLowerCase()))
+// .collect(Collectors.toList());
+// }
+
}