diff --git a/snaparchiver/src/main/java/org/tango/server/snap/archiver/SnapArchiver.java b/snaparchiver/src/main/java/org/tango/server/snap/archiver/SnapArchiver.java index 7dfe2efbc888d009557cfc3eae518f97b30f563f..347ace16be306a2f3756e6edcfab3b4591966d70 100644 --- a/snaparchiver/src/main/java/org/tango/server/snap/archiver/SnapArchiver.java +++ b/snaparchiver/src/main/java/org/tango/server/snap/archiver/SnapArchiver.java @@ -3,6 +3,7 @@ package org.tango.server.snap.archiver; import SnapArchiver.grouplink.UsePluginBuilder; import fr.esrf.Tango.DevFailed; import fr.soleil.actiongroup.collectiveaction.onattributes.UsePlugin; +import fr.soleil.archiving.common.api.utils.DbConnectionInfo; import fr.soleil.archiving.snap.api.manager.SnapManagerApi; import fr.soleil.archiving.snap.api.persistence.SnapshotPersistenceManager; import fr.soleil.archiving.snap.api.persistence.SnapshotPersistenceManagerFactory; @@ -87,12 +88,31 @@ public final class SnapArchiver { @Init public void init() throws DevFailed { try { + // get configuration from device class "SnapManager" + DbConnectionInfo dbConnectionInfo = new DbConnectionInfo("SnapManager"); + dbConnectionInfo.initFromClassProperties(); + if (dbHost.isEmpty()) { + dbHost = dbConnectionInfo.getDbHost(); + } + if (dbName.isEmpty()) { + dbName = dbConnectionInfo.getDbName(); + } + if (dbSchema.isEmpty()) { + dbSchema = dbConnectionInfo.getDbSchema(); + } + if (dbUser.isEmpty()) { + dbUser = dbConnectionInfo.getDbPassword(); + } + if (dbPassword.isEmpty()) { + dbPassword = dbConnectionInfo.getDbPassword(); + } SnapManagerApi.initSnapConnection(dbHost, dbName, dbSchema, dbUser, dbPassword, "false"); SnapshotPersistenceManagerFactory factory = SnapshotPersistenceManagerFactory.getInstance(); manager = factory.getManager(beansFileName, dbUser, dbPassword); state = DeviceState.ON; status = "device ready for snapshot"; } catch (SnapshotingException e) { + e.printStackTrace(); throw e.toTangoException(); } } @@ -240,14 +260,15 @@ public final class SnapArchiver { logger.debug("snapshot {} will contains {} atttributes", snapId, attributeList.size()); UsePluginBuilder builder = new UsePluginBuilder(snapId, manager); UsePlugin group = builder.build(attributeList); - boolean isExecuted = group.execute(); - logger.debug("snapshot {} execution status is {}", snapId, isExecuted); + boolean isExecutionFailed = group.execute(); + logger.debug("snapshot {} execution status is {}", snapId, isExecutionFailed); // group.getMessages(); Map<String, String> messages = group.getMessages(); logger.debug("snapshot {} execution messages are {}", messages); StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("Snapshot ").append(snapId).append(" for context ").append(contextID).append("done.\n"); - stringBuilder.append("Execution is ").append(isExecuted).append("\nMessages are ").append(messages); + stringBuilder.append("Snapshot ").append(snapId).append(" for context ").append(contextID).append(" done.\n"); + stringBuilder.append("Execution has some errors = ").append(isExecutionFailed).append("\nErrors messages are ").append(messages); + status = stringBuilder.toString(); state = DeviceState.ON; } catch (SnapshotingException e) { state = DeviceState.FAULT;