Beste,
ik ben op dit moment met mijn kleine j2me applicatie bezig en ik zit eventjes in een kleine *dip*. Ik heb een connector class gemaakt die in een thread een post request uitvoert op een php page. Deze pagina stuurt vervolgens het resultaat van de insert in een db terug.
Dit ID parse ik vervolgens (want het is xml) en wordt in het betreffende object gezet dat is opgeslagen. Nu lukt het opslaan van de objecten in de db. De connectie met de php page lukt, de mysql queries lukken ook maar nu het probleem
Stel ik heb
Niks speciaals zoals u kan zien. Ik heb ook nog een object Wedstrijd dat twee instanties van een Team object in zich heeft.Het probleem is nu dat op het moment dat de wedstrijden worden vestuurd naar de server op een of andere manier de team objecten niet fatsoenlijk zijn bijgewerkt waardoor er dus allemaal wedstrijden in de db staan met team id = -1 erin . (en dat is natuurlijk niet handig..)
Hoe kan ik er voor zorgen dat een object met daarin een referentie naar Team x niet wordt verstuurd op het moment dat het id nog -1 is behalve dan een zeer vieze loop die elke x seconden kijkt of er al iets is veranderd..
p.s. de code van mijn custom connector post methode.
ik ben op dit moment met mijn kleine j2me applicatie bezig en ik zit eventjes in een kleine *dip*. Ik heb een connector class gemaakt die in een thread een post request uitvoert op een php page. Deze pagina stuurt vervolgens het resultaat van de insert in een db terug.
Dit ID parse ik vervolgens (want het is xml) en wordt in het betreffende object gezet dat is opgeslagen. Nu lukt het opslaan van de objecten in de db. De connectie met de php page lukt, de mysql queries lukken ook maar nu het probleem
Stel ik heb
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
| public class Team implements XmlObject { private int id; private String naam; private int klasse; private boolean removed; public Team() { this.id=-1; this.naam =""; this.klasse = -1; this.removed = false; } public String getNaam() { return this.naam; } public void setNaam(String naam) { this.naam = naam; } public int getId() { return this.id; } public void setId(int id) { this.id = id; } public String toString() { return this.naam + "("+String.valueOf(this.klasse)+")"; } public int getKlasse() { return this.klasse; } public void setKlasse(int klasse) { this.klasse = klasse; } public void isRemoved() { this.removed = true; } public String toXML() { StringBuffer xmlString = new StringBuffer("<team>"); xmlString.append("<id>"+String.valueOf(this.id)+"</id>"); xmlString.append("<removed>"+String.valueOf(this.removed)+"</removed>"); xmlString.append("<class>"+String.valueOf(this.klasse)+"</class>"); xmlString.append("<name>"+this.naam+"</name>"); xmlString.append("</team>"); return xmlString.toString(); } } |
Niks speciaals zoals u kan zien. Ik heb ook nog een object Wedstrijd dat twee instanties van een Team object in zich heeft.Het probleem is nu dat op het moment dat de wedstrijden worden vestuurd naar de server op een of andere manier de team objecten niet fatsoenlijk zijn bijgewerkt waardoor er dus allemaal wedstrijden in de db staan met team id = -1 erin . (en dat is natuurlijk niet handig..)
Hoe kan ik er voor zorgen dat een object met daarin een referentie naar Team x niet wordt verstuurd op het moment dat het id nog -1 is behalve dan een zeer vieze loop die elke x seconden kijkt of er al iets is veranderd..
p.s. de code van mijn custom connector post methode.
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
| package model.net; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Enumeration; import java.util.Vector; import javax.microedition.io.Connector; import javax.microedition.io.HttpConnection; import model.Competitie; import model.Team; import model.Wedstrijd; import model.facade.CompetitionFacade; import model.facade.TeamFacade; import model.facade.WedstrijdFacade; public class HttpConnector extends Thread{ private boolean busy = true; private Vector objectsToProces = new Vector(); private int methodType = -1; public HttpConnector() { new Thread(this).start(); } public synchronized void run() { while(busy) { try { wait(); }catch(InterruptedException e){ e.printStackTrace(); } if(busy) { System.out.println(this.objectsToProces.size()); if(objectsToProces.size() > 0) { this.procesPackets(); }else{ try { wait(); }catch(InterruptedException e){ } } } } } public synchronized void go(Vector v, int methodType) { this.objectsToProces = v; System.out.println(this.objectsToProces.size()); this.methodType = methodType; this.notifyAll(); } public void cancel() { this.busy = false; this.objectsToProces.removeAllElements(); this.notifyAll(); } private void procesPackets() { switch(this.methodType) { case HttpPacket.POST: this.doPostRequest(); break; case HttpPacket.GET: this.doGetRequest(); break; case HttpPacket.PUT: this.doPutRequest(); break; case HttpPacket.DELETE: this.doDeleteRequest(); break; } } private void doDeleteRequest() { this.objectsToProces.removeAllElements(); } private void doPutRequest() { this.objectsToProces.removeAllElements(); } private void doGetRequest() { this.objectsToProces.removeAllElements(); } private void doPostRequest() { System.out.println(" post request "); HttpConnection con = null; OutputStream os = null; InputStream is = null; for(int i = 0; i < objectsToProces.size();i++) { HttpPacket p = (HttpPacket)objectsToProces.elementAt(i); System.out.println("sending new object"); try { System.out.println(p.getUrl()); con = (HttpConnection) Connector.open(p.getUrl()); con.setRequestMethod(HttpConnection.POST); con.setRequestProperty("Content-Type", "text/xml"); con.setRequestProperty("Connection", "close"); os = con.openOutputStream(); os.write(p.getRequestMessage().getBytes()); os.flush(); StringBuffer sb = new StringBuffer(); is = con.openDataInputStream(); int chr; while ((chr = is.read()) != -1) { sb.append((char) chr); } p.setResponseMessage(sb.toString()); p.setResponseCode(con.getResponseCode()); is.close(); os.close(); con.close(); }catch(IOException e){ try { is.close(); os.close(); con.close(); }catch(IOException ie){ ie.printStackTrace(); } } } this.updateFacade(); } private synchronized void updateFacade() { HttpPacket hp = (HttpPacket)objectsToProces.elementAt(0); if(hp.getModelObject() instanceof Team) { TeamFacade.getInstance().parse(objectsToProces); } if(hp.getModelObject() instanceof Wedstrijd) { WedstrijdFacade.getInstance().parse(objectsToProces); } if(hp.getModelObject() instanceof Competitie) { CompetitionFacade.getInstance().parse(objectsToProces); } this.objectsToProces.removeAllElements(); this.notifyAll(); } } |
[ Voor 44% gewijzigd door Webgnome op 03-09-2008 16:57 ]