Package org.openmeetings.app.data.flvrecord

Source Code of org.openmeetings.app.data.flvrecord.FlvRecordingDaoImpl

package org.openmeetings.app.data.flvrecord;

import java.util.Date;
import java.util.List;

import javax.persistence.NoResultException;
import javax.persistence.Query;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import org.openmeetings.app.persistence.beans.flvrecord.FlvRecording;
import org.openmeetings.app.persistence.utils.PersistenceSessionUtil;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;

/**
* @author sebastianwagner
*
*/
public class FlvRecordingDaoImpl {

  private static final Logger log = Red5LoggerFactory.getLogger(FlvRecordingDaoImpl.class);

  private static FlvRecordingDaoImpl instance;

  private FlvRecordingDaoImpl() {}

  public static synchronized FlvRecordingDaoImpl getInstance() {
    if (instance == null) {
      instance = new FlvRecordingDaoImpl();
    }
    return instance;
  }
 
  public FlvRecording getFlvRecordingById(Long flvRecordingId) {
    try {
     
      String hql = "SELECT c FROM FlvRecording c " +
          "WHERE c.flvRecordingId = :flvRecordingId";
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
      Query query = session.createQuery(hql);
      query.setParameter("flvRecordingId", flvRecordingId);
     
      FlvRecording flvRecording = null;
      try {
        flvRecording = (FlvRecording) query.getSingleResult();
        } catch (NoResultException ex) {
        }
     
      session.refresh(flvRecording);
     
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
      return flvRecording;
    } catch (Exception ex2) {
      log.error("[getFlvRecordingById]: ",ex2);
    }
    return null;
  }

  public List<FlvRecording> getFlvRecordings() {
    try {
     
      String hql = "SELECT c FROM FlvRecording c " +
              "WHERE c.deleted <> :deleted ";
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
      Query query = session.createQuery(hql);
      query.setParameter("deleted", "true");
     
      List<FlvRecording> flvRecordings = query.getResultList();
     
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
      return flvRecordings;
    } catch (Exception ex2) {
      log.error("[getFlvRecordings]: ",ex2);
    }
    return null;
  }
 
 
  public List<FlvRecording> getFlvRecordingByExternalUserId(Long externalUserId) {
    try {
     
      log.debug("getFlvRecordingByExternalUserId :externalUserId: "+externalUserId);
     
      String hql = "SELECT c FROM FlvRecording c, Rooms r, Users u " +
          "WHERE c.room_id = r.rooms_id " +
          "AND c.insertedBy = u.user_id " +
          "AND u.externalUserId = :externalUserId " +
          "AND c.deleted <> :deleted ";
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
      Query query = session.createQuery(hql);
      query.setParameter("externalUserId", externalUserId);
      query.setParameter("deleted", "true");
     
      List<FlvRecording> flvRecordingList = query.getResultList();
     
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
           
      log.debug("getFlvRecordingByExternalRoomType :: "+flvRecordingList.size());
     
      return flvRecordingList;
    } catch (Exception ex2) {
      log.error("[getFlvRecordingByExternalRoomType]: ",ex2);
    }
    return null;
  }
 
  public List<FlvRecording> getFlvRecordingByExternalRoomTypeAndCreator(String externalRoomType, Long insertedBy) {
    try {
     
      log.debug("getFlvRecordingByExternalRoomType :externalRoomType: "+externalRoomType);
     
      String hql = "SELECT c FROM FlvRecording c, Rooms r " +
          "WHERE c.room_id = r.rooms_id " +
          "AND r.externalRoomType LIKE :externalRoomType " +
          "AND c.insertedBy LIKE :insertedBy " +
          "AND c.deleted <> :deleted ";
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
      Query query = session.createQuery(hql);
      query.setParameter("externalRoomType", externalRoomType);
      query.setParameter("insertedBy", insertedBy);
      query.setParameter("deleted", "true");
     
      List<FlvRecording> flvRecordingList = query.getResultList();
     
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
           
      log.debug("getFlvRecordingByExternalRoomType :: "+flvRecordingList.size());
     
      return flvRecordingList;
    } catch (Exception ex2) {
      log.error("[getFlvRecordingByExternalRoomType]: ",ex2);
    }
    return null;
  }
 
  public List<FlvRecording> getAllFlvRecordings() {
    try {
     
      String hql = "SELECT c FROM FlvRecording c ";
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
      Query query = session.createQuery(hql);
     
      List<FlvRecording> flvRecordings = query.getResultList();
     
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
      return flvRecordings;
    } catch (Exception ex2) {
      log.error("[getFlvRecordings]: ",ex2);
    }
    return null;
  }
 
