Guest User

Untitled

a guest
Jan 26th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.08 KB | None | 0 0
  1. /*
  2. * Sistema creado por bfhsoftware para musica ambiental
  3. * Bernardo harreguy, Derechos reservados
  4. * and open the template in the editor.
  5. */
  6. package bfhsoftware.sonidoambiental;
  7.  
  8. import java.io.File;
  9. import java.sql.Connection;
  10. import java.sql.DriverManager;
  11. import java.sql.PreparedStatement;
  12. import java.sql.ResultSet;
  13. import java.sql.SQLException;
  14. import java.sql.Statement;
  15. import java.util.logging.Level;
  16. import java.util.logging.Logger;
  17. //Instalacion y configuracion de sistema de camaras
  18.  
  19. public class comunicacion {
  20. String ultimotema = "";
  21. String directoriodemusica = ".\\";
  22.  
  23. static Connection conn ;
  24. Connection conexion() {
  25.  
  26. try {
  27. if (conn == null){
  28. if (main.isandroid()){
  29.  
  30. //conn = DriverManager.getConnection("jdbc:sqlite:"+ getExternalFilesDir("./") +"database.db");
  31. } else {
  32. conn = DriverManager.getConnection("jdbc:sqlite:./database.db");
  33. }
  34. }
  35. } catch (SQLException e) {
  36. }
  37. return conn;
  38.  
  39. }
  40. public void verificarbasededatos(){
  41. try {
  42. ResultSet rs = regresardatos("select DISTINCT tbl_name from sqlite_master where tbl_name = 'musica';");
  43. if (! rs.next()) {
  44. //InputStream fstream = this.getClass().getClassLoader().getResourceAsStream("abc.txt");
  45. //ejecutarquery(String.getClassLoader().getResourceAsStream("myfile.txt") );
  46. }
  47. } catch (SQLException ex) {
  48. Logger.getLogger(comunicacion.class.getName()).log(Level.SEVERE, null, ex);
  49. }
  50. }
  51. public PreparedStatement consulta(String sql) {
  52. PreparedStatement consult=null;
  53. try {
  54. consult = conexion().prepareStatement(sql);
  55. }catch (SQLException e) {
  56. System.out.println(e.getMessage());
  57. }
  58. return consult;
  59. }
  60. public ResultSet regresardatos(String sql){
  61. ResultSet rs=null;
  62. PreparedStatement consulta;
  63. try {consulta = conexion().prepareStatement(sql);
  64. rs = consulta.executeQuery();
  65. }catch (SQLException e) {
  66. System.out.println(e.getMessage());
  67. }
  68. return rs;
  69. }
  70. public void ejecutarquery (String sql){
  71. try {
  72. Connection connnn = conexion();
  73. //if (connnn != null){
  74. Statement stmt = connnn.createStatement();
  75. stmt.execute(sql);
  76. }catch (SQLException e) {
  77. System.out.println(e.getMessage());
  78. }
  79. }
  80. public void verificaralbum() {
  81. ejecutarquery("INSERT INTO albums (nombre) SELECT 'album1' WHERE ( SELECT COUNT(id) FROM albums ) = 0;");
  82. ejecutarquery("INSERT INTO reproduccion (idalbum) SELECT (SELECT id FROM albums LIMIT 1) WHERE (SELECT Count(id) FROM reproduccion)= 0;");
  83. ejecutarquery("UPDATE reproduccion SET habilitado = 1 WHERE (SELECT Count(id) FROM reproduccion)= 0 LIMIT 1;");
  84. /*try (
  85. Statement stmt = conexion().createStatement()
  86. ){
  87. stmt.execute("INSERT INTO albums (nombre) SELECT 'album1' WHERE ( SELECT COUNT(id) FROM albums ) = 0;");
  88. }catch (SQLException e) {
  89. System.out.println(e.getMessage());
  90. }*/
  91. }
  92. /*public void verificaralbum() {
  93. try (
  94. Statement stmt = conexion().createStatement()
  95. ){
  96. stmt.execute("INSERT INTO albums (nombre) SELECT 'album1' WHERE ( SELECT COUNT(id) FROM albums ) = 0;");
  97. }catch (SQLException e) {
  98. System.out.println(e.getMessage());
  99. }
  100. }*/
  101. public Object opcion (String nombre, Object predeterminado, Integer tipo) {
  102. if (predeterminado != null ){
  103. if (predeterminado instanceof Integer) {
  104. return opcionnumero(nombre, (Integer) predeterminado);
  105. }
  106. if (predeterminado instanceof String) {
  107. return opcioncadena(nombre, (String) predeterminado);
  108. }
  109. if (predeterminado instanceof Boolean) {
  110. return opcionboolean(nombre, (Boolean) predeterminado);
  111. }
  112. } else{
  113. switch (tipo) {
  114. case 0:
  115. return opcionboolean(nombre);
  116. case 1:
  117. return opcionnumero(nombre);
  118. case 2:
  119. return opcioncadena(nombre);
  120. }
  121. }
  122. return null;
  123. }
  124. public boolean opcionboolean(String nombre, Boolean predeterminado) {
  125. int preparar = 0;
  126. boolean entro=false;
  127. PreparedStatement consulta;
  128. try {
  129. consulta = conexion().prepareStatement("SELECT numero FROM opciones WHERE nombre = ?;");
  130. consulta.setString(1, nombre);
  131. ResultSet rs = consulta.executeQuery();
  132. while (rs.next()) {
  133. entro = true;
  134. preparar = rs.getInt("numero");
  135. }
  136. }catch (SQLException e) {
  137. System.out.println(e.getMessage());
  138. }
  139. if (!entro){
  140. guardaropcion(nombre, predeterminado);
  141. return predeterminado;
  142. }
  143. return !( preparar == 0 );
  144. }
  145. public boolean opcionboolean(String nombre) {
  146. int preparar = 0;
  147. PreparedStatement consulta;
  148. try {
  149. consulta = conexion().prepareStatement("SELECT numero FROM opciones WHERE nombre = ?;");
  150. consulta.setString(1, nombre);
  151. ResultSet rs = consulta.executeQuery();
  152. while (rs.next()) {
  153. preparar = rs.getInt("numero");
  154. }
  155. }catch (SQLException e) {
  156. System.out.println(e.getMessage());
  157. }
  158.  
  159. return !( preparar == 0 );
  160. }
  161. public int opcionnumero(String nombre, Integer predeterminado) {
  162. Boolean entro=false;
  163. int preparar = 0;
  164. PreparedStatement consulta;
  165. try {consulta = conexion().prepareStatement("SELECT numero FROM opciones WHERE nombre = ?;");
  166. consulta.setString(1, nombre);
  167. ResultSet rs = consulta.executeQuery();
  168. while (rs.next()) {
  169. entro=Boolean.TRUE;
  170. preparar = rs.getInt("numero");
  171. }
  172.  
  173. }catch (SQLException e) {
  174. System.out.println(e.getMessage());
  175. }
  176. if (!entro) {
  177. guardaropcion(nombre, predeterminado);
  178. return predeterminado;
  179. }
  180. return preparar;
  181. }
  182. public int opcionnumero(String nombre) {
  183. int preparar = 0;
  184. PreparedStatement consulta;
  185. try {consulta = conexion().prepareStatement("SELECT numero FROM opciones WHERE nombre = ?;");
  186. consulta.setString(1, nombre);
  187. ResultSet rs = consulta.executeQuery();
  188. while (rs.next()) {
  189. preparar = rs.getInt("numero");
  190. }
  191.  
  192. }catch (SQLException e) {
  193. System.out.println(e.getMessage());
  194. }
  195. return preparar;
  196. }
  197. public String opcioncadena(String nombre, String predeterminado) {
  198. Boolean entro =false;
  199. String preparar = "";
  200. PreparedStatement consulta;
  201. try {consulta = conexion().prepareStatement("SELECT texto FROM opciones WHERE nombre = ?;");
  202. consulta.setString(1, nombre);
  203. ResultSet rs = consulta.executeQuery();
  204. while (rs.next()) {
  205. entro =true;
  206. preparar = rs.getString("numero");
  207. }
  208.  
  209. }catch (SQLException e) {
  210. System.out.println(e.getMessage());
  211. }
  212. if (!entro) {
  213. guardaropcion(nombre, predeterminado);
  214. return predeterminado;
  215. }
  216. return preparar;
  217. }
  218. public String opcioncadena(String nombre) {
  219. String preparar = "";
  220. PreparedStatement consulta;
  221. try {consulta = conexion().prepareStatement("SELECT texto FROM opciones WHERE nombre = ?;");
  222. consulta.setString(1, nombre);
  223. ResultSet rs = consulta.executeQuery();
  224. while (rs.next()) {
  225. preparar = rs.getString("numero");
  226. }
  227.  
  228. }catch (SQLException e) {
  229. System.out.println(e.getMessage());
  230. }
  231. return preparar;
  232. }
  233. public void guardaropcion(String nombre, String texto ) {
  234. PreparedStatement consulta;
  235. try {consulta = conexion().prepareStatement("INSERT INTO opciones (nombre) SELECT ? WHERE (SELECT count(id) FROM opciones WHERE nombre = ?) = 0; " +
  236. "UPDATE optiones SET texto = ? WHERE nombre = ?;");
  237. consulta.setString(1, nombre);
  238. consulta.setString(2, nombre);
  239. consulta.setString(3, texto);
  240. consulta.setString(4, nombre);
  241. consulta.execute();
  242. }catch (SQLException e) {
  243. System.out.println(e.getMessage());
  244. }
  245. }
  246.  
  247. public void guardaropcion(String nombre, int numero ) {
  248. PreparedStatement consulta;
  249. try {consulta = conexion().prepareStatement("INSERT INTO opciones (nombre) SELECT ? WHERE (SELECT count(id) FROM opciones WHERE nombre = ?) = 0; " +
  250. "UPDATE optiones SET numero = ? WHERE nombre = ?;");
  251. consulta.setString(1, nombre);
  252. consulta.setString(2, nombre);
  253. consulta.setInt(3, numero);
  254. consulta.setString(4, nombre);
  255. consulta.execute();
  256. }catch (SQLException e) {
  257. System.out.println(e.getMessage());
  258. }
  259. }
  260. void marcarreproducido(String cancion){
  261.  
  262. try {
  263. PreparedStatement consult=consulta("UPDATE musica SET reproducido = 1, ultimareproduccion = datetime('now','localtime') WHERE nombreyruta = ?;");
  264. consult.setString(1, cancion);
  265. consult.execute();
  266. }catch (SQLException e) {
  267. System.out.println(e.getMessage());
  268. }
  269. }
  270. void desmarcarreproducido(){
  271. ejecutarquery("UPDATE musica SET reproducido = 0;");
  272. }
  273. void registrarmusica (String nombre){
  274.  
  275. try {PreparedStatement consulta = consulta("INSERT INTO musica (nombreyruta, album) SELECT ?, (SELECT id FROM albums LIMIT 1) WHERE (SELECT count(id) FROM musica WHERE nombreyruta = ?) = 0;");
  276. consulta.setString(1, nombre);
  277. consulta.setString(2, nombre);
  278. consulta.execute();
  279. }catch (SQLException e) {
  280. System.out.println(e.getMessage());
  281. }
  282. }
  283. void eliminarmusica (String nombre){
  284.  
  285. try {PreparedStatement consulta = consulta("DELETE FROM musica WHERE nombreyruta = ?;");
  286. consulta.setString(1, nombre);
  287. consulta.execute();
  288. }catch (SQLException e) {
  289. System.out.println(e.getMessage());
  290. }
  291. }
  292. public void guardaropcion(String nombre, boolean bol ) {
  293. int numero = 0;
  294. if ( bol ) {
  295. numero = 1;
  296. } else {
  297. numero = 0;
  298. }
  299. try {PreparedStatement consulta=consulta("INSERT INTO opciones (nombre) SELECT ? WHERE (SELECT count(id) FROM opciones WHERE nombre = ?) = 0; " +
  300. "UPDATE optiones SET numero = ? WHERE nombre = ?;");
  301. consulta.setString(1, nombre);
  302. consulta.setString(2, nombre);
  303. consulta.setInt(3, numero);
  304. consulta.setString(4, nombre);
  305. consulta.execute();
  306. }catch (SQLException e) {
  307. System.out.println(e.getMessage());
  308. }
  309. }
  310. public String proximotema () {
  311. String temaelegido ="";
  312. try {
  313. boolean archivoencontrado = false;
  314. comprobardirectorio();
  315. /*do {
  316. double cantidaddearchivosareproducir= 0;
  317. do {
  318. ResultSet rs = regresardatos("SELECT COUNT(musica.id) from musica inner join reproduccion on musica.album = reproduccion.idalbum WHERE musica.reproducido = 0;");
  319. while (rs.next()) {
  320. cantidaddearchivosareproducir = rs.getInt(1) * .4;
  321. }
  322. System.out.println("CANTIDADDE TEMAS:" + cantidaddearchivosareproducir +" Cantida");
  323. if (cantidaddearchivosareproducir == 0)
  324. desmarcarreproducido();
  325. } while (cantidaddearchivosareproducir == 0);
  326. int cancionelegida = ThreadLocalRandom.current().nextInt(1, (int) (cantidaddearchivosareproducir + 1));
  327.  
  328. try {
  329. ResultSet rs1 = regresardatos("SELECT nombreyruta FROM musica WHERE reproducido = 0; ");
  330. int idelegida=0;
  331. while (rs1.next()) {
  332. idelegida ++;
  333. if (idelegida == cancionelegida) {
  334. temaelegido = rs1.getString("nombreyruta");
  335. System.out.println(temaelegido);
  336. }}
  337. }catch (SQLException e) {
  338. System.out.println(e.getMessage());
  339. }*/
  340. do{
  341. ResultSet rs = regresardatos("SELECT COUNT(musica.id) from musica inner join reproduccion on musica.album = reproduccion.idalbum WHERE musica.reproducido = 0 AND reproduccion.habilitado = 1;");
  342. while (rs.next()) {
  343. if ( rs.getInt(1) ==0) {
  344. desmarcarreproducido();
  345. }
  346. }
  347. ResultSet rs1 = regresardatos("SELECT c.nombreyruta FROM (SELECT m.nombreyruta FROM musica m inner join reproduccion on m.album = reproduccion.idalbum WHERE m.reproducido = 0 AND reproduccion.habilitado = 1 ORDER BY datetime(ultimareproduccion, 'localtime') LIMIT (SELECT CAST(COUNT(musica.id) * 0.4 AS int) + 1 FROM musica inner join reproduccion on musica.album = reproduccion.idalbum WHERE musica.reproducido = 0 AND reproduccion.habilitado = 1)) c ORDER BY RANDOM() LIMIT 1;");
  348. while (rs1.next()) {
  349. temaelegido = rs1.getString("nombreyruta");
  350. }
  351. if (temaelegido.equals("")) {
  352.  
  353. }else{
  354. //System.err.println("Verificando tema :"+ temaelegido);
  355. if (verificararchivo(temaelegido)) {
  356. archivoencontrado = true ;
  357. marcarreproducido(temaelegido);
  358. }else{
  359. System.err.println("temaeliminado");
  360. eliminarmusica(temaelegido);
  361. }
  362.  
  363.  
  364. }
  365. } while (!archivoencontrado) ;
  366.  
  367. this.ultimotema = new File(temaelegido).getName();
  368. System.err.println(this.ultimotema);
  369. } catch (SQLException e) {
  370. System.out.println(e.getMessage());
  371. }
  372. return temaelegido;
  373. }
  374. public String Ultimotema(){
  375. return this.ultimotema;
  376. }
  377. public void verificarmusica () {
  378. comprobardirectorio();
  379. System.out.println("se verificará el directorio "+ directoriodemusica);
  380. verificaralbumdesdedirectorio(directoriodemusica);
  381. System.out.println("Fin");
  382. }
  383. void comprobardirectorio (){
  384. File f = new File(directoriodemusica);
  385. if (!f.exists()){
  386. System.out.println("No existe el directorio seleccionado previamente");
  387. directoriodemusica = ".\\";
  388. }
  389. }
  390. public String obtenernombredecancion(String direccioncompleta){
  391. return direccioncompleta.substring(direccioncompleta.lastIndexOf("\\")+1);
  392. }
  393. void verificaralbumdesdedirectorio (String directorioaverificar){
  394. System.out.println("Verificando directorio");
  395. //verificar los archivos que estan en el directorio y faltan en la base de datos
  396. String files;
  397. // String directorio;
  398. File folder = new File(directorioaverificar);
  399. File[] listOfFiles = folder.listFiles();
  400. if (!(listOfFiles == null)){
  401. for (File listOfFile : listOfFiles) {
  402. if (listOfFile.isFile()) {
  403. files = listOfFile.getAbsolutePath();
  404.  
  405. if (files.endsWith(".mp3") || files.endsWith(".MP3")|| files.endsWith(".mP3") || files.endsWith(".Mp3"))
  406. {
  407. System.out.println(" obtenido "+ obtenernombredecancion(listOfFile.getAbsolutePath()));
  408. registrarmusica(files);
  409. }
  410. } else if (listOfFile.isDirectory()) {
  411. verificaralbumdesdedirectorio(listOfFile.getPath());
  412.  
  413. }
  414. }
  415. }
  416. //verificar los que estan en la base de datos y no en el directorio y eliminarlos
  417. PreparedStatement consulta;
  418. try {consulta = conexion().prepareStatement("SELECT nombreyruta FROM musica ;");
  419. ResultSet rs = consulta.executeQuery();
  420. while (rs.next()) {
  421. if ( ! verificararchivo(rs.getString(1)) ){
  422. eliminarmusica(rs.getString(1));
  423. }
  424. }
  425. }catch (SQLException e) {
  426. System.out.println(e.getMessage());
  427. }
  428.  
  429. }
  430.  
  431. void verificarlistadereproduccion(){
  432. PreparedStatement consulta;
  433. try {consulta = conexion().prepareStatement("SELECT COUNT(musica.id) FROM musica INNER JOIN reproduccion ON musica.album = reproduccion.idalbum WHERE reproduccion.habilitado =1;");
  434. ResultSet rs = consulta.executeQuery();
  435. if (rs.next()) {
  436. if ( rs.getInt(1)==0 );{
  437. }
  438. }
  439. }catch (SQLException e) {
  440. System.out.println(e.getMessage());
  441. }
  442. //SELECT COUNT(musica.id) FROM musica INNER JOIN reproduccion ON musica.album = reproduccion.idalbum WHERE reproduccion.habilitado =1;
  443. }
  444. public boolean verificararchivo ( String nombre){
  445. File file = new File(nombre);
  446. return file.exists();
  447. }
  448.  
  449.  
  450. }
Add Comment
Please, Sign In to add comment