package org.cad.interruptus.core.esper;
import com.espertech.esper.client.ConfigurationOperations;
import com.espertech.esper.client.EPAdministrator;
import com.espertech.esper.client.EPServiceProvider;
import com.espertech.esper.client.EventType;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.cad.interruptus.entity.Type;
public class TypeConfiguration implements EsperConfiguration<Type>
{
final EPServiceProvider epService;
final Log logger = LogFactory.getLog(getClass());
public TypeConfiguration(final EPServiceProvider epService)
{
this.epService = epService;
}
@Override
public List<String> list()
{
final EPAdministrator admin = epService.getEPAdministrator();
final ConfigurationOperations config = admin.getConfiguration();
final EventType[] eventTypes = config.getEventTypes();
final List<String> list = new ArrayList<>();
for (final EventType type : eventTypes) {
list.add(type.getName());
}
return list;
}
@Override
public void save(final Type type)
{
final Map<String, Object> map = new HashMap<String, Object>(type.getProperties());
final EPAdministrator admin = epService.getEPAdministrator();
final ConfigurationOperations config = admin.getConfiguration();
final String name = type.getName();
logger.info("Saving type : " + name);
if (config.isEventTypeExists(name)) {
config.updateMapEventType(name, map);
return;
}
config.addEventType(name, map);
}
@Override
public Boolean remove(final String name)
{
final EPAdministrator administrator = epService.getEPAdministrator();
final ConfigurationOperations config = administrator.getConfiguration();
if ( ! config.isEventTypeExists(name)) {
return true;
}
logger.info("Removing type : " + name);
return config.removeEventType(name, true);
}
@Override
public Boolean start(String name)
{
return false;
}
@Override
public Boolean stop(String name)
{
return false;
}
}