loadmessages.java

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

JAVA
184
字号
/*
 * 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".
 */


/*
 * LoadMessages.java
*/

package com.funambol.mailclient.test;

import com.funambol.mail.Folder;
import com.funambol.mail.MailException;
import com.funambol.mail.Message;
import com.funambol.mail.Store;
import com.funambol.mailclient.config.ConfigException;
import com.funambol.mailclient.mm.MessageManager;
import com.funambol.mailclient.ui.controller.UIController;
import com.funambol.util.Log;
import java.io.IOException;
import java.util.Date;
import java.util.Vector;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;


import com.funambol.storage.Serializable;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import com.funambol.storage.ObjectStore;
import javax.microedition.rms.RecordStoreException;
import javax.microedition.rms.RecordStore;

/**
 *
 * A test midlet to measure the loading time of the messages in the inbox.
 *
 * This midlet is supposed to be launched after a sync has been performed with
 * the standard application and some messages are stored in the rms.
 *
 * Pressing the start button will launch the test: the midlet will load the 
 * messages as the application does, and will return the time required 
 * for loading the messages (in msec) .
 *
 */

public class LoadMessages extends MIDlet implements CommandListener {
    
    //items
    private Command startCommand;
    private Command exitCommand;
    private TextField statusTF;
    
    
    
    public void startApp() {
        Display.getDisplay(this).setCurrent(getTheForm());
    }
    
    public void pauseApp() {
    }
    
    public void destroyApp(boolean unconditional) {
        notifyDestroyed();
    }
    
    /**
     * creates the form
     * @return the main form
     */
    private Form getTheForm() {
        
        Form f = new Form(" rms test ");
        startCommand = new Command("Start", Command.OK, 0);
        exitCommand = new Command("Exit", Command.EXIT, 0);
        f.setCommandListener(this);
        f.addCommand(startCommand);
        f.addCommand(exitCommand);
        f.append(getStatusTextField());
        return f;
    }
    
    /**
     * handle the command actions. if startCommand is selected, the test
     * is performed, if exitcommand is selected, the app is closed
     * 
     */
    public void commandAction(Command command, Displayable displayable) {
        
        if (command == startCommand) {
            startTest();
        }
        if (command == exitCommand) {
         destroyApp(false)   ;
        }
        
    }
    
    private TextField getStatusTextField() {
        if (statusTF == null) {
            statusTF=new TextField("Status" ,"",10000, TextField.UNEDITABLE);
        }
        return statusTF;
    }

    /**
     * run the test
     */
    private void startTest() {
        setStatus("Start!");
        try {

            setStatus("getting mm");
            MessageManager mm = MessageManager.getInstance();

            setStatus("init store");
            mm.initStore(false);
          
            setStatus("stating to load folderinfo");
            Folder f= mm.getFolder(MessageManager.INBOX);
            
            long memBefore = Runtime.getRuntime().freeMemory();
            long before = System.currentTimeMillis();

            setStatus("folder loaded at " + before + ", getting list");
            Message[] list = f.getMsgHeaders();
            long after = System.currentTimeMillis();

            long memAfter = Runtime.getRuntime().freeMemory();
            int avgSize = (int)(memBefore-memAfter)/list.length;
            Log.error("Average message size: " + avgSize);

            setStatus("loaded "  + list.length +  " messages in "
                    + (after - before) + " msec" + "\nAverage message size "
                    + avgSize);

        } catch (MailException ex) {
            ex.printStackTrace();
            setStatus("Mailexception");
        }
        
     }
    
    private void setStatus(String s) {
        
        //error level to be sure to log it.
        Log.error("[LoadMessagesTest] " + s);
        getStatusTextField().setString(s);
        
    }
    
}

⌨️ 快捷键说明

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