⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 showmmsbuildresultaction.java

📁 MM7彩信对接网关示例
💻 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 + -