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());
     }

Reply via email to