Initial commit

This commit is contained in:
2018-12-26 13:16:53 +01:00
commit 9afee34f8f
17 changed files with 877 additions and 0 deletions

View File

@@ -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));
}
}

View File

@@ -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");
}
}

View 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;
}

View 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;
}

View File

@@ -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();
}

View File

@@ -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();
}

View File

@@ -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> {
}

View File

@@ -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> {
}

View 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;
}
}

View File

@@ -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);
}
}

View 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

View File

@@ -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() {
}
}