  public List<FlvRecording> getFlvRecordingByExternalRoomType(String externalRoomType) {
    try {
     
      log.debug("getFlvRecordingByExternalRoomType :externalRoomType: "+externalRoomType);
     
      String hql = "SELECT c FROM FlvRecording c, Rooms r " +
          "WHERE c.room_id = r.rooms_id " +
          "AND r.externalRoomType LIKE :externalRoomType " +
          "AND c.deleted <> :deleted ";
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
      Query query = session.createQuery(hql);
      query.setParameter("externalRoomType", externalRoomType);
      query.setParameter("deleted", "true");
     
      List<FlvRecording> flvRecordingList = query.getResultList();
     
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
     
      log.debug("getFlvRecordingByExternalRoomType :: "+flvRecordingList.size());
     
      return flvRecordingList;
    } catch (Exception ex2) {
      log.error("[getFlvRecordingByExternalRoomType]: ",ex2);
    }
    return null;
  }
 
  public List<FlvRecording> getFlvRecordingsPublic() {
    try {
     
      String hql = "SELECT c FROM FlvRecording c " +
          "WHERE c.deleted <> :deleted " +
          "AND (c.ownerId IS NULL OR c.ownerId = 0)  " +
          "AND (c.parentFileExplorerItemId IS NULL OR c.parentFileExplorerItemId = 0) " +
          "ORDER BY c.isFolder DESC, c.fileName ";
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
      Query query = session.createQuery(hql);
      query.setParameter("deleted", "true");
     
      List<FlvRecording> flvRecordingList = query.getResultList();
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
      return flvRecordingList;
    } catch (Exception ex2) {
      log.error("[getFlvRecordingsPublic]: ",ex2);
    }
    return null;
  }
 
  public List<FlvRecording> getFlvRecordingRootByPublic(Long organization_id) {
    try {
     
      String hql = "SELECT c FROM FlvRecording c " +
          "WHERE c.deleted <> :deleted " +
          "AND c.ownerId IS NULL " +
          "AND c.organization_id = :organization_id " +
          "AND (c.parentFileExplorerItemId IS NULL OR c.parentFileExplorerItemId = 0) " +
          "ORDER BY c.isFolder DESC, c.fileName ";
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
      Query query = session.createQuery(hql);
      query.setParameter("organization_id", organization_id);
      query.setParameter("deleted", "true");
     
      List<FlvRecording> flvRecordingList = query.getResultList();
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
      return flvRecordingList;
    } catch (Exception ex2) {
      log.error("[getFlvRecordingByOwner]: ",ex2);
    }
    return null;
  }
 
  public List<FlvRecording> getFlvRecordingRootByOwner(Long ownerId) {
    try {
     
      String hql = "SELECT c FROM FlvRecording c " +
          "WHERE c.deleted <> :deleted " +
          "AND c.ownerId = :ownerId " +
          "AND (c.parentFileExplorerItemId IS NULL OR c.parentFileExplorerItemId = 0) " +
          "ORDER BY c.isFolder DESC, c.fileName ";
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
      Query query = session.createQuery(hql);
      query.setParameter("deleted", "true");
      query.setParameter("ownerId",ownerId);
     
      List<FlvRecording> flvRecordingList = query.getResultList();
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
      return flvRecordingList;
    } catch (Exception ex2) {
      log.error("[getFlvRecordingByOwner]: ",ex2);
    }
    return null;
  }
 
  public List<FlvRecording> getFlvRecordingByOwner(Long ownerId, Long parentFileExplorerItemId) {
    try {
     
      String hql = "SELECT c FROM FlvRecording c " +
          "WHERE c.deleted <> :deleted " +
          "AND c.ownerId = :ownerId " +
          "AND c.parentFileExplorerItemId = :parentFileExplorerItemId " +
          "ORDER BY c.isFolder DESC, c.fileName ";
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
      Query query = session.createQuery(hql);
      query.setParameter("deleted", "true");
      query.setParameter("ownerId",ownerId);
      query.setParameter("parentFileExplorerItemId", parentFileExplorerItemId);
     
      List<FlvRecording> flvRecordingList = query.getResultList();
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
      return flvRecordingList;
    } catch (Exception ex2) {
      log.error("[getFlvRecordingByOwner]: ",ex2);
    }
    return null;
  }
 
