Package com.google.ytd.dao

Source Code of com.google.ytd.dao.VideoSubmissionDaoImpl

package com.google.ytd.dao;

import java.util.Date;
import java.util.List;
import java.util.logging.Logger;

import javax.jdo.PersistenceManager;
import javax.jdo.PersistenceManagerFactory;
import javax.jdo.Query;

import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.google.ytd.model.AdminConfig;
import com.google.ytd.model.VideoSubmission;
import com.google.ytd.model.VideoSubmission.ModerationStatus;
import com.google.ytd.util.EmailUtil;

@Singleton
public class VideoSubmissionDaoImpl implements VideoSubmissionDao {
  private static final Logger LOG = Logger.getLogger(VideoSubmissionDaoImpl.class.getName());

  private PersistenceManagerFactory pmf = null;

  @Inject
  private EmailUtil emailUtil;
  @Inject
  private AdminConfigDao adminConfigDao;

  @Inject
  public VideoSubmissionDaoImpl(PersistenceManagerFactory pmf) {
    this.pmf = pmf;
  }

  @Override
  public VideoSubmission newSubmission(long assignmentId) {
    return new VideoSubmission(assignmentId);
  }

  @SuppressWarnings("unchecked")
  @Override
  public List<VideoSubmission> getSubmissions(String sortBy, String sortOrder, String filterType) {
    PersistenceManager pm = pmf.getPersistenceManager();
    List<VideoSubmission> submissions = null;

    try {
      Query query = pm.newQuery(VideoSubmission.class);
      query.declareImports("import java.util.Date");
      query.declareParameters("String filterType");
      query.setOrdering(sortBy + " " + sortOrder);

      if (!filterType.toUpperCase().equals("ALL")) {
        String filters = "status == filterType";
        query.setFilter(filters);
      }

      submissions = (List<VideoSubmission>) query.execute(filterType);
      submissions = (List<VideoSubmission>) pm.detachCopyAll(submissions);
    } finally {
      pm.close();
    }

    return submissions;
  }

  @Override
  public VideoSubmission getSubmissionById(String id) {
    PersistenceManager pm = pmf.getPersistenceManager();
    VideoSubmission submission = null;

    try {
      submission = pm.getObjectById(VideoSubmission.class, id);
    } finally {
      pm.close();
    }

    return submission;
  }

  @Override
  public void setVideoStatus(String id, String status) {
    VideoSubmission submission = getSubmissionById(id);
    ModerationStatus newStatus = ModerationStatus.valueOf(status);
    ModerationStatus currentStatus = submission.getStatus();

    if (newStatus == currentStatus) {
      // No change in status
      return;
    }

    submission.setStatus(newStatus);
    submission.setUpdated(new Date());
    PersistenceManager pm = pmf.getPersistenceManager();
    try {
      submission = pm.makePersistent(submission);
      submission = pm.detachCopy(submission);
    } finally {
      pm.close();
    }

    switch (newStatus) {
      case APPROVED:
        onApproved(submission);
        break;
      case REJECTED:
      case UNREVIEWED:
      case SPAM:
        onNotApproved(submission);
        break;
    }
  }

  private void onApproved(VideoSubmission submission) {
    AdminConfig adminConfig = adminConfigDao.getAdminConfig();

    // Send notify email
    if (submission.getNotifyEmail() != null && adminConfig.isModerationEmail()) {
      emailUtil.sendUserModerationEmail(submission, ModerationStatus.APPROVED);
    }

  }

  private void onNotApproved(VideoSubmission submission) {

  }

  @Override
  public VideoSubmission save(VideoSubmission submission) {
    PersistenceManager pm = pmf.getPersistenceManager();
    try {
      pm.makePersistent(submission);
      submission = pm.detachCopy(submission);
    } finally {
      pm.close();
    }
    return submission;
  }
 
  @Override
  public void deleteSubmission(String id) {
    LOG.info(String.format("Attempting to delete VideoSubmission '%s'...", id));
   
    PersistenceManager pm = pmf.getPersistenceManager();
    try {
      VideoSubmission submission = pm.getObjectById(VideoSubmission.class, id);
      pm.deletePersistent(submission);
     
      LOG.info("VideoSubmission deleted.");
    } finally {
      pm.close();
    }
  }
}
TOP

Related Classes of com.google.ytd.dao.VideoSubmissionDaoImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.