diff --git a/src/main/java/teammates/sqllogic/core/FeedbackResponseCommentsLogic.java b/src/main/java/teammates/sqllogic/core/FeedbackResponseCommentsLogic.java new file mode 100644 index 00000000000..dd15a8fb357 --- /dev/null +++ b/src/main/java/teammates/sqllogic/core/FeedbackResponseCommentsLogic.java @@ -0,0 +1,42 @@ +package teammates.sqllogic.core; + +import java.util.UUID; + +import teammates.storage.sqlapi.FeedbackResponseCommentsDb; +import teammates.storage.sqlentity.FeedbackResponseComment; + +/** + * Handles operations related to feedback response comments. + * + * @see FeedbackResponseComment + * @see FeedbackResponseCommentsDb + */ +public final class FeedbackResponseCommentsLogic { + + private static final FeedbackResponseCommentsLogic instance = new FeedbackResponseCommentsLogic(); + private FeedbackResponseCommentsDb frcDb; + + private FeedbackResponseCommentsLogic() { + // prevent initialization + } + + public static FeedbackResponseCommentsLogic inst() { + return instance; + } + + /** + * Initialize dependencies for {@code FeedbackResponseCommentsLogic}. + */ + void initLogicDependencies(FeedbackResponseCommentsDb frcDb) { + this.frcDb = frcDb; + } + + /** + * Gets an feedback response comment by feedback response comment id. + * @param id of feedback response comment. + * @return the specified feedback response comment. + */ + public FeedbackResponseComment getFeedbackQuestion(UUID id) { + return frcDb.getFeedbackResponseComment(id); + } +} diff --git a/src/main/java/teammates/sqllogic/core/LogicStarter.java b/src/main/java/teammates/sqllogic/core/LogicStarter.java index e4082085dbc..be7fdff664c 100644 --- a/src/main/java/teammates/sqllogic/core/LogicStarter.java +++ b/src/main/java/teammates/sqllogic/core/LogicStarter.java @@ -9,6 +9,7 @@ import teammates.storage.sqlapi.CoursesDb; import teammates.storage.sqlapi.DeadlineExtensionsDb; import teammates.storage.sqlapi.FeedbackQuestionsDb; +import teammates.storage.sqlapi.FeedbackResponseCommentsDb; import teammates.storage.sqlapi.FeedbackResponsesDb; import teammates.storage.sqlapi.FeedbackSessionsDb; import teammates.storage.sqlapi.NotificationsDb; @@ -33,6 +34,7 @@ public static void initializeDependencies() { DeadlineExtensionsLogic deadlineExtensionsLogic = DeadlineExtensionsLogic.inst(); FeedbackSessionsLogic fsLogic = FeedbackSessionsLogic.inst(); FeedbackResponsesLogic frLogic = FeedbackResponsesLogic.inst(); + FeedbackResponseCommentsLogic frcLogic = FeedbackResponseCommentsLogic.inst(); FeedbackQuestionsLogic fqLogic = FeedbackQuestionsLogic.inst(); NotificationsLogic notificationsLogic = NotificationsLogic.inst(); UsageStatisticsLogic usageStatisticsLogic = UsageStatisticsLogic.inst(); @@ -47,6 +49,7 @@ public static void initializeDependencies() { deadlineExtensionsLogic.initLogicDependencies(DeadlineExtensionsDb.inst()); fsLogic.initLogicDependencies(FeedbackSessionsDb.inst(), coursesLogic, frLogic, fqLogic); frLogic.initLogicDependencies(FeedbackResponsesDb.inst()); + frcLogic.initLogicDependencies(FeedbackResponseCommentsDb.inst()); fqLogic.initLogicDependencies(FeedbackQuestionsDb.inst()); notificationsLogic.initLogicDependencies(NotificationsDb.inst()); usageStatisticsLogic.initLogicDependencies(UsageStatisticsDb.inst()); diff --git a/src/main/java/teammates/storage/sqlapi/FeedbackResponseCommentsDb.java b/src/main/java/teammates/storage/sqlapi/FeedbackResponseCommentsDb.java new file mode 100644 index 00000000000..817e82ddb9c --- /dev/null +++ b/src/main/java/teammates/storage/sqlapi/FeedbackResponseCommentsDb.java @@ -0,0 +1,67 @@ +package teammates.storage.sqlapi; + +import static teammates.common.util.Const.ERROR_CREATE_ENTITY_ALREADY_EXISTS; + +import java.util.UUID; + +import teammates.common.exception.EntityAlreadyExistsException; +import teammates.common.exception.InvalidParametersException; +import teammates.common.util.HibernateUtil; +import teammates.storage.sqlentity.FeedbackResponseComment; + +/** + * Handles CRUD operations for feedbackResponseComments. + * + * @see FeedbackResponseComment + */ +public final class FeedbackResponseCommentsDb extends EntitiesDb { + + private static final FeedbackResponseCommentsDb instance = new FeedbackResponseCommentsDb(); + + private FeedbackResponseCommentsDb() { + // prevent initialization + } + + public static FeedbackResponseCommentsDb inst() { + return instance; + } + + /** + * Gets a feedbackResponseComment or null if it does not exist. + */ + public FeedbackResponseComment getFeedbackResponseComment(UUID frId) { + assert frId != null; + + return HibernateUtil.get(FeedbackResponseComment.class, frId); + } + + /** + * Creates a feedbackResponseComment. + */ + public FeedbackResponseComment createFeedbackResponseComment(FeedbackResponseComment feedbackResponseComment) + throws InvalidParametersException, EntityAlreadyExistsException { + assert feedbackResponseComment != null; + + if (!feedbackResponseComment.isValid()) { + throw new InvalidParametersException(feedbackResponseComment.getInvalidityInfo()); + } + + if (getFeedbackResponseComment(feedbackResponseComment.getId()) != null) { + throw new EntityAlreadyExistsException( + String.format(ERROR_CREATE_ENTITY_ALREADY_EXISTS, feedbackResponseComment.toString())); + } + + persist(feedbackResponseComment); + return feedbackResponseComment; + } + + /** + * Deletes a feedbackResponseComment. + */ + public void deleteFeedbackResponseComment(FeedbackResponseComment feedbackResponseComment) { + if (feedbackResponseComment != null) { + delete(feedbackResponseComment); + } + } + +}