|
|
|
| есть поток-демон:
package com.epam.hwutil.service.notificationsystem.mailer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.sql.*;
import java.util.Timer;
import java.util.TimerTask;
import com.epam.hwutil.service.db.ConnectionPool;
import com.epam.da.shared.DaeException;
public class UpdateUserInfo extends Timer {
private static final Log LOG = LogFactory.getLog(UpdateUserInfo.class);
private static final String INSERT_SQL =
"INSERT INTO DW.HWU_USER" +
"(USER_ID, USER_TYPE_ID, USER_IS_ACTIVE, USER_FIRSTNAME, USER_LASTNAME)" +
"SELECT MP.PERSON_ID, 4, 1, MP.FIRST_NAME, MP.LAST_NAME" +
"FROM M_PERSON@PMCDB MP, M_EMPLOYEE@PMCDB ME " +
"WHERE NOT EXISTS (SELECT U.USER_TYPE_ID FROM HWU_USER U WHERE U.USER_ID = MP.PERSON_ID)" +
"AND ME.EMPLOYEE_ID = MP.PERSON_ID AND ME.FIRED = ''N''";
private static final String DELETE_SQL =
"DELETE FROM DW.HWU_USER U " +
"WHERE EXISTS (SELECT ME.EMPLOYEE_ID FROM M_EMPLOYEE@PMCDB ME" +
"WHERE ME.FIRED = ''Y'' AND ME.EMPLOYEE_ID = U.USER_ID )";
public static final long period = 43200000; // delay - 12 hours
public static final long delay = 1000; // wait 1 sec before start
public UpdateUserInfo(int delay) {
super(true);
schedule(new TimerTask() {
public void run() {
while(true){
try {
update();
}
catch (DaeException e) {
LOG.info("Update thread interrupted...");
}
}
}
private void update() throws DaeException {
Connection conn = null;
try
{
conn = ConnectionPool.getInstance().getConnection();
PreparedStatement statement = conn.prepareStatement(INSERT_SQL);
statement.execute();
statement = conn.prepareStatement(DELETE_SQL);
statement.execute();
statement.close();
}
catch (SQLException e)
{
if(conn!=null)
ConnectionPool.getInstance().releaseConnection((java.sql.Connection) conn, true);
throw new DaeException("SQL exception while updating options..."+e.getMessage());
}
finally
{
if(conn!=null)
ConnectionPool.getInstance().releaseConnection((java.sql.Connection) conn, false);
}
}
},delay, period) ;
}
public UpdateUserInfo() {}
public static void main(String[] args) {new UpdateUserInfo();}
}
есть в другом классе его вызов:
...
UpdateUserInfo uui;
...
uui = new UpdateUserInfo();
...
как этому потоку задать имя? | |
|
|
|
|
|
|
|
для: servannin
(18.10.2005 в 15:00)
| | если вдруг кто-то вздумает отвечать,то спасибо,уже сам разобрался... | |
|
|
|