-
Elisa Giglio authoredElisa Giglio authored
DBC.java 18.09 KiB
package db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Arrays;
import org.json.JSONArray;
import org.json.JSONException;
/**
*
* @author sqlitetutorial.net
*/
public class DBC {
private static Connection connect() {
// SQLite connection string
String url = "jdbc:sqlite:../DBPissirDomain.db";
Connection conn = null;
try {
conn = DriverManager.getConnection(url);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static Dominio getDom(String dm) throws SQLException {
// connect();
// Statement statement =conn.createStatement();
Connection conn = connect();
if(conn == null)
return null;
try {
// // db parameters
// String url = "jdbc:sqlite:../DBPissirDomain.db";
// // create a connection to the database
// conn = DriverManager.getConnection(url);
PreparedStatement prepared = conn.prepareStatement("SELECT * FROM Domini WHERE Domain = ?");
prepared.setString(1, dm);
ResultSet result = prepared.executeQuery();
// String sql= "SELECT * FROM Domini WHERE Domain = ?";
// ResultSet result =statement.executeQuery(sql);
// Dominio res=new Dominio();
if (result.next()) {
String dom = result.getString("Domain");
String desc = result.getString("Desc");
// String users=result.getString("Users");
// ArrayList<String> users = new
// ArrayList<String>(Arrays.asList(result.getString("Users").split(",")));
// ArrayList<String> reso = new
// ArrayList<String>(Arrays.asList(result.getString("Resources").split(",")));
// String reso=result.getString("Resources");
Integer state = result.getInt("State");
// ArrayList<String> serv = new
// ArrayList<String>(Arrays.asList(result.getString("Services").split(",")));
// String serv=result.getString("Services");
Dominio d = new Dominio(dom, desc, state);// users, reso,, serv
// res.add(d);
return d;
}
// return null;
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
return null;
}
public static void delDom(String dm) throws SQLException {
Connection conn = connect();
if(conn == null)
return;
try {
// db parameters
// String url = "jdbc:sqlite:../DBPissirDomain.db";
// // create a connection to the database
// conn = DriverManager.getConnection(url);
PreparedStatement prepared = conn.prepareStatement("DELETE FROM Domini WHERE Domain = ?");
prepared.setString(1, dm);
prepared.executeUpdate();
prepared = conn.prepareStatement("DELETE FROM Usa WHERE Domain = ?");
prepared.setString(1, dm);
prepared.executeUpdate();
prepared = conn.prepareStatement("DELETE FROM Amministra WHERE Domain = ?");
prepared.setString(1, dm);
prepared.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
// return false;
}
public static void insertDom(String j) throws SQLException, JSONException {
// connect();
// Statement statement =conn.createStatement();
Connection conn = connect();
if(conn == null)
return;
try {
// // db parameters
// String url = "jdbc:sqlite:../DBPissirDomain.db";
// // create a connection to the database
// conn = DriverManager.getConnection(url);
PreparedStatement prepared = conn.prepareStatement("INSERT INTO Domini (Domain, State) VALUES (?1,?2)");
prepared.setString(1, j);
prepared.setInt(2, 0);
prepared.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
public static ArrayList<String> getDomainsAdmin(String user) throws SQLException, JSONException {
// connect();
// Statement statement =conn.createStatement();
Connection conn = connect();
if(conn == null)
return null;
try {
// // db parameters
// String url = "jdbc:sqlite:../DBPissirDomain.db";
// // create a connection to the database
// conn = DriverManager.getConnection(url);
PreparedStatement prepared = conn.prepareStatement("SELECT * FROM Amministra WHERE User = ?");
prepared.setString(1, user);
ResultSet result = prepared.executeQuery();
ArrayList<String> res = new ArrayList<String>();
// JSONArray jsnarr=new JSONArray();
while (result.next()) {
String dom = result.getString("Domain");
// String desc= result.getString("Desc");
// Integer state = result.getInt("State");
//
// JSONObject j=new JSONObject("{"+dom+":"+state+"}");
// jsnarr.put(j);
//
// Dominio d=new Dominio(dom,desc,state);
res.add(dom);
}
// return jsnarr;
return res;
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
return null;
}
public static ArrayList<String> getDomainsUser(String user) throws SQLException, JSONException {
Connection conn = connect();
if(conn == null)
return null;
try {
// // db parameters
// String url = "jdbc:sqlite:../DBPissirDomain.db";
// // create a connection to the database
// conn = DriverManager.getConnection(url);
PreparedStatement prepared = conn.prepareStatement("SELECT * FROM Usa WHERE User = ?");
prepared.setString(1, user);
ResultSet result = prepared.executeQuery();
ArrayList<String> res = new ArrayList<String>();
while (result.next()) {
String dom = result.getString("Domain");
res.add(dom);
}
// return jsnarr;
return res;
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
return null;
}
public static Dominio getDomain(String domain) throws SQLException, JSONException {
// connect();
// Statement statement =conn.createStatement();
Connection conn = connect();
if(conn == null)
return null;
try {
// // db parameters
// String url = "jdbc:sqlite:../DBPissirDomain.db";
// // create a connection to the database
// conn = DriverManager.getConnection(url);
PreparedStatement prepared = conn.prepareStatement("SELECT * FROM Domini WHERE Domain = ?");
prepared.setString(1, domain);
ResultSet result = prepared.executeQuery();
// ArrayList<String> res=new ArrayList<String>();
// JSONArray jsnarr=new JSONArray();
while (result.next()) {
String dom = result.getString("Domain");
String desc = result.getString("Desc");
Integer state = result.getInt("State");
//
// JSONObject j=new JSONObject("{"+dom+":"+state+"}");
// jsnarr.put(j);
//
Dominio d = new Dominio(dom, desc, state);
// res.add(dom);
return d;
}
// return jsnarr;
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
return null;
}
public static void fillModules(String a, String b, String c) throws SQLException, JSONException {
// connect();
// Statement statement =conn.createStatement();
Connection conn = connect();
if(conn == null)
return;
try {
// db parameters
// String url = "jdbc:sqlite:../DBPissirDomain.db";
// // create a connection to the database
// conn = DriverManager.getConnection(url);
PreparedStatement prepared = conn
.prepareStatement("INSERT INTO Moduli (Module, Requirements, Path) VALUES (?,?,?);");
prepared.setString(1, a);
prepared.setString(2, b);
prepared.setString(3, c);
prepared.executeUpdate();
} catch (SQLException e) {
if (!e.getMessage().contains("SQLITE_CONSTRAINT_PRIMARYKEY")) {
e.printStackTrace();
}
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
// return null;
}
public static ArrayList<String> getModules() throws SQLException, JSONException {
// connect();
// Statement statement =conn.createStatement();
Connection conn = connect();
if(conn == null)
return null;
try {
// // db parameters
// String url = "jdbc:sqlite:../DBPissirDomain.db";
// // create a connection to the database
// conn = DriverManager.getConnection(url);
PreparedStatement prepared = conn.prepareStatement("SELECT * FROM Moduli");
// prepared.setString(1, user);
ResultSet result = prepared.executeQuery();
ArrayList<String> res = new ArrayList<String>();
while (result.next()) {
String mod = result.getString("Module");
// String req= result.getString("Requirements");
// Integer state = result.getInt("State");
//
// JSONObject j=new JSONObject("{"+dom+":"+state+"}");
// jsnarr.put(j);
//
// Dominio d=new Dominio(dom,desc,state);
res.add(mod);
}
// return jsnarr;
return res;
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
return null;
}
public static void insertAmministra(String user, String dom) throws SQLException, JSONException {
// connect();
// Statement statement =conn.createStatement();
Connection conn = connect();
if(conn == null)
return;
try {
// // db parameters
// String url = "jdbc:sqlite:../DBPissirDomain.db";
// // create a connection to the database
// conn = DriverManager.getConnection(url);
PreparedStatement prepared = conn.prepareStatement("INSERT INTO Amministra (User, Domain) VALUES (?1,?2)");
prepared.setString(1, user);
prepared.setString(2, dom);
// prepared.setString(6, j.getString("services").toString().trim());
prepared.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
public static void insertUsa(String user, String dom) throws SQLException, JSONException {
// connect();
// Statement statement =conn.createStatement();
Connection conn = connect();
if(conn == null)
return;
try {
// // db parameters
// String url = "jdbc:sqlite:../DBPissirDomain.db";
// // create a connection to the database
// conn = DriverManager.getConnection(url);
PreparedStatement prepared = conn.prepareStatement("INSERT INTO Usa (User, Domain) VALUES (?1,?2)");
prepared.setString(1, user);
prepared.setString(2, dom);
// prepared.setString(6, j.getString("services").toString().trim());
prepared.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
public static void insertService(String domain, String host, String module) throws JSONException {
// connect();
// Statement statement =conn.createStatement();
Connection conn = connect();
if(conn == null)
return;
try {
// // db parameters
// String url = "jdbc:sqlite:../DBPissirDomain.db";
// // create a connection to the database
// conn = DriverManager.getConnection(url);
PreparedStatement prepared = conn
.prepareStatement("INSERT INTO Servizi (Domain, Resource, Module) VALUES (?1,?2,?3)");
prepared.setString(1, domain);
prepared.setString(2, host);
prepared.setString(3, module);
prepared.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
// return null;
}
/**
* finds the host from the database and calls insertService(domain,host,service)
* to insert the data into the database
*/
public static ArrayList<String> insertService(String domain, String module) throws JSONException {
// find the host from the database
Connection conn = connect();
if(conn == null)
return null;
try {
// db parameters
// String url = "jdbc:sqlite:../DBPissirDomain.db";
// // create a connection to the database
// conn = DriverManager.getConnection(url);
PreparedStatement first = conn.prepareStatement("SELECT Requirements FROM Moduli WHERE Module = ?1");
first.setString(1, module);
ResultSet res = first.executeQuery();
ArrayList<String> requirements = new ArrayList<String>();
while (res.next()) {
String[] requirementsArr = res.getString("Requirements").split(",");// also works if there is only one
// host
// add the requirementsArr to requirements
requirements.addAll(Arrays.asList(requirementsArr));
}
ArrayList<String> hosts = new ArrayList<String>();
for (String reqs : requirements) {
PreparedStatement second = conn.prepareStatement("SELECT Host FROM Risorse WHERE Platform = ?1");// and
// Domain
// =
// ?2");
second.setString(1, reqs);
// second.setString(2, domain);
ResultSet res2 = second.executeQuery();
while (res2.next()) {
hosts.add(res2.getString("Host"));
}
}
conn.close();
ArrayList<String> result = new ArrayList<String>();
for (String host : hosts) {
insertService(domain, host, module);
result.add(module + "---" + host);
}
return result;
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
return null;
}
public static JSONArray getServicesInUseByDomain(String domain) throws SQLException, JSONException {
// connect();
// Statement statement =conn.createStatement();
Connection conn = connect();
if(conn == null)
return null;
try {
// db parameters
// String url = "jdbc:sqlite:../DBPissirDomain.db";
// // create a connection to the database
// conn = DriverManager.getConnection(url);
PreparedStatement prepared = conn.prepareStatement("SELECT Module FROM Servizi WHERE Domain = ?");
prepared.setString(1, domain);
ResultSet result = prepared.executeQuery();
// ArrayList<String> res=new ArrayList<String>();
// JSONArray jsnarr=new JSONArray();
ArrayList<String> arr = new ArrayList<String>();// serve per il contains
JSONArray res = new JSONArray();
while (result.next()) {
// JSONObject j= result;
String module = result.getString("Module");
if (!arr.contains(module)) {
arr.add(module);
res.put(module);
}
// String dom = result.getString("Domain");
// String desc= result.getString("Desc");
// Integer state = result.getInt("State");
//
// JSONObject j=new JSONObject("{"+dom+":"+state+"}");
// jsnarr.put(j);
//
// Dominio d=new Dominio(dom,desc,state);
// res.add(dom);
}
return res;
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
return null;
}
public static JSONArray getAllServices() {
Connection conn = connect();
if(conn == null)
return null;
try {
// // db parameters
// String url = "jdbc:sqlite:../DBPissirDomain.db";
// // create a connection to the database
// conn = DriverManager.getConnection(url);
Statement statement = conn.createStatement();
ResultSet result = statement.executeQuery("SELECT Module FROM Moduli");
// ArrayList<String> res=new ArrayList<String>();
// JSONArray jsnarr=new JSONArray();
ArrayList<String> arr = new ArrayList<String>();
JSONArray res = new JSONArray();
while (result.next()) {
// JSONObject j= result;
String resString = result.getString("Module");
if (!arr.contains(resString)) {
arr.add(resString);
res.put(resString);
}
// String dom = result.getString("Domain");
// String desc= result.getString("Desc");
// Integer state = result.getInt("State");
//
// JSONObject j=new JSONObject("{"+dom+":"+state+"}");
// jsnarr.put(j);
//
// Dominio d=new Dominio(dom,desc,state);
// res.add(dom);
}
return res;
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
return null;
}
public static void setStatoDomain(String domain, int stato) {
Connection conn = connect();
if(conn == null)
return;
try {
// // db parameters
// String url = "jdbc:sqlite:../DBPissirDomain.db";
// // create a connection to the database
// conn = DriverManager.getConnection(url);
PreparedStatement prepared = conn.prepareStatement("UPDATE Domini SET State = ? WHERE Domain = ?");
prepared.setInt(1, stato);
prepared.setString(2, domain);
prepared.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
public static String getURI(String module) {
Connection conn = connect();
if(conn == null)
return null;
try {
// // db parameters
// String url = "jdbc:sqlite:../DBPissirDomain.db";
// // create a connection to the database
// conn = DriverManager.getConnection(url);
PreparedStatement prepared = conn.prepareStatement("SELECT Path FROM Moduli WHERE Module = ?");
prepared.setString(1, module);
ResultSet result = prepared.executeQuery();
if (result.next()) {
return "https://gitlab.di.unipmn.it/alfredo/iotlabgw.edu-al.unipmn.it/-/raw/main/" + result.getString("Path");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
return null;
}
}