From e55b35389611a6721f78b016633a598b4c3aa01d Mon Sep 17 00:00:00 2001
From: gwen-soleil <gwenaelle.abeille@gmail.com>
Date: Fri, 6 Jan 2023 11:10:56 +0100
Subject: [PATCH] Fix not supported DevState spectrum (SOLEIL Jira
 TANGOARCH-745)

---
 .../tangowrapping/DeviceAttributeWrapper.java |  4 +-
 .../plugin/PersistencePlugin.java             | 46 ++++---------------
 .../plugin/persistance/AnyAttribute.java      | 10 ++--
 3 files changed, 15 insertions(+), 45 deletions(-)

diff --git a/src/main/java/fr/soleil/actiongroup/collectiveaction/components/tangowrapping/DeviceAttributeWrapper.java b/src/main/java/fr/soleil/actiongroup/collectiveaction/components/tangowrapping/DeviceAttributeWrapper.java
index 9b3fc57..e345b29 100644
--- a/src/main/java/fr/soleil/actiongroup/collectiveaction/components/tangowrapping/DeviceAttributeWrapper.java
+++ b/src/main/java/fr/soleil/actiongroup/collectiveaction/components/tangowrapping/DeviceAttributeWrapper.java
@@ -122,7 +122,7 @@ public class DeviceAttributeWrapper {
         return this.attribute.getQuality();
     }
 
-    public DevState extractState() throws DevFailed {
-        return attribute.extractState();
+    public DevState[] extractDevStateArray() throws DevFailed {
+        return attribute.extractDevStateArray();
     }
 }
diff --git a/src/main/java/fr/soleil/actiongroup/collectiveaction/onattributes/plugin/PersistencePlugin.java b/src/main/java/fr/soleil/actiongroup/collectiveaction/onattributes/plugin/PersistencePlugin.java
index dbefa24..89e53f8 100644
--- a/src/main/java/fr/soleil/actiongroup/collectiveaction/onattributes/plugin/PersistencePlugin.java
+++ b/src/main/java/fr/soleil/actiongroup/collectiveaction/onattributes/plugin/PersistencePlugin.java
@@ -1,27 +1,3 @@
-/*	Synchrotron Soleil 
- *  
- *   File          :  PersistencePluginAction.java
- *  
- *   Project       :  TangoParser
- *  
- *   Description   :  
- *  
- *   Author        :  CLAISSE
- *  
- *   Original      :  25 janv. 07 
- *  
- *   Revision:  					Author:  
- *   Date: 							State:  
- *  
- *   Log: PersistencePluginAction.java,v 
- *
- */
- /*
- * Created on 25 janv. 07
- *
- * To change the template for this generated file go to
- * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
- */
 package fr.soleil.actiongroup.collectiveaction.onattributes.plugin;
 
 import fr.soleil.actiongroup.collectiveaction.components.tangowrapping.DeviceAttributeWrapper;
@@ -32,26 +8,20 @@ import fr.soleil.actiongroup.collectiveaction.onattributes.plugin.persistance.Pe
 
 /**
  * An implementation of IPluginAction where the action consists of:
- * <UL> 
+ * <UL>
  * <LI> extracting the attribute's type and value
  * <LI> storing the attribute
  * </UL>
  * The persistence management is delegated to the chosen IPersistenceManager implementation
- * @author CLAISSE 
+ *
+ * @author CLAISSE
  */
-public class PersistencePlugin implements Plugin
-{
-    public PersistencePlugin ()
-    {
+public class PersistencePlugin implements Plugin {
 
-    }
-    
-    public void execute ( PluginContext context, String deviceName, DeviceAttributeWrapper attribute ) throws Exception 
-    {
-        AnyAttribute anyAttribute = new AnyAttribute ( deviceName , attribute );
-        
-        PersistenceContext persistenceContext = context.getPersistenceContext ();
+    public void execute(PluginContext context, String deviceName, DeviceAttributeWrapper attribute) throws Exception {
+        AnyAttribute anyAttribute = new AnyAttribute(deviceName, attribute);
+        PersistenceContext persistenceContext = context.getPersistenceContext();
         PersistenceManager manager = persistenceContext.getManager();
-        manager.store ( anyAttribute , persistenceContext );
+        manager.store(anyAttribute, persistenceContext);
     }
 }
diff --git a/src/main/java/fr/soleil/actiongroup/collectiveaction/onattributes/plugin/persistance/AnyAttribute.java b/src/main/java/fr/soleil/actiongroup/collectiveaction/onattributes/plugin/persistance/AnyAttribute.java
index 240cc8d..aae5838 100644
--- a/src/main/java/fr/soleil/actiongroup/collectiveaction/onattributes/plugin/persistance/AnyAttribute.java
+++ b/src/main/java/fr/soleil/actiongroup/collectiveaction/onattributes/plugin/persistance/AnyAttribute.java
@@ -111,7 +111,7 @@ public class AnyAttribute {
     /**
      * The attribute's State value
      */
-    private DevState rawValueState;
+    private DevState[] rawValueState;
 
     private final int numberOfComponents;
 
@@ -199,8 +199,8 @@ public class AnyAttribute {
             break;
 
         case TangoConst.Tango_DEV_STATE:
-            rawValueState = attribute.extractState();
-            _numberOfComponents = 1;
+            rawValueState = attribute.extractDevStateArray();
+            _numberOfComponents = rawValueState == null ? 0 : rawValueState.length;
             break;
 
         case TangoConst.Tango_DEV_STRING:
@@ -270,8 +270,8 @@ public class AnyAttribute {
                 break;
 
             case TangoConst.Tango_DEV_STATE:
-                convertedNumericValuesTable[i] = rawValueState.value();
-                convertedStringValuesTable[i] = TangoConst.Tango_DevStateName[rawValueState.value()];
+                convertedNumericValuesTable[i] = rawValueState[i].value();
+                convertedStringValuesTable[i] = rawValueState[i].value()+"";
                 break;
 
             case TangoConst.Tango_DEV_STRING:
-- 
GitLab