Skip to content

Commit 13bd460

Browse files
authored
Add files via upload
1 parent 6e6c44e commit 13bd460

File tree

7 files changed

+459
-1
lines changed

7 files changed

+459
-1
lines changed

AttributeMap.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
* To change this license header, choose License Headers in Project Properties.
3+
* To change this template file, choose Tools | Templates
4+
* and open the template in the editor.
5+
*/
6+
package sync.db.mysql;
7+
8+
/**
9+
*
10+
* @author Arvind Sasikumar
11+
*/
12+
public class AttributeMap {
13+
14+
private final String sourceAttribute;
15+
private final String destinationAttribute;
16+
17+
private final AttributeType type;
18+
19+
public AttributeMap(String sourceAttribute, String destinationAttribute, AttributeType type){
20+
21+
this.sourceAttribute = sourceAttribute;
22+
this.destinationAttribute = destinationAttribute;
23+
this.type = type;
24+
}
25+
26+
public String getSourceAttribute(){
27+
28+
return sourceAttribute;
29+
}
30+
31+
public String getDestinationAttribute(){
32+
33+
return destinationAttribute;
34+
}
35+
36+
public AttributeType getType(){
37+
38+
return type;
39+
}
40+
}

AttributeType.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/*
2+
* To change this license header, choose License Headers in Project Properties.
3+
* To change this template file, choose Tools | Templates
4+
* and open the template in the editor.
5+
*/
6+
package sync.db.mysql;
7+
8+
/**
9+
*
10+
* @author Arvind Sasikumar
11+
*/
12+
public enum AttributeType {
13+
14+
STRING, NUMERICAL
15+
}

DBMap.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/*
2+
* To change this license header, choose License Headers in Project Properties.
3+
* To change this template file, choose Tools | Templates
4+
* and open the template in the editor.
5+
*/
6+
package sync.db.mysql;
7+
8+
import java.util.ArrayList;
9+
10+
/**
11+
*
12+
* @author Arvind Sasikumar
13+
*/
14+
public class DBMap {
15+
16+
private final ArrayList<TableMap> tableMapList;
17+
18+
public DBMap(){
19+
20+
tableMapList = new ArrayList<>();
21+
}
22+
23+
public void addTableMap(TableMap tableMap){
24+
25+
tableMapList.add(tableMap);
26+
}
27+
28+
public ArrayList<TableMap> getTableMap(){
29+
30+
return tableMapList;
31+
}
32+
}

DBSyncAgent.java

Lines changed: 95 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
*/
66
package sync.db.mysql;
77

