|
|
|
|
@ -1,5 +1,7 @@
|
|
|
|
|
package org.leolo.nrdatad.db.mariadb; |
|
|
|
|
|
|
|
|
|
import org.apache.logging.log4j.LogManager; |
|
|
|
|
import org.apache.logging.log4j.Logger; |
|
|
|
|
import org.leolo.nrdatad.db.DatabaseManager; |
|
|
|
|
import org.leolo.nrdatad.db.TrainAssociationDao; |
|
|
|
|
import org.leolo.nrdatad.exception.NoSuchRecordException; |
|
|
|
|
@ -9,9 +11,12 @@ import java.sql.Connection;
|
|
|
|
|
import java.sql.PreparedStatement; |
|
|
|
|
import java.sql.ResultSet; |
|
|
|
|
import java.sql.SQLException; |
|
|
|
|
import java.util.Collection; |
|
|
|
|
|
|
|
|
|
public class TrainAssociationDaoImpl extends TrainAssociationDao { |
|
|
|
|
|
|
|
|
|
private Logger log = LogManager.getLogger(); |
|
|
|
|
|
|
|
|
|
public TrainAssociationDaoImpl(DatabaseManager manager) { |
|
|
|
|
super(manager); |
|
|
|
|
} |
|
|
|
|
@ -26,19 +31,7 @@ public class TrainAssociationDaoImpl extends TrainAssociationDao {
|
|
|
|
|
"asso_suffix, stp_ind, hash_code, last_chk) " + //11-14
|
|
|
|
|
"VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,NOW())") |
|
|
|
|
){ |
|
|
|
|
setString(pstmt, 1, scheduleAssociation.getAuid()); |
|
|
|
|
setString(pstmt, 2, scheduleAssociation.getMainUid()); |
|
|
|
|
setString(pstmt, 3, scheduleAssociation.getAssoUid()); |
|
|
|
|
setDate (pstmt, 4, scheduleAssociation.getStartDate()); |
|
|
|
|
setDate (pstmt, 5, scheduleAssociation.getEndDate()); |
|
|
|
|
setString(pstmt, 6, scheduleAssociation.getAssoDays()); |
|
|
|
|
setString(pstmt, 7, scheduleAssociation.getAssociationCategory().getCode()); |
|
|
|
|
setInt (pstmt, 8, scheduleAssociation.getAssociationDate()); |
|
|
|
|
setString(pstmt, 9, scheduleAssociation.getAssociationLocation()); |
|
|
|
|
setString(pstmt, 10, scheduleAssociation.getBaseLocationSuffix()); |
|
|
|
|
setString(pstmt, 11, scheduleAssociation.getAssocLocationSuffix()); |
|
|
|
|
setString(pstmt, 12, scheduleAssociation.getStpIndicator().getCode()); |
|
|
|
|
setInt (pstmt, 13, scheduleAssociation.hashCode()); |
|
|
|
|
fillInsertPreparedStatement(pstmt, scheduleAssociation); |
|
|
|
|
pstmt.executeUpdate(); |
|
|
|
|
conn.commit(); |
|
|
|
|
} |
|
|
|
|
@ -66,19 +59,7 @@ public class TrainAssociationDaoImpl extends TrainAssociationDao {
|
|
|
|
|
"asso_type=?,date_ind=?,asso_loc=?,base_suffix=?, asso_suffix=?," + |
|
|
|
|
"stp_ind=?, hash_code=?,last_chk=NOW() WHERE auid=?") |
|
|
|
|
){ |
|
|
|
|
setString(pstmt, 1, scheduleAssociation.getMainUid()); |
|
|
|
|
setString(pstmt, 2, scheduleAssociation.getAssoUid()); |
|
|
|
|
setDate (pstmt, 3, scheduleAssociation.getStartDate()); |
|
|
|
|
setDate (pstmt, 4, scheduleAssociation.getEndDate()); |
|
|
|
|
setString(pstmt, 5, scheduleAssociation.getAssoDays()); |
|
|
|
|
setString(pstmt, 6, scheduleAssociation.getAssociationCategory().getCode()); |
|
|
|
|
setInt (pstmt, 7, scheduleAssociation.getAssociationDate()); |
|
|
|
|
setString(pstmt, 8, scheduleAssociation.getAssociationLocation()); |
|
|
|
|
setString(pstmt, 9, scheduleAssociation.getBaseLocationSuffix()); |
|
|
|
|
setString(pstmt, 10, scheduleAssociation.getAssocLocationSuffix()); |
|
|
|
|
setString(pstmt, 11, scheduleAssociation.getStpIndicator().getCode()); |
|
|
|
|
setInt (pstmt, 12, scheduleAssociation.hashCode()); |
|
|
|
|
setString(pstmt, 13, scheduleAssociation.getAuid()); |
|
|
|
|
fillUpdatePreparedStatement(pstmt, scheduleAssociation); |
|
|
|
|
pstmt.executeUpdate(); |
|
|
|
|
conn.commit(); |
|
|
|
|
} |
|
|
|
|
@ -134,4 +115,133 @@ public class TrainAssociationDaoImpl extends TrainAssociationDao {
|
|
|
|
|
} |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void insertAll(Collection<ScheduleAssociation> scheduleAssociations) throws SQLException { |
|
|
|
|
try ( |
|
|
|
|
Connection conn = getConnection(); |
|
|
|
|
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO train_association (" + |
|
|
|
|
"auid, main_uid, asso_uid, start_date, end_date, " + //1-5
|
|
|
|
|
"asso_days, asso_type, date_ind, asso_loc, base_suffix, " + //6-10
|
|
|
|
|
"asso_suffix, stp_ind, hash_code, last_chk) " + //11-14
|
|
|
|
|
"VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,NOW())") |
|
|
|
|
){ |
|
|
|
|
for(ScheduleAssociation scheduleAssociation:scheduleAssociations) { |
|
|
|
|
fillInsertPreparedStatement(pstmt, scheduleAssociation); |
|
|
|
|
pstmt.addBatch(); |
|
|
|
|
} |
|
|
|
|
pstmt.executeBatch(); |
|
|
|
|
conn.commit(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void updateAll(Collection<ScheduleAssociation> scheduleAssociations) throws SQLException { |
|
|
|
|
try( |
|
|
|
|
Connection conn = getConnection(); |
|
|
|
|
PreparedStatement pstmt = conn.prepareStatement("UPDATE train_association SET " + |
|
|
|
|
"main_uid=?, asso_uid=?, start_date=?, end_date=?, asso_days=?," + |
|
|
|
|
"asso_type=?,date_ind=?,asso_loc=?,base_suffix=?, asso_suffix=?," + |
|
|
|
|
"stp_ind=?, hash_code=?,last_chk=NOW() WHERE auid=?") |
|
|
|
|
){ |
|
|
|
|
for(ScheduleAssociation scheduleAssociation:scheduleAssociations) { |
|
|
|
|
fillUpdatePreparedStatement(pstmt, scheduleAssociation); |
|
|
|
|
pstmt.addBatch(); |
|
|
|
|
} |
|
|
|
|
pstmt.executeBatch(); |
|
|
|
|
conn.commit(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void fillUpdatePreparedStatement(PreparedStatement pstmt, ScheduleAssociation scheduleAssociation) throws SQLException { |
|
|
|
|
setString(pstmt, 1, scheduleAssociation.getMainUid()); |
|
|
|
|
setString(pstmt, 2, scheduleAssociation.getAssoUid()); |
|
|
|
|
setDate(pstmt, 3, scheduleAssociation.getStartDate()); |
|
|
|
|
setDate(pstmt, 4, scheduleAssociation.getEndDate()); |
|
|
|
|
setString(pstmt, 5, scheduleAssociation.getAssoDays()); |
|
|
|
|
setString(pstmt, 6, scheduleAssociation.getAssociationCategory().getCode()); |
|
|
|
|
setInt(pstmt, 7, scheduleAssociation.getAssociationDate()); |
|
|
|
|
setString(pstmt, 8, scheduleAssociation.getAssociationLocation()); |
|
|
|
|
setString(pstmt, 9, scheduleAssociation.getBaseLocationSuffix()); |
|
|
|
|
setString(pstmt, 10, scheduleAssociation.getAssocLocationSuffix()); |
|
|
|
|
setString(pstmt, 11, scheduleAssociation.getStpIndicator().getCode()); |
|
|
|
|
setInt(pstmt, 12, scheduleAssociation.hashCode()); |
|
|
|
|
setString(pstmt, 13, scheduleAssociation.getAuid()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void updateAllLastCheck(Collection<ScheduleAssociation> scheduleAssociations) throws SQLException { |
|
|
|
|
try( |
|
|
|
|
Connection conn = getConnection(); |
|
|
|
|
PreparedStatement pstmt = conn.prepareStatement("UPDATE train_association SET last_chk = NOW() WHERE auid = ?") |
|
|
|
|
){ |
|
|
|
|
for(ScheduleAssociation scheduleAssociation:scheduleAssociations) { |
|
|
|
|
setString(pstmt, 1, scheduleAssociation.getAuid()); |
|
|
|
|
pstmt.addBatch(); |
|
|
|
|
} |
|
|
|
|
pstmt.executeBatch(); |
|
|
|
|
conn.commit(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void replaceAll(Collection<ScheduleAssociation> scheduleAssociations) throws SQLException { |
|
|
|
|
int insCount = 0; |
|
|
|
|
int updCount = 0; |
|
|
|
|
int nopCount = 0; |
|
|
|
|
try ( |
|
|
|
|
Connection conn = getConnection(); |
|
|
|
|
PreparedStatement psIns = conn.prepareStatement("INSERT INTO train_association (" + |
|
|
|
|
"auid, main_uid, asso_uid, start_date, end_date, " + //1-5
|
|
|
|
|
"asso_days, asso_type, date_ind, asso_loc, base_suffix, " + //6-10
|
|
|
|
|
"asso_suffix, stp_ind, hash_code, last_chk) " + //11-14
|
|
|
|
|
"VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,NOW())"); |
|
|
|
|
PreparedStatement psUpd = conn.prepareStatement("UPDATE train_association SET " + |
|
|
|
|
"main_uid=?, asso_uid=?, start_date=?, end_date=?, asso_days=?," + |
|
|
|
|
"asso_type=?,date_ind=?,asso_loc=?,base_suffix=?, asso_suffix=?," + |
|
|
|
|
"stp_ind=?, hash_code=?,last_chk=NOW() WHERE auid=?"); |
|
|
|
|
|
|
|
|
|
PreparedStatement psNop = conn.prepareStatement("UPDATE train_association SET last_chk = NOW() WHERE auid = ?") |
|
|
|
|
){ |
|
|
|
|
for(ScheduleAssociation scheduleAssociation:scheduleAssociations){ |
|
|
|
|
Object checkResult = _getHashCode(scheduleAssociation.getAuid()); |
|
|
|
|
if(checkResult==null){ |
|
|
|
|
//Insert
|
|
|
|
|
fillInsertPreparedStatement(psIns, scheduleAssociation); |
|
|
|
|
psIns.addBatch(); |
|
|
|
|
insCount++; |
|
|
|
|
} else if (((int)checkResult) == scheduleAssociation.hashCode()){ |
|
|
|
|
//NOP
|
|
|
|
|
setString(psNop, 1, scheduleAssociation.getAuid()); |
|
|
|
|
psNop.addBatch(); |
|
|
|
|
nopCount++; |
|
|
|
|
} else { |
|
|
|
|
//Update
|
|
|
|
|
fillUpdatePreparedStatement(psUpd, scheduleAssociation); |
|
|
|
|
psUpd.addBatch(); |
|
|
|
|
updCount++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
psIns.executeBatch(); |
|
|
|
|
psNop.executeBatch(); |
|
|
|
|
psUpd.executeBatch(); |
|
|
|
|
log.atDebug().log("Batch info: {} Inserted. {} Updated. {} NOP.", insCount, updCount, nopCount); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void fillInsertPreparedStatement(PreparedStatement psIns, ScheduleAssociation scheduleAssociation) throws SQLException { |
|
|
|
|
setString(psIns, 1, scheduleAssociation.getAuid()); |
|
|
|
|
setString(psIns, 2, scheduleAssociation.getMainUid()); |
|
|
|
|
setString(psIns, 3, scheduleAssociation.getAssoUid()); |
|
|
|
|
setDate(psIns, 4, scheduleAssociation.getStartDate()); |
|
|
|
|
setDate(psIns, 5, scheduleAssociation.getEndDate()); |
|
|
|
|
setString(psIns, 6, scheduleAssociation.getAssoDays()); |
|
|
|
|
setString(psIns, 7, scheduleAssociation.getAssociationCategory().getCode()); |
|
|
|
|
setInt(psIns, 8, scheduleAssociation.getAssociationDate()); |
|
|
|
|
setString(psIns, 9, scheduleAssociation.getAssociationLocation()); |
|
|
|
|
setString(psIns, 10, scheduleAssociation.getBaseLocationSuffix()); |
|
|
|
|
setString(psIns, 11, scheduleAssociation.getAssocLocationSuffix()); |
|
|
|
|
setString(psIns, 12, scheduleAssociation.getStpIndicator().getCode()); |
|
|
|
|
setInt(psIns, 13, scheduleAssociation.hashCode()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|