
org.restcomm.connect.dao.mybatis.MybatisExtensionsConfigurationDao Maven / Gradle / Ivy
/*
* TeleStax, Open Source Cloud Communications
* Copyright 2011-2016, Telestax Inc and individual contributors
* by the @authors tag.
*
* This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation; either version 3 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see
*/
package org.restcomm.connect.dao.mybatis;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.XMLConfiguration;
import org.apache.commons.io.IOUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.log4j.Logger;
import org.joda.time.DateTime;
import org.joda.time.DateTimeComparator;
import org.restcomm.connect.commons.dao.Sid;
import org.restcomm.connect.dao.DaoUtils;
import org.restcomm.connect.dao.ExtensionsConfigurationDao;
import org.restcomm.connect.extension.api.ConfigurationException;
import org.restcomm.connect.extension.api.ExtensionConfiguration;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.restcomm.connect.dao.DaoUtils.readDateTime;
/**
* Created by gvagenas on 11/10/2016.
*/
public class MybatisExtensionsConfigurationDao implements ExtensionsConfigurationDao {
private static Logger logger = Logger.getLogger(MybatisExtensionsConfigurationDao.class);
private static final String namespace = "org.restcomm.connect.dao.ExtensionsConfigurationDao.";
private final SqlSessionFactory sessions;
public MybatisExtensionsConfigurationDao(final SqlSessionFactory sessions) {
super();
this.sessions = sessions;
}
@Override
public void addConfiguration(ExtensionConfiguration extensionConfiguration) throws ConfigurationException {
final SqlSession session = sessions.openSession();
try {
if (extensionConfiguration != null && extensionConfiguration.getConfigurationData() != null) {
if (validate(extensionConfiguration)) {
session.insert(namespace + "addConfiguration", toMap(extensionConfiguration));
session.commit();
} else {
throw new ConfigurationException("Exception trying to add new configuration, validation failed. configuration type: "
+ extensionConfiguration.getConfigurationType());
}
}
} finally {
session.close();
}
}
@Override
public void updateConfiguration(ExtensionConfiguration extensionConfiguration) throws ConfigurationException {
final SqlSession session = sessions.openSession();
try {
if (extensionConfiguration != null && extensionConfiguration.getConfigurationData() != null) {
if (validate(extensionConfiguration)) {
session.update(namespace + "updateConfiguration", toMap(extensionConfiguration));
} else {
throw new ConfigurationException("Exception trying to update configuration, validation failed. configuration type: "
+ extensionConfiguration.getConfigurationType());
}
}
session.commit();
} finally {
session.close();
}
}
@Override
public ExtensionConfiguration getConfigurationByName(String extensionName) {
final SqlSession session = sessions.openSession();
ExtensionConfiguration extensionConfiguration = null;
try {
final Map result = session.selectOne(namespace + "getConfigurationByName", extensionName);
if (result != null) {
extensionConfiguration = toExtensionConfiguration(result);
}
return extensionConfiguration;
} finally {
session.close();
}
}
@Override
public ExtensionConfiguration getConfigurationBySid(Sid extensionSid) {
final SqlSession session = sessions.openSession();
ExtensionConfiguration extensionConfiguration = null;
try {
final Map result = session.selectOne(namespace + "getConfigurationBySid", extensionSid.toString());
if (result != null) {
extensionConfiguration = toExtensionConfiguration(result);
}
return extensionConfiguration;
} finally {
session.close();
}
}
@Override
public List getAllConfiguration() {
final SqlSession session = sessions.openSession();
ExtensionConfiguration extensionConfiguration = null;
try {
final List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy