| /* |
| * Copyright (C) 2007-2008 Esmertec AG. |
| * Copyright (C) 2007-2008 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.im.imps; |
| |
| import java.util.ArrayList; |
| import java.util.HashMap; |
| import java.util.Map.Entry; |
| |
| public class PtsCodes { |
| |
| private PtsCodes() { |
| } |
| |
| private static HashMap<String, String> sCodeToTransaction = new HashMap<String, String>(); |
| private static HashMap<String, String> sCodeToElement = new HashMap<String, String>(); |
| private static HashMap<String, String> sCodeToCapElement = new HashMap<String, String>(); |
| private static HashMap<String, String> sCodeToCapValue= new HashMap<String, String>(); |
| private static HashMap<String, String> sCodeToServiceTree = new HashMap<String, String>(); |
| private static HashMap<String, String> sCodeToPresenceAttribute = new HashMap<String, String>(); |
| |
| private static HashMap<String, String> sTransactionToCode = new HashMap<String, String>(); |
| private static HashMap<String, String> sElementToCode = new HashMap<String, String>(); |
| /*package*/ static HashMap<String, String> sCapElementToCode = new HashMap<String, String>(); |
| /*package*/ static HashMap<String, String> sCapValueToCode= new HashMap<String, String>(); |
| private static HashMap<String, String> sServiceTreeToCode = new HashMap<String, String>(); |
| static HashMap<String, String> sContactListPropsToCode = new HashMap<String, String>(); |
| private static HashMap<String, String> sPresenceAttributeToCode = new HashMap<String, String>(); |
| |
| private static ArrayList<String> sServerRequestTransactionCode = new ArrayList<String>(); |
| private static HashMap<String, String> sCodeToPAValue = new HashMap<String, String>(); |
| private static HashMap<String, String> sPAValueToCode = new HashMap<String, String>(); |
| |
| public static String getTransaction(String type) { |
| // not case sensitive |
| return sCodeToTransaction.get(type.toUpperCase()); |
| } |
| |
| public static String getElement(String type) { |
| // not case sensitive |
| return sCodeToElement.get(type.toUpperCase()); |
| } |
| |
| public static String getCapElement(String type) { |
| // not case sensitive |
| return sCodeToCapElement.get(type.toUpperCase()); |
| } |
| |
| public static String getCapValue(String type) { |
| // not case sensitive |
| return sCodeToCapValue.get(type.toUpperCase()) == null ? |
| type : sCodeToCapValue.get(type.toUpperCase()); |
| } |
| |
| public static String getServiceTreeValue(String type) { |
| // not case sensitive |
| return sCodeToServiceTree.get(type.toUpperCase()); |
| } |
| |
| public static String getTxCode(String txType) { |
| return sTransactionToCode.get(txType); |
| } |
| |
| public static String getElementCode(String elemType, String transactionType) { |
| if (ImpsTags.PresenceSubList.equals(elemType)) { |
| return ImpsTags.UpdatePresence_Request.equals(transactionType) ? "UV" : "PS"; |
| } |
| |
| return sElementToCode.get(elemType); |
| } |
| |
| public static String getCapElementCode(String elemType) { |
| return sCapElementToCode.get(elemType); |
| } |
| |
| public static String getCapValueCode(String value) { |
| return sCapValueToCode.get(value); |
| } |
| |
| public static String getServiceTreeCode(String elemType) { |
| return sServiceTreeToCode.get(elemType); |
| } |
| |
| public static String getPresenceAttributeCode(String elemType){ |
| return sPresenceAttributeToCode.get(elemType); |
| } |
| |
| public static String getPresenceAttributeElement(String code) { |
| // not case sensitive |
| return sCodeToPresenceAttribute.get(code.toUpperCase()); |
| } |
| |
| public static String getPAValue(String code) { |
| // not case sensitive |
| String value = sCodeToPAValue.get(code.toUpperCase()); |
| |
| return value == null ? code : value; |
| } |
| |
| public static String getPAValueCode(String value) { |
| // not case sensitive |
| String code = sPAValueToCode.get(value.toUpperCase()); |
| return code == null ? value : code; |
| } |
| |
| public static boolean isServerRequestCode(String type) { |
| for (String code : sServerRequestTransactionCode) { |
| if (code.equals(type)) { |
| return true; |
| } |
| } |
| |
| return false; |
| } |
| |
| // Fundamental primitives and transactions |
| public static final String ClientCapability_Response = "PC"; |
| public static final String Disconnect = "DI"; |
| // public static final String GetList_Request = "GL"; |
| public static final String GetList_Response = "LG"; |
| // public static final String KeepAlive_Request = "KA"; |
| public static final String KeepAlive_Response = "AK"; |
| public static final String Login_Response = "RL"; |
| // public static final String Logout_Request = "OR"; |
| // public static final String Polling_Request = "PO"; |
| // public static final String Service_Request = "SQ"; |
| public static final String Service_Response = "QS"; |
| public static final String Status = "ST"; // the same for the element "Status" |
| public static final String ListManage_Response = "ML"; |
| public static final String PresenceNotification = "PN"; |
| public static final String GetPresence_Response = "PG"; |
| // public static final String Disconnect = "Disconnect"; |
| // public static final String KeepAlive_Request = "KeepAlive-Request"; |
| // public static final String KeepAlive_Response = "KeepAlive-Response"; |
| // public static final String Service_Request = "Service-Request"; |
| // public static final String Service_Response = "Service-Response"; |
| |
| // Information elements |
| public static final String AllFunctions = "AF"; |
| public static final String CapabilityList = "CA"; |
| public static final String AgreedCapabilityList = "AP"; |
| public static final String CapabilityRequest = "CR"; |
| public static final String ClientID = "CI"; |
| public static final String ContactList = "CL"; |
| public static final String DefaultContactList = "DC"; |
| public static final String DigestSchema = "DI"; |
| public static final String Nonce = "NO"; |
| public static final String NotAvailableFunctions = "NF"; |
| public static final String KeepAliveTime = "KA"; |
| public static final String SessionID = "SI"; |
| public static final String DefaultList = "DL"; |
| public static final String UserNickList = "UN"; |
| public static final String ContactListProps = "CP"; |
| public static final String Presence = "PR"; |
| |
| // Contact list properties |
| public static final String DisplayName = "DN"; |
| public static final String Default = "DE"; |
| |
| static { |
| sTransactionToCode.put(ImpsTags.Login_Request, "LR"); |
| sTransactionToCode.put(ImpsTags.ClientCapability_Request, "CP"); |
| sTransactionToCode.put(ImpsTags.Service_Request, "SQ"); |
| sTransactionToCode.put(ImpsTags.Logout_Request, "OR"); |
| sTransactionToCode.put(ImpsTags.Status, "ST"); |
| sTransactionToCode.put(ImpsTags.GetList_Request, "GL"); |
| sTransactionToCode.put(ImpsTags.CreateList_Request, "CL"); |
| sTransactionToCode.put(ImpsTags.DeleteList_Request, "DL"); |
| sTransactionToCode.put(ImpsTags.ListManage_Request, "LM"); |
| sTransactionToCode.put(ImpsTags.GetPresence_Request, "GP"); |
| sTransactionToCode.put(ImpsTags.SubscribePresence_Request, "SB"); |
| sTransactionToCode.put(ImpsTags.GetBlockedList_Request, "GB"); |
| sTransactionToCode.put(ImpsTags.CreateAttributeList_Request, "CA"); |
| sTransactionToCode.put(ImpsTags.Polling_Request, "PO"); |
| sTransactionToCode.put(ImpsTags.UpdatePresence_Request, "UP"); |
| |
| sElementToCode.put(ImpsTags.ClientID, ClientID); |
| sElementToCode.put(ImpsTags.DigestSchema, "SH"); |
| sElementToCode.put(ImpsTags.DigestBytes, "DB"); |
| sElementToCode.put(ImpsTags.Password, "PW"); |
| sElementToCode.put(ImpsTags.SessionCookie, "SC"); |
| sElementToCode.put(ImpsTags.TimeToLive, "TL"); |
| sElementToCode.put(ImpsTags.UserID, "UI"); |
| sElementToCode.put(ImpsTags.CapabilityList, CapabilityList); |
| sElementToCode.put(ImpsTags.Functions, "RF"); |
| sElementToCode.put(ImpsTags.AllFunctionsRequest, "AR"); |
| sElementToCode.put(ImpsTags.Result, "ST"); |
| sElementToCode.put(ImpsTags.ContactList, "CL"); |
| sElementToCode.put(ImpsTags.NickList, "UN"); |
| sElementToCode.put(ImpsTags.AddNickList, "AN"); |
| sElementToCode.put(ImpsTags.RemoveNickList, "RN"); |
| sElementToCode.put(ImpsTags.ContactListProperties, "CP"); |
| sElementToCode.put(ImpsTags.ReceiveList, "RL"); |
| sElementToCode.put(ImpsTags.PresenceSubList, "PS"); |
| sElementToCode.put(ImpsTags.DefaultList, DefaultList); |
| sElementToCode.put(ImpsTags.AutoSubscribe, "AS"); |
| |
| sCodeToTransaction.put(ClientCapability_Response, ImpsTags.ClientCapability_Response); |
| sCodeToTransaction.put(Disconnect, ImpsTags.Disconnect); |
| sCodeToTransaction.put(GetList_Response, ImpsTags.GetList_Response); |
| sCodeToTransaction.put(KeepAlive_Response, ImpsTags.KeepAlive_Response); |
| sCodeToTransaction.put(Login_Response, ImpsTags.Login_Response); |
| sCodeToTransaction.put(Service_Response, ImpsTags.Service_Response); |
| sCodeToTransaction.put(Status, ImpsTags.Status); |
| sCodeToTransaction.put(ListManage_Response, ImpsTags.ListManage_Response); |
| sCodeToTransaction.put(PresenceNotification, ImpsTags.PresenceNotification_Request); |
| sCodeToTransaction.put(GetPresence_Response, ImpsTags.GetPresence_Response); |
| |
| sCodeToElement.put(AllFunctions, ImpsTags.AllFunctions); |
| sCodeToElement.put(CapabilityList, ImpsTags.CapabilityList); |
| sCodeToElement.put(CapabilityRequest, ImpsTags.CapabilityRequest); |
| sCodeToElement.put(ClientID, ImpsTags.ClientID); |
| sCodeToElement.put(ContactList, ImpsTags.ContactList); |
| sCodeToElement.put(DigestSchema, ImpsTags.DigestSchema); |
| sCodeToElement.put(Nonce, ImpsTags.Nonce); |
| sCodeToElement.put(NotAvailableFunctions, ImpsTags.NotAvailableFunctions); |
| sCodeToElement.put(KeepAliveTime, ImpsTags.KeepAliveTime); |
| sCodeToElement.put(SessionID, ImpsTags.SessionID); |
| sCodeToElement.put(Status, ImpsTags.Status); |
| sCodeToElement.put(DefaultList, ImpsTags.DefaultContactList); |
| sCodeToElement.put(UserNickList, ImpsTags.NickList); |
| sCodeToElement.put(Presence, ImpsTags.Presence); |
| |
| // Capability element <=> code |
| sCodeToCapElement.put("CT", ImpsTags.ClientType); |
| sCodeToCapElement.put("CI", ImpsTags.CIRHTTPAddress); |
| sCodeToCapElement.put("DL", ImpsTags.DefaultLanguage); |
| sCodeToCapElement.put("ID", ImpsTags.InitialDeliveryMethod); |
| sCodeToCapElement.put("MT", ImpsTags.MultiTrans); |
| sCodeToCapElement.put("PS", ImpsTags.ParserSize); |
| sCodeToCapElement.put("PM", ImpsTags.ServerPollMin); |
| sCodeToCapElement.put("SB", ImpsTags.SupportedBearer); |
| sCodeToCapElement.put("SC", ImpsTags.SupportedCIRMethod); |
| sCodeToCapElement.put("TA", ImpsTags.TCPAddress); |
| sCodeToCapElement.put("TP", ImpsTags.TCPPort); |
| sCodeToCapElement.put("UP", ImpsTags.UDPPort); |
| |
| for (Entry<String, String> e : sCodeToCapElement.entrySet()) { |
| sCapElementToCode.put(e.getValue(), e.getKey()); |
| } |
| |
| // Capability value <=> code |
| sCodeToCapValue.put("SS", "SSMS"); |
| sCodeToCapValue.put("ST", "STCP"); |
| sCodeToCapValue.put("SU", "SUDP"); |
| sCodeToCapValue.put("WS", "WAPSMS"); |
| sCodeToCapValue.put("WU", "WAPUDP"); |
| // value of ClientType |
| sCodeToCapValue.put("MP", ImpsConstants.PRESENCE_MOBILE_PHONE); |
| sCodeToCapValue.put("CO", ImpsConstants.PRESENCE_COMPUTER); |
| sCodeToCapValue.put("PD", ImpsConstants.PRESENCE_PDA); |
| sCodeToCapValue.put("CL", ImpsConstants.PRESENCE_CLI); |
| sCodeToCapValue.put("OT", ImpsConstants.PRESENCE_OTHER); |
| |
| for (Entry<String, String> e : sCodeToCapValue.entrySet()) { |
| sCapValueToCode.put(e.getValue(), e.getKey()); |
| } |
| |
| // Service Tree <=> code |
| sCodeToServiceTree.put("WV", ImpsTags.WVCSPFeat); |
| sCodeToServiceTree.put("FF", ImpsTags.FundamentalFeat); |
| sCodeToServiceTree.put("PF", ImpsTags.PresenceFeat); |
| sCodeToServiceTree.put("IF", ImpsTags.IMFeat); |
| sCodeToServiceTree.put("GE", ImpsTags.GroupFeat); |
| |
| for (Entry<String, String> e : sCodeToServiceTree.entrySet()) { |
| sServiceTreeToCode.put(e.getValue(), e.getKey()); |
| } |
| |
| sContactListPropsToCode.put(ImpsConstants.DisplayName, "DN"); |
| sContactListPropsToCode.put(ImpsConstants.Default, "DE"); |
| |
| // Presence Attribute <=> code. Only include the attributes our client supports |
| sCodeToPresenceAttribute.put("OS", ImpsTags.OnlineStatus); |
| sCodeToPresenceAttribute.put("CF", ImpsTags.ClientInfo); |
| sCodeToPresenceAttribute.put("UA", ImpsTags.UserAvailability); |
| sCodeToPresenceAttribute.put("ST", ImpsTags.StatusText); |
| sCodeToPresenceAttribute.put("SC", ImpsTags.StatusContent); |
| // sub-element of ClientInfo |
| sCodeToPresenceAttribute.put("CT", ImpsTags.ClientType); |
| sCodeToPresenceAttribute.put("CP", ImpsTags.ClientProducer); |
| sCodeToPresenceAttribute.put("CV", ImpsTags.ClientVersion); |
| // sub-element of StatusContent |
| sCodeToPresenceAttribute.put("RC", ImpsTags.ReferredContent); |
| sCodeToPresenceAttribute.put("CY", ImpsTags.ContentType); |
| |
| for (Entry<String, String> e : sCodeToPresenceAttribute.entrySet()) { |
| sPresenceAttributeToCode.put(e.getValue(), e.getKey()); |
| } |
| |
| sServerRequestTransactionCode.add(PresenceNotification); |
| |
| // value of UserAvailability |
| sCodeToPAValue.put("AV", ImpsConstants.PRESENCE_AVAILABLE); |
| sCodeToPAValue.put("DI", ImpsConstants.PRESENCE_DISCREET); |
| sCodeToPAValue.put("NA", ImpsConstants.PRESENCE_NOT_AVAILABLE); |
| // value of ClientType |
| sCodeToPAValue.put("MP", ImpsConstants.PRESENCE_MOBILE_PHONE); |
| sCodeToPAValue.put("CO", ImpsConstants.PRESENCE_COMPUTER); |
| sCodeToPAValue.put("PD", ImpsConstants.PRESENCE_PDA); |
| sCodeToPAValue.put("CL", ImpsConstants.PRESENCE_CLI); |
| sCodeToPAValue.put("OT", ImpsConstants.PRESENCE_OTHER); |
| |
| for (Entry<String, String> e : sCodeToPAValue.entrySet()) { |
| sPAValueToCode.put(e.getValue(), e.getKey()); |
| } |
| } |
| } |