4343import org .slf4j .LoggerFactory ;
4444
4545import java .io .IOException ;
46+ import java .sql .Connection ;
4647import java .sql .ResultSet ;
4748import java .sql .SQLException ;
4849import java .util .Calendar ;
@@ -70,12 +71,6 @@ public void run() throws IOException, SQLException {
7071 JdbcTemplate jdbcTemplate = new JdbcTemplate (getDataSource ());
7172 final boolean isMySQLDB ;
7273 SimpleDateFormat dateFormat = new SimpleDateFormat ("yyyy-MM-dd" );
73- if (jdbcTemplate .getDataSource ().getConnection ().getMetaData ().getDatabaseProductName ().toLowerCase ()
74- .contains ("hsql" )) {
75- isMySQLDB = false ;
76- } else {
77- isMySQLDB = true ;
78- }
7974 StructuredQueryDefinition query = new StructuredQueryBuilder ().directory (true , "/employees/" );
8075 QueryBatcher qb = moveMgr .newQueryBatcher (query )
8176 .withBatchSize (batchSize )
@@ -85,72 +80,28 @@ public void run() throws IOException, SQLException {
8580 .withConsistentSnapshot ()
8681 .onDocumentReady (record -> {
8782 Employee employee = record .getContentAs (Employee .class );
88- if (isMySQLDB ) {
89- jdbcTemplate .update (
90- "INSERT INTO employees (emp_no, hire_date, first_name, last_name, birth_date) " +
91- "VALUES (?, ?, ?, ?, ?) " +
92- "ON DUPLICATE KEY UPDATE emp_no=?, hire_date=?, first_name=?, last_name=?, birth_date=?" ,
93- employee .getEmployeeId (), employee .getHireDate (), employee .getFirstName (),
94- employee .getLastName (), employee .getBirthDate (),
95- employee .getEmployeeId (), employee .getHireDate (), employee .getFirstName (),
96- employee .getLastName (), employee .getBirthDate ());
97- } else {
98- jdbcTemplate .update (
99- "MERGE INTO employees USING (VALUES ?, ?, ?, ?, ?, ?) " +
100- "temp (emp_no, hire_date, first_name, last_name, gender, birth_date) " +
101- "ON employees.emp_no = temp.emp_no " +
102- "WHEN MATCHED THEN UPDATE SET employees.hire_date=temp.hire_date, " +
103- "employees.first_name=temp.first_name, employees.last_name=temp.last_name, " +
104- "employees.gender = temp.gender, employees.birth_date=temp.birth_date " +
105- "WHEN NOT MATCHED THEN INSERT (emp_no, hire_date, first_name, last_name, gender, birth_date) "
106- + "VALUES (temp.emp_no, temp.hire_date, temp.first_name, temp.last_name, temp.gender, temp.birth_date) " ,
107- employee .getEmployeeId (), dateFormat .format (employee .getHireDate ().getTime ()), employee .getFirstName (),
108- employee .getLastName (), employee .getGender () == Gender .MALE ? "M" : "F" ,
109- dateFormat .format (employee .getBirthDate ().getTime ()));
110- }
83+ jdbcTemplate .update (
84+ "INSERT INTO employees_export (emp_no, hire_date, first_name, last_name, gender, birth_date) " +
85+ "VALUES (?, ?, ?, ?, ?, ?) " ,
86+ employee .getEmployeeId (), dateFormat .format (employee .getHireDate ().getTime ()), employee .getFirstName (),
87+ employee .getLastName (), employee .getGender () == Gender .MALE ? "M" : "F" ,
88+ dateFormat .format (employee .getBirthDate ().getTime ()));
11189 if ( employee .getSalaries () != null ) {
11290 for ( Salary salary : employee .getSalaries () ) {
113- if (isMySQLDB ) {
114- jdbcTemplate .update (
115- "INSERT INTO salaries (emp_no, salary, from_date, to_date) " +
116- "VALUES(?, ?, ?, ?)" +
117- "ON DUPLICATE KEY UPDATE emp_no=?, salary=?, from_date=?, to_date=?" ,
118- employee .getEmployeeId (), salary .getSalary (), salary .getFromDate (), salary .getToDate (),
119- employee .getEmployeeId (), salary .getSalary (), salary .getFromDate (), salary .getToDate ());
120- } else {
121- jdbcTemplate .update (
122- "MERGE INTO salaries USING (VALUES ?, ?, ?, ?) " +
123- "temp (emp_no, salary, from_date, to_date) " +
124- "ON salaries.emp_no = temp.emp_no AND salaries.from_date = temp.from_date " +
125- "WHEN MATCHED THEN UPDATE SET salaries.salary=temp.salary, " +
126- "salaries.to_date=temp.to_date " +
127- "WHEN NOT MATCHED THEN INSERT (emp_no, salary, from_date, to_date) " +
128- "VALUES (temp.emp_no, temp.salary, temp.from_date, temp.to_date)" ,
129- employee .getEmployeeId (), salary .getSalary (), dateFormat .format (salary .getFromDate ().getTime ()),
130- dateFormat .format (salary .getToDate ().getTime ()));
131- }
91+ jdbcTemplate .update (
92+ "INSERT INTO salaries_export (emp_no, salary, from_date, to_date) " +
93+ "VALUES(?, ?, ?, ?)" ,
94+ employee .getEmployeeId (), salary .getSalary (), dateFormat .format (salary .getFromDate ().getTime ()),
95+ dateFormat .format (salary .getToDate ().getTime ()));
13296 }
13397 }
13498 if ( employee .getTitles () != null ) {
13599 for ( Title title : employee .getTitles () ) {
136- if (isMySQLDB ) {
137- jdbcTemplate .update (
138- "INSERT INTO titles (emp_no, title, from_date, to_date) " +
139- "VALUES(?, ?, ?, ?)" +
140- "ON DUPLICATE KEY UPDATE emp_no=?, title=?, from_date=?, to_date=?" ,
141- employee .getEmployeeId (), title .getTitle (), title .getFromDate (), title .getToDate (),
142- employee .getEmployeeId (), title .getTitle (), title .getFromDate (), title .getToDate ());
143- } else {
144- jdbcTemplate .update (
145- "MERGE INTO titles USING (VALUES ?, ?, ?, ?) " +
146- "temp (emp_no, title, from_date, to_date) " +
147- "ON titles.emp_no = temp.emp_no AND titles.title = temp.title AND titles.from_date=temp.from_date " +
148- "WHEN MATCHED THEN UPDATE SET titles.to_date=temp.to_date " +
149- "WHEN NOT MATCHED THEN INSERT (emp_no, title, from_date, to_date) " +
150- "VALUES (temp.emp_no, temp.title, temp.from_date, temp.to_date)" ,
151- employee .getEmployeeId (), title .getTitle (), dateFormat .format (title .getFromDate ().getTime ()),
152- dateFormat .format (title .getToDate ().getTime ()));
153- }
100+ jdbcTemplate .update (
101+ "INSERT INTO titles_export (emp_no, title, from_date, to_date) " +
102+ "VALUES(?, ?, ?, ?)" ,
103+ employee .getEmployeeId (), title .getTitle (), dateFormat .format (title .getFromDate ().getTime ()),
104+ dateFormat .format (title .getToDate ().getTime ()));
154105 }
155106 }
156107 })
0 commit comments