Few comments (haven't read through the code completely)...
Why are you saving the date data using Strings?
JDBC can handle dates using setDate().
Don't use triggers, especially not for what you're describing (business logic). You could say you don't need the status field (since its values is predetermined by 2 other fields), but its likely you will have other values such as "open" "close" "on-hold" "paused" etc, so having the field is useful.