package org.ovirt.engine.core.notifier.methods;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import org.ovirt.engine.core.common.EventNotificationMethods;
import org.ovirt.engine.core.common.businessentities.event_notification_methods;
/**
* Populates a event notification method list by a database content<br>
* If no valid method type method is provided (meaning a method type which isn't defined in
* {@link EventNotificationMethods}),<br>
* a default value of {@code EventNotificationMethods.EMAIL} is set.
*/
public class EventMethodFiller {
private List<event_notification_methods> methods = new ArrayList<event_notification_methods>();
/**
* Populates the list of event notification methods by its content in table <i>event_notification_methods</i>
* @param conn
* a connection to the database
* @throws SQLException
*/
public void fillEventNotificationMethods(Connection conn) throws SQLException {
Statement stmt = null;
ResultSet rs = null;
try {
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from event_notification_methods");
event_notification_methods method;
while (rs.next()) {
method = new event_notification_methods();
method.setmethod_id(rs.getInt("method_id"));
method.setmethod_type(getMethodTypeByName(rs.getString("method_type")));
methods.add(method);
}
} finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
}
}
if (stmt != null) {
stmt.close();
}
}
}
private EventNotificationMethods getMethodTypeByName(String methodName) {
for (EventNotificationMethods value : EventNotificationMethods.values()) {
if (value.name().equalsIgnoreCase(methodName)) {
return value;
}
}
return EventNotificationMethods.EMAIL;
}
/**
* A getter of the created methods list. Should be called and used after
* {@link #fillEventNotificationMethods(Connection)} was invoked
* @return list of configured notification methods
*/
public List<event_notification_methods> getEventNotificationMethods() {
return methods;
}
}