1414import javax .persistence .EntityManagerFactory ;
1515import javax .persistence .Persistence ;
1616import org .devdom .fbclient .model .dto .Skillset ;
17+ import org .devdom .fbclient .model .dto .University ;
1718import org .devdom .fbclient .model .dto .Users ;
1819import org .devdom .fbclient .model .dto .Votes ;
1920import org .devdom .fbclient .model .dto .VotesPK ;
@@ -68,7 +69,7 @@ private JSONArray getFBVoters(Long skillID) {
6869 }
6970 }
7071
71- public JSONArray getSkills (){
72+ public JSONArray getOptions (){
7273 try {
7374 String query = FQL .QUESTION_OPTIONS ;
7475 query = query .replace (":question_id" ,questionID );
@@ -81,7 +82,7 @@ public JSONArray getSkills(){
8182
8283 public int totalFBVotes (){
8384 int count = 0 ;
84- JSONArray result = getSkills ();
85+ JSONArray result = getOptions ();
8586 try {
8687 for (int i = 0 ; i < result .length (); i ++){
8788 JSONObject json = result .getJSONObject (i );
@@ -175,19 +176,66 @@ public void updateDevelopers(){
175176 em .getTransaction ().commit ();
176177 }
177178
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+
178225 public void updateSkills (){
179226
180227 EntityManager em = getEntityManager ();
181228 List <Skillset > skills = em .createNamedQuery ("Skillset.findAll" ).getResultList ();
182229
183230 int updated = 0 ;
184- JSONArray result = getSkills ();
231+ JSONArray result = getOptions ();
185232 for (Skillset skill : skills ){
186233 for (int i = 0 ; i < result .length (); i ++){
187234 try {
188235 em .getTransaction ().begin ();
189236 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 () ){
191239 if (!json .get ("votes" ).equals (skill .getVotes ())){
192240 updated ++;
193241 Logger .getLogger (FBConnect .class .getName ()).log (Level .INFO , "skill : {0}" , json .getString ("name" ));
@@ -212,7 +260,7 @@ public void updateSkills(){
212260 }
213261 Logger .getLogger (FBConnect .class .getName ()).log (Level .INFO , "skill actualizados: {0}" , updated );
214262 }
215-
263+
216264 /**
217265 * @return the questionID
218266 */
0 commit comments