No Description

movie.cpp 8.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. #include "movie.h"
  2. /// \fn string getMovieByPosition(int position, filemanip &file)
  3. /// \~English
  4. /// \brief Finds a movie in position position of a file and returns the
  5. /// name of the movie
  6. /// \param position Position of the movie in the file
  7. /// \param file A file pointer
  8. /// \return The name of the movie
  9. /// \~Spanish
  10. /// \brief Encuentra una pelicula en posicion position de un archivo y devuelve
  11. /// el nombre de la pelicula.
  12. /// \param position Posicion de la pelicula en el archivo
  13. /// \param file Un apuntador a archivo.
  14. /// \return El nombre de la pelicula
  15. string getMovieByPosition(int position, filemanip &file){
  16. int counter = 0 ;
  17. //Input Validation
  18. if (position < 1){
  19. return "" ;
  20. }
  21. file.reset();
  22. QString line = file.getnext() ;
  23. while(line != ""){
  24. if (counter == position){
  25. return line.toStdString() ;
  26. }
  27. line = file.getnext() ;
  28. counter++ ;
  29. }
  30. return "" ;
  31. }
  32. /// \fn string getMovieByName(string moviename, filemanip &file)
  33. /// \~English
  34. /// \brief Finds the information of a movie given its name.
  35. /// \param moviename The name of the movie
  36. /// \param file A file pointer
  37. /// \return One line with the information of the movie separated by | (pipes)
  38. /// \~Spanish
  39. /// \brief Encuentra la informacion de una pelicula dado su nombre.
  40. /// \param moviename Nombre de la pelicula
  41. /// \param file Un apuntador a archivo.
  42. /// \return Una linea con la informacion de la pelicula separada por |.
  43. string getMovieByName(string moviename, filemanip &file){
  44. QString movie = QString::fromStdString(moviename) ;
  45. QStringList fields ;
  46. file.reset();
  47. QString line = file.getnext() ;
  48. while(line != "") {
  49. fields = line.split("|");
  50. if (fields[0] == movie){
  51. return line.toStdString() ;
  52. }
  53. line = file.getnext() ;
  54. }
  55. return "" ;
  56. }
  57. /// \fn void showMovie(string movieinfo)
  58. /// \~English
  59. /// \brief Display the movie information of a | separated line with movie info.
  60. /// Example line: Ninja Turtles: The Next Mutation, Vol. 1|Shout! Factory||Out|2.0|4:3|19.93|NR|1997|
  61. /// \param movieinfo The information of the movie in one line separated by |
  62. /// \~Spanish
  63. /// \brief Despliega la informacion de una pelicula de una linea con la informacion de la
  64. /// pelicula separada por |.
  65. /// Ejemplo de la linea: Ninja Turtles: The Next Mutation, Vol. 1|Shout! Factory||Out|2.0|4:3|19.93|NR|1997|
  66. /// \param movieinfo La informacion de la pelicula en una linea separada por |
  67. void showMovie(string movieinfo){
  68. QStringList fields = QString::fromStdString(movieinfo).split('|') ;
  69. if(fields.size() >= 15){
  70. cout << "==================== MOVIE =======================" <<endl
  71. << "Name:\t" << fields[0].toStdString() <<endl
  72. << "Rating:\t" << fields[7].toStdString() << endl
  73. << "Year:\t" << fields[8].toStdString() <<endl
  74. << "Genre:\t" << fields[9].toStdString() <<endl ;
  75. }
  76. }
  77. /// \fn void showMovies(filemanip &file, int start, int end)
  78. /// \~English
  79. /// \brief Display the information of the movies in a file from line start to line
  80. /// end.
  81. /// \param file Pointer to a file.
  82. /// \param start Line in the file to start showing movie info.
  83. /// \param end Line in the file to stop showing movie information.
  84. /// \~Spanish
  85. /// \brief Despliega la informacion de las peliculas en un archivo desde la linea start
  86. /// hasta la line end.
  87. /// \param file Apuntador a un archivo.
  88. /// \param start Linea en el archivo desde donde desplegar info de las peliculas
  89. /// \param end Linea en el archivo hasta donde deplegar info de las peliculas
  90. void showMovies(filemanip &file, int start, int end){
  91. int counter = 0;
  92. if(start < 1 || end < start)
  93. return ;
  94. file.reset();
  95. QString line = file.getnext() ;
  96. while(line != "") {
  97. if(counter >= start && counter <=end){
  98. showMovie(line.toStdString()) ;
  99. }
  100. line = file.getnext() ;
  101. counter++ ;
  102. }
  103. }
  104. /// \fn void showMovies(filemanip &file, string keyword)
  105. /// \~English
  106. /// \brief Display the information of the movies whose name contains a given keyword
  107. /// \param file Pointer to a file.
  108. /// \param keyword Keyword to search in the name of the movies.
  109. /// \~Spanish
  110. /// \brief Despliega la informacion de las peliculas cuyo nombre contenga una palabra
  111. /// clave dada.
  112. /// \param file Apuntador a un archivo.
  113. /// \param keyword Palabra clave para buscar en el nombre de las peliculas.
  114. void showMovies(filemanip &file, string keyword){
  115. QStringList fields ;
  116. if(keyword.size() < 1)
  117. return ;
  118. file.reset();
  119. QString line = file.getnext() ;
  120. while(line != "") {
  121. fields = line.split('|') ;
  122. if(fields[0].contains(QString::fromStdString(keyword), Qt::CaseInsensitive)){
  123. showMovie(line.toStdString()) ;
  124. }
  125. line = file.getnext() ;
  126. }
  127. }
  128. /// \fn string getMovieName(string movieinfo)
  129. /// \~English
  130. /// \brief Given a movie line from the file returns the movie name.
  131. /// \param movieinfo The information of the movie in one line separated by |
  132. /// \return Movie name
  133. /// \~Spanish
  134. /// \brief Dado una linea de una pelicula del archivo devuelve el nombre de la pelicula
  135. /// \param movieinfo La informacion de la pelicula en una linea separada por |
  136. /// \return El nombre de la pelicula
  137. string getMovieName(string movieinfo){
  138. QStringList fields = QString::fromStdString(movieinfo).split('|') ;
  139. if (fields.size() >= 15)
  140. return fields[0].toStdString() ;
  141. return "" ;
  142. }
  143. /// \fn string getMovieRating(string movieinfo)
  144. /// \~English
  145. /// \brief Given a movie line from the file returns the movie rating.
  146. /// \param movieinfo The information of the movie in one line separated by |
  147. /// \return The movie rating
  148. /// \~Spanish
  149. /// \brief Dado una linea de una pelicula del archivo devuelve la clasificacion
  150. /// de una pelicula
  151. /// \param movieinfo La informacion de la pelicula en una linea separada por |
  152. /// \return La clasificacion de la pelicula
  153. string getMovieRating(string movieinfo){
  154. QStringList fields = QString::fromStdString(movieinfo).split('|') ;
  155. if (fields.size() >= 15)
  156. return fields[7].toStdString() ;
  157. return "" ;
  158. }
  159. /// \fn string getMovieYear(string movieinfo)
  160. /// \~English
  161. /// \brief Given a movie line from the file returns the movie release year.
  162. /// \param movieinfo The information of the movie in one line separated by |
  163. /// \return The movie release year.
  164. /// \~Spanish
  165. /// \brief Dado una linea de una pelicula del archivo devuelve el ano de lanzamiento
  166. /// de la pelicula
  167. /// \param movieinfo La informacion de la pelicula en una linea separada por |
  168. /// \return El ano de lanzamiento de la pelicula
  169. string getMovieYear(string movieinfo){
  170. QStringList fields = QString::fromStdString(movieinfo).split('|') ;
  171. if (fields.size() >= 15)
  172. return fields[8].toStdString() ;
  173. return "" ;
  174. }
  175. /// \fn string getMovieGenre(string movieinfo)
  176. /// \~English
  177. /// \brief Given a movie line from the file returns the movie genre.
  178. /// \param movieinfo The information of the movie in one line separated by |
  179. /// \return The movie genre.
  180. /// \~Spanish
  181. /// \brief Dado una linea de una pelicula del archivo devuelve el genero
  182. /// de la pelicula
  183. /// \param movieinfo La informacion de la pelicula en una linea separada por |
  184. /// \return El genero de la pelicula
  185. string getMovieGenre(string movieinfo){
  186. QStringList fields = QString::fromStdString(movieinfo).split('|') ;
  187. if (fields.size() >= 15)
  188. return fields[9].toStdString() ;
  189. return "" ;
  190. }
  191. /// \fn void getMovieInfo(string, string &, string &, string &, string &)
  192. /// \~English
  193. /// \brief Given a movie line from the file returns by reference the movie name,
  194. /// rating, year, and genre.
  195. /// \param movieinfo The information of the movie in one line separated by |
  196. /// \~Spanish
  197. /// \param name Reference variable to return the movie name
  198. /// \param rating Reference variable to return the movie rating
  199. /// \param year Reference variable to return the movie release year
  200. /// \param genre Reference variable to return the movie genre
  201. /// \brief Dado una linea de una pelicula del archivo devuelve por referencia
  202. /// el nombre, clasificion, ano de lanzamiento y genero de una pelicula.
  203. /// \param name Variable de referencia para devolver el nombre de la pelicula
  204. /// \param rating Variable de referencia para devolver la clasificacion de la pelicula
  205. /// \param year Variable de referencia para devolver el ano de lanzamiento de la pelicula
  206. /// \param genre Variable de referencia para devolver el genero de la pelicula
  207. void getMovieInfo(string movieinfo, string &rating, string &year, string &genre){
  208. QStringList fields = QString::fromStdString(movieinfo).split('|') ;
  209. if (fields.size() >= 15){
  210. rating = fields[7].toStdString() ;
  211. year = fields[8].toStdString() ;
  212. genre = fields[9].toStdString() ;
  213. }
  214. return ;
  215. }