/*
* Funambol is a mobile platform developed by Funambol, Inc.
* Copyright (C) 2003 - 2007 Funambol, Inc.
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU Affero General Public License version 3 as published by
* the Free Software Foundation with the addition of the following permission
* added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED
* WORK IN WHICH THE COPYRIGHT IS OWNED BY FUNAMBOL, FUNAMBOL DISCLAIMS THE
* WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
*
* This program 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 General Public License for more
* details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program; if not, see http://www.gnu.org/licenses or write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA.
*
* You can contact Funambol, Inc. headquarters at 643 Bair Island Road, Suite
* 305, Redwood City, CA 94063, USA, or at email address info@funambol.com.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License
* version 3, these Appropriate Legal Notices must retain the display of the
* "Powered by Funambol" logo. If the display of the logo is not reasonably
* feasible for technical reasons, the Appropriate Legal Notices must display
* the words "Powered by Funambol".
*/
package com.funambol.syncml.protocol;
/**
* Common definitions for SyncML protocol.
*/
public class SyncML {
//---------------------------------------------------------------- Constants
// SyncML tags
public static final String TAG_ALERT = "Alert" ;
public static final String TAG_ADD = "Add" ;
public static final String TAG_CMD = "Cmd" ;
public static final String TAG_CMDID = "CmdID" ;
public static final String TAG_CMDREF = "CmdRef" ;
public static final String TAG_DATA = "Data" ;
public static final String TAG_MORE_DATA = "MoreData" ;
public static final String TAG_DELETE = "Delete" ;
public static final String TAG_FORMAT = "Format" ;
public static final String TAG_ITEM = "Item" ;
public static final String TAG_LOC_URI = "LocURI" ;
public static final String TAG_LOC_NAME = "LocName" ;
public static final String TAG_MSGID = "MsgID" ;
public static final String TAG_MSGREF = "MsgRef" ;
public static final String TAG_REPLACE = "Replace" ;
public static final String TAG_MAP = "Map" ;
public static final String TAG_PUT = "Put" ;
public static final String TAG_SOURCE = "Source" ;
public static final String TAG_SOURCE_PARENT = "SourceParent" ;
public static final String TAG_SOURCEREF = "SourceRef" ;
public static final String TAG_STATUS = "Status" ;
public static final String TAG_SYNC = "Sync" ;
public static final String TAG_SYNCBODY = "SyncBody" ;
public static final String TAG_SYNCHDR = "SyncHdr" ;
public static final String TAG_SYNCML = "SyncML" ;
public static final String TAG_TARGET = "Target" ;
public static final String TAG_TARGETREF = "TargetRef" ;
public static final String TAG_TARGET_PARENT = "TargetParent" ;
public static final String TAG_TYPE = "Type" ;
public static final String TAG_META = "Meta" ;
public static final String TAG_METAINF = "MetaInf" ;
public static final String TAG_LOCURI = "LocURI" ;
public static final String TAG_LOCNAME = "LocName" ;
public static final String TAG_DEVINF = "DevInf" ;
public static final String TAG_VERDTD = "VerDTD" ;
public static final String TAG_DEVINFMAN = "Man" ;
public static final String TAG_DEVINFMOD = "Mod" ;
public static final String TAG_DEVINFOEM = "OEM" ;
public static final String TAG_DEVINFFWV = "FwV" ;
public static final String TAG_DEVINFSWV = "SwV" ;
public static final String TAG_DEVINFHWV = "HwV" ;
public static final String TAG_DEVINFDEVID = "DevID" ;
public static final String TAG_DEVINFDEVTYP = "DevTyp" ;
public static final String TAG_DEVINFUTC = "UTC" ;
public static final String TAG_DEVINFLO = "SupportLargeObjs";
public static final String TAG_DEVINFNC = "SupportNumberOfChanges";
public static final String TAG_DEVINFDATASTORE = "DataStore";
public static final String TAG_DATASTOREHS = "SupportHierarchicalSync";
public static final String TAG_DISPLAYNAME = "DisplayName";
public static final String TAG_MAXGUIDSIZE = "MaxGUIDSize";
public static final String TAG_RX = "Rx";
public static final String TAG_RXPREF = "Rx-Pref";
public static final String TAG_TX = "Tx";
public static final String TAG_TXPREF = "Tx-Pref";
public static final String TAG_CTTYPE = "CTType";
public static final String TAG_VERCT = "VerCT";
public static final String TAG_SYNCCAP = "SyncCap";
public static final String TAG_SYNCTYPE = "SyncType";
public static final String TAG_EXT = "Ext";
public static final String TAG_XNAM = "XNam";
public static final String TAG_XVAL = "XVal";
public static final String TAG_RESULTS = "Results";
public static final String TAG_CTCAP = "CTCap";
public static final String TAG_PROPERTY = "Property";
public static final String TAG_PROPNAME = "PropName";
public static final String TAG_MAXSIZE = "MaxSize";
public static final String TAG_MAXOCCUR = "MaxOccur";
public static final String TAG_DATATYPE = "DataType";
public static final String TAG_VALENUM = "ValEnum";
public static final String TAG_PROPPARAM = "PropParam";
public static final String TAG_PARAMNAME = "ParamName";
public static final String TAG_DSMEM = "DSMem";
public static final String TAG_SHAREDMEM = "SharedMem";
public static final String TAG_MAXMEM = "MaxMem";
public static final String TAG_MAXID = "MaxID";
public static final String TAG_VERPROTO = "VerProto";
public static final String TAG_SESSIONID = "SessionID";
public static final String TAG_LAST = "Last";
public static final String TAG_NEXT = "Next";
public static final String TAG_ANCHOR = "Anchor";
public static final String TAG_NUMBEROFCHANGES = "NumberOfChanges";
public static final String TAG_FINAL = "Final";
public static final String TAG_NEXTNONCE = "NextNonce";
public static final String TAG_CHAL = "Chal";
public static final String TAG_RESPURI = "RespURI";
public static final String TAG_SIZE = "Size";
public static final String TAG_NORESP = "NoResp";
public static final String TAG_GET = "Get";
public static final String TAG_CRED = "Cred";
public static final String TAG_LANG = "Lang";
public static final String TAG_MAXMSGSIZE = "MaxMsgSize";
public static final String TAG_MAXOBJSIZE = "MaxObjSize";
public static final String TAG_MAPITEM = "MapItem";
public static final String TAG_NEXT_NONCE = "NextNonce";
public static final String TAG_VERSION = "Version";
public static final String DEVINF12 = "./devinf12";
// Authentication types
public static final String AUTH_TYPE_MD5 = "syncml:auth-md5" ;
public static final String AUTH_TYPE_BASIC = "syncml:auth-basic";
public static final String AUTH_TYPE_HMAC = "syncml:auth-MAC" ;
public static final String AUTH_NONE = "none" ;
//Alert Codes
public static final int ALERT_CODE_NONE = 0 ;
public static final int ALERT_CODE_FAST = 200 ;
public static final int ALERT_CODE_SLOW = 201 ;
public static final int ALERT_CODE_ONE_WAY_FROM_CLIENT = 202 ;
public static final int ALERT_CODE_REFRESH_FROM_CLIENT = 203 ;
public static final int ALERT_CODE_ONE_WAY_FROM_SERVER = 204 ;
public static final int ALERT_CODE_REFRESH_FROM_SERVER = 205 ;
public static final int ALERT_CODE_TWO_WAY_BY_SERVER = 206 ;
public static final int ALERT_CODE_ONE_WAY_FROM_CLIENT_BY_SERVER = 207;
public static final int ALERT_CODE_REFRESH_FROM_CLIENT_BY_SERVER = 208;
public static final int ALERT_CODE_ONE_WAY_FROM_SERVER_BY_SERVER = 209;
public static final int ALERT_CODE_REFRESH_FROM_SERVER_BY_SERVER = 210;
public static final int ALERT_CODE_NEXT_MESSAGE = 222;
public static final int ALERT_CODE_RESUME = 225;
public static final int ALERT_CODE_SUSPEND = 224;
//Extended alert codes defined by Funambol for custom sync
public static final int ALERT_CODE_ONE_WAY_FROM_CLIENT_NO_SLOW = 250;
public static final int ALERT_CODE_ONE_WAY_FROM_CLIENT_SLOW = 251;
public static final int ALERT_CODE_ONE_WAY_FROM_SERVER_SLOW = 252;
//------------------------------------------------------------- Private Data
private SyncHdr header;
private SyncBody body;
//--------------------------------------------------------------- Properties
//------------------------------------------------------------- Constructors
public SyncML() {}
/**
* Creates a new SyncML object from header and body.
*
* @param header the SyncML header - NOT NULL
* @param body the SyncML body - NOT NULL
*
*/
public SyncML(final SyncHdr header,
final SyncBody body) {
setSyncHdr(header);
setSyncBody(body);
}
// ---------------------------------------------------------- Public methods
/**
* Returns the SyncML header
*
* @return the SyncML header
*
*/
public SyncHdr getSyncHdr() {
return header;
}
/**
* Sets the SyncML header
*
* @param header the SyncML header - NOT NULL
*
* @throws IllegalArgumentException if header is null
*/
public void setSyncHdr(SyncHdr header) {
if (header == null) {
throw new IllegalArgumentException("header cannot be null");
}
this.header = header;
}
/**
* Returns the SyncML body
*
* @return the SyncML body
*
*/
public SyncBody getSyncBody() {
return body;
}
/**
* Sets the SyncML body
*
* @param body the SyncML body - NOT NULL
*
* @throws IllegalArgumentException if body is null
*/
public void setSyncBody(SyncBody body) {
if (body == null) {
throw new IllegalArgumentException("body cannot be null");
}
this.body = body;
}
/**
* Is this message the last one of the package?
*
* @return lastMessage
*/
public boolean isLastMessage() {
return body.isFinalMsg();
}
/**
* Sets lastMessage
*
* @param lastMessage the new lastMessage value
*
*/
public void setLastMessage() {
body.setFinalMsg(new Boolean(true));
}
//-----------------------------------------------------------Private Methods
}