Skip to content
Snippets Groups Projects
Commit ca6f4dba authored by Alexandre TISON's avatar Alexandre TISON
Browse files
parent b5552505
No related branches found
No related tags found
1 merge request!1Refactoring TDB/HDB (https://jira.synchrotron-soleil.fr/jira/browse/TANGOARCH-875)
......@@ -84,23 +84,23 @@ public class ArchivingManager {
* can be the computer name or its IP address. <br>
* <b>Default value : </b>
*/
@DeviceProperty(name = "DbHost")
@DeviceProperty(name = "DbHost", description = "Computer identifier on wich is settled the database. The identifier can be the computer name or its IP address.")
private String dbHost = "";
/**
* Database name.<br>
* <b>Default value : </b>
*/
@DeviceProperty(name = "DbName")
@DeviceProperty(name = "DbName", description = "Database name.")
private String dbName = "";
/**
* User identifier (name) used to connect the database.
*/
@DeviceProperty(name = "DbUser")
@DeviceProperty(name = "DbUser", description = "User identifier (name) used to connect the database.")
private String dbUser = "";
/**
* Password used to connect the database.
*/
@DeviceProperty(name = "DbPassword")
@DeviceProperty(name = "DbPassword", description = "Password used to connect the database.")
private String dbPassword = "";
/**
* true if the ORACLE RAC connection is activated. This information is
......@@ -111,9 +111,9 @@ public class ArchivingManager {
//private boolean hdbRacConnection;
//@DeviceProperty
//private boolean tdbRacConnection;
@DeviceProperty(name = "DbSchema")
@DeviceProperty(name = "DbSchema", description = "Database schema")
private String dbSchema = "";
@DeviceProperty(name = "DbType")
@DeviceProperty(name = "DbType", description = "POSTGRESQL if you want to use Timeseries")
private String dbType = "";
@DeviceProperty(name = "ArchiverClass", description = "archiving device class to monitor")
private String archiverClass = DEFAULT_ARCHIVER_CLASS;
......@@ -121,8 +121,7 @@ public class ArchivingManager {
private DeviceState state;
@Status
private String status;
private IArchivingAccess databaseAccessHDB;
private IArchivingAccess databaseAccessTDB;
private IArchivingAccess databaseAccess;
public static void main(final String[] args) {
VERSION = ResourceBundle.getBundle("application").getString("project.version");
......@@ -195,26 +194,14 @@ public class ArchivingManager {
private void connect() {
StringBuilder statusBuilder = new StringBuilder();
final boolean isHdb = ConfigConst.HDB_CLASS_DEVICE.equals(archiverClass);
if (isHdb) {
try {
connectDb();
Set<String> archivers = databaseAccessHDB.getExportedArchiverList();
statusBuilder.append("- ").append(archivers.size()).append(" HDB Archivers: ")
Set<String> archivers = databaseAccess.getExportedArchiverList();
statusBuilder.append("- ").append(archivers.size()).append(isHdb ? " HBD" : " TDB").append(" Archivers: ")
.append(archivers).append("\n");
} catch (Throwable e) {
logger.warn("cannot connect to hdb ", e);
statusBuilder.append("- HDB is not available").append("\n");
}
} else {
try {
connectDb();
Set<String> archivers = databaseAccessTDB.getExportedArchiverList();
statusBuilder.append("- ").append(archivers.size()).append(" TDB Archivers: ")
.append(archivers).append("\n");
} catch (Throwable e) {
logger.warn("cannot connect to tdb ", e);
statusBuilder.append("- TDB is not available").append("\n");
}
logger.warn("cannot connect to " + (isHdb ? "HDB" : "TDB"), e);
statusBuilder.append("- ").append(isHdb ? "HDB " : "TDB ").append("is not available").append("\n");
}
state = DeviceState.ON;
status = statusBuilder.toString();
......@@ -238,21 +225,14 @@ public class ArchivingManager {
if (!dbType.isEmpty())
params.setDbType(DatabaseConnectionConfig.DataBaseType.parseDataBaseType(dbType));
logger.debug("connecting to {} with parameters {}", isHdb ? "HDB" : "TDB", params);
if (params.getDbType().equals(DatabaseConnectionConfig.DataBaseType.POSTGRESQL) && isHdb) {
databaseAccessHDB = new TimeseriesAccess();
} else if (params.getDbType().equals(DatabaseConnectionConfig.DataBaseType.POSTGRESQL) && !isHdb) {
databaseAccessTDB = new TimeseriesAccess();
} else if (!isHdb) {
databaseAccessTDB = new HDBTDBAccess();
} else {
databaseAccessHDB = new HDBTDBAccess();
}
if (isHdb){
databaseAccessHDB.connect(params, isHdb);
if (params.getDbType().equals(DatabaseConnectionConfig.DataBaseType.POSTGRESQL)) {
databaseAccess = new TimeseriesAccess();
} else {
databaseAccessTDB.connect(params, isHdb);
databaseAccess = new HDBTDBAccess();
}
databaseAccess.connect(params, isHdb);
}
@Command
......@@ -276,11 +256,7 @@ public class ArchivingManager {
*/
@Command(name = "ArchivingStop", inTypeDesc = "The attribute list")
public String archivingStop(final String[] argin) throws DevFailed {
if (ConfigConst.HDB_CLASS_DEVICE.equals(archiverClass)) {
return databaseAccessHDB.archivingStop(argin);
} else {
return databaseAccessTDB.archivingStop(argin);
}
return databaseAccess.archivingStop(argin);
}
/**
......@@ -344,13 +320,9 @@ public class ArchivingManager {
* </blockquote>
* @see fr.soleil.archiving.hdbtdb.api.tools.ArchivingMessConfig
*/
@Command(name = "ArchivingModif")
@Command(name = "ArchivingModif", inTypeDesc = "The configuration to switch to")
public void archivingModif(final String[] argin) throws DevFailed {
if (ConfigConst.HDB_CLASS_DEVICE.equals(archiverClass)) {
databaseAccessHDB.archivingModif(argin);
} else {
databaseAccessTDB.archivingModif(argin);
}
databaseAccess.archivingModif(argin);
}
/**
......@@ -414,13 +386,9 @@ public class ArchivingManager {
* </blockquote>
* @see fr.soleil.archiving.hdbtdb.api.tools.ArchivingMessConfig
*/
@Command(name = "ArchivingStart")
@Command(name = "ArchivingStart", inTypeDesc = "The configuration to start")
public void archivingStart(final String[] argin) throws DevFailed {
if(ConfigConst.HDB_CLASS_DEVICE.equals(archiverClass)){
databaseAccessHDB.archivingStart(argin);
} else {
databaseAccessTDB.archivingStart(argin);
}
databaseAccess.archivingStart(argin);
}
@Command(name = "ArchivingStartJson", inTypeDesc = "A JSON array. Example:\n [ {\n" +
......@@ -473,11 +441,7 @@ public class ArchivingManager {
" }\n" +
"} ]")
public void archivingStartJson(final String jsonAsString) throws DevFailed {
if (ConfigConst.HDB_CLASS_DEVICE.equals(archiverClass)) {
databaseAccessHDB.archivingStartJson(jsonAsString);
} else {
databaseAccessTDB.archivingStartJson(jsonAsString);
}
databaseAccess.archivingStartJson(jsonAsString);
}
/**
......@@ -491,13 +455,9 @@ public class ArchivingManager {
* <li><code>0</code>, otherwise
* </ul>
*/
@Command(name = "IsArchived")
@Command(name = "IsArchived", inTypeDesc = "The attribute list to check", outTypeDesc = "The archiving state for each attribute")
public short[] isArchived(final String[] argin) throws DevFailed {
if (ConfigConst.HDB_CLASS_DEVICE.equals(archiverClass)) {
return databaseAccessHDB.isArchived(argin);
} else {
return databaseAccessTDB.isArchived(argin);
}
return databaseAccess.isArchived(argin);
}
/**
......@@ -549,13 +509,9 @@ public class ArchivingManager {
* </ul>
* </blockquote>
*/
@Command(name = "GetArchivingMode")
@Command(name = "GetArchivingMode", inTypeDesc = "The attribute name", outTypeDesc = "The applied mode")
public String[] getArchivingMode(final String argin) throws DevFailed {
if (ConfigConst.HDB_CLASS_DEVICE.equals(archiverClass)) {
return databaseAccessHDB.getArchivingMode(argin);
} else {
return databaseAccessTDB.getArchivingMode(argin);
}
return databaseAccess.getArchivingMode(argin);
}
/**
......@@ -565,13 +521,9 @@ public class ArchivingManager {
* @param argin The attribute list.
* @return The list of status.
*/
@Command(name = "GetStatus")
@Command(name = "GetStatus", inTypeDesc = "The attribute list", outTypeDesc = "The list of status")
public String[] getStatus(final String[] argin) throws DevFailed {
if (ConfigConst.HDB_CLASS_DEVICE.equals(archiverClass)) {
return databaseAccessHDB.getStatus(argin);
} else {
return databaseAccessTDB.getStatus(argin);
}
return databaseAccess.getStatus(argin);
}
}
......@@ -30,7 +30,7 @@ import java.util.Set;
public class HDBTDBAccess implements IArchivingAccess {
private final Logger logger = LoggerFactory.getLogger(HDBTDBAccess.class);
private IArchivingManagerApiRef hdbManager;
private IArchivingManagerApiRef dbManager;
@Override
public void connect(final DatabaseConnectionConfig params, boolean isHistoric) throws DevFailed {
......@@ -52,8 +52,8 @@ public class HDBTDBAccess implements IArchivingAccess {
legacyParams.setMetricRegistry(params.getMetricRegistry());
}
final AbstractDataBaseConnector connector = ConnectionFactory.connect(legacyParams);
hdbManager = ArchivingManagerApiRefFactory.getInstance(isHistoric, connector);
hdbManager.archivingConfigure();
dbManager = ArchivingManagerApiRefFactory.getInstance(isHistoric, connector);
dbManager.archivingConfigure();
} catch (ArchivingException e) {
logger.error("cannot connect to DB", e);
throw e.toTangoException();
......@@ -62,35 +62,36 @@ public class HDBTDBAccess implements IArchivingAccess {
@Override
public String archivingStop(final String[] argin) throws DevFailed {
logger.info("Entering archiving_stop_hdb()");
logger.info("Entering archiving_stop()");
try {
hdbManager.archivingStopConf(argin);
dbManager.archivingStopConf(argin);
} catch (final ArchivingException e) {
logger.warn(e.toString(), e);
throw e.toTangoException();
}
logger.info("Exiting archiving_stop()");
return "";
}
@Override
public void archivingModif(final String[] argin) throws DevFailed {
logger.info("Entering archiving_modif_hdb()");
logger.info("Entering archiving_modif()");
final ArchivingMessConfig archivingMessConfig = ArchivingMessConfig.creationWithoutFullInformation(argin);
try {
hdbManager.archivingStopConf(archivingMessConfig.getAttributeList());
dbManager.archivingStopConf(archivingMessConfig.getAttributeList());
archivingStart(argin);
} catch (final ArchivingException e) {
logger.warn(e.toString(), e);
throw e.toTangoException();
}
logger.info("Exiting archiving_modif_hdb()");
logger.info("Exiting archiving_modif()");
}
@Override
public void archivingStart(final String[] argin) throws DevFailed {
try {
final ArchivingMessConfig archivingMessConfig = ArchivingMessConfig.creationWithoutFullInformation(argin);
hdbManager.archivingStart(archivingMessConfig);
dbManager.archivingStart(archivingMessConfig);
} catch (ArchivingException e) {
logger.error(e.toString(), e);
throw e.toTangoException();
......@@ -145,7 +146,7 @@ public class HDBTDBAccess implements IArchivingAccess {
}
);
try {
hdbManager.archivingStart(archivingMessConfig);
dbManager.archivingStart(archivingMessConfig);
} catch (ArchivingException e) {
logger.error(e.toString(), e);
throw e.toTangoException();
......@@ -154,12 +155,12 @@ public class HDBTDBAccess implements IArchivingAccess {
@Override
public short[] isArchived(final String[] argin) throws DevFailed {
logger.info("Entering is_archived_hdb()");
logger.info("Entering is_archived()");
short[] argout = new short[argin.length];
boolean result = false;
for (int i = 0; i < argin.length; i++) {
try {
result = hdbManager.isArchived(argin[i]);
result = dbManager.isArchived(argin[i]);
} catch (final ArchivingException e) {
logger.warn(e.toString(), e);
throw e.toTangoException();
......@@ -171,43 +172,43 @@ public class HDBTDBAccess implements IArchivingAccess {
}
}
logger.info("Exiting is_archived_hdb()");
logger.info("Exiting is_archived()");
return argout;
}
@Override
public String[] getArchivingMode(final String argin) throws DevFailed {
logger.info("Entering get_archiving_mode_hdb()");
logger.info("Entering get_archiving_mode()");
String[] argout;
try {
final Mode mode = hdbManager.getArchivingMode(argin);
final Mode mode = dbManager.getArchivingMode(argin);
argout = mode.toArray();
} catch (final ArchivingException e) {
logger.error(e.getMessage());
throw e.toTangoException();
}
logger.info("Exiting get_archiving_mode_hdb()");
logger.info("Exiting get_archiving_mode()");
return argout;
}
@Override
public String[] getStatus(final String[] argin) throws DevFailed {
logger.info("Entering get_status_hdb()");
logger.info("Entering get_status()");
String[] argout = new String[argin.length];
for (int i = 0; i < argin.length; i++) {
try {
argout[i] = hdbManager.getStatus(argin[i]);
argout[i] = dbManager.getStatus(argin[i]);
} catch (final ArchivingException e) {
throw e.toTangoException();
}
}
logger.info("Exiting get_status_hdb()");
logger.info("Exiting get_status()");
return argout;
}
@Override
public Set<String> getExportedArchiverList() {
return new HashSet<>(Arrays.asList(hdbManager.getMExportedArchiverList()));
return new HashSet<>(Arrays.asList(dbManager.getMExportedArchiverList()));
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment