📄 packageparse.java
字号:
package com.talkweb.micp.icsp.parse;
import java.util.Hashtable;
import java.util.Enumeration;
import java.util.Vector;
import com.talkweb.micp.pub.smil.RegionQueue;
import com.talkweb.micp.twsmil.*;
/**
* PackageParse.java
* <p>标题: 场景包解析类</p>
* <p>描述: 解析打包好了的场景,包的格式为Hashtable数组
* 其中各个Hashtable中key,约定如下:
* "ID" 文件名
* "TYPE" 文件类型
* "STREAM_BYTE" 文件内容,byte数组(如果类型为xml,则为hashtable数据包)
* 其中"TYPE"取值如下:smil:smil文件、image:image文件、
* audio:audio文件、xml:xml文件
* <p>版权: Copyright (c) 2006</p>
* <p>公司: 湖南拓维信息系统股份有限公司</p>
* 作者: 郭勇华
* 版本: 1.0
*/
public class PackageParse {
/**
* 得到动漫场景数据包
* @param cartoonData Hashtable[] 动漫场景数据包
* @return Hashtable 解析完的数据包
*/
public static Hashtable getCartoomData(Hashtable[] cartoonData, Vector vecSelect){
Hashtable parsedCartoomData = new Hashtable(3) ; // 解析完的数据
Hashtable parseData = getParseData(cartoonData) ;
SmilParse smilParse = new SmilParse((byte[])parseData.get("SMIL"),
(Hashtable)parseData.get("MEDIA"));
// Enumeration key = parseData.keys();
// while(key.hasMoreElements()){
// System.out.println("+++++++"+parseData.get(key)+"++++++++"+
// key);
// }
Vector vecRegionLabel = smilParse.getRegionQueueLabel() ;
for (int j=0; j<vecRegionLabel.size(); j++){
RegionQueue vecele = (RegionQueue)vecRegionLabel.elementAt(j);
System.out.println("+++++++++++++"+j+"++++++++++++++++++");
System.out.println("+++++++++++++"+vecele.getId()+"++++++++++++++++++");
for (int k=0; k<vecele.size(); k++){
//SmilRelation sEle1 = (SmilRelation) vecele.elementAt(k);
System.out.println("hashcode: "+((int[])vecele.elementAt(k))[0]+
"queueOrder: "+((int[])vecele.elementAt(k))[1]) ;
}
System.out.println("+++++++++++++"+j+"++++++++++++++++++");
}
Hashtable hashSmilLabel = smilParse.getSmilLableObject() ;
Enumeration e1 = hashSmilLabel.elements();
while (e1.hasMoreElements()){
Object obj = e1.nextElement();
if (obj instanceof ImgLabel){
ImgLabel img = ((ImgLabel)obj) ;
System.out.println("--------ImgLabel%%%%%%%%%%%%");
System.out.println("begin:"+img.getBegin()+
" dur:"+img.getDur()+
" end:"+img.getEnd()+
" fill:"+img.getFill()+
" id:"+img.getId()+
" data:"+img.getImgData()+
" name:"+img.getName()+
" region:"+img.getRegion()+
" repeatCount:"+img.getRepeatCount()+
" repeatdur:"+img.getRepeatDur()+
" src:"+img.getSrc());
}
else if(obj instanceof AudioLabel){
AudioLabel img = ((AudioLabel)obj) ;
System.out.println("---------------AudioLabel%%%%%%%%%%%%%");
System.out.println("begin:"+img.getBegin()+
" dur:"+img.getDur()+
" end:"+img.getEnd()+
" fill:"+img.getFill()+
" id:"+img.getId()+
" data:"+img.getAudioData()+
" name:"+img.getName()+
" region:"+img.getRegion()+
" repeatCount:"+img.getRepeatCount()+
" repeatdur:"+img.getRepeatDur()+
" src:"+img.getSrc());
}
//System.out.println(e1.nextElement().toString());
}
for (int k=0; k<vecSelect.size(); k++){
System.out.println("\\\\\\\\\\\\") ;
System.out.println(((String[])vecSelect.elementAt(k))[0]+"<||>"+((String[])vecSelect.elementAt(k))[1]) ;
System.out.println("\\\\\\\\\\\\") ;
}
parsedCartoomData.put("LABEL", smilParse.getSmilLableObject());
parsedCartoomData.put("REGION", smilParse.getRegionQueueLabel());
parsedCartoomData.put("SELECT", vecSelect);
smilParse = null ;
parseData = null ;
return parsedCartoomData ;
}
/**
* 得到初步解析的数据[smil,img&audio,select(xml格式)]
* @param cartoonData Hashtable[] 动漫场景数据包
* @return Hashtable 初步解析的数据
*/
private static Hashtable getParseData(Hashtable[] cartoonData){
Hashtable parseData = new Hashtable(3); //初步解析的数据
Hashtable mediaData = new Hashtable(); // 媒体位数据
for(int data = 0; data < cartoonData.length ; data++ ){
Hashtable dataEle = cartoonData[data] ;
String type = (String)dataEle.get("TYPE") ; // 数据的类型
String id = (String)dataEle.get("ID") ; // 数据的id(即src)
if (type.equals("SMIL"))
{
parseData.put("SMIL",dataEle.get("STREAM_BYTE")) ;
}
else if (type.equals("IMG") || type.equals("AUDIO"))
{
mediaData.put(id,dataEle.get("STREAM_BYTE")) ;
}
else if (type.equals("XML"))
{
System.out.println(dataEle.get("STREAM_BYTE"));
parseData.put("XML",dataEle.get("STREAM_BYTE")) ;
}
}
parseData.put("MEDIA",mediaData) ;
mediaData = null ;
return parseData ;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -