📄 showmmsbuildresultaction.java
字号:
/*
* Created on 2005-7-4
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.rainbow.mms.manage;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Date;
import java.util.List;
import org.apache.log4j.Logger;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.opensymphony.xwork.ActionContext;
import com.opensymphony.xwork.ActionSupport;
import com.rainbow.mms.common.MimeContent;
import com.rainbow.mms.common.MmsContent;
import com.rainbow.mms.common.QueryMimeContentSaveStrategy;
import com.rainbow.mms.common.SimpleSmilControl;
import com.rainbow.util.tools.HibernateUtil;
/**
* 将彩信内容体分析出对应的SMIL文件,并保存在临时目录中,如果原有的彩信内容体内没有SMIL,
* 那么就生成一个SMIL文件给它,并将该SMIL存入该内容体内。
* @author Rainbow MMS Group Leader —— TrWorks
*/
public class ShowMmsBuildResultAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private Logger log = Logger.getLogger(ShowMmsBuildResultAction.class);
public String execute() throws Exception {
MmsContent mms = (MmsContent)ActionContext.getContext().getSession().get("mmsResult");
if (mms == null){
log.error("ShowMmsBuildResultAction excute function input param mmsResult is null!");
return ERROR;
}
String sitePath = System.getProperty("tomcat.home", System.getProperty("catalina.home")) + "\\webapps\\mmseditor\\temp\\";
File saveFile = null;
FileOutputStream saveOut = null;
List contentElements = mms.getMmsContentElments();
SimpleSmilControl smilControl = new SimpleSmilControl();
long tempFileName = System.currentTimeMillis();
String fileName = String.valueOf(tempFileName) + ".smil";
// 如果该彩信没有内容体,则添加一个空SMIL文件。
if (contentElements == null || contentElements.isEmpty()){
saveFile = new File(sitePath + fileName);
saveOut = new FileOutputStream(saveFile);
saveOut.write(smilControl.toString().getBytes(), 0, smilControl.toString().getBytes().length);
saveOut.close();
}
else{
MimeContent firstContent = (MimeContent)contentElements.get(0);
// 如果该彩信内容体中没有SMIL,那么就添加一个默认的SMIL。
if (!firstContent.getMimeType().equalsIgnoreCase("application/smil")) {
int slidNo = smilControl.addSlid(3600);
for (int i = 0; i < contentElements.size(); i++) {
MimeContent content = (MimeContent) contentElements.get(i);
// 向SMIL中添加该媒体元素
String mimeType = content.getMimeType();
// 如果是文本类型的
if (mimeType.length() >= "text".length() &&
mimeType.substring(0, 4).equalsIgnoreCase("text")){
smilControl.addText(slidNo, content.getMimeContentName());
}
// 是图片类型
else if (mimeType.length() >= "image".length() &&
mimeType.substring(0, 5).equalsIgnoreCase("image")){
smilControl.addImage(slidNo, content.getMimeContentName());
}
// 是声音类型
else if (mimeType.length() >= "audio".length() &&
mimeType.substring(0, 5).equalsIgnoreCase("audio")){
smilControl.addAudio(slidNo, content.getMimeContentName());
}
// 是声音类型
else if (mimeType.equalsIgnoreCase("text/x-iMelody") ||
mimeType.equalsIgnoreCase("text/x-eMelody")){
smilControl.addAudio(slidNo, content.getMimeContentName());
}
// 其他类型
else {
smilControl.addRef(slidNo, content.getMimeContentName());
}
// 保存媒体元素的文件
saveFile = new File(sitePath + content.getMimeContentName());
saveOut = new FileOutputStream(saveFile);
int saveMethod = 0;
try{
Session sess = HibernateUtil.currentSession();
saveMethod = QueryMimeContentSaveStrategy.getSaveStrategy(content.getMimeType(), sess);
}
catch(Exception e){
e.printStackTrace();
}
finally{
HibernateUtil.closeSession();
}
if (0 == saveMethod){
saveOut.write(content.getBinaryContent(), 0, content.getBinaryContent().length);
}
else{
saveOut.write(content.getCharacterContent().getBytes(), 0, content.getCharacterContent().getBytes().length);
}
saveOut.close();
}
// 保存SMIL文件
saveFile = new File(sitePath + fileName);
saveOut = new FileOutputStream(saveFile);
saveOut.write(smilControl.toString().getBytes(), 0, smilControl
.toString().getBytes().length);
saveOut.close();
// 将SMIL文件保存到彩信内容体内
MimeContent smilContent = new MimeContent();
smilContent.setCharacterContent(smilControl.toString());
smilContent.setCreateTime(new Date());
smilContent.setBinaryContent(null);
smilContent.setMimeContentName(fileName);
smilContent.setMimeType("application/smil");
mms.getMmsContentElments().add(0, smilContent);
// 将调整后的彩信内容体保存到数据库中
Session sess = HibernateUtil.currentSession();
Transaction tx = sess.beginTransaction();
sess.save(smilContent);
sess.update(mms);
tx.commit();
HibernateUtil.closeSession();
}
else{
for (int i = 0; i < contentElements.size(); i++){
MimeContent content = (MimeContent)contentElements.get(i);
if (content.getMimeType().equalsIgnoreCase("application/smil")){
fileName = content.getMimeContentName();
}
saveFile = new File(sitePath + content.getMimeContentName());
saveOut = new FileOutputStream(saveFile);
Session sess = HibernateUtil.currentSession();
int saveMethod = QueryMimeContentSaveStrategy.getSaveStrategy(content.getMimeType(), sess);
HibernateUtil.closeSession();
if (0 == saveMethod){
saveOut.write(content.getBinaryContent(), 0, content.getBinaryContent().length);
}
else{
saveOut.write(content.getCharacterContent().getBytes(), 0, content.getCharacterContent().getBytes().length);
}
saveOut.close();
}
}
}
ActionContext.getContext().getSession().put("smilFile", fileName);
return SUCCESS;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -