Customer relationship management for university. Accounting students, teachers and groups, faculty, departments, auditories, subjects. Forming timetable items.
Project has two approaches to deployment. The first one located in 'master' branch. It combines tomcat and H2 DB as one part, and it starts (deploy) together. DB is H2-file type. The second one located in 'docker_postgres' branch. It approaches based on deployment two separate part for tomcat and postgres DB. DB is Postgres type.
For compile project put files in folder "src/main/java" Use next command in command line:
mvn compile
For create execute jar file and type in the following command and hit "Enter" Then get jar file
mvn clean install
For starting checkstyle audit Use command and get "Success" (Audit done)!
mvn validate
For test use command and get "Success"!
mvn test
For starting integration tests, unit tests and checkstyle audit Use command and get "Success"!
mvn verify
Database located in file 'university' in H2 type. Test database in memory H2 and named 'university_test' Login and password in application.properties file
Use libraries from maven pom.xml file.
For run project type following command by maven
mvn spring-boot:run
For run project type following command by console
java -jar task-university-java8-api-0.0.1-SNAPSHOT.jar
Link to start on localhost in web browser:
http://localhost:8080/
REST API in JSON format
For display Swagger documentation for the REST interface go to link at swagger page:
http://localhost:8080/swagger-ui.html
For build and deployment by Docker should use general commands for Docker-compose:
docker-compose build --no-cache
docker-compose up
docker-compose down
After deployment will expose:
port:8080
Decomposit university: student, teacher, group, auditory, schedule for student and teacher. UML diagram. Branch dev, src/main/java/resources/uml_structure_university.png
Created JAVA project based on University UML class diagram from the previous task. Implemented domain logic for University. Writed JUnit tests for the created application. Branch dev
Created plain JDBC based DAO for decomposed domain objects using DriverManager. Created sql_scheme.png. Created DAO layer. Branch: task10
Added custom exceptions and logging. Branch: task10
Converted current project to Maven format. Added checkstyle plugin Branch: taskMaven
Created status pages (read data from dao - show it in JSP). Added servlets for show objects. Added flyway plugin. Branch: task13
Created CRUD pages for decomposed domain objects (servlets + JSP). Added validator for objects. Branch: task14
Created DataSource in web-project configuration files. Switch DAO layer to lookup DataSource by JNDI name and use it instead of simple JDBC connection. Branch: task15
Rewrite DAO code to inject DataSource to all DAO objects using Spring IoC framework. Branch: task16
Rewrite the DAO layer. Use Hibernate instead of Spring JDBC. Add for JPA Criteria query metamodel generator. Also for work with IDE need to add as source Build Path folder target/generated-sources/annotation Branch: task17
Add Sonar Lint plugin to eclipse Add Spring MVC Add Thymeleaf Branch: task17.2
Convert application to Spring Boot For starting project copy jar file on web-server. And execute next command:
mvn clean package spring-boot:repackage
java -jar target/{name of war file}.jar
Branch: task18
Rewrite the DAO layer. Use Spring Data JPA instead of Hibernate. Branch: task19
Add validation to your models. It could be name validation, time validation, number of students in groups, etc. Ask your mentor for validations that should be implemented in your code. Branch: task20
Add REST Endpoints to your project. All UI functionality should be available in the REST endpoints Branch: task21
Add Swagger documentation to your project. link to swagger page:
http://localhost:8080/swagger-ui.html
Branch: task22
Writed Integration and System tests using Spring Boot Test, H2 DB (it is possible to use Database Rider) Branch: task23
Fix the UML diagram for application. Remove bidirectional links. Branch: task101
Fix model based on University UML diagram. Create tests for model. Branch: task102
Create dao layer and tests for (Faculty, Teacher, Department, Subject, Lecture, Auditory, Auditory Type). Create tests for dao. Branch: task103
Issue#4 Create service layer (Faculty, Teacher, Department, Subject, Lecture, Auditory, Auditory Type)
Create service layer and tests for (Faculty, Teacher, Department, Subject, Lecture, Auditory, Auditory Type). Create tests for services. Branch: task104
Create DAO layer (TimetableItem). Create tests for dao. Branch: task106
Create service layer and tests Branch: task107
Create UI (Faculty, Teacher, Department, Subject, Lecture, Auditory, Auditory Type) Branch: task105
Add to UI finder form to timetableItems, teacher, student page Branch: task108
Add to front-end localization files Branch: issue9
Migrate to H2 database Branch: issue6
Create executable jar file Branch: issue14
Added docker compose for build and deployment. Branch: issue20
With best regards, Mykola Afanasiev!