⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 phonebook.java

📁 J2ME MIDP_Example_Applications
💻 JAVA
字号:
//// Copyright 2002 Nokia Corporation.//// THIS SOURCE CODE IS PROVIDED 'AS IS', WITH NO WARRANTIES WHATSOEVER,// EXPRESS OR IMPLIED, INCLUDING ANY WARRANTY OF MERCHANTABILITY, FITNESS// FOR ANY PARTICULAR PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE// OR TRADE PRACTICE, RELATING TO THE SOURCE CODE OR ANY WARRANTY OTHERWISE// ARISING OUT OF ANY PROPOSAL, SPECIFICATION, OR SAMPLE AND WITH NO// OBLIGATION OF NOKIA TO PROVIDE THE LICENSEE WITH ANY MAINTENANCE OR// SUPPORT. FURTHERMORE, NOKIA MAKES NO WARRANTY THAT EXERCISE OF THE// RIGHTS GRANTED HEREUNDER DOES NOT INFRINGE OR MAY NOT CAUSE INFRINGEMENT// OF ANY PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS OWNED OR CONTROLLED// BY THIRD PARTIES//// Furthermore, information provided in this source code is preliminary,// and may be changed substantially prior to final release. Nokia Corporation// retains the right to make changes to this source code at any time,// without notice. This source code is provided for informational// purposes only.//// Nokia and Nokia Connecting People are registered trademarks of Nokia// Corporation. Java and all Java-based marks are trademarks or registered// trademarks of Sun Microsystems, Inc. Other product and company names// mentioned herein may be trademarks or trade names of their respective owners.// A non-exclusive, non-transferable, worldwide, limited license is hereby// granted to the Licensee to download, print, reproduce and modify the// source code. The licensee has the right to market, sell, distribute and// make available the source code in original or modified form only when// incorporated into the programs developed by the Licensee. No other// license, express or implied, by estoppel or otherwise, to any other// intellectual property rights is granted herein.//import javax.microedition.rms.*;import java.util.*;class PhoneBook{    private final static String RSNAME = "phonebook";    private final static char DELIMITER = '|';    private static PhoneBook phoneBook;    private static Vector names = new Vector();    private static Vector phones = new Vector();    static PhoneBook getPhoneBook()    {        if (phoneBook == null)        {            phoneBook = new PhoneBook();        }        return phoneBook;    }    private PhoneBook()    {        try        {            RecordStore rs = RecordStore.openRecordStore(RSNAME, true);            int peerNum = rs.getNumRecords();            for (int i = 0; i < peerNum; i++)            {                byte[] byteRec = rs.getRecord(i + 1);                String peer = new String(byteRec);                names.addElement(peer.substring(0, peer.indexOf(DELIMITER)));                phones.addElement(peer.substring(peer.indexOf(DELIMITER) + 1));            }            rs.closeRecordStore();        }        catch (RecordStoreException e)        {            ErrorScreen.showError("Open RMS Error");        }    }    synchronized String getName(String phoneNumber)    {        int index = phones.indexOf(phoneNumber);        return (index != -1) ? (String) names.elementAt(index) : null;    }    synchronized String getPhoneNumber(String name)    {        int index = names.indexOf(name);        return (index != -1) ? (String) phones.elementAt(index) : null;    }    synchronized String[] getNames()    {        String[] names = null;        if (this.names.size() > 0)        {            names = new String[this.names.size()];            this.names.copyInto(names);        }        return names;    }    synchronized String[] getNames(String[] phones)    {        String[] names = new String[phones.length];        for (int i = 0; i < names.length; i++)        {            names[i] = getName(phones[i]);        }        return names;    }    synchronized String validate(String peerName, String peerAddress)    {        int i;        String name = null;        String peerNum = (peerAddress.indexOf(':') == -1) ?            peerAddress :            peerAddress.substring(0, peerAddress.indexOf(':'));        for (i = 0; i < phones.size(); i++)        {            String phoneNumber = (String) phones.elementAt(i);            String phoneNum = (phoneNumber.indexOf(':') == -1) ?                phoneNumber :                phoneNumber.substring(0, phoneNumber.indexOf(':'));            // Only simple string-based matching of the phone numbers is            // performed below. More advanced matching based on the 'number            // structure' or 'numbering plan' of phone numbers is not            // performed. Specifically, we do not check if a phone number            // string using global number structure (e.g. "+3585012345"),            // matches a previously saved phone number that used a local            // structure within some geographic area (e.g. "05012345"            // dialed within Finland).            if (peerNum.equals(phoneNum))            {                name = (String) names.elementAt(i);                update(name, peerAddress);                break;            }        }        if (i == phones.size())        {            // new peer            for (i = 0; i < names.size(); i++)            {                name = (String) names.elementAt(i);                if (peerName.toLowerCase().equals(name.toLowerCase()))                { // name exists, use name' instead                    name = peerName + '\'';                    update(name, peerAddress);                    break;                }            }            if (i == names.size())            {                // brand new, save to rms                update(peerName, peerAddress);                name = peerName;            }        }        return name;    }    synchronized void update(String peerName, String peerAddress)    {        String peername = peerName.toLowerCase();        int i;        for (i = 0; i < names.size(); i++)        {            String name = ((String) names.elementAt(i)).toLowerCase();            String phoneNumber = (String) phones.elementAt(i);            if (peername.equals(name) || peerAddress.equals(phoneNumber))            {                if (peername.equals(name) && peerAddress.equals(phoneNumber))                {                    return;                }                names.setElementAt(peerName, i);                phones.setElementAt(peerAddress, i);                break;            }        }        if (i == names.size())        {            names.insertElementAt(peerName, 0);            phones.insertElementAt(peerAddress, 0);        }        updateRecordStore();    }    synchronized void removeEntries(String[] peerNames)    {        for (int i = 0; i < peerNames.length; i++)        {            int index = names.indexOf(peerNames[i]);            names.removeElementAt(index);            phones.removeElementAt(index);        }        updateRecordStore();    }    synchronized void updateRecordStore()    {        try        {            RecordStore.deleteRecordStore(RSNAME);            RecordStore rs = RecordStore.openRecordStore(RSNAME, true);            for (int i = 0; i < names.size(); i++)            {                String peer = (String) names.elementAt(i) + DELIMITER +                    (String) phones.elementAt(i);                rs.addRecord(peer.getBytes(), 0, peer.length());            }            rs.closeRecordStore();        }        catch (RecordStoreException e)        {            ErrorScreen.showError("Update RMS Error!");        }        return;    }}

⌨️ 快捷键说明

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