Initial commit
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
package me.aski.prepactrlws;
|
||||
|
||||
import me.aski.prepactrlws.entities.Student;
|
||||
import me.aski.prepactrlws.entities.Training;
|
||||
import me.aski.prepactrlws.projections.StudentProjection;
|
||||
import me.aski.prepactrlws.projections.TrainingProjection;
|
||||
import me.aski.prepactrlws.repositories.StudentRepository;
|
||||
import me.aski.prepactrlws.repositories.TrainingRepository;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.CommandLineRunner;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.data.rest.core.config.RepositoryRestConfiguration;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@SpringBootApplication
|
||||
public class PrepactrlwsApplication implements CommandLineRunner {
|
||||
|
||||
private final StudentRepository studentRepository;
|
||||
private final TrainingRepository trainingRepository;
|
||||
private final RepositoryRestConfiguration repositoryRestConfiguration;
|
||||
|
||||
@Autowired
|
||||
public PrepactrlwsApplication(StudentRepository studentRepository, TrainingRepository trainingRepository, RepositoryRestConfiguration repositoryRestConfiguration) {
|
||||
this.studentRepository = studentRepository;
|
||||
this.trainingRepository = trainingRepository;
|
||||
this.repositoryRestConfiguration = repositoryRestConfiguration;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(PrepactrlwsApplication.class, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(String... args) throws Exception {
|
||||
repositoryRestConfiguration.getProjectionConfiguration().addProjection(StudentProjection.class)
|
||||
.addProjection(TrainingProjection.class);
|
||||
|
||||
Training training1 = trainingRepository.save(new Training(null, "REACT", 100, null));
|
||||
Training training2 = trainingRepository.save(new Training(null, "ANGULAR", 150, null));
|
||||
Training training3 = trainingRepository.save(new Training(null, "IONIC", 80, null));
|
||||
|
||||
studentRepository.save(new Student(null, "John", "DOE", new Date(), training1));
|
||||
studentRepository.save(new Student(null, "Jane", "DOE", new Date(), training2));
|
||||
studentRepository.save(new Student(null, "Richard", "ROE", new Date(), training3));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package me.aski.prepactrlws.config;
|
||||
|
||||
|
||||
import me.aski.prepactrlws.entities.Student;
|
||||
import me.aski.prepactrlws.entities.Training;
|
||||
import org.springframework.data.rest.core.config.RepositoryRestConfiguration;
|
||||
import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurer;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class GlobalRepositoryRestConfig implements RepositoryRestConfigurer {
|
||||
@Override
|
||||
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
|
||||
config.exposeIdsFor(Training.class, Student.class);
|
||||
|
||||
config.setReturnBodyOnCreate(true);
|
||||
config.setReturnBodyOnUpdate(true);
|
||||
config.getCorsRegistry().addMapping("/**")
|
||||
.allowedOrigins("*")
|
||||
.allowedHeaders("*")
|
||||
.allowedMethods("OPTIONS", "HEAD", "GET", "PUT", "POST", "DELETE", "PATCH");
|
||||
}
|
||||
}
|
||||
23
src/main/java/me/aski/prepactrlws/entities/Student.java
Normal file
23
src/main/java/me/aski/prepactrlws/entities/Student.java
Normal file
@@ -0,0 +1,23 @@
|
||||
package me.aski.prepactrlws.entities;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.Date;
|
||||
|
||||
@Entity
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class Student {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
private String firstName;
|
||||
private String lastName;
|
||||
private Date birthDate;
|
||||
@ManyToOne
|
||||
private Training training;
|
||||
}
|
||||
29
src/main/java/me/aski/prepactrlws/entities/Training.java
Normal file
29
src/main/java/me/aski/prepactrlws/entities/Training.java
Normal file
@@ -0,0 +1,29 @@
|
||||
package me.aski.prepactrlws.entities;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.*;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlTransient;
|
||||
import java.util.Collection;
|
||||
|
||||
@Entity
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public class Training {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
private String name;
|
||||
private int duration;
|
||||
@OneToMany(mappedBy = "training")
|
||||
@JsonIgnore
|
||||
@XmlTransient
|
||||
private Collection<Student> students;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package me.aski.prepactrlws.projections;
|
||||
|
||||
import me.aski.prepactrlws.entities.Student;
|
||||
import me.aski.prepactrlws.entities.Training;
|
||||
import org.springframework.data.rest.core.config.Projection;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Projection(name = "p1", types = {Student.class})
|
||||
public interface StudentProjection {
|
||||
public Long getId();
|
||||
|
||||
public String getFirstName();
|
||||
|
||||
public String getLastName();
|
||||
|
||||
public Date getBirthDate();
|
||||
|
||||
public Training getTraining();
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package me.aski.prepactrlws.projections;
|
||||
|
||||
import me.aski.prepactrlws.entities.Student;
|
||||
import me.aski.prepactrlws.entities.Training;
|
||||
import org.springframework.data.rest.core.config.Projection;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Projection(name = "p1", types = {Training.class})
|
||||
public interface TrainingProjection {
|
||||
|
||||
public long getId();
|
||||
|
||||
public String getName();
|
||||
|
||||
public List<Student> getStudents();
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package me.aski.prepactrlws.repositories;
|
||||
|
||||
import me.aski.prepactrlws.entities.Student;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
|
||||
|
||||
@RepositoryRestResource
|
||||
public interface StudentRepository extends JpaRepository<Student, Long> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package me.aski.prepactrlws.repositories;
|
||||
|
||||
import me.aski.prepactrlws.entities.Training;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
|
||||
|
||||
@RepositoryRestResource
|
||||
public interface TrainingRepository extends JpaRepository<Training, Long> {
|
||||
}
|
||||
15
src/main/java/me/aski/prepactrlws/soap/Config.java
Normal file
15
src/main/java/me/aski/prepactrlws/soap/Config.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package me.aski.prepactrlws.soap;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.remoting.jaxws.SimpleJaxWsServiceExporter;
|
||||
|
||||
@Configuration
|
||||
public class Config {
|
||||
@Bean
|
||||
public SimpleJaxWsServiceExporter getJWS() {
|
||||
SimpleJaxWsServiceExporter exporter = new SimpleJaxWsServiceExporter();
|
||||
exporter.setBaseAddress("http://0.0.0.0:8089/service");
|
||||
return exporter;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package me.aski.prepactrlws.soap;
|
||||
|
||||
import me.aski.prepactrlws.entities.Student;
|
||||
import me.aski.prepactrlws.entities.Training;
|
||||
import me.aski.prepactrlws.repositories.StudentRepository;
|
||||
import me.aski.prepactrlws.repositories.TrainingRepository;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.jws.WebMethod;
|
||||
import javax.jws.WebParam;
|
||||
import javax.jws.WebService;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
@WebService
|
||||
public class SchoolSoapService {
|
||||
|
||||
private final StudentRepository studentRepository;
|
||||
private final TrainingRepository trainingRepository;
|
||||
|
||||
@Autowired
|
||||
public SchoolSoapService(StudentRepository studentRepository, TrainingRepository trainingRepository) {
|
||||
this.studentRepository = studentRepository;
|
||||
this.trainingRepository = trainingRepository;
|
||||
}
|
||||
|
||||
@WebMethod(operationName = "studentList")
|
||||
public List<Student> list() {
|
||||
return studentRepository.findAll();
|
||||
}
|
||||
|
||||
@WebMethod
|
||||
public Student getOne(@WebParam(name = "id") Long id) {
|
||||
return studentRepository.findById(id).get();
|
||||
}
|
||||
|
||||
@WebMethod
|
||||
public Training save(@WebParam(name = "training") Training training) {
|
||||
return trainingRepository.save(training);
|
||||
}
|
||||
}
|
||||
11
src/main/resources/application.properties
Normal file
11
src/main/resources/application.properties
Normal file
@@ -0,0 +1,11 @@
|
||||
server.port=8088
|
||||
spring.datasource.url=jdbc:mysql://localhost:3306/EMSI_JEE_PrepaControle
|
||||
spring.datasource.username=root
|
||||
spring.datasource.password=
|
||||
spring.datasource.driverClassName=com.mysql.jdbc.Driver
|
||||
#Jpa
|
||||
spring.jpa.show-sql=true
|
||||
spring.jpa.hibernate.ddl-auto=create
|
||||
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
|
||||
#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
|
||||
spring.jpa.properties.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy
|
||||
@@ -0,0 +1,17 @@
|
||||
package me.aski.prepactrlws;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest
|
||||
public class PrepactrlwsApplicationTests {
|
||||
|
||||
@Test
|
||||
public void contextLoads() {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user