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 cb8ecc943d ISIS-3002: refactors _BigDecimals util into _Times util
cb8ecc943d is described below
commit cb8ecc943da8b876190cfdd51cd4600cae7db886
Author: andi-huber <[email protected]>
AuthorDate: Tue Jul 26 07:42:57 2022 +0200
ISIS-3002: refactors _BigDecimals util into _Times util
---
.../base/{_BigDecimals.java => _Times.java} | 40 ++++++++++------------
.../appfeat/ApplicationFeatureDefault.java | 1 -
.../ApplicationFeatureRepositoryDefault.java | 9 +++--
.../commandlog/applib/dom/CommandLogEntry.java | 8 +++--
.../executionlog/applib/dom/ExecutionLogEntry.java | 12 ++++---
.../applib/dom/ExecutionOutboxEntry.java | 12 ++++---
6 files changed, 42 insertions(+), 40 deletions(-)
diff --git
a/commons/src/main/java/org/apache/isis/commons/internal/base/_BigDecimals.java
b/commons/src/main/java/org/apache/isis/commons/internal/base/_Times.java
similarity index 61%
rename from
commons/src/main/java/org/apache/isis/commons/internal/base/_BigDecimals.java
rename to
commons/src/main/java/org/apache/isis/commons/internal/base/_Times.java
index 856b1874f6..f0f4f6038d 100644
---
a/commons/src/main/java/org/apache/isis/commons/internal/base/_BigDecimals.java
+++ b/commons/src/main/java/org/apache/isis/commons/internal/base/_Times.java
@@ -18,23 +18,19 @@
*/
package org.apache.isis.commons.internal.base;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.sql.Timestamp;
-import java.util.Base64;
-import java.util.function.UnaryOperator;
+import java.util.Optional;
import org.springframework.lang.Nullable;
-import lombok.NonNull;
+import lombok.experimental.UtilityClass;
/**
* <h1>- internal use only -</h1>
* <p>
- * Provides BigDecimal related functions.
+ * Provides time related functions.
* </p>
* <p>
* <b>WARNING</b>: Do <b>NOT</b> use any of the classes provided by this
package! <br/>
@@ -43,27 +39,29 @@ import lombok.NonNull;
*
* @since 2.0
*/
-public final class _BigDecimals {
-
- private _BigDecimals(){}
+@UtilityClass
+public final class _Times {
/**
- * @return in seconds, to 3 decimal places.
+ * Returns duration between {@code startedAt} and {@code completedAt} in
<i>seconds</i>,
+ * to 3 decimal places.
+ * @implNote if {@code completedAt} is before {@code startedAt},
+ * a negative value is returned.
*/
- public static BigDecimal durationBetween(Timestamp startedAt, Timestamp
completedAt) {
- if (completedAt == null) {
- return null;
- } else {
- long millis = completedAt.getTime() - startedAt.getTime();
- return toSeconds(millis);
- }
+ public Optional<BigDecimal> secondsBetweenAsDecimal(
+ final @Nullable Timestamp startedAt,
+ final @Nullable Timestamp completedAt) {
+ return startedAt!=null
+ && completedAt!=null
+ ? Optional.of(millisToSeconds(completedAt.getTime() -
startedAt.getTime()))
+ : Optional.empty();
}
- private static final BigDecimal DIVISOR = new BigDecimal(1000);
+ // -- HELPER
- private static BigDecimal toSeconds(long millis) {
+ private static BigDecimal millisToSeconds(final long millis) {
return new BigDecimal(millis)
- .divide(DIVISOR, RoundingMode.HALF_EVEN)
+ .movePointLeft(3)
.setScale(3, RoundingMode.HALF_EVEN);
}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureDefault.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureDefault.java
index 0d835c167b..05f133878d 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureDefault.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureDefault.java
@@ -25,7 +25,6 @@ import java.util.SortedSet;
import javax.inject.Named;
-import org.apache.isis.applib.IsisModuleApplib;
import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.annotation.Value;
import org.apache.isis.applib.services.appfeat.ApplicationFeature;
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
index eb57e7dfb8..1a00cc1b4a 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
@@ -45,8 +45,6 @@ import
org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository;
import org.apache.isis.applib.services.appfeat.ApplicationFeatureSort;
import org.apache.isis.applib.services.appfeat.ApplicationMemberSort;
import org.apache.isis.commons.internal.collections._Maps;
-import org.apache.isis.commons.internal.collections._Multimaps;
-import org.apache.isis.commons.internal.collections._Multimaps.ListMultimap;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.core.config.IsisConfiguration;
import
org.apache.isis.core.config.metamodel.services.ApplicationFeaturesInitConfiguration;
@@ -85,7 +83,8 @@ implements ApplicationFeatureRepository, MetamodelListener {
private final SortedMap<ApplicationFeatureId, ApplicationFeature>
propertyFeatures = _Maps.newTreeMap();
private final SortedMap<ApplicationFeatureId, ApplicationFeature>
collectionFeatures = _Maps.newTreeMap();
private final SortedMap<ApplicationFeatureId, ApplicationFeature>
actionFeatures = _Maps.newTreeMap();
- private final ListMultimap<String, ApplicationFeature>
memberFeaturesByLogicalTypeName = _Multimaps.newListTreeMultimap();
+ // apparently not used
+ //private final ListMultimap<String, ApplicationFeature>
memberFeaturesByLogicalTypeName = _Multimaps.newListTreeMultimap();
private final IsisConfiguration configuration;
private final SpecificationLoader specificationLoader;
@@ -136,8 +135,8 @@ implements ApplicationFeatureRepository, MetamodelListener {
visitFeatureIdentifierByName(typeFeatures, featuresByName::put);
visitFeatureIdentifierByName(memberFeatures, featuresByName::put);
this.featureIdentifiersByName =
Collections.unmodifiableMap(featuresByName);
- memberFeatures.forEach((key, value) ->
-
memberFeaturesByLogicalTypeName.putElement(key.getLogicalTypeName(), value));
+// memberFeatures.forEach((key, value) ->
+//
memberFeaturesByLogicalTypeName.putElement(key.getLogicalTypeName(), value));
}
private void visitFeatureIdentifierByName(
diff --git
a/extensions/core/commandlog/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/CommandLogEntry.java
b/extensions/core/commandlog/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/CommandLogEntry.java
index cea4d6a3b5..b56503b736 100644
---
a/extensions/core/commandlog/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/CommandLogEntry.java
+++
b/extensions/core/commandlog/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/CommandLogEntry.java
@@ -60,8 +60,8 @@ import org.apache.isis.applib.util.ObjectContracts;
import org.apache.isis.applib.util.TitleBuffer;
import org.apache.isis.applib.util.ToString;
import org.apache.isis.commons.functional.Try;
-import org.apache.isis.commons.internal.base._BigDecimals;
import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.commons.internal.base._Times;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import
org.apache.isis.extensions.commandlog.applib.IsisModuleExtCommandLogApplib;
import org.apache.isis.schema.cmd.v2.CommandDto;
@@ -136,7 +136,7 @@ implements Comparable<CommandLogEntry>, DomainChangeRecord,
HasCommandDto {
@Programmatic
- public void init(Command command) {
+ public void init(final Command command) {
setInteractionId(command.getInteractionId());
setUsername(command.getUsername());
@@ -338,6 +338,7 @@ implements Comparable<CommandLogEntry>, DomainChangeRecord,
HasCommandDto {
String ALLOWS_NULL =
DomainChangeRecord.LogicalMemberIdentifier.ALLOWS_NULL;
}
+ @Override
@LogicalMemberIdentifier
public abstract String getLogicalMemberIdentifier();
public abstract void setLogicalMemberIdentifier(String
logicalMemberIdentifier);
@@ -427,7 +428,8 @@ implements Comparable<CommandLogEntry>, DomainChangeRecord,
HasCommandDto {
@Digits(integer=5, fraction=3)
@Duration
public BigDecimal getDuration() {
- return _BigDecimals.durationBetween(getStartedAt(), getCompletedAt());
+ return _Times.secondsBetweenAsDecimal(getStartedAt(), getCompletedAt())
+ .orElse(null);
}
diff --git
a/extensions/core/executionlog/applib/src/main/java/org/apache/isis/extensions/executionlog/applib/dom/ExecutionLogEntry.java
b/extensions/core/executionlog/applib/src/main/java/org/apache/isis/extensions/executionlog/applib/dom/ExecutionLogEntry.java
index 6eca21fe02..c9602ff625 100644
---
a/extensions/core/executionlog/applib/src/main/java/org/apache/isis/extensions/executionlog/applib/dom/ExecutionLogEntry.java
+++
b/extensions/core/executionlog/applib/src/main/java/org/apache/isis/extensions/executionlog/applib/dom/ExecutionLogEntry.java
@@ -58,7 +58,7 @@ import
org.apache.isis.applib.services.tablecol.TableColumnOrderForCollectionTyp
import org.apache.isis.applib.util.ObjectContracts;
import org.apache.isis.applib.util.TitleBuffer;
import org.apache.isis.applib.util.ToString;
-import org.apache.isis.commons.internal.base._BigDecimals;
+import org.apache.isis.commons.internal.base._Times;
import
org.apache.isis.extensions.executionlog.applib.IsisModuleExtExecutionLogApplib;
import org.apache.isis.schema.ixn.v2.InteractionDto;
import org.apache.isis.schema.ixn.v2.MemberExecutionDto;
@@ -122,19 +122,19 @@ implements Comparable<ExecutionLogEntry>,
DomainChangeRecord, HasInteractionIdAn
@UtilityClass
protected static class Util {
- public static String abbreviated(String str, int maxLength) {
+ public static String abbreviated(final String str, final int
maxLength) {
return str != null ? (str.length() < maxLength ? str :
str.substring(0, maxLength - 3) + "...") : null;
}
}
@Inject BookmarkService bookmarkService;
- public ExecutionLogEntry(@NonNull Execution<? extends
MemberExecutionDto,?> execution) {
+ public ExecutionLogEntry(@NonNull final Execution<? extends
MemberExecutionDto,?> execution) {
init(execution);
}
@Programmatic
- public void init(Execution<? extends MemberExecutionDto, ?> execution) {
+ public void init(final Execution<? extends MemberExecutionDto, ?>
execution) {
val interactionId = execution.getInteraction().getInteractionId();
setInteractionId(interactionId);
@@ -336,6 +336,7 @@ implements Comparable<ExecutionLogEntry>,
DomainChangeRecord, HasInteractionIdAn
boolean NULLABLE = false;
String ALLOWS_NULL = "false";
}
+ @Override
@LogicalMemberIdentifier
public abstract String getLogicalMemberIdentifier();
public abstract void setLogicalMemberIdentifier(String
logicalMemberIdentifier);
@@ -420,7 +421,8 @@ implements Comparable<ExecutionLogEntry>,
DomainChangeRecord, HasInteractionIdAn
*/
@Duration
public BigDecimal getDuration() {
- return _BigDecimals.durationBetween(getStartedAt(), getCompletedAt());
+ return _Times.secondsBetweenAsDecimal(getStartedAt(), getCompletedAt())
+ .orElse(null);
}
diff --git
a/extensions/core/executionoutbox/applib/src/main/java/org/apache/isis/extensions/executionoutbox/applib/dom/ExecutionOutboxEntry.java
b/extensions/core/executionoutbox/applib/src/main/java/org/apache/isis/extensions/executionoutbox/applib/dom/ExecutionOutboxEntry.java
index d0245044b2..52bda2a970 100644
---
a/extensions/core/executionoutbox/applib/src/main/java/org/apache/isis/extensions/executionoutbox/applib/dom/ExecutionOutboxEntry.java
+++
b/extensions/core/executionoutbox/applib/src/main/java/org/apache/isis/extensions/executionoutbox/applib/dom/ExecutionOutboxEntry.java
@@ -58,7 +58,7 @@ import
org.apache.isis.applib.services.tablecol.TableColumnOrderForCollectionTyp
import org.apache.isis.applib.util.ObjectContracts;
import org.apache.isis.applib.util.TitleBuffer;
import org.apache.isis.applib.util.ToString;
-import org.apache.isis.commons.internal.base._BigDecimals;
+import org.apache.isis.commons.internal.base._Times;
import
org.apache.isis.extensions.executionoutbox.applib.IsisModuleExtExecutionOutboxApplib;
import org.apache.isis.schema.ixn.v2.InteractionDto;
import org.apache.isis.schema.ixn.v2.MemberExecutionDto;
@@ -112,19 +112,19 @@ implements Comparable<ExecutionOutboxEntry>,
DomainChangeRecord, HasInteractionI
@UtilityClass
protected static class Util {
- public static String abbreviated(String str, int maxLength) {
+ public static String abbreviated(final String str, final int
maxLength) {
return str != null ? (str.length() < maxLength ? str :
str.substring(0, maxLength - 3) + "...") : null;
}
}
@Inject BookmarkService bookmarkService;
- public ExecutionOutboxEntry(@NonNull Execution<? extends
MemberExecutionDto,?> execution) {
+ public ExecutionOutboxEntry(@NonNull final Execution<? extends
MemberExecutionDto,?> execution) {
init(execution);
}
@Programmatic
- public void init(Execution<? extends MemberExecutionDto, ?> execution) {
+ public void init(final Execution<? extends MemberExecutionDto, ?>
execution) {
val interactionId = execution.getInteraction().getInteractionId();
setInteractionId(interactionId);
@@ -326,6 +326,7 @@ implements Comparable<ExecutionOutboxEntry>,
DomainChangeRecord, HasInteractionI
boolean NULLABLE = false;
String ALLOWS_NULL = "false";
}
+ @Override
@LogicalMemberIdentifier
public abstract String getLogicalMemberIdentifier();
public abstract void setLogicalMemberIdentifier(String
logicalMemberIdentifier);
@@ -410,7 +411,8 @@ implements Comparable<ExecutionOutboxEntry>,
DomainChangeRecord, HasInteractionI
*/
@Duration
public BigDecimal getDuration() {
- return _BigDecimals.durationBetween(getStartedAt(), getCompletedAt());
+ return _Times.secondsBetweenAsDecimal(getStartedAt(), getCompletedAt())
+ .orElse(null);
}