|
MID ÇÁ·ÎÇÊ | ||||||||||
PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |
See:
Description
Interface Summary | |
RecordComparator | µÎ ·¹Äڵ带 ºñ±³ÇÏ¿©(±¸Çö ½Ã Á¤ÀÇÇÏ´Â ¹æ¹ýÀ¸·Î) ÀÏÄ¡ ¿©ºÎ ¶Ç´Â »ó´ëÀû Á¤·Ä ¼ø¼¸¦ È®ÀÎÇÏ´Â ºñ±³±â¸¦ Á¤ÀÇÇÏ´Â ÀÎÅÍÆäÀ̽º. |
RecordEnumeration | ¾ç¹æÇâ ·¹ÄÚµå ÀúÀå¼Ò Record ¿°ÅÀÚ¸¦ Ç¥½ÃÇÏ´Â ÀÎÅÍÆäÀ̽º. |
RecordFilter | ·¹Äڵ尡 ÀÏÄ¡ÇÏ´ÂÁö(ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ Á¤ÀÇÇÑ ±âÁØ¿¡ ±â¹ÝÇÏ¿©) Á¶»çÇÏ´Â ÇÊÅ͸¦ Á¤ÀÇÇÏ´Â ÀÎÅÍÆäÀ̽º. |
RecordListener | ·¹ÄÚµå ÀúÀå¼Ò¿¡¼ ·¹ÄÚµå º¯°æ/Ãß°¡/»èÁ¦ À̺¥Æ®¸¦ ¼ö½ÅÇÏ´Â ¼ö½Å±â ÀÎÅÍÆäÀ̽º |
Class Summary | |
RecordStore | ·¹ÄÚµå ÀúÀå¼Ò¸¦ ³ªÅ¸³»´Â Ŭ·¡½º. |
Exception Summary | |
InvalidRecordIDException | ·¹ÄÚµå ID°¡ À¯È¿ÇÏÁö ¾Ê¾Æ ÀÛ¾÷ÀÌ ¿Ï·áµÉ ¼ö ¾øÀ½À» Ç¥½ÃÇϱâ À§ÇØ ¹ß»ýÇÕ´Ï´Ù. |
RecordStoreException | ·¹ÄÚµå ÀúÀå¼Ò ÀÛ¾÷¿¡¼ ÀÏ¹Ý ¿¹¿Ü°¡ ¹ß»ýÇßÀ½À» Ç¥½ÃÇϱâ À§ÇØ ¹ß»ýÇÕ´Ï´Ù. |
RecordStoreFullException | ·¹ÄÚµå ÀúÀå ½Ã½ºÅÛ ÀúÀå¼Ò°¡ °¡µæ Â÷¼ ÀÛ¾÷À» ¿Ï·áÇÒ ¼ö ¾øÀ½À» Ç¥½ÃÇϱâ À§ÇØ ¹ß»ýÇÕ´Ï´Ù. |
RecordStoreNotFoundException | ·¹ÄÚµå ÀúÀå¼Ò¸¦ ãÀ» ¼ö ¾ø¾î ÀÛ¾÷À» ¿Ï·áÇÒ ¼ö ¾øÀ½À» Ç¥½ÃÇϱâ À§ÇØ ¹ß»ýÇÕ´Ï´Ù. |
RecordStoreNotOpenException | ´ÝÈù ·¹ÄÚµå ÀúÀå¼Ò¿¡¼ ÀÛ¾÷À» ½ÃµµÇÏ¿´À½À» Ç¥½ÃÇϱâ À§ÇØ ¹ß»ýÇÕ´Ï´Ù. |
¸ð¹ÙÀÏ Á¤º¸ ÀåÄ¡ ÇÁ·ÎÇÊÀº MIDletÀÌ ¿µ±¸ÀûÀ¸·Î µ¥ÀÌÅ͸¦ ÀúÀåÇÏ°í ³ªÁß¿¡ À̸¦ °Ë»öÇÒ ¼ö ÀÖ´Â ±â¹ýÀ» Á¦°øÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¿µ±¸ÀûÀÎ ÀúÀå ±â¹ýÀº °£´ÜÇÑ ·¹ÄÚµå ÁöÇâÀÇ µ¥ÀÌÅͺ£À̽º¸¦ ¸ðµ¨·Î ÇÏ¸ç ·¹ÄÚµå °ü¸® ½Ã½ºÅÛÀ̶ó°í ÇÕ´Ï´Ù.
MIDP´Â MIDletÀÌ µ¥ÀÌÅ͸¦ ¿µ±¸ÀûÀ¸·Î ÀúÀåÇÏ°í ³ªÁß¿¡ À̸¦ °Ë»öÇÒ ¼ö ÀÖ´Â ±â¹ýÀ» Á¦°øÇÕ´Ï´Ù. ·¹ÄÚµå °ü¸® ½Ã½ºÅÛ(RMS)À̶ó´Â ÀÌ·¯ÇÑ ¿µ±¸ ÀúÀå ±â¹ýÀº °£´ÜÇÑ ·¹ÄÚµå ÁöÇâ µ¥ÀÌÅͺ£À̽º¸¦ ¸ðµ¨·Î ÇÕ´Ï´Ù.
·¹ÄÚµå ÀúÀå¼Ò´Â MIDletÀ» ¿©·¯ ¹ø È£ÃâÇÏ´Â °æ¿ì¿¡µµ ¿µ±¸ÀûÀ¸·Î ³²¾Æ ÀÖ´Â ·¹ÄÚµåÀÇ ¸ðÀ½À¸·Î ±¸¼ºµÇ¾î ÀÖ½À´Ï´Ù. Ç÷§Æû¿¡¼´Â ÀçºÎÆ®, ¹èÅ͸® º¯°æ µîÀ» Æ÷ÇÔÇÏ´Â Ç÷§ÆûÀÇ Á¤»óÀû »ç¿ë¿¡ ´ëÇØ MIDlet ·¹ÄÚµå ÀúÀå¼ÒÀÇ ¹«°á¼ºÀ» ÃÖ´ëÇÑ À¯ÁöÇÒ ¼ö ÀÖµµ·Ï ÇØ¾ß ÇÕ´Ï´Ù.
·¹ÄÚµå ÀúÀå¼Ò´Â Ç÷§Æû¿¡ µû¶ó ´Ù¸¥ À§Ä¡¿¡ ¸¸µé¾îÁö¸ç MIDlet¿¡ Á¦°øµÇÁö ¾Ê½À´Ï´Ù. ·¹ÄÚµå ÀúÀå¼ÒÀÇ À̸§ ÁöÁ¤ °ø°£Àº MIDlet Suite ´ÜÀ§·Î Á¦¾îµË´Ï´Ù. MIDlet Suite ³»ÀÇ MIDletÀº À̸§¸¸ ´Ù¸£°Ô ÁöÁ¤ÇÏ¸é ¿©·¯ ·¹ÄÚµå ÀúÀå¼Ò¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù. MIDlet Suite°¡ Ç÷§Æû¿¡¼ Á¦°ÅµÉ ¶§ MIDlet¿¡ ¿¬°üµÈ ¸ðµç ·¹ÄÚµå ÀúÀå¼Òµµ Á¦°ÅµÇ¾î¾ß ÇÕ´Ï´Ù. MIDlet Suite ³»ÀÇ MIDletÀº ¼·Î ´Ù¸¥ ·¹ÄÚµå ÀúÀå¼Ò¿¡ Á÷Á¢ ¾×¼¼½ºÇÒ ¼ö ÀÖ½À´Ï´Ù. RecordStore¸¦ ¸¸µå´Â MIDletÀÌ ÀÌ·¯ÇÑ ±ÇÇÑÀ» Á¦°øÇϵµ·Ï ¼±ÅÃÇϸé MIDP 2.0ÀÇ »õ API°¡ ·¹ÄÚµå ÀúÀå¼Ò¸¦ ¸í½ÃÀûÀ¸·Î °øÀ¯ÇÒ ¼ö ÀÖ½À´Ï´Ù.
°øÀ¯´Â ´Ù¸¥ MIDlet SuiteÀÇ RecordStore À̸§ ÁöÁ¤ ±â´É°ú µÎ °³ÀÇ MIDlet Suite ÀÎÁõ°ú °ü·ÃµÈ ¾×¼¼½º °¡´É¼º ±ÔÄ¢À» Á¤ÀÇÇÏ¿© ¼öÇàµË´Ï´Ù.
RecordStore´Â MIDlet SuiteÀÇ °íÀ¯ À̸§°ú RecordStoreÀÇ À̸§À» »ç¿ëÇÏ¿© °íÀ¯ÇÏ°Ô ÁöÁ¤µË´Ï´Ù. ÀÀ¿ë ÇÁ·Î±×·¥ ¼³¸íÀÚÀÇ MIDlet-Vendor ¹× MIDlet-Name ¼Ó¼ºÀÌ MIDlet Suite¸¦ ½Äº°ÇÕ´Ï´Ù.
°øÀ¯ÇÒ RecordStore¸¦ ¸¸µé ¶§ ¾×¼¼½º ÄÁÆ®·ÑÀÌ Á¤Àǵ˴ϴÙ. ¾×¼¼½º ÄÁÆ®·ÑÀº RecordStore¸¦ ¿ ¶§ Àû¿ëµË´Ï´Ù. ¾×¼¼½º ¸ðµå´Â ´Ù¸¥ MIDlet Suite¿Í °øÀ¯ÇÒ ¼ö Àְųª °³ÀÎ »ç¿ëÀ» Çã¿ëÇÕ´Ï´Ù.
·¹ÄÚµå ÀúÀå¼Ò À̸§Àº ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇϰí ÃÖ´ë 32ÀÚÀÇ À¯´ÏÄÚµå ¹®ÀÚ Á¶ÇÕÀ¸·Î ±¸¼ºµÉ ¼ö ÀÖ½À´Ï´Ù. ·¹ÄÚµå ÀúÀå¼Ò À̸§Àº ÁÖ¾îÁø MIDlet Suite ¹üÀ§ ³»¿¡¼ °íÀ¯ÇØ¾ß ÇÕ´Ï´Ù. Áï ÇϳªÀÇ MIDlet Suite¿¡ ÀÖ´Â ¿©·¯ MIDletÀº µ¿ÀÏÇÑ À̸§À» °®´Â ·¹ÄÚµå ÀúÀå¼Ò¸¦ µÑ ÀÌ»ó ¸¸µé ¼ö ¾øÁö¸¸, ÇϳªÀÇ MIDlet Suite¿¡ ÀÖ´Â ÇϳªÀÇ MIDletÀº ´Ù¸¥ MIDlet SuiteÀÇ MIDlet°ú µ¿ÀÏÇÑ À̸§À» °®´Â ·¹ÄÚµå ÀúÀå¼Ò¸¦ °¡Áú ¼ö ÀÖ½À´Ï´Ù. ÀÌ·² °æ¿ì¿¡µµ ·¹ÄÚµå ÀúÀå¼Ò´Â ¿©ÀüÈ÷ °íÀ¯ÇÏ°í ±¸ºÐµÇ¾î ÀÖ½À´Ï´Ù.
ÀÌ API¿¡´Â Àá±Ý ÀÛ¾÷ÀÌ Á¦°øµÇÁö ¾Ê½À´Ï´Ù.
·¹ÄÚµå ÀúÀå¼Ò ±¸ÇöÀº ¸ðµç °³º° ·¹ÄÚµå ÀúÀå¼Ò ÀÛ¾÷ÀÌ ÃÖ¼Ò ´ÜÀ§À̰í,
µ¿±âÀûÀ̰í, ÀÏ·ÃȵǾî ÀÖ´ÂÁö È®ÀÎÇÏ¿© ´ÙÁß ¾×¼¼½º·Î
¼Õ»óÀÌ ¹ß»ýÇÏÁö ¾Êµµ·Ï ÇÕ´Ï´Ù.
ÇÏÁö¸¸ MIDletÀÌ ´ÙÁß ½º·¹µå¸¦ »ç¿ëÇÏ¿© ·¹ÄÚµå ÀúÀå¼Ò¸¦ ¾×¼¼½ºÇϸé
MIDlet¿¡¼ ÀÌ ¾×¼¼½º¸¦ Á¶Á¤ÇØ¾ß Çϸç,
±×·¸Áö ¾ÊÀº °æ¿ì ¿¹»óÄ¡ ¸øÇÑ °á°ú°¡ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù.
¿¹¸¦ µé¾î, MIDletÀÇ µÎ ½º·¹µå°¡ °°Àº ·¹Äڵ忡¼ µ¿½Ã¿¡
RecordStore.setRecord()
¸¦ È£ÃâÇÑ °æ¿ì
·¹ÄÚµå ÀúÀå¼Ò´Â ÀÌ µÎ È£ÃâÀ» ÀûÀýÇÏ°Ô ÀÏ·ÃÈÇϹǷÎ
µ¥ÀÌÅͺ£À̽º ¼Õ»óÀÌ ¹ß»ýÇÏÁö ¾Ê½À´Ï´Ù.
ÇÏÁö¸¸ ÀÌ ¾²±â ÀÛ¾÷ Áß Çϳª°¡ ÀÌÈÄ ´Ù¸¥ ¾²±â ÀÛ¾÷¿¡ ÀÇÇØ °ãÃĽáÁö¸é
MIDlet¿¡ ¹®Á¦°¡ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù.
¸¶Âù°¡Áö·Î, Ç÷§ÆûÀÌ ·¹ÄÚµå ÀúÀå¼ÒÀÇ Åõ¸íÇÑ µ¿±âȸ¦ ¼öÇàÇϰųª
¾Æ·¡ÀÇ ´Ù¸¥ ¾×¼¼½º¸¦ ¼öÇàÇϸé ÇØ´ç Ç÷§Æû¿¡¼ MIDlet°ú µ¿±âÈ
¿£Áø »çÀÌÀÇ ·¹ÄÚµå ÀúÀå¼Ò¿¡ ´ëÇÑ ¹èŸÀû ¾×¼¼½º¸¦
Àû¿ëÇØ¾ß ÇÕ´Ï´Ù.
ÀÌ ·¹ÄÚµå ÀúÀå¼Ò API´Â ½Ã°£/³¯Â¥ ½ºÅÆÇÁ¿¡ ´ëÇØ
System.currentTimeMillis()
¿¡¼ »ç¿ëÇÏ´Â
Çü½ÄÀÇ longÇü Á¤¼ö¸¦ »ç¿ëÇÕ´Ï´Ù.
·¹ÄÚµå ÀúÀå¼Ò´Â ¼öÁ¤µÈ ¸¶Áö¸· ½Ã°£À» ½Ã°£ ½ºÅÆÇÁ·Î »ç¿ëÇÕ´Ï´Ù.
·¹ÄÚµå ÀúÀå¼Ò¿¡¼´Â ¹öÀüµµ À¯Áö °ü¸®ÇÏ´Â µ¥,
¹öÀüÀº ·¹ÄÚµå ÀúÀå¼ÒÀÇ ³»¿ëÀ» ¼öÁ¤ÇÒ ¶§¸¶´Ù Áõ°¡ÇÏ´Â Á¤¼öÀÔ´Ï´Ù.
ÀÌ·¯ÇÑ Æ¯¼ºÀº µ¿±âÈ ¿£Áø»Ó ¾Æ´Ï¶ó ´Ù¸¥ ÀÀ¿ë ÇÁ·Î±×·¥¿¡µµ À¯¿ëÇÕ´Ï´Ù.
·¹ÄÚµå´Â ¹ÙÀÌÆ® ¹è¿ÀÔ´Ï´Ù.
°³¹ßÀÚ´Â ¼·Î ´Ù¸¥ À¯ÇüÀÇ µ¥ÀÌÅ͸¦ ¹ÙÀÌÆ® ¹è¿·Î ¾ÐÃà ¹×
¾ÐÃà ÇØÁ¦ÇÏ´Â µ¥ ByteArrayInputStream
°ú
ByteArrayOutputStream
¿Ü¿¡
DataInputStream
°ú DataOutputStream
µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
·¹ÄÚµå´Â ÁÖ¾îÁø ·¹ÄÚµå ÀúÀå¼Ò ³»¿¡¼ Á¤¼ö °ªÀÎ
recordId
·Î °íÀ¯ÇÏ°Ô ½Äº°µË´Ï´Ù.
ÀÌ recordId
´Â ·¹ÄÚµåÀÇ ±âº» Ű·Î »ç¿ëµË´Ï´Ù.
·¹ÄÚµå ÀúÀå¼Ò¿¡¼ ¸¸µç ù ¹øÂ° ·¹ÄÚµåÀÇ recordId
´Â
1ÀÌ µÇ°í ÀÌÈÄ¿¡ ¸¸µé¾îÁö´Â recordId
´Â °è¼ÓÀûÀ¸·Î 1¾¿
Áõ°¡ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, µÎ °³ÀÇ ·¹Äڵ尡 ·¹ÄÚµå ÀúÀå¼Ò¿¡ Ãß°¡µÇ´Â °æ¿ì
ù ¹øÂ° ·¹ÄÚµåÀÇ recordId
°¡ 'n'À̸é
´ÙÀ½ ·¹ÄÚµåÀÇ recordId
´Â (n+1)ÀÌ µË´Ï´Ù.
MIDlet˼ RecordEnumeration
Ŭ·¡½º¸¦ »ç¿ëÇÏ¿©
´Ù¸¥ »öÀÎÀ» ¸¸µé ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½ ¿¹´Â ·¹ÄÚµå °ü¸® ½Ã½ºÅÛÀ» »ç¿ëÇÏ¿© °ÔÀÓÀÇ ÃÖ°í Á¡¼ö¸¦ ÀúÀåÇÏ°í °Ë»öÇÕ´Ï´Ù. ÀÌ ¿¹¿¡¼ ÃÖ°í Á¡¼ö´Â º°µµÀÇ ·¹Äڵ忡 ÀúÀåµÇ°í ÇÊ¿äÇÒ ¶§ RecordEnumerationÀ» »ç¿ëÇÏ¿© Á¤·ÄµË´Ï´Ù.
import javax.microedition.rms.*; import java.io.DataOutputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ByteArrayInputStream; import java.io.DataInputStream; import java.io.EOFException; /** * A class used for storing and showing game scores. */ public class RMSGameScores implements RecordFilter, RecordComparator { /* * The RecordStore used for storing the game scores. */ private RecordStore recordStore = null; /* * The player name to use when filtering. */ public static String playerNameFilter = null; /* * Part of the RecordFilter interface. */ public boolean matches(byte[] candidate) throws IllegalArgumentException { // If no filter set, nothing can match it. if (this.playerNameFilter == null) { return false; } ByteArrayInputStream bais = new ByteArrayInputStream(candidate); DataInputStream inputStream = new DataInputStream(bais); String name = null; try { int score = inputStream.readInt(); name = inputStream.readUTF(); } catch (EOFException eofe) { System.out.println(eofe); eofe.printStackTrace(); } catch (IOException eofe) { System.out.println(eofe); eofe.printStackTrace(); } return (this.playerNameFilter.equals(name)); } /* * Part of the RecordComparator interface. */ public int compare(byte[] rec1, byte[] rec2) { // Construct DataInputStreams for extracting the scores from // the records. ByteArrayInputStream bais1 = new ByteArrayInputStream(rec1); DataInputStream inputStream1 = new DataInputStream(bais1); ByteArrayInputStream bais2 = new ByteArrayInputStream(rec2); DataInputStream inputStream2 = new DataInputStream(bais2); int score1 = 0; int score2 = 0; try { // Extract the scores. score1 = inputStream1.readInt(); score2 = inputStream2.readInt(); } catch (EOFException eofe) { System.out.println(eofe); eofe.printStackTrace(); } catch (IOException eofe) { System.out.println(eofe); eofe.printStackTrace(); } // Sort by score if (score1 < score2) { return RecordComparator.PRECEDES; } else if (score1 > score2) { return RecordComparator.FOLLOWS; } else { return RecordComparator.EQUIVALENT; } } /** * The constructor opens the underlying record store, * creating it if necessary. */ public RMSGameScores() { // // Create a new record store for this example // try { recordStore = RecordStore.openRecordStore("scores", true); } catch (RecordStoreException rse) { System.out.println(rse); rse.printStackTrace(); } } /** * Add a new score to the storage. * * @param score the score to store. * @param playerName the name of the play achieving this score. */ public void addScore(int score, String playerName) { // // Each score is stored in a separate record, formatted with // the score, followed by the player name. // int recId; // returned by addRecord but not used ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream outputStream = new DataOutputStream(baos); try { // Push the score into a byte array. outputStream.writeInt(score); // Then push the player name. outputStream.writeUTF(playerName); } catch (IOException ioe) { System.out.println(ioe); ioe.printStackTrace(); } // Extract the byte array byte[] b = baos.toByteArray(); // Add it to the record store try { recId = recordStore.addRecord(b, 0, b.length); } catch (RecordStoreException rse) { System.out.println(rse); rse.printStackTrace(); } } /** * A helper method for the printScores methods. */ private void printScoresHelper(RecordEnumeration re) { try { while(re.hasNextElement()) { int id = re.nextRecordId(); ByteArrayInputStream bais = new ByteArrayInputStream(recordStore.getRecord(id)); DataInputStream inputStream = new DataInputStream(bais); try { int score = inputStream.readInt(); String playerName = inputStream.readUTF(); System.out.println(playerName + " = " + score); } catch (EOFException eofe) { System.out.println(eofe); eofe.printStackTrace(); } } } catch (RecordStoreException rse) { System.out.println(rse); rse.printStackTrace(); } catch (IOException ioe) { System.out.println(ioe); ioe.printStackTrace(); } } /** * This method prints all of the scores sorted by game score. */ public void printScores() { try { // Enumerate the records using the comparator implemented // above to sort by game score. RecordEnumeration re = recordStore.enumerateRecords(null, this, true); printScoresHelper(re); } catch (RecordStoreException rse) { System.out.println(rse); rse.printStackTrace(); } } /** * This method prints all of the scores for a given player, * sorted by game score. */ public void printScores(String playerName) { try { // Enumerate the records using the comparator and filter // implemented above to sort by game score. RecordEnumeration re = recordStore.enumerateRecords(this, this, true); printScoresHelper(re); } catch (RecordStoreException rse) { System.out.println(rse); rse.printStackTrace(); } } public static void main(String[] args) { RMSGameScores rmsgs = new RMSGameScores(); rmsgs.addScore(100, "Alice"); rmsgs.addScore(120, "Bill"); rmsgs.addScore(80, "Candice"); rmsgs.addScore(40, "Dean"); rmsgs.addScore(200, "Ethel"); rmsgs.addScore(110, "Farnsworth"); rmsgs.addScore(220, "Farnsworth"); System.out.println("All scores"); rmsgs.printScores(); System.out.println("Farnsworth's scores"); RMSGameScores.playerNameFilter = "Farnsworth"; rmsgs.printScores("Farnsworth"); } }
|
MID ÇÁ·ÎÇÊ | ||||||||||
PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |