diff --git a/judgels-backends/judgels-server-app/src/main/java/judgels/jerahmeel/hibernate/BundleItemSubmissionHibernateDao.java b/judgels-backends/judgels-server-app/src/main/java/judgels/jerahmeel/hibernate/BundleItemSubmissionHibernateDao.java index 2f1d70107..0ddcdf645 100644 --- a/judgels-backends/judgels-server-app/src/main/java/judgels/jerahmeel/hibernate/BundleItemSubmissionHibernateDao.java +++ b/judgels-backends/judgels-server-app/src/main/java/judgels/jerahmeel/hibernate/BundleItemSubmissionHibernateDao.java @@ -5,6 +5,7 @@ import judgels.jerahmeel.persistence.BundleItemSubmissionModel; import judgels.persistence.hibernate.HibernateDaoData; import judgels.sandalphon.hibernate.AbstractBundleItemSubmissionHibernateDao; +import org.hibernate.query.Query; public class BundleItemSubmissionHibernateDao extends AbstractBundleItemSubmissionHibernateDao @@ -19,4 +20,14 @@ public BundleItemSubmissionHibernateDao(HibernateDaoData data) { public BundleItemSubmissionModel createSubmissionModel() { return new BundleItemSubmissionModel(); } + + @Override + public void deleteAllByProblemJid(String problemJid) { + Query query = currentSession().createQuery( + "DELETE FROM jerahmeel_bundle_item_submission " + + "WHERE problemJid = :problemJid"); + + query.setParameter("problemJid", problemJid); + query.executeUpdate(); + } } diff --git a/judgels-backends/judgels-server-app/src/main/java/judgels/jerahmeel/problem/DeleteProblemTask.java b/judgels-backends/judgels-server-app/src/main/java/judgels/jerahmeel/problem/DeleteProblemTask.java index d04f7e0bc..79c51ff72 100644 --- a/judgels-backends/judgels-server-app/src/main/java/judgels/jerahmeel/problem/DeleteProblemTask.java +++ b/judgels-backends/judgels-server-app/src/main/java/judgels/jerahmeel/problem/DeleteProblemTask.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import judgels.jerahmeel.persistence.BundleItemSubmissionDao; import judgels.jerahmeel.persistence.ChapterProblemDao; import judgels.jerahmeel.persistence.ProblemSetProblemDao; import judgels.jerahmeel.persistence.ProgrammingGradingDao; @@ -20,6 +21,7 @@ public class DeleteProblemTask extends Task { private final ProblemSetProblemDao problemSetProblemDao; private final ProgrammingSubmissionDao programmingSubmissionDao; private final ProgrammingGradingDao programmingGradingDao; + private final BundleItemSubmissionDao bundleItemSubmissionDao; private final StatsUserProblemDao statsUserProblemDao; public DeleteProblemTask( @@ -28,6 +30,7 @@ public DeleteProblemTask( ProblemSetProblemDao problemSetProblemDao, ProgrammingSubmissionDao programmingSubmissionDao, ProgrammingGradingDao programmingGradingDao, + BundleItemSubmissionDao bundleItemSubmissionDao, StatsUserProblemDao statsUserProblemDao) { super("jerahmeel-delete-problem"); @@ -37,6 +40,7 @@ public DeleteProblemTask( this.problemSetProblemDao = problemSetProblemDao; this.programmingSubmissionDao = programmingSubmissionDao; this.programmingGradingDao = programmingGradingDao; + this.bundleItemSubmissionDao = bundleItemSubmissionDao; this.statsUserProblemDao = statsUserProblemDao; } @@ -55,9 +59,14 @@ public void execute(Map> parameters, PrintWriter out) { } String problemJid = maybeProblemModel.get().jid; + if (problemJid.startsWith("JIDPROG")) { + programmingGradingDao.deleteAllByProblemJid(problemJid); + programmingSubmissionDao.deleteAllByProblemJid(problemJid); + } else { + bundleItemSubmissionDao.deleteAllByProblemJid(problemJid); + } + statsUserProblemDao.deleteAllByProblemJid(problemJid); - programmingGradingDao.deleteAllByProblemJid(problemJid); - programmingSubmissionDao.deleteAllByProblemJid(problemJid); chapterProblemDao.selectByProblemJid(problemJid).ifPresent(chapterProblemDao::delete); problemSetProblemDao.selectAllByProblemJid(problemJid).forEach(problemSetProblemDao::delete); } diff --git a/judgels-backends/judgels-server-app/src/main/java/judgels/jerahmeel/problem/ProblemModule.java b/judgels-backends/judgels-server-app/src/main/java/judgels/jerahmeel/problem/ProblemModule.java index 4a48ebbfe..c4c7ad8f0 100644 --- a/judgels-backends/judgels-server-app/src/main/java/judgels/jerahmeel/problem/ProblemModule.java +++ b/judgels-backends/judgels-server-app/src/main/java/judgels/jerahmeel/problem/ProblemModule.java @@ -4,6 +4,7 @@ import dagger.Provides; import io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory; import javax.inject.Singleton; +import judgels.jerahmeel.persistence.BundleItemSubmissionDao; import judgels.jerahmeel.persistence.ChapterDao; import judgels.jerahmeel.persistence.ChapterProblemDao; import judgels.jerahmeel.persistence.ProblemSetProblemDao; @@ -25,6 +26,7 @@ static DeleteProblemTask deleteProblemTask( ProblemSetProblemDao problemSetProblemDao, ProgrammingSubmissionDao programmingSubmissionDao, ProgrammingGradingDao programmingGradingDao, + BundleItemSubmissionDao bundleItemSubmissionDao, StatsUserProblemDao statsUserProblemDao) { return unitOfWorkAwareProxyFactory.create( @@ -35,6 +37,7 @@ static DeleteProblemTask deleteProblemTask( ProblemSetProblemDao.class, ProgrammingSubmissionDao.class, ProgrammingGradingDao.class, + BundleItemSubmissionDao.class, StatsUserProblemDao.class}, new Object[] { problemDao, @@ -42,6 +45,7 @@ static DeleteProblemTask deleteProblemTask( problemSetProblemDao, programmingSubmissionDao, programmingGradingDao, + bundleItemSubmissionDao, statsUserProblemDao}); } diff --git a/judgels-backends/judgels-server-app/src/main/java/judgels/sandalphon/hibernate/AbstractBundleItemSubmissionHibernateDao.java b/judgels-backends/judgels-server-app/src/main/java/judgels/sandalphon/hibernate/AbstractBundleItemSubmissionHibernateDao.java index 415c2bf95..456bb1a47 100644 --- a/judgels-backends/judgels-server-app/src/main/java/judgels/sandalphon/hibernate/AbstractBundleItemSubmissionHibernateDao.java +++ b/judgels-backends/judgels-server-app/src/main/java/judgels/sandalphon/hibernate/AbstractBundleItemSubmissionHibernateDao.java @@ -19,6 +19,11 @@ public AbstractBundleItemSubmissionHibernateQueryBuilder select() { return new AbstractBundleItemSubmissionHibernateQueryBuilder<>(currentSession(), getEntityClass()); } + @Override + public void deleteAllByProblemJid(String problemJid) { + throw new UnsupportedOperationException(); + } + private static class AbstractBundleItemSubmissionHibernateQueryBuilder extends HibernateQueryBuilder implements BaseBundleItemSubmissionQueryBuilder { AbstractBundleItemSubmissionHibernateQueryBuilder(Session currentSession, Class entityClass) { super(currentSession, entityClass); diff --git a/judgels-backends/judgels-server-app/src/main/java/judgels/sandalphon/persistence/BaseBundleItemSubmissionDao.java b/judgels-backends/judgels-server-app/src/main/java/judgels/sandalphon/persistence/BaseBundleItemSubmissionDao.java index 6cafdf494..15809e466 100644 --- a/judgels-backends/judgels-server-app/src/main/java/judgels/sandalphon/persistence/BaseBundleItemSubmissionDao.java +++ b/judgels-backends/judgels-server-app/src/main/java/judgels/sandalphon/persistence/BaseBundleItemSubmissionDao.java @@ -7,6 +7,7 @@ public interface BaseBundleItemSubmissionDao select(); + void deleteAllByProblemJid(String problemJid); interface BaseBundleItemSubmissionQueryBuilder extends QueryBuilder { BaseBundleItemSubmissionQueryBuilder whereContainerIs(String containerJid);