0% found this document useful (0 votes)
38 views9 pages

EXPERIMENT10 Ejava

Uploaded by

o8799621
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
38 views9 pages

EXPERIMENT10 Ejava

Uploaded by

o8799621
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

EXPERIMENT -10

AIM OF THE EXPERIMENT: Spring Boot to do application.

Develop a simple task management system using Spring Boot to help users
organize their tasks efficiently. The system should allow users to create, update,
delete, and mark tasks as completed.
Code

[Link]

package [Link];

import [Link];
import [Link];

import [Link];
import [Link]; import
[Link];
import [Link];

public record
TodoListDto( UUID id,
List<TodoTaskDto> tasks,
LocalDateTime createdAt,
LocalDateTime updatedAt
){
public static TodoListDto toDto(TodoList todoList)
{ List<TodoTaskDto> tasks = [Link]()
.stream()
.map(TodoTaskDto::toDto)
.toList();

return new TodoListDto(


[Link](), tasks,
[Link](),
[Link]()
);
}

public static TodoList fromDto(TodoListDto todoListDto)


{ TodoList todoList = new TodoList(
null,
null,
null,
new ArrayList<>()
);

List<TodoTask> tasks = [Link]()


.stream()
.map(TodoTaskDto::fromDto)
.peek(todoTask -> [Link](todoList))
.toList();

[Link](tasks);

return todoList;

}
}

[Link]
package [Link];
import [Link];

public record TodoTaskDto(


String description,
boolean completed
){
public static TodoTaskDto toDto(TodoTask todoTask) { return
new TodoTaskDto(
[Link](),
[Link]()
);
}

public static TodoTask fromDto(TodoTaskDto todoTaskDto) { return new


TodoTask(
null,
[Link](),
[Link](), null
);
}
}

Control
package [Link];

import [Link];
import [Link]; import
[Link].*; import
[Link];
import [Link];
import [Link];

@RestController @RequestMapping("/api/todos")
@CrossOrigin("[Link]
@RequiredArgsConstructor
public class TodoController {

private final TodoService todoService;

@GetMapping("/{id}")
public ResponseEntity<TodoListDto> findTodoListById(@PathVariable UUID id) { TodoListDto
todoListDto = [Link](id);

if (todoListDto == null) {
return [Link]().build();
}

return [Link](todoListDto);
}

@PutMapping
public ResponseEntity<UUID> createTodoList(@RequestBody TodoListDto todoListDto) { UUID
todoListId = [Link](todoListDto);
return [Link](todoListId);
}

@PatchMapping
public ResponseEntity<?> updateTodoList(@RequestBody TodoListDto todoListDto) { boolean
updated = [Link](todoListDto);

if (updated) {
return [Link]().build();
}
return [Link]().build();
}

@DeleteMapping("/{id}")
public ResponseEntity<?> deleteTodoList(@PathVariable UUID id) { boolean
result = [Link](id);

if (result) {
return [Link]().build();
}
return [Link]().build();
}
}

Model
package [Link];

import [Link].*; import


[Link]; import
[Link];
import [Link];
import [Link];
import [Link]; import
[Link];

import [Link];
import [Link]; import
[Link];
import [Link];

@Entity
@Table(name = "todo_lists")
@Getter @AllArgsConstructor
@NoArgsConstructor
public class TodoList {

@Id
@UuidGenerator
@Column(name = "id", updatable = false, nullable = false) private
UUID id;

@CreationTimestamp
@Column(name = "created_at", nullable = false, updatable = false) private
LocalDateTime createdAt;

@UpdateTimestamp
private LocalDateTime updatedAt;

@OneToMany(mappedBy = "todoList", cascade = [Link], orphanRemoval = true, fetch =


[Link])
private List<TodoTask> tasks = new ArrayList<>();

public void clearTasks() {


[Link]();
}

public void addTasks(List<TodoTask> tasks) {


[Link](tasks);
}
}

Model Config
package [Link];

import [Link].*; import


[Link]; import
[Link];
import [Link];
import [Link];

@Entity @Getter
@NoArgsConstructor
@AllArgsConstructor @Table(name
= "todo_tasks") public class
TodoTask {

@Id
@GeneratedValue(strategy = [Link]) private
Long id;

private String description; private

boolean completed;

@Setter
@ManyToOne(fetch = [Link])
@JoinColumn(name = "todo_list_id") private
TodoList todoList;

}
Services
package [Link];

import [Link]; import


[Link]; import
[Link]; import
[Link]; import
[Link]; import
[Link];
import [Link];

import [Link];
import [Link];

@Service
@RequiredArgsConstructor public
class TodoService {

private final TodoRepository todoRepository;

public TodoListDto findTodoListById(UUID uniqueId) {


TodoList todoList = [Link](uniqueId).orElse(null);

if (todoList == null) { return


null;
}

return [Link](todoList);
}
public UUID createTodoList(TodoListDto todoListDto) {
if ([Link]() == null || [Link]().isEmpty()) { return
null;
}
TodoList todoList = [Link](todoListDto); todoList
= [Link](todoList);
return [Link]();
}

public boolean updateTodoList(TodoListDto todoListDto) { if


([Link]() == null || [Link]() == null) {
return false;
}

TodoList todoList = [Link]([Link]()).orElse(null); if

(todoList == null) {
return false;
}

List<TodoTask> taskList = [Link]()


.stream()
.map(TodoTaskDto::fromDto)
.peek(todoTask -> [Link](todoList))
.toList(); [Link]();

[Link](taskList);

[Link](todoList);

return true;
}

public boolean deleteTodoList(UUID id) { boolean


exists = [Link](id);

if (exists) { [Link](id);
return true;
}
return false;
}
}

TASK
package [Link];

import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

import [Link];
import [Link];

@Service
@RequiredArgsConstructor public
class TodoCleanupTask {

private final TodoRepository todoRepository; @Transactional


@Scheduled(cron = "0 0 0 * * *") public

void cleanupOldTodoLists() {
LocalDateTime thirtyDaysAgo = [Link]().minusDays(30);

List<TodoList> oldTodoLists = [Link](thirtyDaysAgo);

[Link](oldTodoLists);
}
}

package [Link];

import [Link];
import [Link];
@SpringBootApplication
public class SpringTodoApplication {

public static void main(String[] args)


{ [Link]([Link], args);
}
}

package [Link];

import [Link];
import [Link];
import [Link];
import [Link];
import [Link]; import
[Link]; import
[Link];
import [Link];

import [Link];
import [Link];

import static [Link].*;

@SpringBootTest
@RunWith([Link])
public class TodoServiceTest {

@Autowired
private TodoService todoService;

private UUID existingTodoListId;


@Before
public void setUp() { List<TodoTaskDto>
tasks = [Link](
new TodoTaskDto("First task", false)
);
TodoListDto todoListDto = new TodoListDto(null, tasks, null, null);

existingTodoListId = [Link](todoListDto);
}

@Test
public void findTodoListByNotExistingId() {
TodoListDto todoListDto = [Link]([Link]());
assertNull(todoListDto);
}

@Test
public void findTodoListById() {
TodoListDto retrieved = [Link](existingTodoListId);

assertNotNull([Link]());
assertNotNull([Link]());
assertNotNull([Link]());
}

@Test
public void createTodoList()
{ List<TodoTaskDto> tasks = [Link](
new TodoTaskDto("First task", false)
);
TodoListDto todoListDto = new TodoListDto(null, tasks, null, null); UUID id =

[Link](todoListDto);

assertNotNull(id);
TodoTaskDto task = [Link]().get(0); TodoTaskDto
expectedTask = [Link](0);
assertEquals([Link](), [Link]());
assertEquals([Link](), [Link]());
}

@Test
public void updateNotExistingTodoList()
{ List<TodoTaskDto> tasks = [Link](
new TodoTaskDto("First task", true)
);
TodoListDto todoListDto = new TodoListDto([Link](), tasks, null, null); boolean updated

= [Link](todoListDto);

assertFalse(updated);
}

@Test
public void updateTodoList()
{ List<TodoTaskDto> tasks = [Link](
new TodoTaskDto("Updated task", true)
);
TodoListDto todoListDto = new TodoListDto(existingTodoListId, tasks, null, null); boolean

updated = [Link](todoListDto);

assertTrue(updated);
}
}

NAME- KUSAGRA RAJ


Reg.- 2201030103
GROUP- 5A
BRANCH- CSE

You might also like