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

📄 datarecorder.java

📁 《神州》RPG游戏引擎
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        if (strOID.equals(""))
            return;

        StringParser sParser;
        String strValue;

        storeName = "rsRecordBook";
        xRsIO = new DataRsIO(storeName);
        xRsIO.open(storeName);
        RecordEnumeration eNumer = xRsIO.getRecordEnum();


        for (int i = 0; i < xRsIO.getNumRecords(); i++)
        {
            String tmp = "";
            int rID = -1;

            try {
                rID = eNumer.nextRecordId();
                tmp = xRsIO.query(rID);
            }
            catch (Exception ex) {
            }

            sParser = new StringParser(tmp);

            if (sParser.getValue("OID").equals(strOID))
            {
                strValue = "OID=" + strOID + SEPARATOR;
                strValue += "SceneName=" + SEPARATOR;
                strValue += "Date=" + SEPARATOR;
                strValue += "Time=" + SEPARATOR;

                xRsIO.update(rID, strValue);
            }
        }
        xRsIO.close();
        xRsIO = null;
    }

    public void updRcdBook(String strOID)
    {
        if (strOID.equals(""))
            return;

        StringParser sParser;
        String strValue;

        storeName = "rsRecordBook";
        xRsIO = new DataRsIO(storeName);
        xRsIO.open(storeName);
        RecordEnumeration eNumer = xRsIO.getRecordEnum();

        for (int i = 0; i<xRsIO.getNumRecords(); i++)
        {
            String tmp = "";
            int rID = -1;
            try {
                rID = eNumer.nextRecordId();
                tmp = xRsIO.query(rID);
            }
            catch (Exception ex) {
            }

            sParser = new StringParser(tmp);

            if (sParser.getValue("OID").equals(strOID))
            {
                Calendar cald = Calendar.getInstance();

                strValue = "OID=" + strOID + SEPARATOR;
                strValue += "SceneName=" + SceneLib.scenes[SceneLib.currentSceneIndex].getName() + SEPARATOR;
                strValue += "Date=" + cald.get(Calendar.MONTH)+"-"+cald.get(Calendar.DAY_OF_MONTH) + SEPARATOR;  //cald.get(Calendar.YEAR)+"-"
                strValue += "Time=" + cald.get(Calendar.HOUR)+":"+cald.get(Calendar.MINUTE) + SEPARATOR; //+":"+cald.get(Calendar.SECOND)

                xRsIO.update(rID, strValue);
            }
        }

        xRsIO.close();
        xRsIO = null;
    }

    private void delAllRs(String inStoreName)
    {
        storeName = inStoreName;
        xRsIO = new DataRsIO(storeName);
        xRsIO.open(storeName);
        xRsIO.clearAll();
        xRsIO.close();
        xRsIO = null;
    }

    public String[] getRecordString(String inStoreName)
    {
        storeName = inStoreName;
        xRsIO = new DataRsIO(storeName);
        xRsIO.open(storeName);

        DataRsCompare compare = new DataRsCompare();
        RecordEnumeration eNumer = xRsIO.getRecordEnum(null, compare);
        retString = new String[eNumer.numRecords()];

        int rId = -1;

        for (int i=0; i<retString.length; i++)
        {
            try {
                rId = eNumer.nextRecordId();
            }
            catch (InvalidRecordIDException ex) {
                ex.printStackTrace();
            }
            retString[i] = "ID=" + rId + SEPARATOR + xRsIO.query(rId);
            //System.out.println(retString[i]);
        }
        xRsIO.close();
        xRsIO = null;
        return retString;
    }

    public String[] getRcdByFilter(String inStoreName, String strOID)
    {
        storeName = inStoreName;
        xRsIO = new DataRsIO(storeName);
        xRsIO.open(storeName);
        //System.out.println(xRsIO.getStoreName());

        DataFilter f = new DataFilter(strOID);
        RecordEnumeration eNumer = xRsIO.getRecordEnum(f, new DataRsCompare());  //要排序

        retString = new String[eNumer.numRecords()];
        int rId = -1;

        for (int i=0; i < retString.length; i++)
        {
            try {
                rId = eNumer.nextRecordId();
                //System.out.println(rId + "   " + i);
            }
            catch (InvalidRecordIDException ex) {
                ex.printStackTrace();
            }
            retString[i] = "ID=" + rId + SEPARATOR + Tools.getUTFStr(xRsIO.queryByRId(rId));
        }
        xRsIO.close();
        xRsIO = null;
        return retString;
    }

    public void delRcdByFilter(String inStoreName, String strOID)
    {
        storeName = inStoreName;
        xRsIO = new DataRsIO(storeName);
        xRsIO.open(storeName);
        DataFilter f = new DataFilter(strOID);
        xRsIO.delete(f, null);
        /*
        RecordEnumeration eNumer = xRsIO.getRecordEnum(f, null);
        int rId = -1;
        for (int i=0; i < xRsIO.getNumRecords(); i++)
        {
            try {
                rId = eNumer.nextRecordId();
            }
            catch (InvalidRecordIDException ex) {
                ex.printStackTrace();
            }
            if (rId != -1)
                xRsIO.delete(rId);
        }
        */
        xRsIO.close();
        xRsIO = null;
    }

    public String[] getRcdShowLine()
    {
        String[] str = null;
        String[] tmp = this.getRecordString("rsRecordBook");

        if (tmp.length>0)
        {
            str = new String[tmp.length];

            StringParser parser = null;

            String strScence = "";
            String strDate = "";
            String strTime = "";

            for (int i = 0; i < tmp.length; i++)
            {
                parser = new StringParser(tmp[i].trim());
                str[i] = parser.getValue("OID")+ ". ";
                strScence = parser.getValue("SceneName");
                strDate = parser.getValue("Date");
                strTime = parser.getValue("Time");

                if (!strScence.equals(""))
                {
                    str[i] += strScence;
                    str[i] += " " + strDate;
                    str[i] += " " + strTime;
                }else
                    str[i] += " <没有记录> ";
            }
        }
        System.out.println("getRcdShowLine return");
        return str;
    }
/*
    private void openRsIO(String strStoreName)
    {
        if (xRsIO == null)
            xRsIO = new DataRsIO(strStoreName);
        else
            if (xRsIO.getStoreName() != strStoreName)
            {
                System.out.println(xRsIO.getStoreName() + "      " + strStoreName);
                xRsIO.close();
                xRsIO = new DataRsIO(strStoreName);
            }
    }
*/
    public String getStorName()
    {
        return storeName;
    }

    class DataRsCompare implements RecordComparator
    {
        public int compare(byte[] byteArray, byte[] byteArray1)
        {
            int intOID1 = 0;
            int intOID2 = 0;

            StringParser parser;
            parser = new StringParser(Tools.getUTFStr(byteArray));
            intOID1 = Integer.parseInt(parser.getValue("OID").trim());
            parser = new StringParser(Tools.getUTFStr(byteArray1));
            intOID2 = Integer.parseInt(parser.getValue("OID").trim());

            //System.out.println("str1="+intOID1+"    str2="+intOID2);

            if (intOID1 > intOID2)
                return RecordComparator.FOLLOWS;
            else if (intOID1 < intOID2)
                return RecordComparator.PRECEDES;

            return RecordComparator.EQUIVALENT;
        }
    }

    class DataFilter implements RecordFilter
    {
        String gStrOID;

        public DataFilter(String OID)
        {
            gStrOID = OID;
        }

        public boolean matches(byte[] byteArray)
        {
            StringParser parser = new StringParser(Tools.getUTFStr(byteArray));
            String strOID = parser.getValue("OID");
            if (gStrOID.equals(strOID))
                return true;
            else
                return false;
        }
    }

}

⌨️ 快捷键说明

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