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 2020/01/23 12:21:55 UTC
[isis] branch master updated: ISIS-2158: rendering: ellipsify
object-identifier when not an entity
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 5720d69 ISIS-2158: rendering: ellipsify object-identifier when not an entity
5720d69 is described below
commit 5720d696c9275cf675e684f1dc49a74eaa0a7ca0
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Jan 23 13:21:44 2020 +0100
ISIS-2158: rendering: ellipsify object-identifier when not an entity
---
.../mixins/metamodel/Object_objectIdentifier.java | 11 +++--
.../isis/applib/services/bookmark/Bookmark.java | 4 ++
.../isis/core/commons/internal/base/_Strings.java | 49 +++++++++++++++++++++-
3 files changed, 60 insertions(+), 4 deletions(-)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectIdentifier.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectIdentifier.java
index f74af70..eef7817 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectIdentifier.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectIdentifier.java
@@ -30,6 +30,8 @@ import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.mixins.MixinConstants;
import org.apache.isis.applib.services.bookmark.BookmarkService;
+import org.apache.isis.applib.services.metamodel.MetaModelService;
+import org.apache.isis.core.commons.internal.base._Strings;
import lombok.RequiredArgsConstructor;
import lombok.val;
@@ -39,6 +41,7 @@ import lombok.val;
public class Object_objectIdentifier {
@Inject private BookmarkService bookmarkService;
+ @Inject private MetaModelService mmService;
private final Object holder;
@@ -56,10 +59,12 @@ public class Object_objectIdentifier {
@MemberOrder(name = MixinConstants.METADATA_LAYOUT_GROUPNAME, sequence = "700.2")
public String prop() {
val bookmark = bookmarkService.bookmarkForElseThrow(this.holder);
- return bookmark.getIdentifier();
+ val sort = mmService.sortOf(bookmark, MetaModelService.Mode.RELAXED);
+ if(sort.isEntity()) {
+ return bookmark.getIdentifier();
+ }
+ return _Strings.ellipsifyAtStart(bookmark.getIdentifier(), 16, "…");
}
-
-
}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java
index 69f4658..5d42a8a 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java
@@ -46,6 +46,10 @@ public class Bookmark implements Serializable {
protected static final String SEPARATOR = ":";
+ /**
+ * corresponds directly to the object's specification-id
+ * @see <tt>RootOid</tt>
+ */
@NonNull private final String objectType;
@NonNull private final String identifier;
@Nullable private final String hintId;
diff --git a/core/commons/src/main/java/org/apache/isis/core/commons/internal/base/_Strings.java b/core/commons/src/main/java/org/apache/isis/core/commons/internal/base/_Strings.java
index 151870d..98a342d 100644
--- a/core/commons/src/main/java/org/apache/isis/core/commons/internal/base/_Strings.java
+++ b/core/commons/src/main/java/org/apache/isis/core/commons/internal/base/_Strings.java
@@ -52,6 +52,8 @@ import static org.apache.isis.core.commons.internal.base._With.requires;
import static org.apache.isis.core.commons.internal.base._With.requiresNotEmpty;
import static org.apache.isis.core.commons.internal.functions._Predicates.not;
+import lombok.NonNull;
+
/**
* <h1>- internal use only -</h1>
* <p>
@@ -432,6 +434,52 @@ public final class _Strings {
return mapIfPresentElse(input, __->input.replaceAll("\\s+", replacement), null);
}
+ /**
+ * ...xyz
+ * @param input
+ * @param maxLength
+ * @param ellipsis
+ * @return (non-null), ellipsified version of {@code input}, if {@code input} exceeds length {@code maxLength}
+ */
+ public static String ellipsifyAtStart(
+ @Nullable final CharSequence input,
+ final int maxLength,
+ @NonNull final CharSequence ellipsis) {
+
+ if(input==null) {
+ return "";
+ }
+ if(input.length()<=maxLength) {
+ return input.toString();
+ }
+ final int trimmedLength = maxLength - ellipsis.length();
+ final int end = input.length();
+ final int start = end - trimmedLength;
+ return String.join("", ellipsis, input.subSequence(start, end));
+ }
+
+ /**
+ * abc...
+ * @param input
+ * @param maxLength
+ * @param ellipsis
+ * @return (non-null), ellipsified version of {@code input}, if {@code input} exceeds length {@code maxLength}
+ */
+ public static String ellipsifyAtEnd(
+ @Nullable final CharSequence input,
+ final int maxLength,
+ @NonNull final CharSequence ellipsis) {
+
+ if(input==null) {
+ return "";
+ }
+ if(input.length()<=maxLength) {
+ return input.toString();
+ }
+ final int trimmedLength = maxLength - ellipsis.length();
+ return String.join("", input.subSequence(0, trimmedLength), ellipsis);
+ }
+
// -- READ FROM INPUT STREAM
public static String read(@Nullable final InputStream input, Charset charset) {
@@ -579,5 +627,4 @@ public final class _Strings {
}
-
}