diff --git a/topic0/AbstractFactory/ConnectionFactory.java b/topic0/AbstractFactory/ConnectionFactory.java new file mode 100644 index 0000000..ec78ddf --- /dev/null +++ b/topic0/AbstractFactory/ConnectionFactory.java @@ -0,0 +1,24 @@ +package abstractFactory; + +import drivers.DriverConnection; +import drivers.MySQLDriverManager; +import drivers.SQLDriverManager; + +public class ConnectionFactory extends ConnectionsAbstractFactory { + @Override + public DriverConnection getConnection(String SQL) { + if( SQL == null) { + return null; + } + + if(SQL.equalsIgnoreCase("MySql")) { + return new MySQLDriverManager(); + + } else if(SQL.equalsIgnoreCase("SqlServer")) { + return new SQLDriverManager(); + } + + return null; + + } +} diff --git a/topic0/AbstractFactory/ConnectionProducer.java b/topic0/AbstractFactory/ConnectionProducer.java new file mode 100644 index 0000000..75810c4 --- /dev/null +++ b/topic0/AbstractFactory/ConnectionProducer.java @@ -0,0 +1,29 @@ +package abstractFactory; + +import connections.Connection; +import drivers.MySQLDriverManager; +import drivers.SQLDriverManager; + +public class ConnectionProducer { + private static Connection connection; + + public static Connection getConnection(String choise, String dataBase, String user, String password) { + if( choise == null) { + connection = null; + } + + if(choise.equalsIgnoreCase("MySql")) { + MySQLDriverManager mySql= new MySQLDriverManager(); + connection = mySql.getConnection(dataBase, user, password); + + } else if(choise.equalsIgnoreCase("SqlServer")) { + SQLDriverManager sqlServer = new SQLDriverManager(); + connection = sqlServer.getConnection(dataBase, user, password); + } else { + throw new Exception("the sql is not supported in this version of the program." + + "Please try with Mysql or SqlServer"); + } + + return connection; + } +} diff --git a/topic0/AbstractFactory/ConnectionsAbstractFactory.java b/topic0/AbstractFactory/ConnectionsAbstractFactory.java new file mode 100644 index 0000000..4c40a57 --- /dev/null +++ b/topic0/AbstractFactory/ConnectionsAbstractFactory.java @@ -0,0 +1,7 @@ +package abstractFactory; + +import drivers.DriverConnection; + +public abstract class ConnectionsAbstractFactory { + abstract DriverConnection getConnection(String SQL); +} diff --git a/topic0/Builder/Builder.java b/topic0/Builder/Builder.java new file mode 100644 index 0000000..7a5c98e --- /dev/null +++ b/topic0/Builder/Builder.java @@ -0,0 +1,9 @@ +package builder; + +import connections.DataBaseConnection; + +public interface Builder { + + public DataBaseConnection getConnection(); + +} diff --git a/topic0/Builder/Director.java b/topic0/Builder/Director.java new file mode 100644 index 0000000..6968aa4 --- /dev/null +++ b/topic0/Builder/Director.java @@ -0,0 +1,14 @@ +package builder; + +public class Director { + private Builder connectionBuilder = null; + + public Director(Builder mealBuilder) { + this.connectionBuilder = mealBuilder; + } + + public void constructConnection() { + connectionBuilder.getConnection(); + } + +} diff --git a/topic0/Builder/MySQLBuilder.java b/topic0/Builder/MySQLBuilder.java new file mode 100644 index 0000000..64dffe0 --- /dev/null +++ b/topic0/Builder/MySQLBuilder.java @@ -0,0 +1,19 @@ +package builder; + +import connections.DataBaseConnection; + +public class MySQLBuilder implements Builder{ + + private DataBaseConnection myConnection; + + public MySQLBuilder(String dataBase) { + myConnection.getInstance("MySql", dataBase , "sara", "myConnection"); + } + + @Override + public DataBaseConnection getConnection() { + return myConnection; + } + + +} diff --git a/topic0/Connections/Connection.java b/topic0/Connections/Connection.java new file mode 100644 index 0000000..146108c --- /dev/null +++ b/topic0/Connections/Connection.java @@ -0,0 +1,18 @@ +package connections; + +public class Connection { + + private static Boolean connected = false; + private String dataBase = "testingDataBase"; + private String user = "sara"; + private String password = "myConnection"; + + public Connection(String database, String user, String password) { + if(this.dataBase.equals(database) && this.user.equals(user) && this.password.equals(password) ) { + connected = true; + }else { + throw new Exception("You have an error in your connection. Please, try again later"); + } + } + +} diff --git a/topic0/Connections/DataBaseConnection.java b/topic0/Connections/DataBaseConnection.java new file mode 100644 index 0000000..78c5ab6 --- /dev/null +++ b/topic0/Connections/DataBaseConnection.java @@ -0,0 +1,45 @@ +package connections; + +import abstractFactory.ConnectionProducer; + +public class DataBaseConnection { + + private Connection myConnection; + private static DataBaseConnection dataBaseConnection = null; + + private DataBaseConnection(){ + try { + myConnection = ConnectionProducer.getConnection("MySql","testingDataBase", "sara", "myConnection"); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + public static DataBaseConnection getInstance() { + if(dataBaseConnection == null) { + dataBaseConnection = new DataBaseConnection(); + } + return dataBaseConnection; + } + + //Builder Patron methods + private DataBaseConnection(String odbc, String dataBase, String user, String password) { + try { + myConnection = ConnectionProducer.getConnection(odbc, dataBase, user, password); + }catch(Exception e) { + e.printStackTrace();} + } + + public static DataBaseConnection getInstance(String odbc, String dataBase, String user, String password) { + if(dataBaseConnection == null) { + dataBaseConnection = new DataBaseConnection(odbc, dataBase, user, password); + } + return dataBaseConnection; + } + + public Connection getConnection() { + return myConnection; + } + +} diff --git a/topic0/Drivers/DriverConnection.java b/topic0/Drivers/DriverConnection.java new file mode 100644 index 0000000..2abe35d --- /dev/null +++ b/topic0/Drivers/DriverConnection.java @@ -0,0 +1,7 @@ +package drivers; + +import connections.Connection; + +public interface DriverConnection { + public Connection getConnection(String dataBase, String u, String p); +} diff --git a/topic0/Drivers/MySQLDriverManager.java b/topic0/Drivers/MySQLDriverManager.java new file mode 100644 index 0000000..0afa0df --- /dev/null +++ b/topic0/Drivers/MySQLDriverManager.java @@ -0,0 +1,13 @@ +package drivers; + +import connections.Connection; + +public class MySQLDriverManager implements DriverConnection{ + public MySQLDriverManager() { + } + + public Connection getConnection(String dataBase, String user, String password) { + return new Connection(dataBase, user, password); + } + +} diff --git a/topic0/Drivers/SQLDriverManager.java b/topic0/Drivers/SQLDriverManager.java new file mode 100644 index 0000000..fb06d6d --- /dev/null +++ b/topic0/Drivers/SQLDriverManager.java @@ -0,0 +1,14 @@ +package drivers; + +import connections.Connection; + +public class SQLDriverManager implements DriverConnection{ + + public SQLDriverManager() { + } + + public Connection getConnection(String dataBase, String user, String password) { + return new Connection(dataBase, user, password); + } + +} diff --git a/topic0/Main.java b/topic0/Main.java new file mode 100644 index 0000000..ef4582c --- /dev/null +++ b/topic0/Main.java @@ -0,0 +1,13 @@ + +public class Main { + + public static void main(String[] args) { + Proxy aConnection = new Proxy(); + if(aConnection.mySqlConnection().get) + System.out.print("i'm functioning"); + else + System.out.print("I failed"); + + } + +} diff --git a/topic0/Proxy.java b/topic0/Proxy.java new file mode 100644 index 0000000..7f8fafa --- /dev/null +++ b/topic0/Proxy.java @@ -0,0 +1,32 @@ +import builder.Director; +import builder.MySQLBuilder; +import connections.DataBaseConnection; + +public class Proxy { + Director myConnectionDirector = null; + + public Proxy() {} + + /** This method return true if the connection was done + * or false if there was any error. + * */ + public void mySqlConnection(){ + try { + if(myConnectionDirector == null) { + MySQLBuilder mysql = new MySQLBuilder("testingDataBase"); + this.myConnectionDirector = new Director(mysql); + this.myConnectionDirector.constructConnection(); + }else{ + throw new Exception("We are sorry, something happened during the connection"); + } + + }catch(Exception e) { + e.printStackTrace(); + } + + } + + public void setMyConnectionDirector(Director myConnectionDirector) { + this.myConnectionDirector = myConnectionDirector; + } +}