DbHelper.java Source code

Java tutorial

Introduction

Here is the source code for DbHelper.java

Source

import Data.Project;
import io.vertx.core.Handler;
import io.vertx.core.Vertx;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.asyncsql.AsyncSQLClient;
import io.vertx.ext.asyncsql.MySQLClient;
import io.vertx.ext.asyncsql.PostgreSQLClient;
import io.vertx.ext.sql.ResultSet;
import io.vertx.ext.sql.SQLConnection;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author User
 */
public class DbHelper {

    static DbHelper dbHelper;
    AsyncSQLClient mySQLClient;

    static public DbHelper getInstance() {
        if (dbHelper == null) {
            dbHelper = new DbHelper();
        }
        return dbHelper;
    }

    public void init(Vertx vertx) {
        JsonObject mysqlConfig = new JsonObject().put("host", "127.0.0.1")
                //                .put("port", 5432)
                .put("maxPoolSize", 1000).put("username", "admin").put("password", "212")
                .put("database", "easy_arduino").put("queryTimeout", 7000);
        this.mySQLClient = MySQLClient.createShared(vertx, mysqlConfig);
        mySQLClient.getConnection(conHandler -> {
            System.out.println(conHandler.cause());
        });
    }

    public void selectUser() {
        String query = "SELECT * FROM `user_2` WHERE 1";

        mySQLClient.getConnection(resConnection -> {

            if (resConnection.succeeded()) {
                SQLConnection connection;
                connection = resConnection.result();

                connection.setAutoCommit(false, autoCommit -> {
                    if (autoCommit.succeeded()) {

                        connection.query(query, handlerQuery -> {
                            if (handlerQuery.succeeded()) {

                                ResultSet resultSet = handlerQuery.result();
                                String resultJSON = resultSet.getRows().get(0).toString();
                                System.out.println(resultJSON + " resilasdfaslkd");

                            } else {

                                System.out.println("failed");
                            }
                            connection.close();
                        });
                    } else {
                        System.out.println("auto commit failed");
                    }

                });

                // Got a connection
            } else {
                // Failed to get connection - deal with it
                System.out.println("true failes");
            }
        });
    }

    public DbHelper() {
    }

    public void addUser() {
        //        INSERT INTO `user_2`(`user_name`, `display_name`, `detail`, `pass`, `key_2`) VALUES ('galih1994','Dienstya galih','detail','123','')

    }

    public JsonObject openProject(String userName, String projectName) {
        String project = "{\n" + "    \"id\": 234,\n" + "    \"name\": \"nama project\",\n"
                + "    \"detail\": \" detail of project\",\n" + "    \"config\": {\n"
                + "        \"arduinoType\": \"arduino uno\",\n" + "        \"icType\": \"atmega 328p\",\n"
                + "        \"acessbility\": \"private|public|friend\",\n" + "        \"port\": \"com3\"\n"
                + "    },\n" + "    \"sourceCode\": {\n" + "        \"folders\": [\n" + "            {\n"
                + "                \"name\": \"name folder\",\n" + "                \"id\": 345,\n"
                + "                \"dateModified\": \"11-feb-2014\",\n"
                + "                \"dateCreated\": \"11-feb-2014\",\n"
                + "                \"modifiedBy\": \"userId\",\n" + "                \"files\": [\n"
                + "                    {\n" + "                        \"name\": \"file4.c\",\n"
                + "                        \"id\": 4,\n"
                + "                        \"dateModified\": \"11-feb-2014\",\n"
                + "                        \"dateCreated\": \"11-feb-2014\",\n"
                + "                        \"modifiedBy\": \"userId\"\n" + "                    },\n"
                + "                    {\n" + "                        \"name\": \"file3.c\",\n"
                + "                        \"id\": 3,\n"
                + "                        \"dateModified\": \"11-feb-2014\",\n"
                + "                        \"dateCreated\": \"11-feb-2014\",\n"
                + "                        \"modifiedBy\": \"userId\"\n" + "                    }\n"
                + "                ]\n" + "            }\n" + "        ],\n" + "        \"files\": [\n"
                + "            {\n" + "                \"name\": \"file1.c\",\n" + "                \"id\": 1,\n"
                + "                \"dateModified\": \"11-feb-2014\",\n"
                + "                \"dateCreated\": \"11-feb-2014\",\n"
                + "                \"modifiedBy\": \"userId\"\n" + "            },\n" + "            {\n"
                + "                \"name\": \"file2.c\",\n" + "                \"id\": 2,\n"
                + "                \"dateModified\": \"11-feb-2014\",\n"
                + "                \"dateCreated\": \"11-feb-2014\",\n"
                + "                \"modifiedBy\": \"userId\"\n" + "            }\n" + "        ]\n" + "    }\n"
                + "}\n" + "";

        return new JsonObject(project);
    }

