14
14
import javax .persistence .EntityManagerFactory ;
15
15
import javax .persistence .Persistence ;
16
16
import org .devdom .fbclient .model .dto .Skillset ;
17
+ import org .devdom .fbclient .model .dto .University ;
17
18
import org .devdom .fbclient .model .dto .Users ;
18
19
import org .devdom .fbclient .model .dto .Votes ;
19
20
import org .devdom .fbclient .model .dto .VotesPK ;
@@ -68,7 +69,7 @@ private JSONArray getFBVoters(Long skillID) {
68
69
}
69
70
}
70
71
71
- public JSONArray getSkills (){
72
+ public JSONArray getOptions (){
72
73
try {
73
74
String query = FQL .QUESTION_OPTIONS ;
74
75
query = query .replace (":question_id" ,questionID );
@@ -81,7 +82,7 @@ public JSONArray getSkills(){
81
82
82
83
public int totalFBVotes (){
83
84
int count = 0 ;
84
- JSONArray result = getSkills ();
85
+ JSONArray result = getOptions ();
85
86
try {
86
87
for (int i = 0 ; i < result .length (); i ++){
87
88
JSONObject json = result .getJSONObject (i );
@@ -175,19 +176,66 @@ public void updateDevelopers(){
175
176
em .getTransaction ().commit ();
176
177
}
177
178
179
+ public void updateUniversities () {
180
+ EntityManager em = getEntityManager ();
181
+ List <University > universities = em .createNamedQuery ("University.findAll" ).getResultList ();
182
+ int added = 0 ;
183
+ int updated = 0 ;
184
+ JSONArray result = getOptions ();
185
+ boolean exists ;
186
+ em .getTransaction ().begin ();
187
+ for (int i =0 ;i <result .length ();i ++){
188
+ try {
189
+ exists = false ;
190
+ JSONObject json = result .getJSONObject (i );
191
+ Long fbId = Long .valueOf ( json .getString ("id" ) );
192
+ for (University university : universities ){
193
+ if (fbId == university .getFbId ()){
194
+ exists =true ;
195
+ university .setVotes (Short .valueOf (json .getString ("votes" )));
196
+ Logger .getLogger (FBConnect .class .getName ()).log (Level .INFO , "{0} es la nueva cantida de votos para la universidad {1} " , new Object []{json .getString ("votes" ), json .getString ("name" )});
197
+ updated ++;
198
+ Logger .getLogger (FBConnect .class .getName ()).log (Level .INFO , "{0} = {1} " , new Object []{fbId , university .getFbId ()});
199
+ break ;
200
+ }
201
+ }
202
+ if (!exists ){
203
+ University newUni = new University ();
204
+ newUni .setFbId ( fbId );
205
+ newUni .setName (json .getString ("name" ));
206
+ newUni .setVotes (Short .valueOf ( json .getString ("votes" ) ));
207
+ em .persist (newUni );
208
+ Logger .getLogger (FBConnect .class .getName ()).log (Level .INFO , "fue agregada la universidad {0} con {1} votos" , new Object []{json .getString ("name" ), json .getString ("votes" )});
209
+ added ++;
210
+ }
211
+
212
+ int count = updateVotes (json .getLong ("id" ));
213
+ if (count >0 ){
214
+ Logger .getLogger (FBConnect .class .getName ()).log (Level .INFO , "fueron añadidas {0} universidades" , count );
215
+ }
216
+ } catch (JSONException ex ) {
217
+ Logger .getLogger (FBConnect .class .getName ()).log (Level .SEVERE , null , ex );
218
+ em .getTransaction ().rollback ();
219
+ }
220
+ }
221
+ em .getTransaction ().commit ();
222
+ //em.getTransaction().rollback();
223
+ }
224
+
178
225
public void updateSkills (){
179
226
180
227
EntityManager em = getEntityManager ();
181
228
List <Skillset > skills = em .createNamedQuery ("Skillset.findAll" ).getResultList ();
182
229
183
230
int updated = 0 ;
184
- JSONArray result = getSkills ();
231
+ JSONArray result = getOptions ();
185
232
for (Skillset skill : skills ){
186
233
for (int i = 0 ; i < result .length (); i ++){
187
234
try {
188
235
em .getTransaction ().begin ();
189
236
JSONObject json = result .getJSONObject (i );
190
- if ( json .get ("id" ).equals (skill .getOptionId ()) ){
237
+ Long skillID = Long .valueOf (json .getString ("id" ));
238
+ if ( skillID == skill .getOptionId () ){
191
239
if (!json .get ("votes" ).equals (skill .getVotes ())){
192
240
updated ++;
193
241
Logger .getLogger (FBConnect .class .getName ()).log (Level .INFO , "skill : {0}" , json .getString ("name" ));
@@ -212,7 +260,7 @@ public void updateSkills(){
212
260
}
213
261
Logger .getLogger (FBConnect .class .getName ()).log (Level .INFO , "skill actualizados: {0}" , updated );
214
262
}
215
-
263
+
216
264
/**
217
265
* @return the questionID
218
266
*/
0 commit comments