/*********************************************************************************
* The contents of this file are subject to the Common Public Attribution
* License Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.openemm.org/cpal1.html. The License is based on the Mozilla
* Public License Version 1.1 but Sections 14 and 15 have been added to cover
* use of software over a computer network and provide for limited attribution
* for the Original Developer. In addition, Exhibit A has been modified to be
* consistent with Exhibit B.
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
*
* The Original Code is OpenEMM.
* The Original Developer is the Initial Developer.
* The Initial Developer of the Original Code is AGNITAS AG. All portions of
* the code written by AGNITAS AG are Copyright (c) 2009 AGNITAS AG. All Rights
* Reserved.
*
* Contributor(s): AGNITAS AG.
********************************************************************************/
package org.agnitas.cms.dao.impl;
import java.sql.*;
import java.util.*;
import org.agnitas.cms.dao.*;
import org.agnitas.cms.utils.*;
import org.agnitas.cms.webservices.generated.*;
import org.springframework.dao.*;
import org.springframework.jdbc.core.support.*;
import org.springframework.jdbc.object.*;
/**
* @author Vyacheslav Stepanov
*/
public class MediaFileDaoImpl extends CmsDaoImpl implements MediaFileDao {
public MediaFile createMediaFile(MediaFile mediaFile) {
String sql = "INSERT INTO cm_media_file_tbl " +
"(id, company_id, cm_template_id, content_module_id, cmtId, media_name, " +
"media_type, mime_type, content) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
SqlUpdate sqlUpdate = new SqlUpdate(getDataSource(), sql,
new int[]{Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.INTEGER,
Types.INTEGER, Types.VARCHAR,
Types.INTEGER, Types.VARCHAR, Types.BLOB});
sqlUpdate.compile();
int id = createIncrement("cm_media_file_tbl_seq").nextIntValue();
sqlUpdate.update(new Object[]{id, mediaFile.getCompanyId(),
mediaFile.getCmTemplateId(), mediaFile.getContentModuleId(),
mediaFile.getContentModuleTypeId(), mediaFile.getName(),
mediaFile.getMediaType(), mediaFile.getMimeType(),
new SqlLobValue(mediaFile.getContent())});
mediaFile.setId(id);
return mediaFile;
}
public void updateMediaFile(int id, byte[] content) {
String sql = "UPDATE cm_media_file_tbl SET content=? WHERE id=?";
SqlUpdate sqlUpdate = new SqlUpdate(getDataSource(), sql, new int[]{Types.BLOB, Types.INTEGER});
sqlUpdate.compile();
sqlUpdate.update(new Object[]{new SqlLobValue(content), id});
}
public void updateMediaFile(MediaFile mediaFile){
this.updateMediaFile(mediaFile.getId(), mediaFile.getContent());
}
public MediaFile getMediaFile(int id) {
String sqlStatement = "SELECT * FROM cm_media_file_tbl WHERE id=" + id;
try {
MediaFile mediaFile = (MediaFile) createJdbcTemplate().
queryForObject(sqlStatement, new MediaFileRowMapper());
return mediaFile;
}
catch(IncorrectResultSizeDataAccessException e) {
return null;
}
}
public void removeMediaFile(int id) {
String sqlStatement = "DELETE FROM cm_media_file_tbl WHERE id=" + id;
createJdbcTemplate().execute(sqlStatement);
}
public MediaFile getPreviewOfContentModule(int contentModuleId) {
String sqlStatement = "SELECT * FROM cm_media_file_tbl WHERE content_module_id=" +
contentModuleId + " AND media_type=" + MediaFileUtils.PREVIEW_TYPE;
try {
MediaFile mediaFile = (MediaFile) createJdbcTemplate().
queryForObject(sqlStatement, new MediaFileRowMapper());
return mediaFile;
}
catch(IncorrectResultSizeDataAccessException e) {
return null;
}
}
public MediaFile getPreviewOfContentModuleType(int cmtId) {
String sqlStatement = "SELECT * FROM cm_media_file_tbl WHERE cmtId=" +
cmtId + " AND media_type=" + MediaFileUtils.PREVIEW_TYPE;
try {
MediaFile mediaFile = (MediaFile) createJdbcTemplate().
queryForObject(sqlStatement, new MediaFileRowMapper());
return mediaFile;
}
catch(IncorrectResultSizeDataAccessException e) {
return null;
}
}
public MediaFile getPreviewOfContentModuleTemplate(int cmTemplateId) {
String sqlStatement = "SELECT * FROM cm_media_file_tbl WHERE cm_template_id=" +
cmTemplateId + " AND media_type=" + MediaFileUtils.PREVIEW_TYPE;
try {
MediaFile mediaFile = (MediaFile) createJdbcTemplate().
queryForObject(sqlStatement, new MediaFileRowMapper());
return mediaFile;
}
catch(IncorrectResultSizeDataAccessException e) {
return null;
}
}
public List<MediaFile> getMediaFilesForContentModuleTemplate(int cmTemplateId) {
String sqlStatement = "SELECT * FROM cm_media_file_tbl WHERE cm_template_id=" +
cmTemplateId+" and media_name <> 'preview'";
try {
return (List<MediaFile>) createJdbcTemplate().
query(sqlStatement, new MediaFileRowMapper());
}
catch(IncorrectResultSizeDataAccessException e) {
return null;
}
}
public MediaFile getMediaFileForContentModelAndMediaName(int cmTemplateId,String mediaName){
String sqlStatement = String.format("SELECT * FROM cm_media_file_tbl WHERE cm_template_id='%s' AND media_name LIKE '%s%s%s'",cmTemplateId,'%',mediaName,'%');
try {
return (MediaFile) createJdbcTemplate().queryForObject(sqlStatement, new MediaFileRowMapper());
}
catch(IncorrectResultSizeDataAccessException e) {
return null;
}
}
public void removePreviewOfContentModule(int contentModuleId) {
String sqlStatement = "DELETE FROM cm_media_file_tbl WHERE content_module_id="
+ contentModuleId +
" AND media_type=" + MediaFileUtils.PREVIEW_TYPE;
createJdbcTemplate().execute(sqlStatement);
}
public void removePreviewOfContentModuleType(int contentModuleTypeId) {
String sqlStatement = "DELETE FROM cm_media_file_tbl WHERE cmtId="
+ contentModuleTypeId +
" AND media_type=" + MediaFileUtils.PREVIEW_TYPE;
createJdbcTemplate().execute(sqlStatement);
}
public void removePreviewOfContentModuleTemplate(int cmTemplateId) {
String sqlStatement = "DELETE FROM cm_media_file_tbl WHERE cm_template_id="
+ cmTemplateId +
" AND media_type=" + MediaFileUtils.PREVIEW_TYPE;
createJdbcTemplate().execute(sqlStatement);
}
public List<MediaFile> getMediaFilesForContentModule(int contentModuleId) {
String sqlStatement = "SELECT * FROM cm_media_file_tbl WHERE " +
"content_module_id=" + contentModuleId;
try {
return (List<MediaFile>) createJdbcTemplate().
query(sqlStatement, new MediaFileRowMapper());
}
catch(IncorrectResultSizeDataAccessException e) {
return null;
}
}
public void removeContentModuleImage(int contentModuleId, String mediaName) {
String sqlStatement = "DELETE FROM cm_media_file_tbl WHERE content_module_id=" +
contentModuleId + " AND media_name='" + mediaName + "'";
createJdbcTemplate().execute(sqlStatement);
}
public void removeMediaFilesForCMTemplateId(int cmTemplateId) {
String sqlStatement = "DELETE FROM cm_media_file_tbl WHERE cm_template_id="
+ cmTemplateId;
createJdbcTemplate().execute(sqlStatement);
}
public void removeMediaFilesForContentModuleId(int contentModuleId) {
String sqlStatement = "DELETE FROM cm_media_file_tbl WHERE content_module_id="
+ contentModuleId;
createJdbcTemplate().execute(sqlStatement);
}
}