?? packageparse.java
字號(hào):
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>標(biāo)題: 場(chǎng)景包解析類</p>
* <p>描述: 解析打包好了的場(chǎng)景,包的格式為Hashtable數(shù)組
* 其中各個(gè)Hashtable中key,約定如下:
* "ID" 文件名
* "TYPE" 文件類型
* "STREAM_BYTE" 文件內(nèi)容,byte數(shù)組(如果類型為xml,則為hashtable數(shù)據(jù)包)
* 其中"TYPE"取值如下:smil:smil文件、image:image文件、
* audio:audio文件、xml:xml文件
* <p>版權(quán): Copyright (c) 2006</p>
* <p>公司: 湖南拓維信息系統(tǒng)股份有限公司</p>
* 作者: 郭勇華
* 版本: 1.0
*/
public class PackageParse {
/**
* 得到動(dòng)漫場(chǎng)景數(shù)據(jù)包
* @param cartoonData Hashtable[] 動(dòng)漫場(chǎng)景數(shù)據(jù)包
* @return Hashtable 解析完的數(shù)據(jù)包
*/
public static Hashtable getCartoomData(Hashtable[] cartoonData, Vector vecSelect){
Hashtable parsedCartoomData = new Hashtable(3) ; // 解析完的數(shù)據(jù)
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 ;
}
/**
* 得到初步解析的數(shù)據(jù)[smil,img&audio,select(xml格式)]
* @param cartoonData Hashtable[] 動(dòng)漫場(chǎng)景數(shù)據(jù)包
* @return Hashtable 初步解析的數(shù)據(jù)
*/
private static Hashtable getParseData(Hashtable[] cartoonData){
Hashtable parseData = new Hashtable(3); //初步解析的數(shù)據(jù)
Hashtable mediaData = new Hashtable(); // 媒體位數(shù)據(jù)
for(int data = 0; data < cartoonData.length ; data++ ){
Hashtable dataEle = cartoonData[data] ;
String type = (String)dataEle.get("TYPE") ; // 數(shù)據(jù)的類型
String id = (String)dataEle.get("ID") ; // 數(shù)據(jù)的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 ;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -