Beste mensen,
ik ben op dit moment bezig met het ontwikkelen van een klein progje binnen J2me. Omdat ik de gegevens wil behouden tussen twee sessies ben ik nu de laatste hand aan het leggen aan mijn 'persistance api'. Het wegschrijven van gegevens gaat goed. Alleen het ophalen van het register (hashtable waarin relatie tussen tabel <-> objecttype staat beschreven) gaat op een of andere manier niet goed.
Als ik mijn safe laat runnen met de hashtable krijg ik netjes het aantal records terug als dat er ingevoerd zijn inclusief de key en value die opgeslagen zijn.
Op het moment dat ik mijn register weer terug lees vanuit een recordStore met de volgende code:
Krijg ik steevast alleen het aantal van ingevoerde objecten terug echter alleen van 1 type object. bijvoorbeeld als ik 5 objecten in mijn register heb staan, krijg ik netjes 5x een output in loadregister maar met 5x hetzelfde type object.
Ik ben er nu alweer een paar uur mee bezig en misschien heb ik gewoon last van 'tunnel'visie maar ik zie het niet meer. Misschien iemand anders die de adder ziet kruipen door het gras?
ik ben op dit moment bezig met het ontwikkelen van een klein progje binnen J2me. Omdat ik de gegevens wil behouden tussen twee sessies ben ik nu de laatste hand aan het leggen aan mijn 'persistance api'. Het wegschrijven van gegevens gaat goed. Alleen het ophalen van het register (hashtable waarin relatie tussen tabel <-> objecttype staat beschreven) gaat op een of andere manier niet goed.
Als ik mijn safe laat runnen met de hashtable krijg ik netjes het aantal records terug als dat er ingevoerd zijn inclusief de key en value die opgeslagen zijn.
Java: PersistanceManager.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
| public void safeRegister() throws IOException, RecordStoreException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(baos); try { RecordStore registerStore = RecordStore.openRecordStore("register", true); if(registerStore.enumerateRecords(null, null,false).numRecords() <= 0 ) { for(Enumeration e = PersistantObjects.keys();e.hasMoreElements();) { Class c = (Class)e.nextElement(); try { System.out.println("Key :"+c+"Value :"+PersistantObjects.get(c)); dos.writeUTF(c.getName()); dos.writeUTF((String)PersistantObjects.get(c)); byte[] k = baos.toByteArray(); registerStore.addRecord(k,0,k.length); baos.flush(); } catch (IOException e1) { e1.printStackTrace(); } } baos.close(); dos.close(); }else{ System.out.println("er zit iets in!"); } registerStore.closeRecordStore(); } catch (RecordStoreFullException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } catch (RecordStoreNotFoundException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } catch (RecordStoreException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } catch (IOException io){ io.printStackTrace(); } } |
Op het moment dat ik mijn register weer terug lees vanuit een recordStore met de volgende code:
Java: PersistanceManager.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| public void loadRegister() throws IOException, RecordStoreException { System.out.println("Loading.."); RecordStore registerStore = RecordStore.openRecordStore("register", false); RecordEnumeration re = registerStore.enumerateRecords(null,null,true); while(re.hasNextElement()) { int recordID = re.nextRecordId(); System.out.println("ID :" +recordID); byte[] mapping = registerStore.getRecord(recordID); ByteArrayInputStream bais= new ByteArrayInputStream(mapping); DataInputStream dis= new DataInputStream(bais); try { String naam = new String(dis.readUTF()); String tabel = new String(dis.readUTF()); Class c = Class.forName(naam); System.out.println("Key :"+naam+" Value:" +tabel); } catch (ClassNotFoundException e) { e.printStackTrace(); } bais.close(); dis.close(); } System.out.println(PersistantObjects.size()); registerStore.closeRecordStore(); } |
Krijg ik steevast alleen het aantal van ingevoerde objecten terug echter alleen van 1 type object. bijvoorbeeld als ik 5 objecten in mijn register heb staan, krijg ik netjes 5x een output in loadregister maar met 5x hetzelfde type object.
Ik ben er nu alweer een paar uur mee bezig en misschien heb ik gewoon last van 'tunnel'visie maar ik zie het niet meer. Misschien iemand anders die de adder ziet kruipen door het gras?