หน้าที่: รับผิดชอบเรื่องการเก็บข้อมูลลง Database (MySQL/SQLite) เพื่อให้ปิดโปรแกรมแล้วเปิดใหม่ข้อมูลยังอยู่
- สร้าง Class ใหม่
DatabaseHandler.java(หรือเขียนในTaskManager) - เขียน method
connectDB()เพื่อเชื่อมต่อฐานข้อมูล - เขียน SQL:
CREATE TABLE tasks (...) - แก้ไข
TaskManager.java:addTask: เมื่อกดเพิ่ม -> ให้INSERT INTO tasks ...removeTask: เมื่อกดลบ -> ให้DELETE FROM tasks ...Constructor: เมื่อเปิดโปรแกรม -> ให้SELECT * FROM tasksแล้วโหลดลง List
หน้าที่: รับผิดชอบเรื่องการออกรายงานเป็น PDF
- หาวิธี save pdf
- แก้
SingleTask.javaและTaskตัวอื่นๆ -> เขียน methodgetDetailsForReport()ให้ return ข้อมูลสวยๆ - แก้
TaskManager.exportAllToFile():- เปลี่ยนจากเขียน Text File ธรรมดา เป็นสร้างไฟล์ PDF
หน้าที่: สร้าง Class ใหม่ตาม Diagram และจัดการเรื่อง Task ที่ต้องทำซ้ำ
- สร้างไฟล์
src/com/pomodoro/model/RepeatingTask.java - เขียนให้ extends
Task - เพิ่ม field
intervalDays,nextOccurrence - เขียน Logic คำนวณวันถัดไป
- ประสานงานกับคนทำ Database: ถ้ามันมีพวก colum อะ
หน้าที่: สร้าง Class ใหม่และดูเรื่องเวลาพวกการแจ้งเตือน
- สร้างไฟล์
src/com/pomodoro/model/DeadlineTask.java - เขียนให้ extends
Taskและเพิ่ม fieldisUrgent - เขียน Logic เช็คว่าถ้าใกล้ถึงกำหนด (Due Date) ให้แจ้งเตือน หรือเปลี่ยนสี
- ไปดูไฟล์
PomodoroTimer.javaดูว่าเวลาTotalFocusMinutesถูกบันทึกลง Task ถูกต้องไหม - ประสานงานกับคนทำ Database
ใน src/com/pomodoro/model/
RepeatingTask.java:- ต้อง
extends Task - ต้องมี method
exportToText()(หรือเตรียมข้อมูลสำหรับ PDF)
- ต้อง
DeadlineTask.java:- ต้อง
extends Task - ต้องมี method
checkUrgency()
- ต้อง
ตอนนี้สร้างโครงไว้ให้แล้ว แต่มันเป็นแค่ dummy โง่ๆ ไม่ใช่ของจริง เราต้องใส่ code logic จริงๆเข้าไป
addTask / removeTask: ตอนนี้ใช้ArrayListธรรมดา ซึ่งมันต้องเซฟเป็น txt หรือเป็น database บลาๆที่อยากใช้อะexportAllToFile(String filepath):- ตอนนี้มันแค่ปริ้น
System.out.printlnเฉยๆ - หน้าที่เรา: ต้องเปลี่ยนไปใช้PDF สร้างไฟล์ report
- ตอนนี้มันแค่ปริ้น
sortByName / sortByPriority:- ทางเลือก 1: ดึงข้อมูลมาทั้งหมดแล้วใช้
Collections.sort()ใน Java - ทางเลือก 2: ใช้ SQL
- ทางเลือก 1: ดึงข้อมูลมาทั้งหมดแล้วใช้
exportToText():- ปรับปรุงให้ return ข้อมูลสำหรับเอาไปใส่ใน PDF
-
ตอนนี้มีแค่ field พื้นฐาน (
id,name,colorCode) -
ถ้า Database มีตาราง
categoriesแยกต่างหากก็ต้องมาเพิ่ม Logic ตรงนี้ด้วย
main: ห้ามใครแก้ตรงๆ ต้อง Merge เข้ามาเท่านั้น
ให้ทุกคนแตก Branch จาก main ไปทำงานของตัวเอง:
- คนที่ 1 (Database): สร้าง branch ชื่อ
feature/database- ทำงานเกี่ยวกับ SQL
- คนที่ 2 (PDF): สร้าง branch ชื่อ
feature/pdf-export- ทำงานเกี่ยวกับ PDF
- คนที่ 3 (Repeating): สร้าง branch ชื่อ
feature/repeating-task- สร้างไฟล์ RepeatingTask.java
- คนที่ 4 (Deadline): สร้าง branch ชื่อ
feature/deadline-task- สร้างไฟล์ DeadlineTask.java, Timer Logic บลาๆ
- Clone โปรเจกต์ลงเครื่อง ใช้ git หรือกดโหลดเอาก็ได้
- Checkout ไปที่ Branch ตัวเอง:
git checkout -b feature/ชื่อฟีเจอร์ - เขียนโค้ด จนเสร็จ
- Commit & Push ขึ้น GitHub
- Pull Request (PR) กลับมาที่
mainช่วยกันหา error