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
commit 53973572f5f2009929cf2a8b8b9be43a617707f6 Merge: 39d7437 bddbed6 Author: Dan Haywood <[email protected]> AuthorDate: Tue Aug 30 20:07:53 2022 +0100 Merge branch 'jpa-SNAPSHOT' into jdo-SNAPSHOT .run/SimpleApp.run.xml | 1 + module-simple/pom.xml | 10 ++++++ .../domainapp/modules/simple/SimpleModule.java | 4 +++ .../simple/dom/so/SimpleObject.columnOrder.txt | 3 +- .../modules/simple/dom/so/SimpleObject.java | 41 +++++++++++++++++++++- .../simple/fixture/SimpleObjectBuilder.java | 14 +++++--- .../simple/fixture/SimpleObject_persona.java | 15 ++++++-- webapp/pom.xml | 11 ++++-- .../main/java/domainapp/webapp/AppManifest.java | 2 ++ .../src/main/resources/static/css/application.css | 5 +++ webapp/src/main/resources/static/index.html | 2 +- 11 files changed, 96 insertions(+), 12 deletions(-) diff --cc .run/SimpleApp.run.xml index 1b6062f,52eb874..b86b545 --- a/.run/SimpleApp.run.xml +++ b/.run/SimpleApp.run.xml @@@ -1,8 -1,10 +1,9 @@@ <component name="ProjectRunConfigurationManager"> <configuration default="false" name="SimpleApp" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot"> <option name="ACTIVE_PROFILES" /> - <module name="simpleapp-jpa-webapp" /> + <module name="simpleapp-jdo-webapp" /> + <option name="SHORTEN_COMMAND_LINE" value="ARGS_FILE" /> <option name="SPRING_BOOT_MAIN_CLASS" value="domainapp.webapp.SimpleApp" /> - <option name="VM_PARAMETERS" value="-javaagent:lib/spring-instrument.jar" /> <method v="2"> <option name="Make" enabled="true" /> </method> diff --cc module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java index a600a94,56ece4b..8a09d34 --- a/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java +++ b/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java @@@ -3,21 -3,29 +3,25 @@@ package domainapp.modules.simple import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; -import org.springframework.data.jpa.repository.config.EnableJpaRepositories; + import org.apache.isis.extensions.fullcalendar.applib.IsisModuleExtFullCalendarApplib; import org.apache.isis.extensions.pdfjs.applib.IsisModuleExtPdfjsApplibModel; -import org.apache.isis.persistence.jpa.applib.IsisModulePersistenceJpaApplib; +import org.apache.isis.persistence.jdo.applib.IsisModulePersistenceJdoApplib; + import org.apache.isis.testing.fakedata.applib.IsisModuleTestingFakeDataApplib; import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript; import org.apache.isis.testing.fixtures.applib.modules.ModuleWithFixtures; -import org.apache.isis.testing.fixtures.applib.teardown.jpa.TeardownFixtureJpaAbstract; +import org.apache.isis.testing.fixtures.applib.teardown.jdo.TeardownFixtureJdoAbstract; import domainapp.modules.simple.dom.so.SimpleObject; @Configuration @Import({ IsisModuleExtPdfjsApplibModel.class, + IsisModuleExtFullCalendarApplib.class, + IsisModuleTestingFakeDataApplib.class, - IsisModulePersistenceJpaApplib.class, + IsisModulePersistenceJdoApplib.class }) @ComponentScan -@EnableJpaRepositories -@EntityScan(basePackageClasses = {SimpleModule.class}) public class SimpleModule implements ModuleWithFixtures { public static final String NAMESPACE = "simple"; diff --cc module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.java index 8b12f84,31d21b8..3905815 --- a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.java +++ b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.java @@@ -34,8 -48,14 +44,12 @@@ import org.apache.isis.applib.services. import org.apache.isis.applib.services.message.MessageService; import org.apache.isis.applib.services.repository.RepositoryService; import org.apache.isis.applib.services.title.TitleService; + import org.apache.isis.applib.services.user.UserCurrentSessionTimeZoneHolder; + import org.apache.isis.applib.services.user.UserService; import org.apache.isis.applib.value.Blob; + import org.apache.isis.extensions.fullcalendar.applib.CalendarEventable; + import org.apache.isis.extensions.fullcalendar.applib.value.CalendarEvent; import org.apache.isis.extensions.pdfjs.applib.annotations.PdfJsViewer; -import org.apache.isis.persistence.jpa.applib.integration.IsisEntityListener; -import org.apache.isis.persistence.jpa.applib.types.BlobJpaEmbeddable; import static org.apache.isis.applib.annotation.SemanticsOf.IDEMPOTENT; import static org.apache.isis.applib.annotation.SemanticsOf.NON_IDEMPOTENT_ARE_YOU_SURE; @@@ -80,10 -94,20 +94,10 @@@ import domainapp.modules.simple.types.N @NoArgsConstructor(access = AccessLevel.PUBLIC) @XmlJavaTypeAdapter(PersistentEntityAdapter.class) @ToString(onlyExplicitlyIncluded = true) - public class SimpleObject implements Comparable<SimpleObject> { + public class SimpleObject implements Comparable<SimpleObject>, CalendarEventable { static final String NAMED_QUERY__FIND_BY_NAME_LIKE = "SimpleObject.findByNameLike"; - - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - @Column(name = "id", nullable = false) - private Long id; - - @Version - @Column(name = "version", nullable = false) - @PropertyLayout(fieldSetId = "metadata", sequence = "999") - @Getter @Setter - private long version; + static final String NAMED_QUERY__FIND_BY_NAME_EXACT = "SimpleObject.findByNameExact"; public static SimpleObject withName(String name) { val simpleObject = new SimpleObject(); @@@ -109,19 -135,49 +123,44 @@@ @PropertyLayout(fieldSetId = LayoutConstants.FieldSetId.DETAILS, sequence = "2") private String notes; - @AttributeOverrides({ - @AttributeOverride(name="name", column=@Column(name="attachment_name")), - @AttributeOverride(name="mimeType",column=@Column(name="attachment_mimeType")), - @AttributeOverride(name="bytes", column=@Column(name="attachment_bytes")) - }) - @Embedded - private BlobJpaEmbeddable attachment; @PdfJsViewer + @Getter @Setter + @Persistent(defaultFetchGroup="false", columns = { + @Column(name = "attachment_name"), + @Column(name = "attachment_mimetype"), + @Column(name = "attachment_bytes") + }) @Property() @PropertyLayout(fieldSetId = "content", sequence = "1") - public Blob getAttachment() { - return BlobJpaEmbeddable.toBlob(attachment); - } - public void setAttachment(final Blob attachment) { - this.attachment = BlobJpaEmbeddable.fromBlob(attachment); - } + private Blob attachment; + + + + @Property(optionality = Optionality.OPTIONAL, editing = Editing.ENABLED) + @PropertyLayout(fieldSetId = LayoutConstants.FieldSetId.DETAILS, sequence = "3") - @Column(nullable = true) ++ @Column(allowsNull = "true") + @Getter @Setter + private java.time.LocalDate lastCheckedIn; + + + @Override + public String getCalendarName() { + return "Last checked-in"; + } + + @Override + public CalendarEvent toCalendarEvent() { + if (getLastCheckedIn() != null) { + long epochMillis = getLastCheckedIn().toEpochSecond(LocalTime.MIDNIGHT, ZoneOffset.systemDefault().getRules().getOffset(getLastCheckedIn().atStartOfDay())) * 1000L; + return new CalendarEvent(epochMillis, getCalendarName(), titleService.titleOf(this), getNotes()); + } else { + return null; + } + } + + @Action(semantics = IDEMPOTENT, commandPublishing = Publishing.ENABLED, executionPublishing = Publishing.ENABLED) @ActionLayout( associateWith = "name", promptStyle = PromptStyle.INLINE, diff --cc webapp/src/main/java/domainapp/webapp/AppManifest.java index ac72c1d,4329382..c037fba --- a/webapp/src/main/java/domainapp/webapp/AppManifest.java +++ b/webapp/src/main/java/domainapp/webapp/AppManifest.java @@@ -9,18 -9,18 +9,19 @@@ import org.apache.isis.applib.IsisModul import org.apache.isis.applib.IsisModuleApplibMixins; import org.apache.isis.core.config.presets.IsisPresets; import org.apache.isis.core.runtimeservices.IsisModuleCoreRuntimeServices; -import org.apache.isis.extensions.audittrail.jpa.IsisModuleExtAuditTrailPersistenceJpa; -import org.apache.isis.extensions.commandlog.jpa.IsisModuleExtCommandLogPersistenceJpa; -import org.apache.isis.extensions.executionlog.jpa.IsisModuleExtExecutionLogPersistenceJpa; -import org.apache.isis.extensions.executionoutbox.jpa.IsisModuleExtExecutionOutboxPersistenceJpa; +import org.apache.isis.extensions.audittrail.jdo.IsisModuleExtAuditTrailPersistenceJdo; +import org.apache.isis.extensions.commandlog.jdo.IsisModuleExtCommandLogPersistenceJdo; +import org.apache.isis.extensions.executionlog.jdo.IsisModuleExtExecutionLogPersistenceJdo; +import org.apache.isis.extensions.executionoutbox.jdo.IsisModuleExtExecutionOutboxPersistenceJdo; import org.apache.isis.extensions.flyway.impl.IsisModuleExtFlywayImpl; + import org.apache.isis.extensions.fullcalendar.wkt.viewer.IsisModuleExtFullCalendarWicketUi; import org.apache.isis.extensions.pdfjs.wkt.ui.IsisModuleExtPdfjsWicketUi; import org.apache.isis.extensions.secman.encryption.jbcrypt.IsisModuleExtSecmanEncryptionJbcrypt; -import org.apache.isis.extensions.secman.jpa.IsisModuleExtSecmanPersistenceJpa; -import org.apache.isis.extensions.sessionlog.jpa.IsisModuleExtSessionLogPersistenceJpa; +import org.apache.isis.extensions.secman.jdo.IsisModuleExtSecmanPersistenceJdo; +import org.apache.isis.extensions.sessionlog.jdo.IsisModuleExtSessionLogPersistenceJdo; +import org.apache.isis.persistence.jdo.datanucleus.IsisModulePersistenceJdoDatanucleus; import org.apache.isis.extensions.viewer.wicket.exceldownload.ui.IsisModuleExtExcelDownloadWicketUi; -import org.apache.isis.persistence.jpa.eclipselink.IsisModulePersistenceJpaEclipselink; +import org.apache.isis.persistence.jdo.datanucleus.IsisModulePersistenceJdoDatanucleusMixins; import org.apache.isis.testing.fixtures.applib.IsisModuleTestingFixturesApplib; import org.apache.isis.testing.h2console.ui.IsisModuleTestingH2ConsoleUi; import org.apache.isis.valuetypes.asciidoc.metamodel.IsisModuleValAsciidocMetaModel; @@@ -51,15 -50,16 +52,16 @@@ import domainapp.webapp.quartz.QuartzMo IsisModuleExtFlywayImpl.class, - IsisModuleExtSecmanPersistenceJpa.class, + IsisModuleExtSecmanPersistenceJdo.class, IsisModuleExtSecmanEncryptionJbcrypt.class, - IsisModuleExtSessionLogPersistenceJpa.class, - IsisModuleExtAuditTrailPersistenceJpa.class, - IsisModuleExtCommandLogPersistenceJpa.class, - IsisModuleExtExecutionLogPersistenceJpa.class, - IsisModuleExtExecutionOutboxPersistenceJpa.class, + IsisModuleExtSessionLogPersistenceJdo.class, + IsisModuleExtAuditTrailPersistenceJdo.class, + IsisModuleExtCommandLogPersistenceJdo.class, + IsisModuleExtExecutionLogPersistenceJdo.class, + IsisModuleExtExecutionOutboxPersistenceJdo.class, IsisModuleExtExcelDownloadWicketUi.class, + IsisModuleExtFullCalendarWicketUi.class, IsisModuleExtPdfjsWicketUi.class, IsisModuleValAsciidocMetaModel.class, // for pretty rendering of DTO objects such as CommandDto, InteractionDto
