PAN-7 Set up the findAll method in the DefinitionDTO

This commit is contained in:
2019-02-17 17:42:25 -07:00
parent cc302f17c3
commit a4dde1b216
10 changed files with 113 additions and 9 deletions
@@ -21,6 +21,8 @@ dependencies {
compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.0.5.RELEASE' compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.0.5.RELEASE'
compile group: 'org.springframework', name: 'spring-aspects', version: '5.1.5.RELEASE' compile group: 'org.springframework', name: 'spring-aspects', version: '5.1.5.RELEASE'
compile group: 'org.hibernate', name: 'hibernate-core', version: '5.4.1.Final' compile group: 'org.hibernate', name: 'hibernate-core', version: '5.4.1.Final'
compile group: 'com.vladmihalcea', name: 'hibernate-types-52', version: '2.4.1'
compile fileTree(dir: 'lib', include: '**/*.jar') compile fileTree(dir: 'lib', include: '**/*.jar')
@@ -0,0 +1,26 @@
package edu.msudenver.tsp.persistence.controller;
import edu.msudenver.tsp.persistence.dto.AccountsDto;
import edu.msudenver.tsp.persistence.repository.AccountsRepository;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.Optional;
@RestController
@AllArgsConstructor
@RequestMapping("/accounts")
public class AccountController {
private final AccountsRepository accountsRepository;
@GetMapping("/")
public @ResponseBody Iterable<AccountsDto> getListOfAccounts() {
return accountsRepository.findAll();
}
@GetMapping("/{id}")
public @ResponseBody
Optional<AccountsDto> getAccountById(@PathVariable("id") final Integer id) {
return accountsRepository.findById(id);
}
}
@@ -0,0 +1,28 @@
package edu.msudenver.tsp.persistence.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.Date;
@Entity(name = "accounts")
@EntityListeners(AuditingEntityListener.class)
@Data
@EqualsAndHashCode(callSuper = true)
public class AccountsDto extends BaseDto implements Serializable {
@Size(max = 50) private String username;
@Size(max = 256) private String password;
@NotNull @JsonProperty("administrator_status") private boolean administratorStatus;
@Temporal(TemporalType.DATE) @JsonProperty("last_login") private Date lastLogin;
public static final long serialVersionUID = 7095627971593953734L;
}
@@ -1,9 +1,17 @@
package edu.msudenver.tsp.persistence.dto; package edu.msudenver.tsp.persistence.dto;
import com.vladmihalcea.hibernate.type.array.IntArrayType;
import com.vladmihalcea.hibernate.type.array.StringArrayType;
import com.vladmihalcea.hibernate.type.json.JsonBinaryType;
import com.vladmihalcea.hibernate.type.json.JsonNodeBinaryType;
import com.vladmihalcea.hibernate.type.json.JsonNodeStringType;
import com.vladmihalcea.hibernate.type.json.JsonStringType;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.hibernate.annotations.TypeDef;
import org.hibernate.annotations.TypeDefs;
import javax.persistence.*; import javax.persistence.*;
@@ -12,10 +20,18 @@ import javax.persistence.*;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED) @NoArgsConstructor(access = AccessLevel.PROTECTED)
@MappedSuperclass @MappedSuperclass
@TypeDefs({
@TypeDef(name = "string-array", typeClass = StringArrayType.class),
@TypeDef(name = "int-array", typeClass = IntArrayType.class),
@TypeDef(name = "json", typeClass = JsonStringType.class),
@TypeDef(name = "jsonb", typeClass = JsonBinaryType.class),
@TypeDef(name = "jsonb-node", typeClass = JsonNodeBinaryType.class),
@TypeDef(name = "json-node", typeClass = JsonNodeStringType.class),
})
public class BaseDto { public class BaseDto {
@Id @Id
@GeneratedValue(strategy = GenerationType.AUTO) @GeneratedValue(strategy = GenerationType.AUTO)
Integer id; Integer id;
@Version @Version
int version; Integer version;
} }
@@ -1,6 +1,17 @@
package edu.msudenver.tsp.persistence.dto; package edu.msudenver.tsp.persistence.dto;
import java.io.Serializable; import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.util.List;
@Getter
@Setter
@ToString
public class Definition implements Serializable { public class Definition implements Serializable {
private List<String> definitions;
public static final long serialVersionUID = -2208496232532214840L;
} }
@@ -2,8 +2,10 @@ package edu.msudenver.tsp.persistence.dto;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import org.hibernate.annotations.Type;
import org.springframework.data.jpa.domain.support.AuditingEntityListener; import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.Column;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.EntityListeners; import javax.persistence.EntityListeners;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
@@ -14,9 +16,9 @@ import java.io.Serializable;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class DefinitionDto extends BaseDto implements Serializable { public class DefinitionDto extends BaseDto implements Serializable {
@Size(min = 1, max = 200, message = "Must be between 1 and 200 characters") String name; @Size(min = 1, max = 200, message = "Must be between 1 and 200 characters") private String name;
Definition definition; @Type(type = "jsonb") @Column(columnDefinition = "jsonb") private Definition definition;
Notation notation; @Type(type = "jsonb") @Column(columnDefinition = "jsonb") private Notation notation;
public static final long serialVersionUID = -5314619286352932857L; public static final long serialVersionUID = -5314619286352932857L;
} }
@@ -1,6 +1,16 @@
package edu.msudenver.tsp.persistence.dto; package edu.msudenver.tsp.persistence.dto;
import java.io.Serializable; import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.util.List;
@Getter
@Setter
@ToString
public class Notation implements Serializable { public class Notation implements Serializable {
private List<String> notations;
public static final long serialVersionUID = 2301438318932336121L;
} }
@@ -0,0 +1,9 @@
package edu.msudenver.tsp.persistence.repository;
import edu.msudenver.tsp.persistence.dto.AccountsDto;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface AccountsRepository extends JpaRepository<AccountsDto, Integer> {
}
@@ -1,7 +1,6 @@
package edu.msudenver.tsp.persistence.repository; package edu.msudenver.tsp.persistence.repository;
import edu.msudenver.tsp.persistence.dto.Definition;
import edu.msudenver.tsp.persistence.dto.DefinitionDto; import edu.msudenver.tsp.persistence.dto.DefinitionDto;
import edu.msudenver.tsp.persistence.dto.Notation; import edu.msudenver.tsp.persistence.dto.Notation;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
@@ -12,7 +11,7 @@ public interface DefinitionRepository extends JpaRepository<DefinitionDto, Integ
DefinitionDto findByName(final String name); DefinitionDto findByName(final String name);
DefinitionDto findByDefinition(final Definition definition); DefinitionDto findByDefinition(final String definition);
DefinitionDto findByNotation(final Notation notation); DefinitionDto findByNotation(final Notation notation);
} }
@@ -10,3 +10,4 @@ spring.datasource.tomcat.test-while-idle=true
spring.datasource.tomcat.validation-query=SELECT 1 spring.datasource.tomcat.validation-query=SELECT 1
logging.level.org.springframework.web=DEBUG logging.level.org.springframework.web=DEBUG
spring.datasource.tomcat.max-active=1 spring.datasource.tomcat.max-active=1
server.port=8090