8+
import java.sql.*;
9+
810
/**
911
*
1012
* @author Arvind Sasikumar
@@ -15,25 +17,45 @@ public class DBSyncAgent {
1517
private final String serverDatabaseName;
1618
private final String serverDatabaseUsername;
1719
private final String serverDatabasePassword;
20+
private final String serverDatabaseConnectionOptions;
21+
private final int serverDatabasePort;
1822

1923
private final String clientDatabaseAddress;
2024
private final String clientDatabaseName;
2125
private final String clientDatabaseUsername;
2226
private final String clientDatabasePassword;
27+
private final String clientDatabaseConnectionOptions;
28+
private final int clientDatabasePort;
29+
30+
private final DBMap dbMap;
2331

2432
private final int syncInterval;
2533

26-
public class Builder{
34+
private Connection serverConnection;
35+
private Connection clientConnection;
36+
37+
private Statement serverStatement;
38+
private Statement clientStatement;
39+
40+
private DBSynchronizer dbSynchronizer;
41+
42+
public static class Builder{
2743

2844
private String serverDatabaseAddress;
2945
private String serverDatabaseName;
3046
private String serverDatabaseUsername;
3147
private String serverDatabasePassword;
48+
private String serverDatabaseConnectionOptions;
49+
private int serverDatabasePort;
3250

3351
private String clientDatabaseAddress;
3452
private String clientDatabaseName;
3553
private String clientDatabaseUsername;
3654
private String clientDatabasePassword;
55+
private String clientDatabaseConnectionOptions;
56+
private int clientDatabasePort;
57+
58+
private DBMap dbMap;
3759

3860
private int syncInterval;
3961

@@ -61,6 +83,18 @@ public Builder setServerDatabasePassword(String serverDatabasePassword){
6183
return this;
6284
}
6385

86+
public Builder setServerDatabaseConnectionOptions(String serverDatabaseConnectionOptions){
87+
88+
this.serverDatabaseConnectionOptions = serverDatabaseConnectionOptions;
89+
return this;
90+
}
91+
92+
public Builder setServerDatabasePort(int serverDatabasePort){
93+
94+
this.serverDatabasePort = serverDatabasePort;
95+
return this;
96+
}
97+
6498
public Builder setClientDatabaseAddress(String clientDatabaseAddress){
6599

66100
this.clientDatabaseAddress = clientDatabaseAddress;
@@ -85,6 +119,24 @@ public Builder setClientDatabasePassword(String clientDatabasePassword){
85119
return this;
86120
}
87121

122+
public Builder setClientDatabaseConnectionOptions(String clientDatabaseConnectionOptions){
123+
124+
this.clientDatabaseConnectionOptions = clientDatabaseConnectionOptions;
125+
return this;
126+
}
127+
128+
public Builder setClientDatabasePort(int clientDatabasePort){
129+
130+
this.clientDatabasePort = clientDatabasePort;
131+
return this;
132+
}
133+
134+
public Builder setDBMap(DBMap dbMap){
135+
136+
this.dbMap = dbMap;
137+
return this;
138+
}
139+
88140
public Builder setSyncInterval(int syncInterval){
89141

90142
this.syncInterval = syncInterval;
@@ -103,20 +155,62 @@ private DBSyncAgent(Builder builder){
103155
serverDatabaseName = builder.serverDatabaseName;
104156
serverDatabaseUsername = builder.serverDatabaseUsername;
105157
serverDatabasePassword = builder.serverDatabasePassword;
158+
serverDatabaseConnectionOptions = builder.serverDatabaseConnectionOptions;
159+
serverDatabasePort = builder.serverDatabasePort;
106160

107161
clientDatabaseAddress = builder.clientDatabaseAddress;
108162
clientDatabaseName = builder.clientDatabaseName;
109163
clientDatabaseUsername = builder.clientDatabaseUsername;
110164
clientDatabasePassword = builder.clientDatabasePassword;
165+
clientDatabaseConnectionOptions = builder.clientDatabaseConnectionOptions;
166+
clientDatabasePort = builder.clientDatabasePort;
167+
168+
dbMap = builder.dbMap;
111169

112170
syncInterval = builder.syncInterval;
113171
}
114172

173+
public void connect(){
174+
175+
try{
176+
177+
Class.forName("com.mysql.jdbc.Driver");
178+
179+
String connectionString = "jdbc:mysql://" + serverDatabaseAddress + ":" +
180+
serverDatabasePort + "/" + serverDatabaseName +
181+
serverDatabaseConnectionOptions;
182+
serverConnection = DriverManager.getConnection(connectionString,serverDatabaseUsername,serverDatabasePassword);
183+
serverStatement = serverConnection.createStatement();
184+
185+
connectionString = "jdbc:mysql://" + clientDatabaseAddress + ":" +
186+
clientDatabasePort + "/" + clientDatabaseName +
187+
clientDatabaseConnectionOptions;
188+
clientConnection = DriverManager.getConnection(connectionString,clientDatabaseUsername,clientDatabasePassword);
189+
clientStatement = clientConnection.createStatement();
190+
}
191+
192+
catch(Exception e){
193+
194+
e.printStackTrace();
195+
}
196+
}
197+
115198
public void sync(){
116199

200+
dbSynchronizer = new DBSynchronizer(serverStatement, clientStatement, dbMap);
201+
Thread dbSynchronizerThread = new Thread(dbSynchronizer);
202+
dbSynchronizerThread.start();
117203
}
118204

119205
public void liveSync(){
206+
207+
dbSynchronizer = new DBSynchronizer(serverStatement, clientStatement, dbMap, syncInterval);
208+
Thread dbSynchronizerThread = new Thread(dbSynchronizer);
209+
dbSynchronizerThread.start();
210+
}
120211

212+
public void stopSync(){
213+
214+
dbSynchronizer.stopSync();
121215
}
122216
}

0 commit comments

Comments
 (0)