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

📄 headerfieldassembler.java

📁 Messaging- MIDP的是一个彩信客户端
💻 JAVA
字号:
/*
 *  JVending - J2ME MMS Client
 *  Copyright (C) 2004  Shane Isbell
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License as published by the Free Software Foundation; either
 *  version 2.1 of the License, or (at your option) any later version.
 *
 *  This library is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

package org.jvending.messaging.impl.mms;

import org.jvending.messaging.MessageType;
import org.jvending.messaging.ContentType;

/**
 * @author Shane Isbell
 * @version 1.0.0a
 * @created 04/03/27
 */


class HeaderFieldAssembler {

    private WspTokenizer tokenizer;

    public void setTokenizer(WspTokenizer tokenizer) {
        this.tokenizer = tokenizer;
    }
    public Field getField(int value) {
            Field field = null;
            WspToken wspToken = null;
            String headerStringValue = null;
            int headerIntValue = 0;
            long headerLongValue = 0L;

            System.out.println("FIELD VALUE:" + value);
            switch(value) {
                case -1: //end of input stream
                    return null;
                case 0:
                    return new Field("DUMMY", "DUMMY");

                case MessageField.X_MMS_MESSAGE_TYPE:
                    wspToken = (WspToken) tokenizer.nextElement();
                    headerIntValue = wspToken.getIntValue();
                    field = new Field("X_MMS_MESSAGE_TYPE", MessageType.intToString(headerIntValue));
                    return field;

                case MessageField.BCC:
                    wspToken = (WspToken) tokenizer.nextElement();
                    headerStringValue = wspToken.getStringValue();
                    field = new Field("BCC", headerStringValue);
                    return field;

                case MessageField.CC:
                    wspToken = (WspToken) tokenizer.nextElement();
                    headerStringValue = wspToken.getStringValue();
                    field = new Field("CC", headerStringValue);
                    return field;

                case MessageField.X_MMS_CONTENT_LOCATION:
                    wspToken = (WspToken) tokenizer.nextElement();
                    headerStringValue = wspToken.getStringValue();
                    field = new Field("X_MMS_CONTENT_LOCATION", headerStringValue);
                    return field;

                case MessageField.MESSAGE_ID:
                    wspToken = (WspToken) tokenizer.nextElement();
                    headerStringValue = wspToken.getStringValue();
                    field = new Field("MESSAGE_ID", headerStringValue);
                    return field;

                case MessageField.SUBJECT:
                    wspToken = (WspToken) tokenizer.nextElement();
                    headerStringValue = wspToken.getStringValue();
                    field = new Field("SUBJECT", headerStringValue);
                    return field;

                case MessageField.TO:
                    wspToken = (WspToken) tokenizer.nextElement();
                    headerStringValue = wspToken.getStringValue();
                    field = new Field("TO", headerStringValue);
                    return field;

                case MessageField.X_MMS_TRANSACTION_ID:
                    wspToken = (WspToken) tokenizer.nextElement();
                    headerStringValue = wspToken.getStringValue();
                    field = new Field("X_MMS_TRANSACTION_ID", headerStringValue);
                    return field;

                case MessageField.X_MMS_REPLY_CHARGING_ID:
                    wspToken = (WspToken) tokenizer.nextElement();
                    headerStringValue = wspToken.getStringValue();
                    field = new Field("X_MMS_REPLY_CHARGING_ID", headerStringValue);
                    return field;

                case MessageField.X_MMS_RETRIEVE_TEXT:
                    wspToken = (WspToken) tokenizer.nextElement();
                    headerStringValue = wspToken.getStringValue();
                    field = new Field("X_MMS_RETRIEVE_TEXT", headerStringValue);
                    return field;

                case MessageField.X_MMS_RESPONSE_TEXT:
                    wspToken = (WspToken) tokenizer.nextElement();
                    headerStringValue = wspToken.getStringValue();
                    field = new Field("X_MMS_RESPONSE_TEXT", headerStringValue);
                    return field;

                case MessageField.CONTENT_TYPE:
                    wspToken = (WspToken) tokenizer.nextElement();
                    if(wspToken.isExtensionMedia()) {
                        headerStringValue = wspToken.getStringValue();
                    } else if(wspToken.isShortInteger()) {
                        headerStringValue = ContentType.intToString(wspToken.getIntValue());
                    }   
                    field = new Field("CONTENT_TYPE", headerStringValue);
                    return field;                

                case MessageField.DATE:
                    tokenizer.nextElement();//length: toss it
                    wspToken = (WspToken) tokenizer.nextElement();
               
                    headerLongValue = wspToken.getLongValue();
                    field = new Field("DATE", String.valueOf(headerLongValue));
                    return field;       

                case MessageField.X_MMS_REPLY_CHARGING_SIZE:
                    break;

                case MessageField.X_MMS_MESSAGE_SIZE:  
                    tokenizer.nextElement();//length: toss it
                    wspToken = (WspToken) tokenizer.nextElement();
               
                    headerLongValue = wspToken.getLongValue();
                    field = new Field("DATE", String.valueOf(headerLongValue));
                    return field;                   

                case MessageField.X_MMS_READ_REPORT:
                    System.out.println("X_MMS_READ_REPORT");
                    wspToken = (WspToken) tokenizer.nextElement();
                    headerIntValue = wspToken.getIntValue();
                    if(headerIntValue == 0) headerStringValue = "Yes";
                    else headerStringValue = "No";
                    field = new Field("X_MMS_READ_REPORT", headerStringValue);
                    return field;


                case MessageField.X_MMS_REPORT_ALLOWED:
                    break;

                case MessageField.X_MMS_DELIVERY_REPORT:
                    wspToken = (WspToken) tokenizer.nextElement();
                    headerIntValue = wspToken.getIntValue();
                    if(headerIntValue == 0) headerStringValue = "Yes";
                    else headerStringValue = "No";
                    field = new Field("X_MMS_DELIVERY_REPORT", headerStringValue);
                    return field;
                    
/*
                case MessageField.X_MMS_DELIVERY_TIME:
                    return new DeliveryTime();
*/
                case MessageField.X_MMS_EXPIRY:
                    
/*
                case MessageField.X_MMS_REPLY_CHARGING_DEADLINE:
                    return new ReplyChargingDeadline();
*/

                case MessageField.FROM:
                    tokenizer.nextElement();//toss value length
                    wspToken = (WspToken) tokenizer.nextElement();
                    headerIntValue = wspToken.getIntValue();
                    headerLongValue = wspToken.getLongValue();
                    headerStringValue = wspToken.getStringValue();
    
                    if(headerIntValue == 0) {
                        wspToken = (WspToken) tokenizer.nextElement();
                        headerStringValue = wspToken.getStringValue();
                    } else
                        headerStringValue = "INSERT_ADDRESS_TOKEN";
                    field = new Field("FROM", headerStringValue);
                    return field;                    

                case MessageField.X_MMS_MESSAGE_CLASS:
                    wspToken = (WspToken) tokenizer.nextElement();
                    if(wspToken.isShortInteger()) headerStringValue = MessageClass.lookupMessageClass(wspToken.getIntValue());
                    else headerStringValue = wspToken.getStringValue();
                    field = new Field("X_MMS_MESSAGE_CLASS", headerStringValue);
                    return field;                

                case MessageField.X_MMS_MMS_VERSION:
                    wspToken = (WspToken) tokenizer.nextElement();
                    headerIntValue = wspToken.getIntValue();//String.valueOf(headerIntValue)
                    field = new Field("X_MMS_MMS_VERSION", getVersion(headerIntValue) );
                    return field;

                case MessageField.X_MMS_PRIORITY:
                    wspToken = (WspToken) tokenizer.nextElement();
                    headerIntValue = wspToken.getIntValue();
                    headerStringValue = Priority.lookup(headerIntValue);
                    field = new Field("X_MMS_PRIORITY", headerStringValue);
                    return field;
   /*                 
                case MessageField.X_MMS_RESPONSE_STATUS:
                    return new ResponseStatus();
                case MessageField.X_MMS_SENDER_VISIBILITY:
                    return new SenderVisibility();
                case MessageField.X_MMS_STATUS:
                    return new Status();
                case MessageField.X_MMS_RETRIEVE_STATUS:
                    return new RetrieveStatus();
                case MessageField.X_MMS_READ_STATUS:
                    return new ReadStatus();
                case MessageField.X_MMS_REPLY_CHARGING:
                    return new ReplyCharging();
*/
                case MessageField.X_MMS_PREVIOUSLY_SENT_BY:
                    tokenizer.nextElement(); //toss value length    
                    wspToken = (WspToken) tokenizer.nextElement();
                    if(wspToken.isShortInteger()) {
                        headerStringValue = String.valueOf(wspToken.getIntValue());
                    } else {
                        tokenizer.nextElement(); //toss value length
                        wspToken = (WspToken) tokenizer.nextElement();
                        headerStringValue = String.valueOf(wspToken.getLongValue());
                    }
                    wspToken = (WspToken) tokenizer.nextElement();
                    headerStringValue = headerStringValue + ";" + wspToken.getStringValue();
                    field = new Field("X_MMS_PREVIOUSLY_SENT_BY", headerStringValue);
                    return field;

                case MessageField.X_MMS_PREVIOUSLY_SENT_DATE:
                    System.out.println("X_MMS_PREVIOUSLY_SENT_DATE");
                    break;

                default:

            }
            return null;
        }

    private String getVersion(int i) {
        int majorVersion = i >> 4;
        int minorVersion = (i & 0x0F);
        return String.valueOf(majorVersion +"." + minorVersion);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -