PageRenderTime 46ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/javaProject/SerializationBiblio/src/world/Serializacion.java

https://bitbucket.org/ericson_cepeda/repbiblioteca
Java | 320 lines | 271 code | 32 blank | 17 comment | 69 complexity | 20eece118edfb8ab1a9a5e59de79bd5f MD5 | raw file
  1. package world;
  2. import java.io.BufferedReader;
  3. import java.io.DataInputStream;
  4. import java.io.FileInputStream;
  5. import java.io.InputStreamReader;
  6. import java.text.CharacterIterator;
  7. import java.text.StringCharacterIterator;
  8. import java.util.ArrayList;
  9. import java.util.List;
  10. import models.IndexLibrary;
  11. import com.google.gson.Gson;
  12. import com.google.gson.JsonElement;
  13. import com.mongodb.DBObject;
  14. public class Serializacion
  15. {
  16. private int posicion;
  17. private static Serializacion INSTANCE;
  18. public static final String SPECIAL = "([`\\~!@#$%\\^\\&\\*\\(\\)_\\+\\[\\]\\;\',\\./{}|:\"<>?])";
  19. private ArrayList<BibliotecaTDO> objetoBiblioteca;
  20. private Gson gsonBiblioteca;
  21. public static Serializacion getInstance(){
  22. if (INSTANCE == null)
  23. INSTANCE = new Serializacion( );
  24. return INSTANCE;
  25. }
  26. public Serializacion( )
  27. {
  28. posicion = 0;
  29. gsonBiblioteca = new Gson( );
  30. objetoBiblioteca = new ArrayList<BibliotecaTDO>( );
  31. IndexLibrary.cleanLibaryIndex();
  32. setGsonBiblioteca( );
  33. }
  34. public int getCurrentPosition(){
  35. return posicion;
  36. }
  37. public Gson getGsonBiblioteca( )
  38. {
  39. return gsonBiblioteca;
  40. }
  41. public boolean setGsonBiblioteca( )
  42. {
  43. try
  44. {
  45. //String rutaArchivo = "C:/Users/Kelvin/Desktop/colecSB_03Oct2012.txt";
  46. String rutaArchivo = "/home/libraryData/colecSB_03Oct2012.txt";
  47. // Abrimos el archivo
  48. FileInputStream fstream = new FileInputStream( rutaArchivo );
  49. // Creamos el objeto de entrada
  50. DataInputStream entrada = new DataInputStream( fstream );
  51. // Creamos el Buffer de Lectura
  52. BufferedReader buffer = new BufferedReader( new InputStreamReader( entrada ) );
  53. String strLinea;
  54. // Leer el archivo linea por linea
  55. while( ( strLinea = buffer.readLine( ) ) != null )
  56. {
  57. // System.out.println( strLinea );
  58. if( strLinea.contains( "Dewey:" ) )
  59. {
  60. String[] dato = strLinea.split( ":" );
  61. BibliotecaTDO objeto = new BibliotecaTDO( );
  62. objeto.setClasificacionDewey(cambioCaracter(dato[ 1 ]) );
  63. crearNuevoLibro( buffer, objeto );
  64. }
  65. }
  66. // Cerramos el archivo
  67. entrada.close( );
  68. }
  69. catch( Exception e )
  70. { // Catch de excepciones
  71. System.err.println( "Ocurrio un error: " + e.getMessage( ) );
  72. }
  73. return true;
  74. }
  75. private void crearNuevoLibro( BufferedReader buffer, BibliotecaTDO objeto )
  76. {
  77. try
  78. {
  79. String strLinea;
  80. boolean fin = false;
  81. // Leer el archivo linea por linea
  82. while( ( strLinea = buffer.readLine( ) ) != null && !fin )
  83. {
  84. if( strLinea.contains( "Autor Personal:" ) )
  85. {
  86. ArrayList<String> datoAutores = new ArrayList<String>( );
  87. String[ ] dato = strLinea.split( "Autor Personal:" );
  88. // Leer el archivo linea por linea
  89. String [ ]autores = dato[ 1 ].split( "," );
  90. for( String stringRta : autores )
  91. {
  92. datoAutores.add( cambioCaracter(stringRta.trim( )) );
  93. }
  94. objeto.setAutorPersonal( datoAutores );
  95. }
  96. else if( strLinea.contains( "Titulo:" ) )
  97. {
  98. String[] dato = strLinea.split( "Titulo:" );
  99. String[] autor = dato[ 1 ].split( "/" );
  100. objeto.setTitulo( cambioCaracter(autor[ 0 ]) );
  101. }
  102. else if( strLinea.contains( "Datos Publicacion:" ) )
  103. {
  104. String[] dato = strLinea.split( "Datos Publicacion:" );
  105. objeto.setDatosPublicacion(cambioCaracter(dato[ 1 ]) );
  106. }
  107. else if( strLinea.contains( "Desc. Fisica:" ) )
  108. {
  109. String[] dato = strLinea.split( "Desc. Fisica:" );
  110. objeto.setDescFisica(cambioCaracter(dato[ 1 ]) );
  111. }
  112. else if( strLinea.contains( "Contenido Parcial:" ) )
  113. {
  114. String[] dato = strLinea.split( "Contenido Parcial:" );
  115. objeto.setContenidoParcial(cambioCaracter(dato[ 1 ]) );
  116. }
  117. else if( strLinea.contains( "Contenido:" ) )
  118. {
  119. String[] dato = strLinea.split( "Contenido:" );
  120. objeto.setContenido(cambioCaracter(dato[ 1 ]) );
  121. }
  122. else if( strLinea.contains( "Restriccion Acceso:" ) )
  123. {
  124. String[] dato = strLinea.split( "Restriccion Acceso:" );
  125. objeto.setRestriccionAcceso( cambioCaracter(dato[ 1 ]) );
  126. }
  127. else if( strLinea.contains( "Ref. donacion:" ) )
  128. {
  129. ArrayList<String> datoRefDonacion = new ArrayList<String>( );
  130. // Leer el archivo linea por linea
  131. do
  132. {
  133. String[] dato = strLinea.split( "Ref. donacion:" );
  134. datoRefDonacion.add( cambioCaracter(dato[ 1 ]) );
  135. } while( ( strLinea = buffer.readLine( ) ) != null && strLinea.contains( "Ref. donacion:" ) );
  136. objeto.setRefDonacion( datoRefDonacion );
  137. }
  138. else if( strLinea.contains( "Nota de Bibliografia:" ) )
  139. {
  140. String[] dato = strLinea.split( "Nota de Bibliografia:" );
  141. objeto.setNotaDeBibliografia( cambioCaracter(dato[ 1 ]) );
  142. }
  143. else if( strLinea.contains( "Curso audiencia:" ) )
  144. {
  145. ArrayList<String> datoCursoAudiencia = new ArrayList<String>( );
  146. // Leer el archivo linea por linea
  147. do
  148. {
  149. String[] dato = strLinea.split( "Curso audiencia:" );
  150. datoCursoAudiencia.add( cambioCaracter(dato[ 1 ]) );
  151. } while( ( strLinea = buffer.readLine( ) ) != null && strLinea.contains( "Curso audiencia:" ) );
  152. objeto.setCursoAudiencia( datoCursoAudiencia );
  153. }
  154. else if( strLinea.contains( "Nota de Reproduccion:" ) )
  155. {
  156. String[] dato = strLinea.split( "Nota de Reproduccion:" );
  157. objeto.setNotaDeReproduccion( cambioCaracter(dato[ 1 ]) );
  158. }
  159. else if( strLinea.contains( "Nota General:" ) )
  160. {
  161. String[] dato = strLinea.split( "Nota General:" );
  162. objeto.setNotaGeneral( cambioCaracter(dato[ 1 ]) );
  163. }
  164. else if( strLinea.contains( "En Biblioteca(s):" ) )
  165. {
  166. String[] dato = strLinea.split( ":" );
  167. objeto.setEnBiblioteca( cambioCaracter(dato[ 1 ]) );
  168. }
  169. else if( strLinea.contains( "Bulletin heading:" ) )
  170. {
  171. String[] dato = strLinea.split( "Bulletin heading:" );
  172. objeto.setBulletinHeading( cambioCaracter(dato[ 1 ]) );
  173. }
  174. else if( strLinea.contains( "Materia Personal:" ) )
  175. {
  176. ArrayList<String> datoMateriaPersonal = new ArrayList<String>( );
  177. // Leer el archivo linea por linea
  178. do
  179. {
  180. String[] dato = strLinea.split( "Materia Personal:" );
  181. datoMateriaPersonal.add( cambioCaracter(dato[ 1 ]) );
  182. } while( ( strLinea = buffer.readLine( ) ) != null && strLinea.contains( "Materia Personal:" ) );
  183. objeto.setMateriaPersonal( datoMateriaPersonal );
  184. }
  185. else if( strLinea.contains( "Materia General:" ) )
  186. {
  187. ArrayList<String> datoMateriaGeneral = new ArrayList<String>( );
  188. // Leer el archivo linea por linea
  189. do
  190. {
  191. String[] dato = strLinea.split( "Materia General:" );
  192. datoMateriaGeneral.add( cambioCaracter(dato[ 1 ]) );
  193. } while( ( strLinea = buffer.readLine( ) ) != null && strLinea.contains( "Materia General:" ) );
  194. objeto.setMateriaGeneral( datoMateriaGeneral );
  195. }
  196. else if( strLinea.contains( "Materia Geografica:" ) )
  197. {
  198. ArrayList<String> datoMateriaGeografica = new ArrayList<String>( );
  199. // Leer el archivo linea por linea
  200. do
  201. {
  202. String[] dato = strLinea.split( "Materia Geografica:" );
  203. datoMateriaGeografica.add( cambioCaracter(dato[ 1 ]) );
  204. } while( ( strLinea = buffer.readLine( ) ) != null && strLinea.contains( "Materia Geografica:" ) );
  205. objeto.setMateriaGeografica( datoMateriaGeografica );
  206. }
  207. else if( strLinea.contains( "Autor Secundario:" ) )
  208. {
  209. ArrayList<String> datoAutorSecundario = new ArrayList<String>( );
  210. // Leer el archivo linea por linea
  211. do
  212. {
  213. String[] dato = strLinea.split( "Autor Secundario:" );
  214. datoAutorSecundario.add( cambioCaracter(dato[ 1 ]) );
  215. } while( ( strLinea = buffer.readLine( ) ) != null && strLinea.contains( "Curso audiencia:" ) );
  216. objeto.setAutorSecundario( datoAutorSecundario );
  217. fin = true;
  218. }
  219. }
  220. IndexLibrary.saveHashPosition(objeto, objetoBiblioteca.size());
  221. objetoBiblioteca.add( objeto );
  222. }
  223. catch( Exception e )
  224. { // Catch de excepciones
  225. System.err.println( "Ocurrio un error: " + e.getMessage( ) );
  226. }
  227. }
  228. public ArrayList<BibliotecaTDO> getObjetoBiblioteca( )
  229. {
  230. return objetoBiblioteca;
  231. }
  232. public String darSiguiente()
  233. {
  234. int postemp=posicion;
  235. posicion++;
  236. if (posicion == objetoBiblioteca.size())
  237. posicion = 0;
  238. boolean found = false;
  239. int collectionsFound = 0;
  240. while (!found && postemp < objetoBiblioteca.size()) {
  241. BibliotecaTDO nextBook = objetoBiblioteca.get(postemp);
  242. List<List<DBObject>> onCollections = IndexLibrary.getBookByTitleAndAuthor(nextBook);
  243. for (List<DBObject> string : onCollections) {
  244. if (string.size() > 0)
  245. collectionsFound++;
  246. if (collectionsFound >= 4)
  247. found = true;
  248. }
  249. postemp++;
  250. }
  251. return getGsonBiblioteca().toJson(objetoBiblioteca.get(postemp));
  252. }
  253. public BibliotecaTDO getAtPosition(int postemp)
  254. {
  255. return objetoBiblioteca.get(postemp);
  256. }
  257. private String cambioCaracter(String token)
  258. {
  259. try
  260. {
  261. StringBuffer s = new StringBuffer(token.length());
  262. CharacterIterator it = new StringCharacterIterator(token);
  263. for (char ch = it.first(); ch != CharacterIterator.DONE; ch = it.next()) {
  264. if (ch >= 32 && ch <= 126 || ch == 168 || ch == 173)
  265. s.append(ch);
  266. else
  267. s.append("");
  268. }
  269. return s.toString().trim();
  270. }
  271. catch( Exception e )
  272. {
  273. e.printStackTrace( );
  274. return "";
  275. // TODO: handle exception
  276. }
  277. }
  278. public void borrarvariables() {
  279. objetoBiblioteca = null;
  280. try {
  281. finalize();
  282. } catch (Throwable e) {
  283. // TODO Auto-generated catch block
  284. e.printStackTrace();
  285. }
  286. System.gc();
  287. }
  288. }