Primitive.java
上传用户:szyujian
上传日期:2016-09-20
资源大小:320k
文件大小:6k
源码类别:

android开发

开发平台:

C/C++

  1. /*
  2.  * Copyright (C) 2007 Esmertec AG.
  3.  * Copyright (C) 2007 The Android Open Source Project
  4.  *
  5.  * Licensed under the Apache License, Version 2.0 (the "License");
  6.  * you may not use this file except in compliance with the License.
  7.  * You may obtain a copy of the License at
  8.  *
  9.  *      http://www.apache.org/licenses/LICENSE-2.0
  10.  *
  11.  * Unless required by applicable law or agreed to in writing, software
  12.  * distributed under the License is distributed on an "AS IS" BASIS,
  13.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  * See the License for the specific language governing permissions and
  15.  * limitations under the License.
  16.  */
  17. package com.android.im.imps;
  18. /**
  19.  * A primitive is the basic packet sent between the IMPS server and the IMPS
  20.  * client. Note that this class is not thread-safe.
  21.  */
  22. public final class Primitive {
  23.     private TransactionMode mTransactionMode = TransactionMode.Request;
  24.     private String mTransactionId;
  25.     private String mSessionId;
  26.     private String mPoll;
  27.     private String mCir;
  28.     private PrimitiveElement mContentElement;
  29.     /**
  30.      * Constructs a new Primitive with default value.
  31.      */
  32.     public Primitive() {
  33.     }
  34.     /**
  35.      * Constructs a new Primitive with a type.
  36.      *
  37.      * @param type the type of the primitive.
  38.      */
  39.     public Primitive(String type) {
  40.         mContentElement = new PrimitiveElement(type);
  41.     }
  42.     /**
  43.      * Gets the session type of this primitive.
  44.      *
  45.      * @return the session type .
  46.      */
  47.     public SessionType getSessionType() {
  48.         return mSessionId == null ? SessionType.Outband : SessionType.Inband;
  49.     }
  50.     /**
  51.      * Gets the session ID of this primitive.
  52.      *
  53.      * @return the session ID.
  54.      */
  55.     public String getSessionId() {
  56.         return mSessionId;
  57.     }
  58.     /**
  59.      * Sets the session ID of this primitive.
  60.      *
  61.      * @param sessionId the session ID.
  62.      */
  63.     public void setSession(String sessionId) {
  64.         this.mSessionId = sessionId;
  65.     }
  66.     /**
  67.      * Gets the transaction mode of this primitive.
  68.      *
  69.      * @return the transaction mode.
  70.      */
  71.     public TransactionMode getTransactionMode() {
  72.         return mTransactionMode;
  73.     }
  74.     /**
  75.      * Sets the transaction mode of this primitive.
  76.      *
  77.      * @param mode the transaction mode.
  78.      */
  79.     public void setTransactionMode(TransactionMode mode) {
  80.         this.mTransactionMode = mode;
  81.     }
  82.     /**
  83.      * Gets the transaction ID of this primitive.
  84.      *
  85.      * @return the transaction ID.
  86.      */
  87.     public String getTransactionID() {
  88.         return mTransactionId;
  89.     }
  90.     /**
  91.      * Sets the transaction ID of this primitive.
  92.      * @param transId the transaction ID.
  93.      */
  94.     public void setTransactionId(String transId) {
  95.         this.mTransactionId = transId;
  96.     }
  97.     public void setTransaction(ImpsTransaction transaction) {
  98.         this.mTransactionId = transaction.getId();
  99.     }
  100.     public String getCir() {
  101.         return mCir;
  102.     }
  103.     public void setCir(String cir) {
  104.         this.mCir = cir;
  105.     }
  106.     public String getPoll() {
  107.         return mPoll;
  108.     }
  109.     public void setPoll(String poll) {
  110.         this.mPoll = poll;
  111.     }
  112.     public String getType() {
  113.         return (mContentElement == null) ? null : mContentElement.getTagName();
  114.     }
  115.     public PrimitiveElement getContentElement() {
  116.         return mContentElement;
  117.     }
  118.     public void setContentElement(String type) {
  119.         mContentElement = new PrimitiveElement(type);
  120.     }
  121.     public PrimitiveElement addElement(String tag) {
  122.         return mContentElement.addChild(tag);
  123.     }
  124.     public void addElement(String tag, String value) {
  125.         mContentElement.addChild(tag, value);
  126.     }
  127.     public void addElement(String tag, boolean value) {
  128.         mContentElement.addChild(tag, value);
  129.     }
  130.     public void addElement(PrimitiveElement elem) {
  131.         mContentElement.addChild(elem);
  132.     }
  133.     public PrimitiveElement getElement(String tag) {
  134.         return mContentElement.getChild(tag);
  135.     }
  136.     public String getElementContents(String tag) {
  137.         PrimitiveElement elem = getElement(tag);
  138.         return elem == null ? null : elem.getContents();
  139.     }
  140.     PrimitiveElement createMessage(String versionUri, String transactUri) {
  141.         PrimitiveElement root = new PrimitiveElement(ImpsTags.WV_CSP_Message);
  142.         root.setAttribute(ImpsTags.XMLNS, versionUri);
  143.         PrimitiveElement sessionElem = root.addChild(ImpsTags.Session);
  144.         PrimitiveElement sessionDescElem = sessionElem.addChild(
  145.                 ImpsTags.SessionDescriptor);
  146.         sessionDescElem.addChild(ImpsTags.SessionType,
  147.                 getSessionType().toString());
  148.         if (getSessionId() != null) {
  149.             sessionDescElem.addChild(ImpsTags.SessionID, getSessionId());
  150.         }
  151.         PrimitiveElement transElem = sessionElem.addChild(ImpsTags.Transaction);
  152.         PrimitiveElement transDescElem = transElem.addChild(
  153.                 ImpsTags.TransactionDescriptor);
  154.         transDescElem.addChild(ImpsTags.TransactionMode,
  155.                 getTransactionMode().toString());
  156.         if (getTransactionID() != null) {
  157.             transDescElem.addChild(ImpsTags.TransactionID, getTransactionID());
  158.         }
  159.         PrimitiveElement transContentElem = transElem.addChild(
  160.                 ImpsTags.TransactionContent);
  161.         transContentElem.setAttribute(ImpsTags.XMLNS, transactUri);
  162.         transContentElem.addChild(getContentElement());
  163.         return root;
  164.     }
  165.     /**
  166.      * Represents the transaction mode of a primitive.
  167.      */
  168.     public static enum TransactionMode {
  169.         /**
  170.          * Indicates the primitive is a request in a transaction.
  171.          */
  172.         Request,
  173.         /**
  174.          * Indicates the primitive is a response in a transaction.
  175.          */
  176.         Response
  177.     }
  178.     /**
  179.      * Represents the session type of a primitive.
  180.      */
  181.     public static enum SessionType {
  182.         /**
  183.          * Indicates a primitive is sent within a session.
  184.          */
  185.         Inband,
  186.         /**
  187.          * Indicates a primitive is sent without a session.
  188.          */
  189.         Outband
  190.     }
  191. }