package fi.otavanopisto.muikku.controller;
import java.util.List;
import javax.inject.Inject;
import fi.otavanopisto.muikku.dao.plugins.PluginSettingDAO;
import fi.otavanopisto.muikku.dao.plugins.PluginSettingKeyDAO;
import fi.otavanopisto.muikku.dao.plugins.PluginUserSettingDAO;
import fi.otavanopisto.muikku.dao.plugins.PluginUserSettingKeyDAO;
import fi.otavanopisto.muikku.dao.users.UserEntityDAO;
import fi.otavanopisto.muikku.model.plugins.PluginSetting;
import fi.otavanopisto.muikku.model.plugins.PluginSettingKey;
import fi.otavanopisto.muikku.model.plugins.PluginUserSetting;
import fi.otavanopisto.muikku.model.plugins.PluginUserSettingKey;
import fi.otavanopisto.muikku.model.users.UserEntity;
public class PluginSettingsController {
@Inject
private PluginSettingDAO pluginSettingDAO;
@Inject
private PluginSettingKeyDAO pluginSettingKeyDAO;
@Inject
private PluginUserSettingDAO pluginUserSettingDAO;
@Inject
private PluginUserSettingKeyDAO pluginUserSettingKeyDAO;
@Inject
private UserEntityDAO userEntityDAO;
public PluginSettingKey findPluginSettingKey(String plugin, String name) {
return pluginSettingKeyDAO.findByPluginAndName(plugin, name);
}
public PluginSettingKey getPluginSettingKey(String plugin, String name) {
PluginSettingKey key = findPluginSettingKey(plugin, name);
if (key == null) {
key = pluginSettingKeyDAO.create(plugin, name);
}
return key;
}
public String findPluginSetting(PluginSettingKey key) {
PluginSetting setting = pluginSettingDAO.findByKey(key);
if (setting != null) {
return setting.getValue();
}
return null;
}
public String getPluginSetting(String plugin, String name) {
PluginSettingKey key = findPluginSettingKey(plugin, name);
if (key == null) {
key = pluginSettingKeyDAO.create(plugin, name);
}
return findPluginSetting(key);
}
public void updatePluginSetting(PluginSettingKey key, String value) {
PluginSetting setting = pluginSettingDAO.findByKey(key);
if (setting == null) {
setting = pluginSettingDAO.create(key, value);
} else {
pluginSettingDAO.updateValue(setting, value);
}
}
public void setPluginSetting(String plugin, String name, String value) {
PluginSettingKey key = findPluginSettingKey(plugin, name);
if (key == null) {
key = pluginSettingKeyDAO.create(plugin, name);
}
updatePluginSetting(key, value);
}
public PluginUserSettingKey findPluginUserSettingKey(String plugin, String name) {
return pluginUserSettingKeyDAO.findByPluginAndName(plugin, name);
}
public PluginUserSettingKey getPluginUserSettingKey(String plugin, String name) {
PluginUserSettingKey key = findPluginUserSettingKey(plugin, name);
if (key == null) {
key = pluginUserSettingKeyDAO.create(plugin, name);
}
return key;
}
public PluginUserSetting findPluginUserSetting(PluginUserSettingKey key, UserEntity user) {
return pluginUserSettingDAO.findByKeyAndUser(key, user);
}
public String getPluginUserSetting(String plugin, String name, UserEntity user) {
PluginUserSettingKey key = findPluginUserSettingKey(plugin, name);
if (key == null) {
key = pluginUserSettingKeyDAO.create(plugin, name);
}
PluginUserSetting setting = findPluginUserSetting(key, user);
if (setting != null) {
return setting.getValue();
}
return null;
}
public void updatePluginUserSetting(PluginUserSettingKey key, String value, UserEntity user) {
PluginUserSetting setting = pluginUserSettingDAO.findByKeyAndUser(key, user);
if (setting == null) {
setting = pluginUserSettingDAO.create(key, user, value);
} else {
pluginUserSettingDAO.updateValue(setting, value);
}
}
public void setPluginUserSetting(String plugin, String name, String value, UserEntity user) {
PluginUserSettingKey key = findPluginUserSettingKey(plugin, name);
if (key == null) {
key = pluginUserSettingKeyDAO.create(plugin, name);
}
updatePluginUserSetting(key, value, user);
}
public List<UserEntity> listUsersWithSetting(PluginUserSettingKey key) {
return pluginUserSettingDAO.listUsersByKey(key);
}
public List<UserEntity> listUsersWithoutSetting(PluginUserSettingKey key) {
return userEntityDAO.listByUserNotIn(listUsersWithSetting(key));
}
}