亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? maildb.java

?? 手機郵箱撒的方式方式方式的
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
/*MujMail - Simple mail client for J2MECopyright (C) 2006 Nguyen Son Tung <n.sontung@gmail.com>Copyright (C) 2006 Martin Stefan <martin.stefan@centrum.cz>Copyright (C) 2008 David Hauzar <david.hauzar.mujmail@gmail.com>This program is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2 of the License, or(at your option) any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */package mujmail;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.util.Enumeration;import java.util.Vector;import javax.microedition.rms.InvalidRecordIDException;import javax.microedition.rms.RecordEnumeration;import javax.microedition.rms.RecordStore;import javax.microedition.rms.RecordStoreException;import javax.microedition.rms.RecordStoreNotOpenException;import mujmail.tasks.StoppableBackgroundTask;import mujmail.threading.Algorithm;import mujmail.ui.OKCancelDialog;import mujmail.util.Callback;import mujmail.util.Functions;import mujmail.util.StartupModes;/** * Provides functions for storing mail headers and low level functions * for storing fragments of body parts of mails used in class {@link RMSStorage}. */public class MailDB {    /** True if mail header are actually saved. */    //private boolean savingHeader = false;    /** The name of this source file */    private static final String SOURCE_FILE = "MailDB";    /** Flag signals if we want to print debug prints */    private static final boolean DEBUG = false; /// Debugging output for this file    /** The number of headers to delete from headers database if database is full. */    private static final int NUM_HEADERS_TO_DELETE_IF_DB_FULL = 5;    /** The size of free space in header database when start to delete headers or notice user that the space is left. */    private static final int FREE_SPACE_IN_HEADER_DB_WHEN_DELETE_HEADERS = 3000;    private final static byte RUNMODE_LOAD = 1;    private final static byte RUNMODE_DELETE_ALL_MAILS = 2;    private final static byte RUNMODE_DELETE_MAIL = 3;    public final static String safeModeDBFile = "safemodeStore";        //Vector hdrRefer; // TODO (Betlista): I not sure if it is safe to store reference to storage    //   for example: when there is new e-mail all mails have to be threaded    //   and this operation recreates new storage (creates new instance), so this    //   is the reason why it should NOT to store reference        /** Database file name where mail are stored */    private String dbName;    /** The dbLoadingTask that loads the database. */    private StoppableBackgroundTask dbLoadingTask = null;    private boolean busy; /// Marks if running any dbLoadingTask (loading or deleteing, adding) or all dbLoadingTask had been finnished    private Object notifier = new Object(); /// Object on which wait fo beeing notify        public MailDB(String dbName) {        busy = true;        this.dbName = dbName;    }    /**     * Loads headers in this database in new thread.     * @param reportBox box which db become to     */    public void loadDB(PersistentBox reportBox) {        if (DEBUG) { System.out.println("MailDB.loadDB - " + dbName); }        // TODO: set max priority to this dbLoadingTask        busy = true;        dbLoadingTask = new MailDBTask(reportBox, RUNMODE_LOAD);        dbLoadingTask.disableDisplayingProgress();        dbLoadingTask.disableDisplayingUserActionRunnerUI();        dbLoadingTask.start(reportBox);    }    public StoppableBackgroundTask getDBLoadingTask() {        return dbLoadingTask;    }    /**     * Delete all mails marked as to markAsDeleted.     * @param reportBox box which db become to     */    public void deleteMails(PersistentBox reportBox) {        // TODO: set max priority to this dbLoadingTask        busy = true;        StoppableBackgroundTask task = new MailDBTask(reportBox, RUNMODE_DELETE_ALL_MAILS);        task.disableDisplayingProgress();        task.start(reportBox);    }    /**     * Deletes mail from database. Does not update the vector where the mail     * is stored in TheBox.     * @param header     */    public void deleteMail(MessageHeader header, PersistentBox reportBox) {        if (this != header.getMailDB()) {            throw new RuntimeException("Called on bad database");        }        // TODO: set max priority to this dbLoadingTask        MailDBTask task = new MailDBTask(reportBox, RUNMODE_DELETE_MAIL);        task.setMessageHeaderToDelete(header);        task.disableDisplayingProgress();        task.start(reportBox);        //task.doWork();    }    public String getDBName() {        return dbName;    }        public boolean isBusy() {        return busy;    }        /** @return Block and wait until any of running tasks end.      *    Returns immediatelly if no dbLoadingTask running. */    public void waitForTaskEnd() {        if (DEBUG) { System.out.println("DEBUG AccountSettings.waitForAccountsLoading .. in"); }        try {            synchronized(notifier) {                if (!busy) return;                notifier.wait();            }        } catch (Exception e) {            System.out.println(e.toString());            e.printStackTrace();        }        if (DEBUG) { System.out.println("DEBUG AccountSettings.waitForAccountsLoading .. out"); }    }    /**     * This method clears all records in the database.      * By default removes all message bodies.     * @param headers If set remove message headers too.     */    public void clearDb(boolean headers) throws MyException {        boolean exception = false; // Mark if exception raise                // Body db        {            try {                RecordStore.deleteRecordStore(dbName);            } catch (Exception ex) {                exception = true;                if (DEBUG) {                     System.out.println("DEBUG MailDB.clearDB - removing mail body problem from DB: " + dbName);                    System.out.println(ex);                    ex.printStackTrace();                }            }        }        // Headers db        if (headers) {            try {                RecordStore.deleteRecordStore(dbName + "_H");            } catch (Exception ex) {                exception = true;                if (DEBUG) {                     System.out.println("DEBUG MailDB.clearDB - removing mail headers db problem DB: " + dbName + "_H");                    System.out.println(ex);                    ex.printStackTrace();                }            }        }        // throw exception if problem        if (exception) {            throw new MyException(MyException.DB_CANNOT_CLEAR);        }    }      /**     * This method saves a bodypart of a message as a new record in a different RecordStore which name is determined TheBox.name     * @param body - a String that is supposed to be save. Whole bodypart is stored as one String. The other information     * about the bodypart are hold in a <code>Vector</code> and stored separatly.     * Then we return an index which will be stored in bodyPart.recordID.     * Synchronization is ensured by the rms system.     *      * @see RMSStorage     */    int saveFragmentBodypartContent(String body, boolean safeMode) throws MyException {        if (DEBUG) {            System.out.println("MailDB.saveBodypartContent: " + body);        }        int index = -1;        if (body.length() == 0) {            body = "<no content>";        } //we must do this, because sending a mail, without a body is supported		          //we will try to minimize using DB by recycling common record store safeModeDBFile for mails        if (DEBUG) {            System.out.println("Saving body part content");        }        RecordStore bodyRS = Functions.openRecordStore(safeMode?safeModeDBFile:dbName, true);        try {            ByteArrayOutputStream byteStream = new ByteArrayOutputStream();            DataOutputStream outputStream = new DataOutputStream(byteStream);            outputStream.writeUTF(body);            outputStream.flush();            index = bodyRS.addRecord(byteStream.toByteArray(), 0, byteStream.size());            outputStream.close();            byteStream.close();        } catch (Exception ex) {            throw new MyException(MyException.DB_CANNOT_SAVE_BODY);        } finally {            Functions.closeRecordStore(bodyRS);        }        if (DEBUG) {            System.out.println("Body part content saved");        }        return index;    }    /**     * this method is for saving binary data     * @param body     * @param safeMode     * @return     * @throws MyException     *      * @see RMSStorage     */    int saveFragmentOfBodypartContent(byte[] body, boolean safeMode) throws MyException {        int index = -1;        if (DEBUG) {            System.out.println("Saving body part content raw");        }        RecordStore bodyRS = Functions.openRecordStore( safeMode?safeModeDBFile:dbName, true);        try {            index = bodyRS.addRecord(body, 0, body.length);        } catch (Exception ex) {            throw new MyException(MyException.DB_CANNOT_SAVE_BODY);        } finally {            Functions.closeRecordStore(bodyRS);        }        if (DEBUG) {            System.out.println("Body part content raw saved");        }        return index;    }    /**     * By this method we get the real content of a body part in byte[]. Can be used by a class that displays mails     * @param dbFileName     * @param recordID     * @return     * @throws MyException     *      * @see RMSStorage     */    static byte[] loadFragmentBodypartContentRaw(String dbFileName, int recordID) throws MyException {        byte[] body = null;        if (DEBUG) {            System.out.println("Loading body part content");        }        RecordStore bodyRS = Functions.openRecordStore(dbFileName, true);        try {            body = bodyRS.getRecord(recordID);        } catch (Exception ex) {            throw new MyException(MyException.DB_CANNOT_LOAD_BODY);        } finally {            Functions.closeRecordStore(bodyRS);        }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区小说| 2021久久国产精品不只是精品| 成人欧美一区二区三区| 精品日韩成人av| 久久精品国产99久久6| 精品人在线二区三区| 国产麻豆精品95视频| 久久精品人人做人人爽97| 国产乱码精品一品二品| 中文字幕欧美激情| 91毛片在线观看| 亚洲国产精品久久一线不卡| 91精品综合久久久久久| 久久精品国产99久久6| 国产拍揄自揄精品视频麻豆| 91久久精品网| 美女视频黄 久久| wwww国产精品欧美| 99久久久久免费精品国产| 亚洲综合一区二区| 精品电影一区二区三区| www.日本不卡| 日韩电影在线免费| 日本一区二区三区国色天香| 欧美性大战久久久| 国产一区二区三区黄视频| 亚洲人被黑人高潮完整版| 欧美精三区欧美精三区| 国产精品一区二区你懂的| 一区二区在线观看免费| 欧美xxxx老人做受| 91免费国产在线| 精品一区在线看| 亚洲精品视频一区| 26uuu国产在线精品一区二区| 一本一道久久a久久精品| 日本aⅴ精品一区二区三区| 国产精品久久三| 欧美一区二区黄色| 色婷婷亚洲精品| 国产乱子轮精品视频| 亚洲国产综合91精品麻豆| 久久午夜色播影院免费高清| 欧美性欧美巨大黑白大战| 国产精品1区二区.| 免费成人结看片| 亚洲精选一二三| 日本一区二区动态图| 欧美一级搡bbbb搡bbbb| 色噜噜偷拍精品综合在线| 国产在线精品一区二区三区不卡| 亚洲v日本v欧美v久久精品| 欧美高清一级片在线观看| 日韩欧美一区二区免费| 欧美日免费三级在线| 99国产精品视频免费观看| 国模冰冰炮一区二区| 日韩电影在线观看网站| 一区二区三区免费网站| 国产精品灌醉下药二区| 2023国产精品视频| 日韩免费一区二区三区在线播放| 欧美日韩一区二区三区在线看| 波多野结衣中文一区| 国产精品亚洲第一 | 亚洲欧美怡红院| 久久久蜜桃精品| 2023国产精品自拍| 久久人人爽人人爽| 久久综合色之久久综合| 日韩欧美在线网站| 日韩亚洲电影在线| 欧美一区二区三区视频免费 | 欧美色窝79yyyycom| 色婷婷av一区| 欧美丝袜丝nylons| 欧美在线观看一二区| 欧亚一区二区三区| 欧美无乱码久久久免费午夜一区 | 五月天国产精品| 午夜伊人狠狠久久| 日韩在线a电影| 日韩av一二三| 久久99在线观看| 国产福利91精品一区| 国产精品综合视频| 国产精品18久久久| 91网站最新网址| 91一区在线观看| 欧美午夜影院一区| 在线播放/欧美激情| 日韩视频一区在线观看| 精品国内二区三区| 国产精品天美传媒沈樵| 亚洲天天做日日做天天谢日日欢| 一区二区三区精品| 麻豆视频观看网址久久| 国产一区二区三区在线看麻豆| 国产激情视频一区二区三区欧美| 国产999精品久久| 91亚洲国产成人精品一区二区三 | 99re在线精品| 精品视频资源站| 欧美成人女星排名| 中文字幕国产一区二区| 亚洲综合色噜噜狠狠| 日韩专区一卡二卡| 国产成a人无v码亚洲福利| av不卡一区二区三区| 欧美日韩大陆一区二区| 精品88久久久久88久久久| 国产精品久久久久久久久动漫| 一区二区激情视频| 韩日av一区二区| 色诱亚洲精品久久久久久| 91精品国产麻豆| 中文字幕av免费专区久久| 亚洲一卡二卡三卡四卡无卡久久 | 午夜精品久久久久久久久久久| 九九热在线视频观看这里只有精品| 不卡免费追剧大全电视剧网站| 欧美三级日本三级少妇99| 久久久综合精品| 亚洲国产成人va在线观看天堂 | 成人污污视频在线观看| 欧美日韩视频一区二区| 国产日韩欧美精品一区| 三级亚洲高清视频| 91丨九色porny丨蝌蚪| 欧美一级久久久久久久大片| 成人免费在线播放视频| 久久99久久精品| 欧美丝袜丝交足nylons| 国产精品美女久久久久高潮| 日本美女一区二区| 欧日韩精品视频| 国产精品丝袜在线| 久久99精品国产91久久来源| 91欧美激情一区二区三区成人| 精品国产乱码91久久久久久网站| 一区二区三区欧美久久| 成人aa视频在线观看| 日韩精品最新网址| 日本人妖一区二区| 欧洲精品一区二区三区在线观看| 国产精品人妖ts系列视频| 九九在线精品视频| 日韩精品影音先锋| 日韩经典一区二区| 欧美日韩在线播| 亚洲黄色录像片| 91亚洲永久精品| 国产精品国产三级国产三级人妇| 国产一区二区三区在线观看免费视频| 欧美日韩大陆一区二区| 亚洲国产日日夜夜| 在线观看视频一区二区| 亚洲视频综合在线| 99精品在线观看视频| 国产精品久久久久影视| 国产麻豆日韩欧美久久| 精品国产1区二区| 国产一区在线不卡| 久久蜜桃一区二区| 国产精品影视网| 国产欧美日本一区视频| 国产一区二区三区免费在线观看| 日韩精品资源二区在线| 美日韩一级片在线观看| 日韩欧美在线影院| 国产米奇在线777精品观看| 精品国产伦理网| 国产精品原创巨作av| 中文字幕av免费专区久久| 成人黄色一级视频| 亚洲人成人一区二区在线观看| 色综合久久88色综合天天6| 一区二区三区在线观看动漫| 在线观看日韩精品| 日韩不卡手机在线v区| 日韩一区二区三区av| 精品在线免费观看| 国产日产亚洲精品系列| 91同城在线观看| 亚洲第一在线综合网站| 欧美一个色资源| 大白屁股一区二区视频| 亚洲美女视频在线观看| 欧美日韩不卡在线| 久久99这里只有精品| 中文字幕在线播放不卡一区| 91一区二区三区在线播放| 午夜日韩在线电影| 久久综合成人精品亚洲另类欧美 | 欧美精品乱码久久久久久按摩| 天堂影院一区二区| 久久午夜色播影院免费高清| 97se狠狠狠综合亚洲狠狠| 午夜精品久久久久久久99水蜜桃| 精品99999|