require 'rexml/document'
#Debemos añadir la libreria de ruby para Exist
require './existapi.rb'
include REXML
#Parámetros que introduce el usuario
param1 = ARGV[0]
param2 = ARGV[1]
#Vector para almacenar todos los equipos disponibles en la BD
ficheros =Array.new
#Vectores y variables auxiliares
vector=Array.new
vector2=Array.new
j=0
#Sentencias que hay que añadir para hacer funcionar la BD
#Le indicamos que se ejecutará en nuestro PC por el puerto 80
#Además le indicamos el login y contraseña
existapi = ExistApi.new('/exist/xmlrpc','localhost',8080)
existapi.set_credentials('admin','cristina')
#Otras sentencias opcionales relacionadas con la libreria Ruby
existapi.param_indent = 'no'
existapi.param_encoding = 'UTF-8'
existapi.param_highlight_matches = 'none'
#Lo primero de todo es comprobar que se han introducido dos argumentos
if (param1 == nil || param2 == nil)
#Si no lo ha hecho se lo indicamos al usuario
puts "¡Sentencia incorrecta! Lea las instrucciones siguientes:"
puts "----------------------------------------------------------------------"
puts "Para mostrar:\n*todos los equipos escriba: ruby p7final.rb todos equipos"
puts "*todos los jugadores de un equipo escriba: ruby p7final.rb todos [equipo]"
puts "*todos los jugadores de todos los equipos escriba: ruby p7final.rb todos todos"
puts "*un jugador de un equipo: ruby p7final.rb [equipo] [portero|defensa|centrocampista|delantero]"
puts "*los tecnicos de un equipo: ruby p7final.rb [equipo] tecnico"
#---------------------------------------------------------------------------
#Si el usuario desea conocer todos los equipos y/o todos los jugadores
elsif (param1 == "todos" )
#Ahora debemos comprobar el segundo parámetro
#Si quiere conocer TODOS los equipos de la liga o los jugadores de TODOS los equipos
if(param2 == "equipos" || param2 == "todos")
#Nos debemos bajar todas las colecciones de la carpeta equipos en la BD
archivo1=existapi.get_document('/equipos/rmadrid.xml')
archivo2=existapi.get_document('/equipos/barca.xml')
#Creamos los documentos
ficheros.push(Document.new(archivo1))
ficheros.push(Document.new(archivo2))
#Ponemos un titulo a la lista
puts "Los equipos de la liga española son:"
puts "------------------------------------------"
#//////////////////////////////////////////////////////////////////////////////
#TODOS LOS EQUIPOS DE LA LIGA
if(param2=="equipos")
#En este caso solo mencionamos el nombre del equipo
ficheros.each do |teams|
XPath.each(teams,"//equipo/@id") { |equipo|
puts "***-"+equipo.value}
end#Final del bucle
#TODOS LOS JUGADORES DE TODOS LOS EQUIPOS
elsif(param2=="todos")
ficheros.each do |teams|
#Primero ponemos el nombre del equipo
XPath.each(teams,"//equipo/@id") { |equipo|
puts ""
puts "***-"+equipo.value
puts "--------------------"}
#Y luego sus jugadores
XPath.each(teams,"//jugador") { |jugadores|
puts "*-"+jugadores.text
}
end#Final del bucle
end
#//////////////////////////////////////////////////////////////////////////////
end
#//////////////////////////////////////////////////////////////////////////////
#TODOS LOS JUGADORES DE UN EQUIPO
#Primero averiguamos el equipo de que se trata
case param2
when "RMadrid"
arc = existapi.get_document('/equipos/rmadrid.xml')
when "Barca"
arc = existapi.get_document('/equipos/barca.xml')
end
#Y mostramos los jugadores por pantalla indicando además su posicion en el campo
doc = Document.new(arc)
#Obtenemos los jugadores y los almacenamos en un array
XPath.each(doc,"//jugador") { |jugadores|
vector.push(jugadores.text)
}
#Obtenemos su posicion
XPath.each(doc,"//jugador/@tipo") { |titulo|
vector2.push(titulo.value)
}
#Los mostramos de forma alterna
vector.each do |num|
#Debemos pasar el String a integer
numero=num.to_i
#Salida por pantalla
puts "*-"+vector[numero+j]+ " ( "+vector2[numero+j]+" )"
j=j+1
end
#//////////////////////////////////////////////////////////////////////////////
else
#Si pregunta por algun jugador en particular
#NOMBRE DE JUGADORES SEGUN SU POSICION Y EQUIPO
if (param1 == "RMadrid")
archivo=existapi.get_document('/equipos/rmadrid.xml')
elsif (param1 == "Barca")
archivo=existapi.get_document('/equipos/barca.xml')
end
#Creamos el documento
doc = Document.new(archivo)
#Obtenemos la posicion del jugador
tipo = param2
#//////////////////////////////////////////////////////////////////////////////
#LISTAR LOS JUGADORES O LOS TECNICOS
case tipo
when "defensa","centrocampista","delantero","portero"
XPath.each(doc,"//jugador[@tipo=\""+tipo+"\"]/") { |titulo|
puts "*-"+titulo.text }
when "tecnico"
#XPath.each(doc,"//"+tipo) { |titulo|
#puts "*-"+titulo.text }
#Obtenemos los jugadores y los almacenamos en un array
XPath.each(doc,"//"+tipo) { |tecnico|
vector.push(tecnico.text)
}
#Obtenemos su posicion
XPath.each(doc,"//"+tipo+"/@tipo") { |tecn|
vector2.push(tecn.value)
}
#Los mostramos de forma alterna
vector.each do |num|
#Debemos pasar el String a integer
numero=num.to_i
#Salida por pantalla
puts "*-"+vector[numero+j]+ " ( "+vector2[numero+j]+" )"
j=j+1
end
end#Fin del case
end#Fin del if principal
Pruebas:




