/*****************************************************************************
*
* Copyright (C) Zenoss, Inc. 2011, all rights reserved.
*
* This content is made available according to terms specified in
* License.zenoss under the directory where your Zenoss product is installed.
*
****************************************************************************/
package org.zenoss.zep.dao.impl.compat;
import org.zenoss.utils.dao.RangePartitioner;
import org.zenoss.utils.dao.impl.MySqlRangePartitioner;
import javax.sql.DataSource;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.concurrent.TimeUnit;
/**
* Database compatibility layer for MySQL.
*/
public class DatabaseCompatibilityMySQL implements DatabaseCompatibility {
private final TypeConverter<String> uuidConverter = new UUIDConverterMySQL();
@Override
public DatabaseType getDatabaseType() {
return DatabaseType.MYSQL;
}
@Override
public TypeConverter<Long> getTimestampConverter() {
return new TypeConverter<Long>() {
@Override
public Long fromDatabaseType(ResultSet rs, String columnName) throws SQLException {
long l = rs.getLong(columnName);
return (rs.wasNull()) ? null : l;
}
@Override
public Object toDatabaseType(Long timestampInMillis) {
return timestampInMillis;
}
};
}
@Override
public TypeConverter<String> getUUIDConverter() {
return uuidConverter;
}
@Override
public RangePartitioner getRangePartitioner(DataSource ds,
String tableName, String columnName,
long duration, TimeUnit unit) {
return new MySqlRangePartitioner(ds, tableName,
columnName, duration, unit);
}
}