  public List<FlvRecording> getFlvRecordingByRoomId(Long room_id) {
    try {
     
      String hql = "SELECT c FROM FlvRecording c " +
          "WHERE c.deleted <> :deleted " +
          "AND c.room_id = :room_id " +
          "ORDER BY c.isFolder DESC, c.fileName ";
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
      Query query = session.createQuery(hql);
      query.setParameter("deleted", "true");
      query.setParameter("room_id",room_id);
     
      List<FlvRecording> flvRecordingList = query.getResultList();
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
      return flvRecordingList;
    } catch (Exception ex2) {
      log.error("[getFlvRecordingByOwner]: ",ex2);
    }
    return null;
  }

  public List<FlvRecording> getFlvRecordingByParent(Long parentFileExplorerItemId) {
    try {
     
      String hql = "SELECT c FROM FlvRecording c " +
          "WHERE c.deleted <> :deleted " +
          "AND c.parentFileExplorerItemId = :parentFileExplorerItemId " +
          "ORDER BY c.isFolder DESC, c.fileName ";
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
      Query query = session.createQuery(hql);
      query.setParameter("deleted", "true");
      query.setParameter("parentFileExplorerItemId", parentFileExplorerItemId);
     
      List<FlvRecording> flvRecordingList = query.getResultList();
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
      return flvRecordingList;
    } catch (Exception ex2) {
      log.error("[getFlvRecordingByParent]: ",ex2);
    }
    return null;
  }
 
  public Long addFlvFolderRecording(String fileHash, String fileName, Long fileSize, Long user_id,
      Long room_id, Date recordStart, Date recordEnd, Long ownerId, String comment,
      Long  parentFileExplorerItemId, Long organization_id) {
    try {
     
      FlvRecording flvRecording = new FlvRecording();
     
      flvRecording.setParentFileExplorerItemId(parentFileExplorerItemId);
     
      flvRecording.setDeleted("false");
      flvRecording.setFileHash(fileHash);
      flvRecording.setFileName(fileName);
      flvRecording.setFileSize(fileSize);
      flvRecording.setInserted(new Date());
      flvRecording.setInsertedBy(user_id);
      flvRecording.setIsFolder(true);
      flvRecording.setIsImage(false);
      flvRecording.setIsPresentation(false);
      flvRecording.setIsRecording(true);
      flvRecording.setComment(comment);
      flvRecording.setOrganization_id(organization_id);
     
      flvRecording.setRoom_id(room_id);
      flvRecording.setRecordStart(recordStart);
      flvRecording.setRecordEnd(recordEnd);
     
      flvRecording.setOwnerId(ownerId);
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
     
      flvRecording = session.merge(flvRecording);
      Long flvRecordingId = flvRecording.getFlvRecordingId();
     
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
      return flvRecordingId;
    } catch (Exception ex2) {
      log.error("[addFlvRecording]: ",ex2);
    }
    return null;
  }
 
  public Long addFlvRecording(String fileHash, String fileName, Long fileSize, Long user_id,
      Long room_id, Date recordStart, Date recordEnd, Long ownerId, String comment,
      String recorderStreamId, Integer width, Integer height, Boolean isInterview) {
    try {
     
      FlvRecording flvRecording = new FlvRecording();
     
      flvRecording.setDeleted("false");
      flvRecording.setFileHash(fileHash);
      flvRecording.setFileName(fileName);
      flvRecording.setFileSize(fileSize);
      flvRecording.setInserted(new Date());
      flvRecording.setInsertedBy(user_id);
      flvRecording.setIsFolder(false);
      flvRecording.setIsImage(false);
      flvRecording.setIsPresentation(false);
      flvRecording.setIsRecording(true);
      flvRecording.setComment(comment);
      flvRecording.setIsInterview(isInterview);
     
      flvRecording.setRoom_id(room_id);
      flvRecording.setRecordStart(recordStart);
      flvRecording.setRecordEnd(recordEnd);
     
      flvRecording.setWidth(width);
      flvRecording.setHeight(height);
     
      flvRecording.setOwnerId(ownerId);
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
     
      flvRecording = session.merge(flvRecording);
      Long flvRecordingId = flvRecording.getFlvRecordingId();
     
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
      return flvRecordingId;
    } catch (Exception ex2) {
      log.error("[addFlvRecording]: ",ex2);
    }
    return null;
  }
 
  public Long addFlvRecordingObj(FlvRecording flvRecording) {
    try {
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
     
      flvRecording = session.merge(flvRecording);
      Long flvRecordingId = flvRecording.getFlvRecordingId();
     
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
      return flvRecordingId;
    } catch (Exception ex2) {
      log.error("[addFlvRecording]: ",ex2);
    }
    return null;
  }
 
  public void updateFlvRecordingOrganization(Long flvRecordingId, Long organization_id) {
    try {
     
      FlvRecording fId = this.getFlvRecordingById(flvRecordingId);
     
      fId.setOrganization_id(organization_id);
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
      if (fId.getFlvRecordingId() == 0) {
        session.persist(fId);
          } else {
            if (!session.contains(fId)) {
              session.merge(fId);
          }
      }
      session.flush();
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
    } catch (Exception ex2) {
      log.error("[deleteFileExplorerItem]: ",ex2);
    }
  }
 
  public void updateFlvRecordingEndTime(Long flvRecordingId, Date recordEnd, Long organization_id) {
    try {
     
      FlvRecording fId = this.getFlvRecordingById(flvRecordingId);
     
      fId.setProgressPostProcessing(0);
      fId.setRecordEnd(recordEnd);
      fId.setOrganization_id(organization_id);
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
      if (fId.getFlvRecordingId() == 0) {
        session.persist(fId);
          } else {
            if (!session.contains(fId)) {
              session.merge(fId);
          }
      }
      session.flush();
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
    } catch (Exception ex2) {
      log.error("[deleteFileExplorerItem]: ",ex2);
    }
  }
 
  public void updateFlvRecordingProgress(Long flvRecordingId, Integer progress) {
    try {
     
      FlvRecording fId = this.getFlvRecordingById(flvRecordingId);
     
      fId.setProgressPostProcessing(progress);
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
      if (fId.getFlvRecordingId() == 0) {
        session.persist(fId);
          } else {
            if (!session.contains(fId)) {
              session.merge(fId);
          }
      }
      session.flush();
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
    } catch (Exception ex2) {
      log.error("[deleteFileExplorerItem]: ",ex2);
    }
  }
 
  /**
   * @param fileExplorerItemId
   */
  public void deleteFlvRecording(Long flvRecordingId) {
    try {
     
      FlvRecording fId = this.getFlvRecordingById(flvRecordingId);
     
      fId.setDeleted("true");
      fId.setUpdated(new Date());
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
      if (fId.getFlvRecordingId() == 0) {
        session.persist(fId);
          } else {
            if (!session.contains(fId)) {
              session.merge(fId);
          }
      }
      session.flush();
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
    } catch (Exception ex2) {
      log.error("[deleteFileExplorerItem]: ",ex2);
    }
  }

  /**
   * @param fileExplorerItemId
   * @param fileName
   */
  public void updateFileOrFolderName(Long flvRecordingId, String fileName) {
    try {
     
      FlvRecording fId = this.getFlvRecordingById(flvRecordingId);
     
      fId.setFileName(fileName);
      fId.setUpdated(new Date());
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
      if (fId.getFlvRecordingId() == 0) {
        session.persist(fId);
          } else {
            if (!session.contains(fId)) {
              session.merge(fId);
          }
      }
      session.flush();
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
    } catch (Exception ex2) {
      log.error("[updateFileOrFolderName]: ",ex2);
    }
  }
 
  public void updateFlvRecording(FlvRecording fId) {
    try {
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
      if (fId.getFlvRecordingId() == 0) {
        session.persist(fId);
          } else {
            if (!session.contains(fId)) {
              session.merge(fId);
          }
      }
      session.flush();
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
    } catch (Exception ex2) {
      log.error("[updateFileOrFolderName]: ",ex2);
    }
  }

  /**
   * @param fileExplorerItemId
   * @param newParentFileExplorerItemId
   * @param isOwner
   */
  public void moveFile(Long flvRecordingId, Long parentFileExplorerItemId,
        Boolean isOwner, Long ownerId) {
    try {
     
      FlvRecording fId = this.getFlvRecordingById(flvRecordingId);
     
      fId.setParentFileExplorerItemId(parentFileExplorerItemId);
     
      if (parentFileExplorerItemId == 0) {
        if (isOwner) {
          //move to personal Folder
          fId.setOwnerId(ownerId);
        } else {
          //move to public room folder
          fId.setOwnerId(null);
        }
      } else {
        fId.setOwnerId(null);
      }
     
      fId.setUpdated(new Date());
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
      if (fId.getFlvRecordingId() == 0) {
        session.persist(fId);
          } else {
            if (!session.contains(fId)) {
              session.merge(fId);
          }
      }
      session.flush();
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
    } catch (Exception ex2) {
      log.error("[moveFile]: ",ex2);
    }
  }
 
}
TOP

Related Classes of org.openmeetings.app.data.flvrecord.FlvRecordingDaoImpl

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.