From 759fa1b9a108173ce46bcc99aa94582963d2ba57 Mon Sep 17 00:00:00 2001 From: John Blum Date: Thu, 13 Jun 2019 00:14:21 -0700 Subject: [PATCH] Add example Customer Relationship Management (CRM) application domain classes. --- .../java/example/app/crm/model/Customer.java | 52 +++++++++++++++++++ .../app/crm/repo/CustomerRepository.java | 36 +++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 spring-geode/src/test/java/example/app/crm/model/Customer.java create mode 100644 spring-geode/src/test/java/example/app/crm/repo/CustomerRepository.java diff --git a/spring-geode/src/test/java/example/app/crm/model/Customer.java b/spring-geode/src/test/java/example/app/crm/model/Customer.java new file mode 100644 index 00000000..80671b6c --- /dev/null +++ b/spring-geode/src/test/java/example/app/crm/model/Customer.java @@ -0,0 +1,52 @@ +/* + * Copyright 2019 the original author or authors. + * + * Licensed 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 + * + * https://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 example.app.crm.model; + +import javax.persistence.Entity; +import javax.persistence.Table; + +import org.springframework.data.annotation.Id; +import org.springframework.data.gemfire.mapping.annotation.Region; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * The {@link Customer} class is an Abstract Data Type (ADT) modeling a a customer. + * + * @author John Blum + * @see lombok + * @see org.springframework.data.annotation.Id + * @see org.springframework.data.gemfire.mapping.annotation.Region + * @since 1.1.0 + */ +@Data +@Entity +@Region("Customers") +@Table(name = "Customers") +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor(staticName = "newCustomer") +public class Customer { + + @Id + @javax.persistence.Id + private Long id; + + private String name; + +} diff --git a/spring-geode/src/test/java/example/app/crm/repo/CustomerRepository.java b/spring-geode/src/test/java/example/app/crm/repo/CustomerRepository.java new file mode 100644 index 00000000..8a7431ee --- /dev/null +++ b/spring-geode/src/test/java/example/app/crm/repo/CustomerRepository.java @@ -0,0 +1,36 @@ +/* + * Copyright 2019 the original author or authors. + * + * Licensed 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 + * + * https://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 example.app.crm.repo; + +import org.springframework.data.repository.CrudRepository; + +import example.app.crm.model.Customer; + +/** + * {@link CustomerRepository} is a Spring Data {@link CrudRepository} and Data Access Object (DAO) defining basic CRUD + * and simple query data access operations on {@link Customer} objects. + * + * @author John Blum + * @see java.lang.Long + * @see org.springframework.data.repository.CrudRepository + * @see example.app.crm.model.Customer + * @since 1.1.0 + */ +public interface CustomerRepository extends CrudRepository { + + Customer findByName(String name); + +}