This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch CAUSEWAY-3546
in repository https://gitbox.apache.org/repos/asf/causeway.git
The following commit(s) were added to refs/heads/CAUSEWAY-3546 by this push:
new 6a5df2fe56 CAUSEWAY-3597 : improves mixin for downloading columnOrder
files
6a5df2fe56 is described below
commit 6a5df2fe564140fc7a159000b3b13cb67cd502d8
Author: danhaywood <[email protected]>
AuthorDate: Thu Sep 28 23:41:59 2023 +0100
CAUSEWAY-3597 : improves mixin for downloading columnOrder files
---
.../metamodel/CausewayModuleCoreMetamodel.java | 4 +-
...java => CausewayModuleCoreMetamodelMixins.java} | 4 +-
.../inspect/Object_downloadColumnOrderTxtFile.java | 124 ---------------------
.../Object_downloadColumnOrderTxtFilesAsZip.java | 2 +-
4 files changed, 5 insertions(+), 129 deletions(-)
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/CausewayModuleCoreMetamodel.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/CausewayModuleCoreMetamodel.java
index 763911ce3d..7f265e6cb6 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/CausewayModuleCoreMetamodel.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/CausewayModuleCoreMetamodel.java
@@ -35,7 +35,7 @@ import
org.apache.causeway.commons.semantics.CollectionSemantics;
import org.apache.causeway.core.config.CausewayModuleCoreConfig;
import org.apache.causeway.core.metamodel.context.MetaModelContexts;
import
org.apache.causeway.core.metamodel.facets.object.logicaltype.LogicalTypeMalformedValidator;
-import
org.apache.causeway.core.metamodel.inspect.CausewayModuleCoreMetamodelInspection;
+import
org.apache.causeway.core.metamodel.inspect.CausewayModuleCoreMetamodelMixins;
import org.apache.causeway.core.metamodel.inspect.model.ActionNode;
import org.apache.causeway.core.metamodel.inspect.model.CollectionNode;
import org.apache.causeway.core.metamodel.inspect.model.FacetAttrNode;
@@ -121,7 +121,7 @@ import lombok.NonNull;
// @Configuration's
MetaModelContexts.class,
- CausewayModuleCoreMetamodelInspection.class,
+ CausewayModuleCoreMetamodelMixins.class,
// @Component's
ProgrammingModelInitFilterDefault.class,
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/CausewayModuleCoreMetamodelInspection.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/CausewayModuleCoreMetamodelMixins.java
similarity index 94%
rename from
core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/CausewayModuleCoreMetamodelInspection.java
rename to
core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/CausewayModuleCoreMetamodelMixins.java
index c90b8518ef..6a92d5b5ac 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/CausewayModuleCoreMetamodelInspection.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/CausewayModuleCoreMetamodelMixins.java
@@ -33,7 +33,7 @@ import
org.apache.causeway.core.metamodel.inspect.model.TypeNode;
@Configuration
@Import({
Object_inspectMetamodel.class,
- Object_downloadColumnOrderTxtFile.class,
+ Object_downloadColumnOrderTxtFilesAsZip.class,
ActionNode.class,
CollectionNode.class,
@@ -44,6 +44,6 @@ import
org.apache.causeway.core.metamodel.inspect.model.TypeNode;
PropertyNode.class,
TypeNode.class,
})
-public class CausewayModuleCoreMetamodelInspection {
+public class CausewayModuleCoreMetamodelMixins {
}
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/Object_downloadColumnOrderTxtFile.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/Object_downloadColumnOrderTxtFile.java
deleted file mode 100644
index d3be456772..0000000000
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/Object_downloadColumnOrderTxtFile.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.causeway.core.metamodel.inspect;
-
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-import javax.inject.Inject;
-
-import org.springframework.lang.Nullable;
-
-import org.apache.causeway.applib.annotation.Action;
-import org.apache.causeway.applib.annotation.ActionLayout;
-import org.apache.causeway.applib.annotation.MemberSupport;
-import org.apache.causeway.applib.annotation.Publishing;
-import org.apache.causeway.applib.annotation.RestrictTo;
-import org.apache.causeway.applib.annotation.SemanticsOf;
-import org.apache.causeway.applib.layout.LayoutConstants;
-import org.apache.causeway.applib.value.Clob;
-import org.apache.causeway.applib.value.NamedWithMimeType;
-import org.apache.causeway.core.metamodel.spec.feature.MixedIn;
-import org.apache.causeway.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.causeway.core.metamodel.spec.feature.ObjectFeature;
-import org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
-
-import lombok.RequiredArgsConstructor;
-import lombok.val;
-
-@Action(
- commandPublishing = Publishing.DISABLED,
- domainEvent =
Object_downloadColumnOrderTxtFile.ActionDomainEvent.class,
- executionPublishing = Publishing.DISABLED,
- restrictTo = RestrictTo.PROTOTYPING,
- semantics = SemanticsOf.IDEMPOTENT // to avoid caching
-)
-@ActionLayout(
- describedAs = "Downloads a .columnOrder.txt file for either this
object or one of its collections",
- fieldSetId = LayoutConstants.FieldSetId.METADATA,
- position = ActionLayout.Position.PANEL_DROPDOWN,
- sequence = "700.2.2"
-)
-@RequiredArgsConstructor
-public class Object_downloadColumnOrderTxtFile {
-
- private final Object domainObject; // mixee
-
- public static class ActionDomainEvent
- extends
org.apache.causeway.applib.CausewayModuleApplib.ActionDomainEvent<Object_downloadColumnOrderTxtFile>
{}
-
- @Inject SpecificationLoader specificationLoader;
-
- @MemberSupport public Clob act(
- @Nullable String collectionId
- ) {
-
- return collectionId == null
- ? standaloneCollectionTxtFile()
- : parentedCollectionTxtFile(collectionId);
- }
-
- private Clob standaloneCollectionTxtFile() {
- val parentSpec =
specificationLoader.loadSpecification(domainObject.getClass());
- val buf = new StringBuilder();
-
- parentSpec.streamAssociations(MixedIn.INCLUDED)
- .map(ObjectFeature::getId)
- .forEach(assocId -> buf.append(assocId).append("\n"));
-
- String fileName = String.format("%s.columnOrder.txt",
parentSpec.getShortIdentifier());
- String fileContents = buf.toString();
- return newClob(fileName, fileContents);
- }
-
- private Clob parentedCollectionTxtFile(String collectionId) {
- val parentSpec =
specificationLoader.loadSpecification(domainObject.getClass());
- val buf = new StringBuilder();
-
- val collection = parentSpec.streamCollections(MixedIn.INCLUDED)
- .filter(x -> Objects.equals(x.getId(),
collectionId))
- .findFirst()
- .orElseThrow(); // shouldn't happen because of
disableAct guard.
- val collectionIdentifier = collection.getFeatureIdentifier();
- val elementType = collection.getElementType();
-
- elementType.streamAssociations(MixedIn.INCLUDED)
-
.filter(ObjectAssociation.Predicates.visibleAccordingToHiddenFacet(collectionIdentifier))
-
.filter(ObjectAssociation.Predicates.referencesParent(parentSpec).negate())
- .map(ObjectFeature::getId)
- .forEach(assocId -> buf.append(assocId).append("\n"));
-
- String fileName = String.format("%s#%s.columnOrder.txt",
parentSpec.getShortIdentifier(), collectionId);
- String fileContents = buf.toString();
- return newClob(fileName, fileContents);
- }
-
- @MemberSupport public List<String> choices0Act() {
- val objectSpec =
specificationLoader.loadSpecification(domainObject.getClass());
- return objectSpec.streamCollections(MixedIn.INCLUDED)
- .map(ObjectFeature::getId)
- .collect(Collectors.toList());
- }
-
- private static Clob newClob(String fileName, String fileContents) {
- return Clob.of(fileName, NamedWithMimeType.CommonMimeType.TXT,
fileContents);
- }
-
-}
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/Object_downloadColumnOrderTxtFilesAsZip.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/Object_downloadColumnOrderTxtFilesAsZip.java
index fcbc39b520..94d81520ae 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/Object_downloadColumnOrderTxtFilesAsZip.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/Object_downloadColumnOrderTxtFilesAsZip.java
@@ -81,7 +81,7 @@ public class Object_downloadColumnOrderTxtFilesAsZip {
return Blob.of(fileName, NamedWithMimeType.CommonMimeType.ZIP,
zipBytes);
}
- public String default0Act() {
+ @MemberSupport public String default0Act() {
val parentSpec =
specificationLoader.loadSpecification(domainObject.getClass());
return String.format("%s.columnOrder.zip",
parentSpec.getShortIdentifier());
}