Skip to content
Snippets Groups Projects
Commit d6dc7420 authored by gwen-soleil's avatar gwen-soleil
Browse files

add device property for max db pool size

parent 2554f2f1
No related branches found
No related tags found
No related merge requests found
...@@ -3,6 +3,7 @@ package org.tango.server.snap.archiver; ...@@ -3,6 +3,7 @@ package org.tango.server.snap.archiver;
import SnapArchiver.grouplink.UsePluginBuilder; import SnapArchiver.grouplink.UsePluginBuilder;
import fr.esrf.Tango.DevFailed; import fr.esrf.Tango.DevFailed;
import fr.soleil.actiongroup.collectiveaction.onattributes.UsePlugin; import fr.soleil.actiongroup.collectiveaction.onattributes.UsePlugin;
import fr.soleil.archiving.common.api.exception.ArchivingException;
import fr.soleil.archiving.common.api.utils.DbConnectionInfo; import fr.soleil.archiving.common.api.utils.DbConnectionInfo;
import fr.soleil.archiving.snap.api.manager.SnapManagerApi; import fr.soleil.archiving.snap.api.manager.SnapManagerApi;
import fr.soleil.archiving.snap.api.persistence.SnapshotPersistenceManager; import fr.soleil.archiving.snap.api.persistence.SnapshotPersistenceManager;
...@@ -11,6 +12,7 @@ import fr.soleil.archiving.snap.api.tools.SnapAttributeExtract; ...@@ -11,6 +12,7 @@ import fr.soleil.archiving.snap.api.tools.SnapAttributeExtract;
import fr.soleil.archiving.snap.api.tools.SnapContext; import fr.soleil.archiving.snap.api.tools.SnapContext;
import fr.soleil.archiving.snap.api.tools.Snapshot; import fr.soleil.archiving.snap.api.tools.Snapshot;
import fr.soleil.archiving.snap.api.tools.SnapshotingException; import fr.soleil.archiving.snap.api.tools.SnapshotingException;
import fr.soleil.database.connection.DataBaseParameters;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.tango.DeviceState; import org.tango.DeviceState;
...@@ -68,13 +70,12 @@ public final class SnapArchiver { ...@@ -68,13 +70,12 @@ public final class SnapArchiver {
private String dbName = ""; private String dbName = "";
@DeviceProperty @DeviceProperty
private String dbSchema = ""; private String dbSchema = "";
@DeviceProperty(name = "maxDbPoolSize", description = "max database connections", defaultValue = "3")
private short maxDbPoolSize = 3;
@Status @Status
private String status; private String status;
@State @State
private DeviceState state; private DeviceState state;
private SnapshotPersistenceManager manager; private SnapshotPersistenceManager manager;
public static void main(final String[] args) { public static void main(final String[] args) {
...@@ -82,13 +83,11 @@ public final class SnapArchiver { ...@@ -82,13 +83,11 @@ public final class SnapArchiver {
ServerManager.getInstance().start(args, SnapArchiver.class); ServerManager.getInstance().start(args, SnapArchiver.class);
} }
/** public void setMaxDbPoolSize(short maxDbPoolSize) {
* Initialize the device. this.maxDbPoolSize = maxDbPoolSize;
*/ }
@Init
public void init() throws DevFailed { private DataBaseParameters getDataBaseParameters() throws DevFailed {
try {
// get configuration from device class "SnapManager"
DbConnectionInfo dbConnectionInfo = new DbConnectionInfo("SnapManager"); DbConnectionInfo dbConnectionInfo = new DbConnectionInfo("SnapManager");
dbConnectionInfo.initFromClassProperties(); dbConnectionInfo.initFromClassProperties();
if (dbHost.isEmpty()) { if (dbHost.isEmpty()) {
...@@ -106,15 +105,31 @@ public final class SnapArchiver { ...@@ -106,15 +105,31 @@ public final class SnapArchiver {
if (dbPassword.isEmpty()) { if (dbPassword.isEmpty()) {
dbPassword = dbConnectionInfo.getDbPassword(); dbPassword = dbConnectionInfo.getDbPassword();
} }
SnapManagerApi.initSnapConnection(dbHost, dbName, dbSchema, dbUser, dbPassword, "false"); DataBaseParameters parameters = new DataBaseParameters();
parameters.setName(dbName);
parameters.setSchema(dbSchema);
parameters.setHost(dbHost);
parameters.setUser(dbUser);
parameters.setPassword(dbPassword);
parameters.setMaxPoolSize(maxDbPoolSize);
return parameters;
}
/**
* Initialize the device.
*/
@Init
public void init() throws DevFailed {
// get configuration from device class "SnapManager"
try {
SnapManagerApi.initSnapConnection(getDataBaseParameters());
} catch (ArchivingException e) {
throw e.toTangoException();
}
SnapshotPersistenceManagerFactory factory = SnapshotPersistenceManagerFactory.getInstance(); SnapshotPersistenceManagerFactory factory = SnapshotPersistenceManagerFactory.getInstance();
manager = factory.getManager(beansFileName, dbUser, dbPassword); manager = factory.getManager(beansFileName, dbUser, dbPassword);
state = DeviceState.ON; state = DeviceState.ON;
status = "device ready for snapshot"; status = "device ready for snapshot";
} catch (SnapshotingException e) {
e.printStackTrace();
throw e.toTangoException();
}
} }
@Delete @Delete
...@@ -141,7 +156,6 @@ public final class SnapArchiver { ...@@ -141,7 +156,6 @@ public final class SnapArchiver {
logger.info("in command TriggerLaunchSnapShot for context {}", argin); logger.info("in command TriggerLaunchSnapShot for context {}", argin);
Future<Integer> snapshotResult = executorService.submit(new SnapArchiver.SnapshotTask(argin)); Future<Integer> snapshotResult = executorService.submit(new SnapArchiver.SnapshotTask(argin));
snapshotResults.put(argin, snapshotResult); snapshotResults.put(argin, snapshotResult);
} }
/** /**
......
...@@ -88,36 +88,13 @@ ...@@ -88,36 +88,13 @@
package org.tango.server.snapextractor; package org.tango.server.snapextractor;
import java.util.Arrays;
import java.util.List;
import java.util.ResourceBundle;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.tango.DeviceState;
import org.tango.server.ServerManager;
import org.tango.server.annotation.Attribute;
import org.tango.server.annotation.AttributeProperties;
import org.tango.server.annotation.Command;
import org.tango.server.annotation.Delete;
import org.tango.server.annotation.Device;
import org.tango.server.annotation.DeviceManagement;
import org.tango.server.annotation.DeviceProperty;
import org.tango.server.annotation.DynamicManagement;
import org.tango.server.annotation.Init;
import org.tango.server.annotation.State;
import org.tango.server.annotation.Status;
import org.tango.server.device.DeviceManager;
import org.tango.server.dynamic.DynamicManager;
import org.tango.utils.DevFailedUtils;
import fr.esrf.Tango.AttrWriteType; import fr.esrf.Tango.AttrWriteType;
import fr.esrf.Tango.DevFailed; import fr.esrf.Tango.DevFailed;
import fr.esrf.Tango.DevState; import fr.esrf.Tango.DevState;
import fr.esrf.Tango.DevVarLongStringArray; import fr.esrf.Tango.DevVarLongStringArray;
import fr.esrf.Tango.DispLevel; import fr.esrf.Tango.DispLevel;
import fr.esrf.TangoDs.TangoConst; import fr.esrf.TangoDs.TangoConst;
import fr.soleil.archiving.common.api.exception.ArchivingException;
import fr.soleil.archiving.common.api.tools.DbData; import fr.soleil.archiving.common.api.tools.DbData;
import fr.soleil.archiving.snap.api.SnapConnectionParameters; import fr.soleil.archiving.snap.api.SnapConnectionParameters;
import fr.soleil.archiving.snap.api.extractor.convert.ConverterFactory; import fr.soleil.archiving.snap.api.extractor.convert.ConverterFactory;
...@@ -134,7 +111,30 @@ import fr.soleil.archiving.snap.api.persistence.spring.dao.SnapshotDAO; ...@@ -134,7 +111,30 @@ import fr.soleil.archiving.snap.api.persistence.spring.dao.SnapshotDAO;
import fr.soleil.archiving.snap.api.tools.SnapAttributeExtract; import fr.soleil.archiving.snap.api.tools.SnapAttributeExtract;
import fr.soleil.archiving.snap.api.tools.SnapshotingException; import fr.soleil.archiving.snap.api.tools.SnapshotingException;
import fr.soleil.database.DBExtractionConst; import fr.soleil.database.DBExtractionConst;
import fr.soleil.lib.project.ObjectUtils; import fr.soleil.database.connection.DataBaseParameters;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.tango.DeviceState;
import org.tango.server.ServerManager;
import org.tango.server.annotation.Attribute;
import org.tango.server.annotation.AttributeProperties;
import org.tango.server.annotation.Command;
import org.tango.server.annotation.Delete;
import org.tango.server.annotation.Device;
import org.tango.server.annotation.DeviceManagement;
import org.tango.server.annotation.DeviceProperty;
import org.tango.server.annotation.DynamicManagement;
import org.tango.server.annotation.Init;
import org.tango.server.annotation.State;
import org.tango.server.annotation.Status;
import org.tango.server.device.DeviceManager;
import org.tango.server.dynamic.DynamicManager;
import org.tango.utils.DevFailedUtils;
import java.util.Arrays;
import java.util.List;
import java.util.ResourceBundle;
/** /**
* Class Description: This device is in charge of extracting snapshots from the * Class Description: This device is in charge of extracting snapshots from the
...@@ -154,106 +154,100 @@ import fr.soleil.lib.project.ObjectUtils; ...@@ -154,106 +154,100 @@ import fr.soleil.lib.project.ObjectUtils;
@Device @Device
public class SnapExtractor implements DBExtractionConst { public class SnapExtractor implements DBExtractionConst {
@Autowired
SnapshotDAO snapshotDao;
private SnapshotPersistenceManager manager;
private static final String _ERROR = "_ERROR"; private static final String _ERROR = "_ERROR";
private final Logger logger = LoggerFactory.getLogger(SnapExtractor.class); private final Logger logger = LoggerFactory.getLogger(SnapExtractor.class);
@Attribute(name = "version", displayLevel = DispLevel._EXPERT)
@AttributeProperties(description = "The version of the device", label = "version")
private final String version = ResourceBundle.getBundle("application").getString("project.version");
protected int formerState = DevState._UNKNOWN;
@Autowired
SnapshotDAO snapshotDao;
private SnapshotPersistenceManager manager;
@DynamicManagement @DynamicManagement
private DynamicManager dynMngt; private DynamicManager dynMngt;
@DeviceManagement
private DeviceManager devManager;
private int id = 0;
/**
* User identifier (name) used to connect the database SNAP. <br>
* <b>Default value : </b> snap
*/
@DeviceProperty(name = "dbUser", description = "database user")
private String dbUser;
/**
* Password used to connect the database SNAP. <br>
* <b>Default value : </b> snap
*/
@DeviceProperty(name = "dbPassword", description = "database password", defaultValue = "snap")
private String dbPassword;
@DeviceProperty(name = "dbHost", description = "database host name")
private String dbHost;
@DeviceProperty(name = "dbName", description = "database name")
private String dbName;
@DeviceProperty(name = "dbSchema", description = "database schema")
private String dbSchema;
@DeviceProperty(name = "beansFileName", description = "hibernate config file")
private String beansFileName;
@DeviceProperty(name = "maxDbPoolSize", description = "max database connections", defaultValue = "3")
private short maxDbPoolSize = 3;
private ISnapReader snapReader;
/**
* The state of the device
*/
@State
private DeviceState state = DeviceState.UNKNOWN;
/**
* The status of the device
*/
@Status
private String status = "Server is starting. The device state is unknown";
public static void main(final String[] args) {
ServerManager.getInstance().start(args, SnapExtractor.class);
}
public void setMaxDbPoolSize(short maxDbPoolSize) {
this.maxDbPoolSize = maxDbPoolSize;
}
public void setDynMngt(final DynamicManager dynMngt) { public void setDynMngt(final DynamicManager dynMngt) {
this.dynMngt = dynMngt; this.dynMngt = dynMngt;
} }
@DeviceManagement
private DeviceManager devManager;
public void setDevManager(final DeviceManager devManager) { public void setDevManager(final DeviceManager devManager) {
this.devManager = devManager; this.devManager = devManager;
} }
@Attribute(name = "version", displayLevel = DispLevel._EXPERT)
@AttributeProperties(description = "The version of the device", label = "version", unit = ObjectUtils.EMPTY_STRING)
private final String version = ResourceBundle.getBundle("application").getString("project.version");
public String getVersion() { public String getVersion() {
return version; return version;
} }
private int id = 0;
/**
* User identifier (name) used to connect the database SNAP. <br>
* <b>Default value : </b> snap
*/
@DeviceProperty(name = "dbUser", description = ObjectUtils.EMPTY_STRING, defaultValue = ObjectUtils.EMPTY_STRING)
private String dbUser;
public void setDbUser(final String dbUser) { public void setDbUser(final String dbUser) {
this.dbUser = dbUser; this.dbUser = dbUser;
} }
/**
* Password used to connect the database SNAP. <br>
* <b>Default value : </b> snap
*/
@DeviceProperty(name = "dbPassword", description = ObjectUtils.EMPTY_STRING, defaultValue = ObjectUtils.EMPTY_STRING)
private String dbPassword;
public void setDbPassword(final String dbPassword) { public void setDbPassword(final String dbPassword) {
this.dbPassword = dbPassword; this.dbPassword = dbPassword;
} }
protected int formerState = DevState._UNKNOWN;
@DeviceProperty(name = "dbHost", description = ObjectUtils.EMPTY_STRING, defaultValue = ObjectUtils.EMPTY_STRING)
private String dbHost;
public void setDbHost(final String dbHost) { public void setDbHost(final String dbHost) {
this.dbHost = dbHost; this.dbHost = dbHost;
} }
@DeviceProperty(name = "dbName", description = ObjectUtils.EMPTY_STRING, defaultValue = ObjectUtils.EMPTY_STRING)
private String dbName;
public void setDbName(final String dbName) { public void setDbName(final String dbName) {
this.dbName = dbName; this.dbName = dbName;
} }
@DeviceProperty(name = "dbSchema", description = ObjectUtils.EMPTY_STRING, defaultValue = ObjectUtils.EMPTY_STRING)
private String dbSchema;
public void setDbSchema(final String dbSchema) { public void setDbSchema(final String dbSchema) {
this.dbSchema = dbSchema; this.dbSchema = dbSchema;
} }
@DeviceProperty(name = "isRac", description = ObjectUtils.EMPTY_STRING, defaultValue = ObjectUtils.EMPTY_STRING)
private String isRac;
public void setIsRac(final String isRac) {
this.isRac = isRac;
}
@DeviceProperty(name = "beansFileName", description = ObjectUtils.EMPTY_STRING, defaultValue = ObjectUtils.EMPTY_STRING)
private String beansFileName = ObjectUtils.EMPTY_STRING;
public void setBeansFileName(String beansFileName) { public void setBeansFileName(String beansFileName) {
this.beansFileName = beansFileName; this.beansFileName = beansFileName;
} }
private ISnapReader snapReader;
/**
* The state of the device
*/
@State
private DeviceState state = DeviceState.UNKNOWN;
/** /**
* Execute command "State". * Execute command "State".
* description: This command gets the device state (stored in its 'state' data member) and returns it to the caller. * description: This command gets the device state (stored in its 'state' data member) and returns it to the caller.
...@@ -274,12 +268,6 @@ public class SnapExtractor implements DBExtractionConst { ...@@ -274,12 +268,6 @@ public class SnapExtractor implements DBExtractionConst {
this.state = state; this.state = state;
} }
/**
* The status of the device
*/
@Status
private String status = "Server is starting. The device state is unknown";
/** /**
* Execute command "Status". * Execute command "Status".
* description: This command gets the device status (stored in its 'status' data member) and returns it to the * description: This command gets the device status (stored in its 'status' data member) and returns it to the
...@@ -312,7 +300,14 @@ public class SnapExtractor implements DBExtractionConst { ...@@ -312,7 +300,14 @@ public class SnapExtractor implements DBExtractionConst {
// Initialize variables to default values // Initialize variables to default values
getDeviceProperty(); getDeviceProperty();
// Snap Database connection // Snap Database connection
SnapManagerApi.initSnapConnection(dbHost, dbName, dbSchema, dbUser, dbPassword, isRac); DataBaseParameters parameters = new DataBaseParameters();
parameters.setName(dbName);
parameters.setSchema(dbSchema);
parameters.setHost(dbHost);
parameters.setUser(dbUser);
parameters.setPassword(dbPassword);
parameters.setMaxPoolSize(maxDbPoolSize);
SnapManagerApi.initSnapConnection(parameters);
snapReader = SnapReaderFactory.getImpl(SnapReaderFactory.REAL); snapReader = SnapReaderFactory.getImpl(SnapReaderFactory.REAL);
snapReader.openConnection(); snapReader.openConnection();
SnapshotPersistenceManagerFactory factory = SnapshotPersistenceManagerFactory.getInstance(); SnapshotPersistenceManagerFactory factory = SnapshotPersistenceManagerFactory.getInstance();
...@@ -321,6 +316,9 @@ public class SnapExtractor implements DBExtractionConst { ...@@ -321,6 +316,9 @@ public class SnapExtractor implements DBExtractionConst {
} catch (final SnapshotingException e) { } catch (final SnapshotingException e) {
logger.error("Failed to initialize device", e); logger.error("Failed to initialize device", e);
throw e.toTangoException(); throw e.toTangoException();
} catch (final ArchivingException e) {
logger.error("Failed to initialize device", e);
throw e.toTangoException();
} }
this.state = DeviceState.ON; this.state = DeviceState.ON;
this.status = "Device is ready"; this.status = "Device is ready";
...@@ -340,8 +338,7 @@ public class SnapExtractor implements DBExtractionConst { ...@@ -340,8 +338,7 @@ public class SnapExtractor implements DBExtractionConst {
* Execute command "RemoveDynAttr" on device. Remove the dynamic * Execute command "RemoveDynAttr" on device. Remove the dynamic
* attribute specified by its name argin. * attribute specified by its name argin.
* *
* @param argin * @param argin The dynamic attribute's name
* The dynamic attribute's name
*/ */
@Command(name = "RemoveDynAttr") @Command(name = "RemoveDynAttr")
public void removeDynamicAttribute(final String argin) throws DevFailed { public void removeDynamicAttribute(final String argin) throws DevFailed {
...@@ -353,8 +350,7 @@ public class SnapExtractor implements DBExtractionConst { ...@@ -353,8 +350,7 @@ public class SnapExtractor implements DBExtractionConst {
* Execute command "RemoveDynAttrs" on device. Remove the dynamic * Execute command "RemoveDynAttrs" on device. Remove the dynamic
* attributes specified by the names list. * attributes specified by the names list.
* *
* @param argin * @param argin The dynamic attributes names
* The dynamic attributes names
*/ */
@Command(name = "RemoveDynAttrs") @Command(name = "RemoveDynAttrs")
public void removeDynamicAttributes(final String[] argin) throws DevFailed { public void removeDynamicAttributes(final String[] argin) throws DevFailed {
...@@ -368,8 +364,7 @@ public class SnapExtractor implements DBExtractionConst { ...@@ -368,8 +364,7 @@ public class SnapExtractor implements DBExtractionConst {
* Execute command "RemoveAllDynAttr" on device. Remove all * Execute command "RemoveAllDynAttr" on device. Remove all
* existing dynamic attributes. * existing dynamic attributes.
* *
* @param argin * @param argin The dynamic attribute's name
* The dynamic attribute's name
*/ */
@Command(name = "RemoveAllDynAttr") @Command(name = "RemoveAllDynAttr")
public void remove_all_dyn_attr() throws DevFailed { public void remove_all_dyn_attr() throws DevFailed {
...@@ -391,7 +386,6 @@ public class SnapExtractor implements DBExtractionConst { ...@@ -391,7 +386,6 @@ public class SnapExtractor implements DBExtractionConst {
dbSchema = getProperty(dbSchema, SnapConnectionParameters.getSnapSchema()); dbSchema = getProperty(dbSchema, SnapConnectionParameters.getSnapSchema());
dbUser = getProperty(dbUser, SnapConnectionParameters.getSnapUser()); dbUser = getProperty(dbUser, SnapConnectionParameters.getSnapUser());
dbPassword = getProperty(dbPassword, SnapConnectionParameters.getSnapPassword()); dbPassword = getProperty(dbPassword, SnapConnectionParameters.getSnapPassword());
isRac = getProperty(isRac, SnapConnectionParameters.getSnapRac());
logger.info(SnapConnectionParameters.appendSnapConnectionInfoLog(new StringBuilder("Connection info:\n")) logger.info(SnapConnectionParameters.appendSnapConnectionInfoLog(new StringBuilder("Connection info:\n"))
.toString()); .toString());
} }
...@@ -412,8 +406,7 @@ public class SnapExtractor implements DBExtractionConst { ...@@ -412,8 +406,7 @@ public class SnapExtractor implements DBExtractionConst {
* <LI>the name of the dynamic attribute containing the attribute's write value (if it has one, otherwise blank) * <LI>the name of the dynamic attribute containing the attribute's write value (if it has one, otherwise blank)
* </UL> * </UL>
* *
* @param argin * @param argin the snapshot's ID
* the snapshot's ID
* @return A table containing [attrRealName, dynAttrNameR,dynAttrNameW]*n * @return A table containing [attrRealName, dynAttrNameR,dynAttrNameW]*n
* @throws DevFailed * @throws DevFailed
*/ */
...@@ -457,10 +450,8 @@ public class SnapExtractor implements DBExtractionConst { ...@@ -457,10 +450,8 @@ public class SnapExtractor implements DBExtractionConst {
* if the snapshot exists, find if the attribute exists for this snapshot if * if the snapshot exists, find if the attribute exists for this snapshot if
* the attribute exists, Returns an attribute value * the attribute exists, Returns an attribute value
* *
* @param snapID * @param snapID the snapshot's ID
* the snapshot's ID * @param attr_name the attribute name
* @param attr_name
* the attribute name
* @return the attribute value * @return the attribute value
* @throws DevFailed * @throws DevFailed
*/ */
...@@ -497,10 +488,8 @@ public class SnapExtractor implements DBExtractionConst { ...@@ -497,10 +488,8 @@ public class SnapExtractor implements DBExtractionConst {
* Execute command "GetSnapID" on device. Loads the list of snapshot' id of * Execute command "GetSnapID" on device. Loads the list of snapshot' id of
* a given context that respect the given criterion. * a given context that respect the given criterion.
* *
* @param ctxID * @param ctxID the context's ID
* the context's ID * @param criterion the search criterion
* @param criterion
* the search criterion
* @return the list of snapshot ids. * @return the list of snapshot ids.
* @throws DevFailed * @throws DevFailed
* @throws SnapshotingException * @throws SnapshotingException
...@@ -520,7 +509,6 @@ public class SnapExtractor implements DBExtractionConst { ...@@ -520,7 +509,6 @@ public class SnapExtractor implements DBExtractionConst {
} }
/** /**
*
* @param snapAttributeExtract * @param snapAttributeExtract
* @return read_value and write_value * @return read_value and write_value
*/ */
...@@ -539,8 +527,7 @@ public class SnapExtractor implements DBExtractionConst { ...@@ -539,8 +527,7 @@ public class SnapExtractor implements DBExtractionConst {
* ID, the String part is the concatenation of its Date and Comment fields * ID, the String part is the concatenation of its Date and Comment fields
* values. * values.
* *
* @param argin * @param argin The context ID
* The context ID
* @return The snapshots: [ID, Date + Comment]*n * @return The snapshots: [ID, Date + Comment]*n
* @throws DevFailed * @throws DevFailed
*/ */
...@@ -560,7 +547,6 @@ public class SnapExtractor implements DBExtractionConst { ...@@ -560,7 +547,6 @@ public class SnapExtractor implements DBExtractionConst {
* ID, the String part is the concatenation of its Date and Comment fields * ID, the String part is the concatenation of its Date and Comment fields
* values. * values.
* *
*
* @return The contexts: [ID, Name, author name, Date, reason, description]*n * @return The contexts: [ID, Name, author name, Date, reason, description]*n
* @throws DevFailed * @throws DevFailed
*/ */
...@@ -584,10 +570,6 @@ public class SnapExtractor implements DBExtractionConst { ...@@ -584,10 +570,6 @@ public class SnapExtractor implements DBExtractionConst {
return ret; return ret;
} }
public static void main(final String[] args) {
ServerManager.getInstance().start(args, SnapExtractor.class);
}
private String[] addAttributes(final SnapAttributeExtract[] sae) throws DevFailed { private String[] addAttributes(final SnapAttributeExtract[] sae) throws DevFailed {
final int numberOfAttributes = sae.length; final int numberOfAttributes = sae.length;
final String[] argout = new String[3 * numberOfAttributes]; final String[] argout = new String[3 * numberOfAttributes];
...@@ -662,7 +644,7 @@ public class SnapExtractor implements DBExtractionConst { ...@@ -662,7 +644,7 @@ public class SnapExtractor implements DBExtractionConst {
final boolean firstIsRead = currentExtract.getWritable() != AttrWriteType._WRITE; final boolean firstIsRead = currentExtract.getWritable() != AttrWriteType._WRITE;
final String randomName1 = dynamicAttributeNamer.getName(currentExtract, id, firstIsRead); final String randomName1 = dynamicAttributeNamer.getName(currentExtract, id, firstIsRead);
String randomName2 = ObjectUtils.EMPTY_STRING; String randomName2 = "";
if (hasBothReadAndWriteValues) { if (hasBothReadAndWriteValues) {
randomName2 = dynamicAttributeNamer.getName(currentExtract, id, !firstIsRead); randomName2 = dynamicAttributeNamer.getName(currentExtract, id, !firstIsRead);
} }
......
package org.tango.server.snap.manager; package org.tango.server.snap.manager;
import java.util.ArrayList; import fr.esrf.Tango.DevError;
import java.util.Arrays; import fr.esrf.Tango.DevFailed;
import java.util.HashMap; import fr.esrf.Tango.DevVarLongStringArray;
import java.util.List; import fr.esrf.TangoDs.Except;
import java.util.Map; import fr.soleil.archiving.common.api.exception.ArchivingException;
import java.util.Objects; import fr.soleil.archiving.snap.api.manager.ISnapManager;
import java.util.ResourceBundle; import fr.soleil.archiving.snap.api.manager.SnapManagerApi;
import java.util.concurrent.Callable; import fr.soleil.archiving.snap.api.manager.SnapManagerImpl;
import java.util.concurrent.ExecutionException; import fr.soleil.archiving.snap.api.tools.SnapAttributeExtract;
import java.util.concurrent.ExecutorService; import fr.soleil.archiving.snap.api.tools.SnapConst;
import java.util.concurrent.Executors; import fr.soleil.archiving.snap.api.tools.SnapContext;
import java.util.concurrent.Future; import fr.soleil.archiving.snap.api.tools.Snapshot;
import fr.soleil.archiving.snap.api.tools.SnapshotingException;
import fr.soleil.database.connection.DataBaseParameters;
import fr.soleil.tango.clientapi.TangoCommand;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.tango.DeviceState; import org.tango.DeviceState;
...@@ -27,19 +29,18 @@ import org.tango.server.annotation.StateMachine; ...@@ -27,19 +29,18 @@ import org.tango.server.annotation.StateMachine;
import org.tango.server.annotation.Status; import org.tango.server.annotation.Status;
import org.tango.utils.DevFailedUtils; import org.tango.utils.DevFailedUtils;
import fr.esrf.Tango.DevError; import java.util.ArrayList;
import fr.esrf.Tango.DevFailed; import java.util.Arrays;
import fr.esrf.Tango.DevVarLongStringArray; import java.util.HashMap;
import fr.esrf.TangoDs.Except; import java.util.List;
import fr.soleil.archiving.snap.api.manager.ISnapManager; import java.util.Map;
import fr.soleil.archiving.snap.api.manager.SnapManagerApi; import java.util.Objects;
import fr.soleil.archiving.snap.api.manager.SnapManagerImpl; import java.util.ResourceBundle;
import fr.soleil.archiving.snap.api.tools.SnapAttributeExtract; import java.util.concurrent.Callable;
import fr.soleil.archiving.snap.api.tools.SnapConst; import java.util.concurrent.ExecutionException;
import fr.soleil.archiving.snap.api.tools.SnapContext; import java.util.concurrent.ExecutorService;
import fr.soleil.archiving.snap.api.tools.Snapshot; import java.util.concurrent.Executors;
import fr.soleil.archiving.snap.api.tools.SnapshotingException; import java.util.concurrent.Future;
import fr.soleil.tango.clientapi.TangoCommand;
/** /**
* Class Description: This DServer provides the connections points and methods * Class Description: This DServer provides the connections points and methods
...@@ -77,11 +78,12 @@ public class SnapManager { ...@@ -77,11 +78,12 @@ public class SnapManager {
private String dbName; private String dbName;
@DeviceProperty @DeviceProperty
private String dbSchema; private String dbSchema;
@DeviceProperty(name = "maxDbPoolSize", description = "max database connections", defaultValue = "3")
private short maxDbPoolSize = 3;
@State @State
private DeviceState state; private DeviceState state;
@Status @Status
private String status; private String status;
private ISnapManager manager; private ISnapManager manager;
public static void main(final String[] args) { public static void main(final String[] args) {
...@@ -89,6 +91,10 @@ public class SnapManager { ...@@ -89,6 +91,10 @@ public class SnapManager {
ServerManager.getInstance().start(args, SnapManager.class); ServerManager.getInstance().start(args, SnapManager.class);
} }
public void setMaxDbPoolSize(short maxDbPoolSize) {
this.maxDbPoolSize = maxDbPoolSize;
}
public void setDbUser(String dbUser) { public void setDbUser(String dbUser) {
this.dbUser = dbUser; this.dbUser = dbUser;
} }
...@@ -137,10 +143,17 @@ public class SnapManager { ...@@ -137,10 +143,17 @@ public class SnapManager {
public void init() throws DevFailed { public void init() throws DevFailed {
try { try {
// Snap Database connection // Snap Database connection
SnapManagerApi.initSnapConnection(dbHost, dbName, dbSchema, dbUser, dbPassword, "false"); DataBaseParameters parameters = new DataBaseParameters();
parameters.setHost(dbHost);
parameters.setUser(dbUser);
parameters.setSchema(dbSchema);
parameters.setPassword(dbPassword);
parameters.setName(dbName);
parameters.setMaxPoolSize(maxDbPoolSize);
SnapManagerApi.initSnapConnection(parameters);
state = DeviceState.ON; state = DeviceState.ON;
status = "Device is ready"; status = "Device is ready";
} catch (SnapshotingException e) { } catch (ArchivingException e) {
logger.error(e.toString(), e); logger.error(e.toString(), e);
throw e.toTangoException(); throw e.toTangoException();
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment