This is an automated email from the ASF dual-hosted git repository. danhaywood pushed a commit to branch jdo-SNAPSHOT in repository https://gitbox.apache.org/repos/asf/isis-app-simpleapp.git
The following commit(s) were added to refs/heads/jdo-SNAPSHOT by this push: new c3264c1 updates menus in line with ISIS-3230 new 33a41f3 Merge branch 'jpa-SNAPSHOT' into jdo-SNAPSHOT c3264c1 is described below commit c3264c113d8d0c0d480066fba875be5115ce3e6a Author: Dan Haywood <d...@haywood-associates.co.uk> AuthorDate: Fri Sep 30 10:58:34 2022 +0100 updates menus in line with ISIS-3230 minor improvement to builder --- .../simple/fixture/SimpleObjectBuilder.java | 69 ---------------------- .../simple/fixture/SimpleObject_persona.java | 69 ++++++++++++++++++---- webapp/src/main/resources/menubars.layout.xml | 6 +- 3 files changed, 60 insertions(+), 84 deletions(-) diff --git a/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObjectBuilder.java b/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObjectBuilder.java deleted file mode 100644 index ac9ad03..0000000 --- a/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObjectBuilder.java +++ /dev/null @@ -1,69 +0,0 @@ -package domainapp.modules.simple.fixture; - -import java.io.ByteArrayOutputStream; -import java.io.InputStream; - -import javax.inject.Inject; - -import org.springframework.core.io.ClassPathResource; - -import org.apache.isis.applib.services.clock.ClockService; -import org.apache.isis.applib.value.Blob; -import org.apache.isis.testing.fakedata.applib.services.FakeDataService; -import org.apache.isis.testing.fixtures.applib.personas.BuilderScriptWithResult; - -import domainapp.modules.simple.dom.so.SimpleObject; -import domainapp.modules.simple.dom.so.SimpleObjects; -import lombok.Getter; -import lombok.Setter; -import lombok.SneakyThrows; -import lombok.val; -import lombok.experimental.Accessors; - -@Accessors(chain = true) -public class SimpleObjectBuilder extends BuilderScriptWithResult<SimpleObject> { - - @Getter @Setter private String name; - @Getter @Setter private String contentFileName; - - @Override - protected SimpleObject buildResult(final ExecutionContext ec) { - - checkParam("name", ec, String.class); - - SimpleObject simpleObject = wrap(simpleObjects).create(name); - - if (contentFileName != null) { - val bytes = toBytes(contentFileName); - val attachment = new Blob(contentFileName, "application/pdf", bytes); - simpleObject.updateAttachment(attachment); - } - - simpleObject.setLastCheckedIn(clockService.getClock().nowAsLocalDate().plusDays(fakeDataService.ints().between(-10, +10))); - - return simpleObject; - } - - @SneakyThrows - private byte[] toBytes(String fileName){ - InputStream inputStream = new ClassPathResource(fileName, getClass()).getInputStream(); - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - - int nRead; - byte[] data = new byte[16384]; - - while ((nRead = inputStream.read(data, 0, data.length)) != -1) { - buffer.write(data, 0, nRead); - } - - return buffer.toByteArray(); - } - - // -- DEPENDENCIES - - @Inject SimpleObjects simpleObjects; - @Inject ClockService clockService; - @Inject FakeDataService fakeDataService; - - -} diff --git a/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java b/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java index 8fc5df2..34615ef 100644 --- a/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java +++ b/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java @@ -1,25 +1,28 @@ package domainapp.modules.simple.fixture; -import java.time.LocalDate; +import java.io.ByteArrayOutputStream; +import java.io.InputStream; import javax.inject.Inject; import org.apache.isis.applib.services.clock.ClockService; import org.apache.isis.applib.services.registry.ServiceRegistry; +import org.apache.isis.applib.value.Blob; import org.apache.isis.testing.fakedata.applib.services.FakeDataService; +import org.apache.isis.testing.fixtures.applib.personas.BuilderScriptWithResult; import org.apache.isis.testing.fixtures.applib.personas.Persona; import org.apache.isis.testing.fixtures.applib.setup.PersonaEnumPersistAll; +import org.springframework.core.io.ClassPathResource; -import lombok.AllArgsConstructor; -import lombok.RequiredArgsConstructor; -import lombok.val; +import lombok.*; +import lombok.experimental.Accessors; import domainapp.modules.simple.dom.so.SimpleObject; import domainapp.modules.simple.dom.so.SimpleObjects; @RequiredArgsConstructor public enum SimpleObject_persona -implements Persona<SimpleObject, SimpleObjectBuilder> { +implements Persona<SimpleObject, SimpleObject_persona.Builder> { FOO("Foo", "Foo.pdf"), BAR("Bar", "Bar.pdf"), @@ -36,24 +39,64 @@ implements Persona<SimpleObject, SimpleObjectBuilder> { private final String contentFileName; @Override - public SimpleObjectBuilder builder() { - return new SimpleObjectBuilder() - .setName(name) - .setContentFileName(contentFileName); + public Builder builder() { + return new Builder().setPersona(this); } @Override public SimpleObject findUsing(final ServiceRegistry serviceRegistry) { - SimpleObjects simpleObjects = serviceRegistry.lookupService(SimpleObjects.class).orElse(null); - return simpleObjects.findByNameExact(name); + return serviceRegistry.lookupService(SimpleObjects.class).map(x -> x.findByNameExact(name)).orElseThrow(); } - public static class PersistAll - extends PersonaEnumPersistAll<SimpleObject, SimpleObject_persona, SimpleObjectBuilder> { + @Accessors(chain = true) + public static class Builder extends BuilderScriptWithResult<SimpleObject> { + + @Getter @Setter private SimpleObject_persona persona; + + @Override + protected SimpleObject buildResult(final ExecutionContext ec) { + + val simpleObject = wrap(simpleObjects).create(persona.name); + + if (persona.contentFileName != null) { + val bytes = toBytes(persona.contentFileName); + val attachment = new Blob(persona.contentFileName, "application/pdf", bytes); + simpleObject.updateAttachment(attachment); + } + + simpleObject.setLastCheckedIn(clockService.getClock().nowAsLocalDate().plusDays(fakeDataService.ints().between(-10, +10))); + + return simpleObject; + } + + @SneakyThrows + private byte[] toBytes(String fileName){ + InputStream inputStream = new ClassPathResource(fileName, getClass()).getInputStream(); + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + int nRead; + byte[] data = new byte[16384]; + + while ((nRead = inputStream.read(data, 0, data.length)) != -1) { + buffer.write(data, 0, nRead); + } + + return buffer.toByteArray(); + } + + // -- DEPENDENCIES + + @Inject SimpleObjects simpleObjects; + @Inject ClockService clockService; + @Inject FakeDataService fakeDataService; + } + + public static class PersistAll + extends PersonaEnumPersistAll<SimpleObject, SimpleObject_persona, Builder> { public PersistAll() { super(SimpleObject_persona.class); } } + } diff --git a/webapp/src/main/resources/menubars.layout.xml b/webapp/src/main/resources/menubars.layout.xml index a7ac932..3d38f6d 100644 --- a/webapp/src/main/resources/menubars.layout.xml +++ b/webapp/src/main/resources/menubars.layout.xml @@ -73,10 +73,10 @@ </mb3:section> <mb3:section> <mb3:named>Commands</mb3:named> - <mb3:serviceAction id="findCommandById" objectType="isis.ext.commandLog.CommandLogMenu"/> <mb3:serviceAction id="activeCommands" objectType="isis.ext.commandLog.CommandLogMenu"/> + <mb3:serviceAction id="findMostRecent" objectType="isis.ext.commandLog.CommandLogMenu"/> <mb3:serviceAction id="findCommands" objectType="isis.ext.commandLog.CommandLogMenu"/> - <mb3:serviceAction id="truncateLog" objectType="isis.ext.commandLog.CommandLogMenu"/> + <mb3:serviceAction id="findAll" objectType="isis.ext.commandLog.CommandLogMenu"/> </mb3:section> <mb3:section> <mb3:named>Execution Log</mb3:named> @@ -85,7 +85,9 @@ </mb3:section> <mb3:section> <mb3:named>Audit Trail</mb3:named> + <mb3:serviceAction id="findMostRecent" objectType="isis.ext.audittrail.AuditTrailMenu"/> <mb3:serviceAction id="findAuditEntries" objectType="isis.ext.audittrail.AuditTrailMenu"/> + <mb3:serviceAction id="findAll" objectType="isis.ext.audittrail.AuditTrailMenu"/> </mb3:section> <mb3:section> <mb3:named>Execution Outbox</mb3:named>