    public JsonObject getProject(String userName, String projectName) {
        String returnDummy = "{\n" + "    \"project\":\n" + "            {\n"
                + "                \"name\": \"blinking\",\n"
                + "                \"create_date\": \"11-feb-2014\",\n"
                + "                \"modify_date\": \"11-feb-2014\",\n"
                + "                \"detail\": \"some detail\",\n" + "                \"visibility\": \"public\",\n"
                + "                \"visibility\": \"public\",\n"
                + "                \"arduino_type\": \"arduino uno\",\n"
                + "                \"arduino_IC\": \"atmega 328\"\n" + "            },\n"
                + "    \"project_structure\":\n" + "            {\n" + "                \"folders\": [\n"
                + "                    {\n" + "                        \"name\": \"lib\",\n"
                + "                        \"create_date\": \"11-feb-2014\",\n"
                + "                        \"modify_date\": \"11-feb-2014\",\n"
                + "                        \"files\": [\n" + "                            {\n"
                + "                                \"name\": \"lcd.c\",\n"
                + "                                \"source\": \"text of source\",\n"
                + "                                \"create_date\": \"11-feb-2014\",\n"
                + "                                \"modify_date\": \"11-feb-2014\"\n"
                + "                            },\n" + "                            {\n"
                + "                                \"name\": \"lcd.h\",\n"
                + "                                \"source\": \"text of source\",\n"
                + "                                \"create_date\": \"11-feb-2014\",\n"
                + "                                \"modify_date\": \"11-feb-2014\"\n"
                + "                            },\n" + "                            {\n"
                + "                                \"name\": \"dht.c\",\n"
                + "                                \"source\": \"text of source\",\n"
                + "                                \"create_date\": \"11-feb-2014\",\n"
                + "                                \"modify_date\": \"11-feb-2014\"\n"
                + "                            },\n" + "                            {\n"
                + "                                \"name\": \"dht.h\",\n"
                + "                                \"source\": \"text of source\",\n"
                + "                                \"create_date\": \"11-feb-2014\",\n"
                + "                                \"modify_date\": \"11-feb-2014\"\n"
                + "                            }\n" + "                        ]\n" + "\n"
                + "                    }\n" + "                ],\n" + "                \"files\": [\n"
                + "                    {\n" + "                        \"name\": \"lcd.c\",\n"
                + "                        \"source\": \"text of source\",\n"
                + "                        \"create_date\": \"11-feb-2014\",\n"
                + "                        \"modify_date\": \"11-feb-2014\"\n" + "                    },\n"
                + "                    {\n" + "                        \"name\": \"lcd.h\",\n"
                + "                        \"source\": \"text of source\",\n"
                + "                        \"create_date\": \"11-feb-2014\",\n"
                + "                        \"modify_date\": \"11-feb-2014\"\n" + "                    },\n"
                + "                    {\n" + "                        \"name\": \"dht.c\",\n"
                + "                        \"source\": \"text of source\",\n"
                + "                        \"create_date\": \"11-feb-2014\",\n"
                + "                        \"modify_date\": \"11-feb-2014\"\n" + "                    },\n"
                + "                    {\n" + "                        \"name\": \"dht.h\",\n"
                + "                        \"source\": \"text of source\",\n"
                + "                        \"create_date\": \"11-feb-2014\",\n"
                + "                        \"modify_date\": \"11-feb-2014\"\n" + "                    }\n"
                + "                ]\n" + "            }\n" + "}\n" + "\n" + "";
        return new JsonObject(returnDummy);
    }

    public void getListProject(String username, Handler<List<JsonObject>> handler) {

        String query = "SELECT pk_id_project as id , `name`, modify_date as date FROM project WHERE `USER_2_user_name`='"
                + username + "';";

        mySQLClient.getConnection(resConnection -> {

            if (resConnection.succeeded()) {
                SQLConnection connection;
                connection = resConnection.result();

                connection.setAutoCommit(false, autoCommit -> {
                    if (autoCommit.succeeded()) {

                        connection.query(query, handlerQuery -> {
                            if (handlerQuery.succeeded()) {

                                ResultSet resultSet = handlerQuery.result();

                                //                                System.out.println(resultSet.getRows().toString());
                                handler.handle(resultSet.getRows());

                            } else {

                                System.out.println("failed");
                            }
                            connection.close();
                        });
                    } else {
                        System.out.println("auto commit failed");
                    }

                });

                // Got a connection
            } else {
                // Failed to get connection - deal with it
                System.out.println("true failes");
            }
        });

    }

    private void createFilerFolderDefault(Handler<String> handler) {
        System.out.println("make make asdf");
        //        String query= "INSERT INTO arduinoeasydb.folders (`PROJECT_pk_id_project`, `name`, create_date, modify_date) "
        //                + "VALUES ( (SELECT max(pk_id_project) FROM project), 'lib', '2016-11-01 10:17:43', '2016-11-01 10:17:43');";
        String query = "INSERT INTO arduinoeasydb.folders (`PROJECT_pk_id_project`, `name`, create_date, modify_date) "
                + "   VALUES ( (SELECT max(pk_id_project) FROM project), 'lib', '2016-11-01 10:17:43', '2016-11-01 10:17:43');";

        mySQLClient.getConnection(resConnection -> {
            if (resConnection.succeeded()) {
                SQLConnection connection;
                connection = resConnection.result();
                connection.setAutoCommit(true, autoCommit -> {
                    if (autoCommit.succeeded()) {

                        connection.query(query, handlerQuery -> {
                            if (handlerQuery.succeeded()) {

                                ResultSet resultSet = handlerQuery.result();
                                System.out.println(resultSet.toJson().toString() + " bener katanya");
                                handler.handle(resultSet.toJson().toString());
                                //                                handler.handle(resultSet.toJson());

                            } else {

                                System.out.println(handlerQuery.cause());
                                System.out.println("failed ---");
                            }
                            connection.close();
                        });
                    } else {
                        System.out.println("auto commit failed ---");
                    }

                });

                // Got a connection
            } else {
                // Failed to get connection - deal with it
                System.out.println("true failes");
            }
        });

    }

    public void createProject(String projectId, String username, String projectName, String detail,
            String visibility, String createdDate, String modifyDate, String boardType, String icType,
            Handler<JsonObject> handler) {

        String query = "INSERT INTO `project`(`pk_id_project`, `USER_2_user_name`, `name`, `detail`, `accessbility`, `cretate_date`, `modify_date`, `board_type`, `ic_type`, `soft_delete`) VALUES"
                + " ('" + username + "','" + projectId + "','" + projectName + "','" + detail + "','" + visibility
                + "','" + createdDate + "','" + modifyDate + "','" + boardType + "','" + icType + "','f')";

        System.out.println("\n\n" + query + "\n\n");
        mySQLClient.getConnection(resConnection -> {
            if (resConnection.succeeded()) {
                SQLConnection connection;
                connection = resConnection.result();
                connection.setAutoCommit(false, autoCommit -> {
                    if (autoCommit.succeeded()) {

                        connection.query(query, handlerQuery -> {
                            if (handlerQuery.succeeded()) {

                                ResultSet resultSet = handlerQuery.result();
                                handler.handle(resultSet.toJson());

                            } else {

                                System.out.println("failed " + handlerQuery.cause().toString());
                            }
                            connection.close();
                        });
                    } else {
                        System.out.println("auto commit failed");
                    }

                });

                // Got a connection
            } else {
                // Failed to get connection - deal with it
                System.out.println("true failes");
            }
        });

    }

    public void createFolder(String projectId) {
        //        INSERT INTO arduinoeasydb.folders (`PROJECT_pk_id_project`, `name`, create_date, modify_date) 
        //   VALUES (14, 'dana budi', '2016-10-31 21:26:13.489', '2016-10-31 21:26:14.602')

    }

    public void createFile(String folerId, String fileName) {
        //        INSERT INTO arduinoeasydb.files (`FOLDERS_pk_id_folder`, `name`, `source`, crete_date, modify_date) 
        //   VALUES (1, 'test.ino', 'asdlkfasdf', '2016-10-31 21:28:23.043', '2016-10-31 21:28:23.995')

    }

    public void updateSourceFile() {

    }

    private void getFileFromFrolder(String projectId, List<JsonObject> listFolders, Handler<JsonArray> handler) {
        String queryFile = "SELECT files.`name` as name, files.crete_date as dateCreated, files.modify_date as dateModified , files.pk_id_file as id, files.FOLDERS_pk_id_folder as folderId FROM  folders RIGHT JOIN files   ON folders.pk_id_folder=files.pk_id_file and folders.pk_id_folder IN (SELECT pk_id_folder FROM folders WHERE `PROJECT_pk_id_project`="
                + projectId + ")";
        mySQLClient.getConnection(resConnection -> {
            if (resConnection.succeeded()) {
                SQLConnection connection;
                connection = resConnection.result();
                connection.setAutoCommit(false, autoCommit -> {
                    if (autoCommit.succeeded()) {
                        connection.query(queryFile, handlerQuery -> {
                            if (handlerQuery.succeeded()) {

                                ResultSet resultSet = handlerQuery.result();

                                List<JsonObject> listFiles = resultSet.getRows();
                                //                                System.out.println(new JsonArray(list).toString());
                                for (JsonObject listFile : listFiles) {
                                    int folderId = listFile.getInteger("folderId");

                                    //                                    System.out.println("id folder " + folderId);
                                    for (JsonObject listFolder : listFolders) {

                                        if (listFolder.getInteger("id") == folderId) {
                                            try {
                                                listFolder.getJsonArray("files").add(listFile);
                                            } catch (Exception e) {
                                                List<JsonObject> listTmpFile = new ArrayList<>();
                                                listTmpFile.add(listFile);
                                                listFolder.put("files", listTmpFile);
                                            }

                                        }

                                    }
                                }

                                //                                System.out.println(new JsonArray(listFolders).toString());
                                handler.handle(new JsonArray(listFolders));
                            } else {

                                System.out.println("failed " + handlerQuery.cause());
                            }
                            connection.close();
                        });
                    } else {
                        System.out.println("auto commit failed");
                    }

                });

                // Got a connection
            } else {
                // Failed to get connection - deal with it
                System.out.println("true failes");
            }
        });
    }

    public void getProjectByFile(String projectId, Handler<JsonObject> handlerRequest) {
        handlerRequest.handle(new JsonObject().put("m", "m"));
    }

