package edu.psu.iam.cpr.utility;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Date;
import org.hibernate.Query;
import org.hibernate.Session;
import edu.psu.iam.cpr.core.database.Database;
import edu.psu.iam.cpr.core.database.SessionFactoryUtil;
import edu.psu.iam.cpr.utility.beans.MessageConsumer;
public class MessageConsumerLoader implements BeanLoader {
@Override
public void loadTable(Database db, String primeDirectory, String tableName) {
BufferedReader bufferedReader = null;
try {
Date d = new Date();
String requestor = "SYSTEM";
db.openSession(SessionFactoryUtil.getSessionFactory());
Session session = db.getSession();
// Remove all of the records from the database table.
String sqlQuery = "delete from " + tableName;
Query query = session.createQuery(sqlQuery);
query.executeUpdate();
// Read in the first record containing the column headers.
bufferedReader = new BufferedReader(new FileReader(primeDirectory + System.getProperty("file.separator") + tableName));
String[] columns = bufferedReader.readLine().split("[|]");
String line;
// Read and process the file.
while ((line = bufferedReader.readLine()) != null) {
String[] fields = line.split("[|]");
MessageConsumer bean = new MessageConsumer();
bean.setConsumerEmail("xyz123@example.edu");
bean.setConsumerRegDate(d);
bean.setStartDate(d);
bean.setEndDate(null);
bean.setSuspendFlag("N");
bean.setCreatedBy(requestor);
bean.setCreatedOn(d);
bean.setLastUpdateBy(requestor);
bean.setLastUpdateOn(d);
// message_consumer_key|consumer|consumer_destination|destination_type|maximum_retries|retry_interval|maximum_failure|maximum_destination_size
for (int i = 0; i < columns.length; ++i) {
if (columns[i].equals("message_consumer_key")) {
bean.setMessageConsumerKey(new Long(fields[i]));
}
else if (columns[i].equals("consumer")) {
bean.setConsumer(fields[i]);
}
else if (columns[i].equals("consumer_destination")) {
bean.setConsumerDestination(fields[i]);
}
else if (columns[i].equals("destination_type")) {
bean.setDestinationType(fields[i]);
}
else if (columns[i].equals("maximum_retries")) {
bean.setMaximumRetries(new Long(fields[i]));
}
else if (columns[i].equals("retry_interval")) {
bean.setRetryInterval(new Long(fields[i]));
}
else if (columns[i].equals("maximum_failure")) {
bean.setMaximumFailure(new Long(fields[i]));
}
else if (columns[i].equals("maximum_destination_size")) {
bean.setMaximumDestinationSize(new Long(fields[i]));
}
}
session.save(bean);
}
db.closeSession();
}
catch (Exception e) {
db.rollbackSession();
e.printStackTrace();
}
finally {
try {
bufferedReader.close();
}
catch (Exception e) {
}
}
}
}