Skip to content

Commit ce177aa

Browse files
committed
updated
1 parent 0461427 commit ce177aa

10 files changed

Lines changed: 200 additions & 23 deletions

File tree

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ dependencies {
1919
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
2020
implementation 'org.springframework.boot:spring-boot-starter-validation'
2121
implementation 'org.springframework.boot:spring-boot-starter-web'
22+
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
23+
implementation 'mysql:mysql-connector-java:8.0.32'
2224
developmentOnly 'org.springframework.boot:spring-boot-devtools'
2325
testImplementation 'org.springframework.boot:spring-boot-starter-test'
2426
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package org.launchcode.codingevents.controllers;
2+
3+
4+
import jakarta.validation.Valid;
5+
import org.launchcode.codingevents.data.EventCategoryRepository;
6+
import org.launchcode.codingevents.models.EventCategory;
7+
import org.springframework.beans.factory.annotation.Autowired;
8+
import org.springframework.ui.Model;
9+
import org.springframework.validation.Errors;
10+
import org.springframework.web.bind.annotation.GetMapping;
11+
import org.springframework.web.bind.annotation.ModelAttribute;
12+
import org.springframework.web.bind.annotation.PostMapping;
13+
import org.springframework.web.bind.annotation.RequestMapping;
14+
15+
@RequestMapping
16+
public class EventCategoryController {
17+
@Autowired
18+
private EventCategoryRepository eventCategoryRepository;
19+
@GetMapping
20+
public String displayAllCategories(Model model) {
21+
model.addAttribute("title", "All Categories");
22+
model.addAttribute("categories", eventCategoryRepository.findAll());
23+
return "eventCategories/index";
24+
}
25+
public String renderCreateEventCategoryForm(Model model){
26+
model.addAttribute("title ","Create Category");
27+
model.addAttribute(new EventCategory());
28+
return "eventCategories/create";
29+
}
30+
@PostMapping("create")
31+
public String processCreateEventCategoryForm(@Valid @ModelAttribute EventCategory eventCategory, Errors errors, Model model) {
32+
33+
if (errors.hasErrors()) {
34+
model.addAttribute("title", "Create Category");
35+
model.addAttribute(new EventCategory());
36+
return "eventCategories/create";
37+
}
38+
39+
// eventCategoryRepository.save(eventCategory);
40+
return "redirect:";
41+
}
42+
}

src/main/java/org/launchcode/codingevents/controllers/EventController.java

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,64 @@
11
package org.launchcode.codingevents.controllers;
22

33
import jakarta.validation.Valid;
4-
import org.launchcode.codingevents.data.EventData;
4+
import org.launchcode.codingevents.data.EventRepository;
55
import org.launchcode.codingevents.models.Event;
66
import org.launchcode.codingevents.models.EventType;
7+
import org.springframework.beans.factory.annotation.Autowired;
78
import org.springframework.stereotype.Controller;
8-
import org.springframework.validation.Errors;
99
import org.springframework.web.bind.annotation.*;
1010
import org.springframework.ui.Model;
11+
import org.springframework.validation.Errors;
1112

12-
import java.util.ArrayList;
13-
import java.util.List;
14-
15-
13+
/**
14+
* Created by Chris Bay
15+
*/
1616
@Controller
1717
@RequestMapping("events")
1818
public class EventController {
19-
20-
//private static List<Event> events = new ArrayList<>();
19+
@Autowired
20+
private EventRepository eventRepository;
2121

2222
@GetMapping
2323
public String displayAllEvents(Model model) {
2424
model.addAttribute("title", "All Events");
25-
model.addAttribute("events", EventData.getAll());
25+
model.addAttribute("events", eventRepository.findAll());
2626
return "events/index";
2727
}
2828

2929
@GetMapping("create")
3030
public String displayCreateEventForm(Model model) {
3131
model.addAttribute("title", "Create Event");
32-
model.addAttribute("event", new Event());
32+
model.addAttribute(new Event());
3333
model.addAttribute("types", EventType.values());
3434
return "events/create";
3535
}
3636

3737
@PostMapping("create")
38-
public String processCreateEventForm(@ModelAttribute @Valid Event
39-
newEvent, Errors errors, Model model) {
40-
41-
if(errors.hasErrors()) {
42-
model.addAttribute("title", "Create Event");
38+
public String processCreateEventForm(@ModelAttribute @Valid Event newEvent,
39+
Errors errors, Model model) {
40+
if(errors.hasErrors()) {
41+
model.addAttribute("title", "Create Event");
42+
return "events/create";
43+
}
4344

44-
return "events/create";
45-
}
46-
EventData.add(newEvent);
45+
eventRepository.save(newEvent);
4746
return "redirect:/events";
4847
}
48+
4949
@GetMapping("delete")
50-
public String renderDeleteEventForm(Model model) {
51-
model.addAttribute("title", "Delete Event");
52-
model.addAttribute("events", EventData.getAll());
50+
public String displayDeleteEventForm(Model model) {
51+
model.addAttribute("title", "Delete Events");
52+
model.addAttribute("events", eventRepository.findAll());
5353
return "events/delete";
5454
}
55+
5556
@PostMapping("delete")
5657
public String processDeleteEventsForm(@RequestParam(required = false) int[] eventIds) {
5758

5859
if (eventIds != null) {
5960
for (int id : eventIds) {
60-
EventData.remove(id);
61+
eventRepository.deleteById(id);
6162
}
6263
}
6364

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package org.launchcode.codingevents.data;
2+
3+
import org.launchcode.codingevents.models.Event;
4+
import org.springframework.data.repository.CrudRepository;
5+
6+
public interface EventCategoryRepository extends CrudRepository<Event, Integer> {
7+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.launchcode.codingevents.data;
2+
3+
import org.launchcode.codingevents.models.Event;
4+
import org.springframework.data.repository.CrudRepository;
5+
import org.springframework.stereotype.Repository;
6+
7+
@Repository
8+
public interface EventRepository extends CrudRepository<Event, Integer> {
9+
}

src/main/java/org/launchcode/codingevents/models/Event.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
package org.launchcode.codingevents.models;
22

3+
import jakarta.persistence.Entity;
4+
import jakarta.persistence.GeneratedValue;
5+
import jakarta.persistence.Id;
36
import jakarta.validation.constraints.Email;
47
import jakarta.validation.constraints.NotBlank;
58
import jakarta.validation.constraints.Size;
69

710
import java.util.Objects;
8-
11+
@Entity
912
public class Event {
13+
@Id
14+
@GeneratedValue
1015
private int id;
1116
private static int nextId = 1;
1217
@NotBlank
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package org.launchcode.codingevents.models;
2+
3+
import jakarta.persistence.Entity;
4+
import jakarta.persistence.GeneratedValue;
5+
import jakarta.persistence.Id;
6+
import jakarta.validation.constraints.Size;
7+
8+
import java.util.Objects;
9+
10+
11+
@Entity
12+
public class EventCategory {
13+
14+
@Id
15+
@GeneratedValue
16+
private int id;
17+
18+
@Size(min=3, message="Name must be at least 3 characters long")
19+
private String name;
20+
21+
public EventCategory(@Size(min = 3, message = "Name must be at least 3 characters long") String name) {
22+
this.name = name;
23+
}
24+
25+
public EventCategory() {}
26+
27+
public String getName() {
28+
return name;
29+
}
30+
31+
public void setName(String name) {
32+
this.name = name;
33+
}
34+
35+
public int getId() {
36+
return id;
37+
}
38+
39+
@Override
40+
public String toString() {
41+
return name;
42+
}
43+
44+
@Override
45+
public boolean equals(Object o) {
46+
if (this == o) return true;
47+
if (o == null || getClass() != o.getClass()) return false;
48+
EventCategory that = (EventCategory) o;
49+
return id == that.id;
50+
}
51+
52+
@Override
53+
public int hashCode() {
54+
return Objects.hash(id);
55+
}
56+
57+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,17 @@
1+
# Database connection settings
2+
spring.datasource.url=jdbc:mysql://localhost:3306/coding-events
3+
spring.datasource.username=coding_events
4+
spring.datasource.password=Learn2code!
15

6+
# Specify the DBMS
7+
spring.jpa.database = MYSQL
8+
9+
# Show or not log for each sql query
10+
spring.jpa.show-sql = false
11+
12+
# Hibernate ddl auto (create, create-drop, update)
13+
spring.jpa.hibernate.ddl-auto = update
14+
15+
# Use spring.jpa.properties.* for Hibernate native properties (the prefix is
16+
# stripped before adding them to the entity manager)
17+
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL8Dialect
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<!DOCTYPE html>
2+
<html lang="en" xmlns:th="http://www.thymeleaf.org/">
3+
<head th:replace="fragments :: head"></head>
4+
<body class="container">
5+
6+
<header th:replace="fragments :: header"></header>
7+
8+
<p th:text="${errorMsg}" style="color:red;"></p>
9+
<form method="post">
10+
<div class="form-group">
11+
<label>Name
12+
<input type="text" th:field="${event.name}" class="form-control" />
13+
</label>
14+
<p class="error" th:errors="${event.name}"></p>
15+
</div>
16+
</body>
17+
</html>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<!DOCTYPE html>
2+
<html lang="en" xmlns:th="http://www.thymeleaf.org/">
3+
<head th:replace="fragments :: head"></head>
4+
<body class="container">
5+
6+
<header th:replace="fragments :: header"></header>
7+
8+
<table class="table table-striped">
9+
<thead>
10+
<tr>
11+
<th>Category Name</th>
12+
</tr>
13+
</thead>
14+
<tr th:each="category : ${categories}">
15+
<td th:text="${category.name}"></td>
16+
</tr>
17+
18+
</table>
19+
20+
</body>
21+
</html>

0 commit comments

Comments
 (0)