private static Map<Metric,Object> Reputation(JSONObject objeto, String cuenta) throws IOException {
Map<Metric,String> reputation = new HashMap<Metric,String>();
Map<Metric,Object> reputations = null;
String userName = null;
if (objeto.has("http://purl.org/dc/elements/1.1/Usuario")){
JSONArray array_usuarios = objeto.getJSONArray("http://purl.org/dc/elements/1.1/Usuario");
JSONObject objeto_usuarios = array_usuarios.getJSONObject(0);
System.out.println("Informacion de usuario:");
//Vamos sacando la información relevante, que son objetos, con un array, dentro de objeto_respuestas
if(objeto_usuarios.has("http://purl.org/dc/elements/1.1/Nombre")){
JSONArray array_user = objeto_usuarios.getJSONArray("http://purl.org/dc/elements/1.1/Nombre");
userName = array_user.getString(0);
System.out.println(" Nombre: " + userName);
}
if(objeto_usuarios.has("http://purl.org/dc/elements/1.1/Reputacion")){
JSONArray array_user = objeto_usuarios.getJSONArray("http://purl.org/dc/elements/1.1/Reputacion");
reputation.put(null,array_user.getString(0));
System.out.println(" Reputacion: " + reputation);
}
//Ohloh-----------------------------------------------------------------------------------------------------
if(objeto_usuarios.has("http://purl.org/dc/elements/1.1/Ranking")){
JSONArray array_user = objeto_usuarios.getJSONArray("http://purl.org/dc/elements/1.1/Ranking");
String ranking = array_user.getString(0).replace("\n","").replace(" ", "").replace(".", "");
System.out.println(" Ranking:" + ranking);
try {
double posicion = Double.parseDouble(ranking.substring(0,ranking.indexOf("of")));
double usuariosTotales = Double.parseDouble(ranking.substring(ranking.indexOf("of")+2,ranking.length()));
//puntuation = (Math.log10(usuariosTotales/posicion))/(Math.log10(Math.pow(usuariosTotales, 0.1)));
reputations = new HashMap<Metric,Object>();
reputations.put(GlobalModel.getMetrics().get("ohlohRankMetric"),
usuariosTotales - posicion);
//System.out.println(" Ranking Score:" + puntuation);
} catch (NumberFormatException e) {
System.out.println("Error: Reputation Puntuation cannot be parsed to a double :"+
ranking.substring(0,ranking.indexOf("of"))+" of "+
ranking.substring(ranking.indexOf("of")+2,ranking.length()));
}
}else if (!objeto_usuarios.has("http://purl.org/dc/elements/1.1/Ranking") &&
objeto_usuarios.has("http://purl.org/dc/elements/1.1/ReputacionOhloh")){
double reputationWithoutRank = 200000;
reputations = new HashMap<Metric,Object>();
reputations.put(GlobalModel.getMetrics().get("ohlohRankMetric"), reputationWithoutRank);
}
if(objeto_usuarios.has("http://purl.org/dc/elements/1.1/ReputacionOhloh")){
JSONArray array_user = objeto_usuarios.getJSONArray("http://purl.org/dc/elements/1.1/ReputacionOhloh");
System.out.println(" Ohloh reputation:"+array_user.getString(0));
reputation.put(GlobalModel.getMetrics().get("ohlohKudoMetric"),
array_user.getString(0));
//reputation = (Double.parseDouble(array_user.getString(0))*puntuation) + "";
//System.out.println(" Reputacion: " + reputation);
}
//----------------------------------------------------------------------------------------------------------
if(objeto_usuarios.has("http://purl.org/dc/elements/1.1/MiembroDesde")){
JSONArray array_miembro = objeto_usuarios.getJSONArray("http://purl.org/dc/elements/1.1/MiembroDesde");
String Miembro = array_miembro.getString(0);
System.out.println(" Miembro desde: " + Miembro);
}
if(objeto_usuarios.has("http://purl.org/dc/elements/1.1/VistoUltimaVez")){
JSONArray array_visto = objeto_usuarios.getJSONArray("http://purl.org/dc/elements/1.1/VistoUltimaVez");
String Visto = array_visto.getString(0);
System.out.println(" Visto ultima vez: " + Visto);
}
if(objeto_usuarios.has("http://purl.org/dc/elements/1.1/PaginaWeb")){
JSONArray array_web = objeto_usuarios.getJSONArray("http://purl.org/dc/elements/1.1/PaginaWeb");
String Web = array_web.getString(0);
System.out.println(" Pagina web: " + Web);
}
if(objeto_usuarios.has("http://purl.org/dc/elements/1.1/Localizacion")){
//JSONArray array_local = objeto_usuarios.getJSONArray("http://purl.org/dc/elements/1.1/Localizacion");
//String Localizacion = array_local.getString(0);
//System.out.println("\nLocalización: " + Localizacion);
}
if(objeto_usuarios.has("http://purl.org/dc/elements/1.1/Edad")){
JSONArray array_edad = objeto_usuarios.getJSONArray("http://purl.org/dc/elements/1.1/Edad");
String Edad = array_edad.getString(0);
if(Edad.contains(" ")){
Edad.replaceAll(" ", "");
}
//System.out.println("\nEdad: " + Edad);
}
if(objeto_usuarios.has("http://purl.org/dc/elements/1.1/Descripcion")){
//JSONArray array_descript = objeto_usuarios.getJSONArray("http://purl.org/dc/elements/1.1/Descripcion");
//String Descripcion = array_descript.getString(0);
//System.out.println(" Descripcion: " + Descripcion);
}
if(objeto_usuarios.has("http://purl.org/dc/elements/1.1/PreguntasUsuario")){
JSONArray array_pregunta = objeto_usuarios.getJSONArray("http://purl.org/dc/elements/1.1/PreguntasUsuario");
JSONObject objeto_pregunta = array_pregunta.getJSONObject(0);
if (objeto_pregunta.has("http://purl.org/dc/elements/1.1/NumeroPreguntas")){
JSONArray array_numero = objeto_pregunta.getJSONArray("http://purl.org/dc/elements/1.1/NumeroPreguntas");
int numero = array_numero.getInt(0);
System.out.println(" Numero de preguntas: " + numero);
}
if (objeto_pregunta.has("http://purl.org/dc/elements/1.1/InformacionPreguntas")){
JSONArray array_info = objeto_pregunta.getJSONArray("http://purl.org/dc/elements/1.1/InformacionPreguntas");
for (int i=0;i<array_info.size();i++){
JSONObject objeto_info = array_info.getJSONObject(i);
if (objeto_info.has("http://purl.org/dc/elements/1.1/TituloPregunta")){
//JSONArray array_titulo = objeto_info.getJSONArray("http://purl.org/dc/elements/1.1/TituloPregunta");
//String titulo = array_titulo.getString(0);
//System.out.println(" Titulo: " + titulo);
}
if (objeto_info.has("http://purl.org/dc/elements/1.1/URL")){
JSONArray array_url = objeto_info.getJSONArray("http://purl.org/dc/elements/1.1/URL");
String url = array_url.getString(0);
System.out.println(" URL: " + url);
//Launch new thread for each question with zero level!
//new Json("0"+cuenta+url).start();
}
}
}
}
}
if(objeto.has("http://purl.org/dc/elements/1.1/RespuestasUsuario")){
JSONArray array_respuestas = objeto.getJSONArray("http://purl.org/dc/elements/1.1/RespuestasUsuario");
JSONObject objeto_respuestas = array_respuestas.getJSONObject(0);
if (objeto_respuestas.has("http://purl.org/dc/elements/1.1/NumeroRespuestas")){
JSONArray array_numero = objeto_respuestas.getJSONArray("http://purl.org/dc/elements/1.1/NumeroRespuestas");
int numero = array_numero.getInt(0);
System.out.println(" Numero de respuestas: " + numero);
}
if (objeto_respuestas.has("http://purl.org/dc/elements/1.1/InformacionRespuestas")){
JSONArray array_info = objeto_respuestas.getJSONArray("http://purl.org/dc/elements/1.1/InformacionRespuestas");
for (int i=0;i<array_info.size();i++){
JSONObject objeto_info = array_info.getJSONObject(i);
if (objeto_info.has("http://purl.org/dc/elements/1.1/TituloRespuesta")){
//JSONArray array_titulo = objeto_info.getJSONArray("http://purl.org/dc/elements/1.1/TituloRespuesta");
//String titulo = array_titulo.getString(0);
//System.out.println(" Titulo ultimas resp:\n" + titulo);
}
if (objeto_info.has("http://purl.org/dc/elements/1.1/URL")){
JSONArray array_url = objeto_info.getJSONArray("http://purl.org/dc/elements/1.1/URL");
String url = array_url.getString(0);
System.out.println(" URL: " + url);
//Launch new thread for each last answer with zero level!
//new Json("0"+cuenta+url).start();
}
}
}
}
//sla.ckers.org && elhacker.net----------------------------------------------------------------------------
if (cuenta.contains("sla.ckers.org") || cuenta.contains("elhacker.net")){
if (objeto.has("http://purl.org/dc/elements/1.1/Usuario")){
JSONArray array_usuarios = objeto.getJSONArray("http://purl.org/dc/elements/1.1/Usuario");
JSONObject objeto_usuarios = array_usuarios.getJSONObject(0);
//System.out.println("Informacion de usuario:");
if(objeto_usuarios.has("http://purl.org/dc/elements/1.1/Nombre")){
//JSONArray array_user = objeto_usuarios.getJSONArray("http://purl.org/dc/elements/1.1/Nombre");
//String Nombre = array_user.getString(0);
//System.out.println(" Nombre: " + Nombre);
}
if(objeto_usuarios.has("http://purl.org/dc/elements/1.1/Posts")){
JSONArray array_user = objeto_usuarios.getJSONArray("http://purl.org/dc/elements/1.1/Posts");
String posts = array_user.getString(0);
System.out.println(" Posts: " + posts);
}
if(objeto_usuarios.has("http://purl.org/dc/elements/1.1/URLPosts")){
JSONArray array_user = objeto_usuarios.getJSONArray("http://purl.org/dc/elements/1.1/URLPosts");
String urlPosts = array_user.getString(0);
System.out.println(" URLPosts: " + urlPosts);
String scrappy_dump = Ejecutor.executeScrappy(urlPosts, "0");
JSONArray array = (JSONArray) JSONSerializer.toJSON(scrappy_dump);
JSONObject objeto_dump = array.getJSONObject(0);
int totalPages = 1;
if(objeto_dump.has("http://purl.org/dc/elements/1.1/TotalPages")){
JSONArray number = objeto_dump.getJSONArray("http://purl.org/dc/elements/1.1/TotalPages");
totalPages = Integer.parseInt(number.getString(0));
}
OpalExecutorService opalExec = new OpalExecutorService(userName);
int postsCount = 0;
System.out.println(" Maximum posts: " + Property.getPOSTS_NUMBER());
for (int j = 1; j <= totalPages; j++){
if (postsCount >= Property.getPOSTS_NUMBER()) {
break;
}
if (j > 1){
urlPosts += ",page=" + j;
scrappy_dump = Ejecutor.executeScrappy(urlPosts, "0");
array = (JSONArray) JSONSerializer.toJSON(scrappy_dump);
objeto_dump = array.getJSONObject(0);
}
if (objeto_dump.has("http://purl.org/dc/elements/1.1/Posts")){
JSONArray array_objeto_post = objeto_dump.getJSONArray("http://purl.org/dc/elements/1.1/Posts");
System.out.println(" Calculate reputation over "+array_objeto_post.size()+" posts");
for(int i=0;i<array_objeto_post.size();i++){
if (postsCount == Property.getPOSTS_NUMBER())
break;
JSONObject objeto_array_post = array_objeto_post.getJSONObject(i);
//System.out.println("Informacion de post:");
if(objeto_array_post.has("http://purl.org/dc/elements/1.1/PostURL")){
JSONArray array_postURL = objeto_array_post.getJSONArray(
"http://purl.org/dc/elements/1.1/PostURL");
final String postURL = array_postURL.getString(0);
System.out.println(" PostURL: " + postURL);
opalExec.execute(postURL);
postsCount++; //Depurar Execute: scrappy -f ejson -g http://sla.ckers.org/forum/read.php?16,27618,27683#msg-27683 -l 0
//Limitar caracteres a la entrada curl (en el caso de q falle curl).
}