package edu.ualberta.med.biobank.common.util;
import java.text.SimpleDateFormat;
import java.util.Date;
import edu.ualberta.med.biobank.common.peer.LogPeer;
import edu.ualberta.med.biobank.model.Log;
public class LogSql {
public static final SimpleDateFormat dateTimeFormatter = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss"); //$NON-NLS-1$
public static final String COMMA = ","; //$NON-NLS-1$
public static String toTitleCase(String str) {
StringBuffer sb = new StringBuffer();
for (int i = 0, n = str.length(); i < n; ++i) {
char ch = str.charAt(i);
if (Character.isUpperCase(ch) && (i > 0)) {
sb.append("_" + ch); //$NON-NLS-1$
} else {
sb.append(Character.toUpperCase(ch));
}
}
return sb.toString();
}
/**
* Returns a SQL Insert statement based on an Log Object instance.
*/
public static String getLogMessageSQLStatement(Log log) {
StringBuffer sql = new StringBuffer();
sql.append("INSERT INTO log ("); //$NON-NLS-1$
sql.append(LogPeer.USERNAME.getName());
sql.append(COMMA + toTitleCase(LogPeer.CENTER.getName()));
sql.append(COMMA + toTitleCase(LogPeer.CREATED_AT.getName()));
sql.append(COMMA + toTitleCase(LogPeer.ACTION.getName()));
sql.append(COMMA + toTitleCase(LogPeer.PATIENT_NUMBER.getName()));
sql.append(COMMA + toTitleCase(LogPeer.INVENTORY_ID.getName()));
sql.append(COMMA + toTitleCase(LogPeer.LOCATION_LABEL.getName()));
sql.append(COMMA + toTitleCase(LogPeer.DETAILS.getName()));
sql.append(COMMA + toTitleCase(LogPeer.TYPE.getName()));
sql.append(") VALUES ('"); //$NON-NLS-1$
sql.append(initString(log.getUsername()));
sql.append("','"); //$NON-NLS-1$
sql.append(initString(log.getCenter()));
sql.append("','"); //$NON-NLS-1$
sql.append(initString(log.getCreatedAt()));
sql.append("','"); //$NON-NLS-1$
sql.append(initString(log.getAction()));
sql.append("','"); //$NON-NLS-1$
sql.append(initString(log.getPatientNumber()));
sql.append("','"); //$NON-NLS-1$
sql.append(initString(log.getInventoryId()));
sql.append("','"); //$NON-NLS-1$
sql.append(initString(log.getLocationLabel()));
sql.append("','"); //$NON-NLS-1$
sql.append(initString(log.getDetails()));
sql.append("','"); //$NON-NLS-1$
sql.append(initString(log.getType()));
sql.append("');"); //$NON-NLS-1$
return sql.toString();
}
public static String initString(String str) {
String test = ""; //$NON-NLS-1$
if (str != null) {
test = str.trim().replaceAll("'", "''"); //$NON-NLS-1$ //$NON-NLS-2$
}
return test;
}
public static String initString(Date date) {
if (date == null) {
return ""; //$NON-NLS-1$
}
return dateTimeFormatter.format(date);
}
}