    public void getProject(String projectId, Handler<JsonObject> handlerRequest) {
        String queryFolder = "SELECT pk_id_project as id, name , detail, board_type as arduinoType, ic_type as icType, accessbility FROM project WHERE project.pk_id_project ='"
                + projectId + "';";
        System.out.println(queryFolder);
        mySQLClient.getConnection(resConnection -> {
            if (resConnection.succeeded()) {
                SQLConnection connection;
                connection = resConnection.result();
                connection.setAutoCommit(false, autoCommit -> {
                    if (autoCommit.succeeded()) {

                        connection.query(queryFolder, handlerQuery -> {
                            if (handlerQuery.succeeded()) {

                                ResultSet resultSet = handlerQuery.result();
                                JsonObject resultJSON = resultSet.getRows().get(0);
                                JsonObject project = new JsonObject();
                                project.put("id", resultJSON.getString("id"));
                                project.put("name", resultJSON.getString("name"));
                                project.put("detail", resultJSON.getString("detail"));

                                JsonObject configProject = new JsonObject();
                                configProject.put("arduinoType", resultJSON.getString("arduinoType"));
                                configProject.put("icType", resultJSON.getString("icType"));
                                configProject.put("arduinoType", resultJSON.getString("arduinoType"));
                                configProject.put("acessbility", resultJSON.getString("acessbility"));
                                configProject.put("port", "com3");
                                project.put("config", configProject);

                                handlerRequest.handle(project);
                                //                                getProjectStructure(projectId, handler -> {
                                //                                    System.out.println("finisssss--------------------");
                                //                                    JsonObject folders = new JsonObject();
                                //                                    folders.put("folders", handler);
                                //                                    project.put("sourceCode", folders);
                                ////                                    project.put("files", new JsonArray().add(handler.getJsonObject(0).getJsonArray("files").getJsonObject(0)));
                                ////                                    System.out.println(project.toString());
                                //                                    handlerRequest.handle(project);
                                //                                });

                            } else {

                                System.out.println("failed " + handlerQuery.cause());
                            }
                            connection.close();
                        });
                    } else {
                        System.out.println("auto commit failed");
                    }

                });

                // Got a connection
            } else {
                // Failed to get connection - deal with it
                System.out.println("true failes");
            }
        });

    }

    public void getProjectStructure(String projectId, Handler<JsonArray> handler) {
        //        String queryFolder = "SELECT pk_id_folder as id, name FROM folders WHERE folders.`PROJECT_pk_id_project`=" + projectId + ";";
        //        String queryFolder ="SELECT * FROM folders , files WHERE files.pk_id_file=folders.pk_id_folder";

        //        String queryFolder = "SELECT files.`name` as name, files.crete_date as dateCreated, files.modify_date as dateModified , files.pk_id_file as id, files.FOLDERS_pk_id_folder as folderId FROM  folders RIGHT JOIN files   ON folders.pk_id_folder=files.pk_id_file and folders.pk_id_folder IN (SELECT pk_id_folder FROM folders WHERE `PROJECT_pk_id_project`="+projectId+")";
        String queryFolder = "SELECT pk_id_folder as id, name, create_date as \"dateCreated\", modify_date as \"dateModified\" FROM folders WHERE folders.`PROJECT_pk_id_project`="
                + projectId + ";";
        mySQLClient.getConnection(resConnection -> {
            if (resConnection.succeeded()) {
                SQLConnection connection;
                connection = resConnection.result();
                connection.setAutoCommit(false, autoCommit -> {
                    if (autoCommit.succeeded()) {

                        connection.query(queryFolder, handlerQuery -> {
                            if (handlerQuery.succeeded()) {

                                ResultSet resultSet = handlerQuery.result();

                                System.out.println(resultSet.toJson());

                                getFileFromFrolder(projectId, resultSet.getRows(), handler);
                                //                                List<JsonObject> list = resultSet.getRows();
                                //                                for (JsonObject folder : list) {
                                //                                    System.out.println(folder.getInteger("id") + " id of folders user");;
                                //                                    getFileFromFrolder(folder.getInteger("id")+"", handler->{
                                //                                        folder.put("files", handler);
                                //                                        System.out.println("Finish 1 "+new JsonArray(list).toString());
                                //                                    });
                                //                                }
                                //                                System.out.println("Finish "+new JsonArray(list).toString());
                            } else {

                                System.out.println("failed");
                            }
                            connection.close();
                        });
                    } else {
                        System.out.println("auto commit failed");
                    }

                });

                // Got a connection
            } else {
                // Failed to get connection - deal with it
                System.out.println("true failes");
            }
        });

    }

    public String getFileSource(String username, String projectId, String fileId) {
        return "cuma isi codingan aja... heheheheh";
    }

}