syncclientconfig.java

来自「moblie syncml mail javame」· Java 代码 · 共 183 行

JAVA
183
字号
/*
 * 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.mailclient.sm;

import com.funambol.storage.Serializable;
import java.io.DataOutputStream;
import java.io.DataInputStream;
import java.io.IOException;

import java.util.Random;
import com.funambol.util.Log;


/**
 * Configuration data for the SyncClient implementation.
 */
public class SyncClientConfig implements Serializable {

    /** Name for the syncClient configuration */
    public static final String CONFIGNAME = "syncml.config" ;
    
    // This field contains a version string of the configuration data
    private static final int VERSION = 100 ;
    
    //--------------------------------------------------------------- Attributes
    /** The configuration version loaded from the store */
    private long version;
    
    /** Device Id */
    private String deviceId;

    /** Hash code for the device info parameters */
    private int devInfHash;
    
    /**
     * The URL (without session ID) of the server the client was connected to.
     * It is used to compare the current server URL coming from the Account to
     * decide if the client has to send its device capabilities
     */
    private String lastSyncUrl;

    //------------------------------------------------------------- Constructors
    
    /**
     * Default constructor. Sets default configuration values.
     */
    public SyncClientConfig() {
        version = VERSION;
        deviceId = "";
        devInfHash = 0;
        lastSyncUrl = "";
    }

    /**
     * Generates a new device id.
     */
    public void generateDeviceId() {
        Random r = new Random();
        StringBuffer s = new StringBuffer("fjm-");
        //#ifdef isBlackberry
        // we add the bb identifier
        //# s.append("bb-");
        //#endif

        s.append(Long.toString(System.currentTimeMillis(),16));
        s.append(Integer.toHexString(r.nextInt()));

        deviceId = s.toString();

        Log.info("New device id: " + deviceId);
    }

    /** Returns the device id. */
    public String getDeviceId() {
        return deviceId;
    }
    
    /**
     * Set the device ID as wished (usually got from the JAD, to avoid
     * generating a new device ID every time you build the sources)
     */
    public void setDeviceId(String id) {
        deviceId = id;
    }

    /** Return the Device Info parameters hashcode */
    public int getDevInfHash() {
        return devInfHash;
    }
    
    /**
     * Returns the server URL (without the session ID added by the servlet)
     * stored after the last connection to the server
     */
    public String getLastSyncUrl() {
        return lastSyncUrl;
    }
    
    /**
     * Sets the server URL (without the session ID added by the servlet)
     * to be stored after the last connection to the server
     */
    public void setLastSyncUrl(String url) {
        lastSyncUrl = url;
    }

    //---------------------------------------------- Serializable implementation

    /**
     * Write object fields to the output stream.
     * @param out Output stream
     * @throws IOException
     */
    public void serialize(DataOutputStream out) throws IOException {
        out.writeInt(VERSION);
        out.writeUTF(deviceId);
        out.writeInt(devInfHash);
        out.writeUTF(lastSyncUrl);
    }

    /**
     * Read object field from the input stream.
     * @param in Input stream
     * @throws IOException
     */
    public void deserialize(DataInputStream in) throws IOException {
        int savedVer = in.readInt();
        if (savedVer != VERSION) {
            Log.error("Config version mismatch: use default.");
            // TODO: Handle backward compatibilty
            return;
        }

        version = savedVer;
        deviceId = in.readUTF();
        devInfHash = in.readInt();
        lastSyncUrl = in.readUTF();
    }
    
    public String toString() {
        StringBuffer sb = new StringBuffer("SyncClient Config:\n");
        sb.append("DeviceId: " + this.deviceId + "\n");
        sb.append("DevInfo hash: " + this.devInfHash + "\n");

        return sb.toString();
    }

}

⌨️ 快捷键说明

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