All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jive3.TaskAttributeNode Maven / Gradle / Ivy

The newest version!
package jive3;

import fr.esrf.Tango.DevVarLongStringArray;
import fr.esrf.TangoApi.*;
import fr.esrf.Tango.DevFailed;

import javax.swing.*;
import java.util.Vector;

import jive.JiveUtils;

public class TaskAttributeNode extends TangoNode {

  private Database db;
  private String   devName;
  private Vector   attInfo;

  class AttInfo {
    String name;
    String min_alarm;
    String max_alarm;
    String min_warning;
    String max_warning;
    String delta_t;
    String delta_val;
    String unit;
    String display_unit;
    String standard_unit;
    String min;
    String max;
    String format;
    String label;
    String descr;
  }

  TaskAttributeNode(Database db, String devName) {
    this.db = db;
    this.devName = devName;
    attInfo = null;
  }

  void populateNode() throws DevFailed {
  }

  void execAction(int number,boolean multipleCall) {
  }

  ImageIcon getIcon() {
    return TangoNodeRenderer.atticon;
  }

  public String toString() {
    return "Attribute config";
  }

  String getTitle() {
    return "Attribute configuration";
  }

  String getName() {
    return devName;
  }

  public boolean isLeaf() {
    return true;
  }

  int getAttributeNumber() {
    if(attInfo==null) browseAttributeInfo();
    return attInfo.size();
  }

  String getAttName(int idx) {
    if(attInfo==null) browseAttributeInfo();
    return ((TaskAttributeNode.AttInfo)attInfo.get(idx)).name;
  }

  // -- Alarms ----------------------------------------------------

  String getMinAlarm(int idx) {
    if(attInfo==null) browseAttributeInfo();
    return ((TaskAttributeNode.AttInfo)attInfo.get(idx)).min_alarm;
  }

  String getMaxAlarm(int idx) {
    if(attInfo==null) browseAttributeInfo();
    return ((TaskAttributeNode.AttInfo)attInfo.get(idx)).max_alarm;
  }

  String getMinWarning(int idx) {
    if(attInfo==null) browseAttributeInfo();
    return ((TaskAttributeNode.AttInfo)attInfo.get(idx)).min_warning;
  }

  String getMaxWarning(int idx) {
    if(attInfo==null) browseAttributeInfo();
    return ((TaskAttributeNode.AttInfo)attInfo.get(idx)).max_warning;
  }

  String getDeltaT(int idx) {
    if(attInfo==null) browseAttributeInfo();
    return ((TaskAttributeNode.AttInfo)attInfo.get(idx)).delta_t;
  }

  String getDeltaVal(int idx) {
    if(attInfo==null) browseAttributeInfo();
    return ((TaskAttributeNode.AttInfo)attInfo.get(idx)).delta_val;
  }

  void setMinAlarm(int idx,String value) {

    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      if(ai.alarms!=null)
        ai.alarms.min_alarm = value;
      else
        ai.min_alarm = value;
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void setMaxAlarm(int idx,String value) {

    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      if(ai.alarms!=null)
        ai.alarms.max_alarm = value;
      else
        ai.max_alarm = value;
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void setMinWarning(int idx,String value) {

    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      if(ai.alarms!=null)
        ai.alarms.min_warning = value;
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void setMaxWarning(int idx,String value) {

    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      if(ai.alarms!=null)
        ai.alarms.max_warning = value;
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void setDeltaT(int idx,String value) {

    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      if(ai.alarms!=null)
        ai.alarms.delta_t = value;
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void setDeltaVal(int idx,String value) {

    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      if(ai.alarms!=null)
        ai.alarms.delta_val = value;
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void resetAlarms(int idx) {

    try {

      // Clear database
      String[] pNames = {"min_alarm","max_alarm","min_warning","max_warning","delta_t","delta_val"};
      db.delete_device_attribute_property(devName,getAttName(idx),pNames);

    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void resetLAlarms(int idx) {

    // Restore library defaults (Tango8)
    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      if(ai.alarms!=null) {
        ai.alarms.min_alarm = "Not specified";
        ai.alarms.max_alarm = "Not specified";
        ai.alarms.min_warning = "Not specified";
        ai.alarms.max_warning = "Not specified";
        ai.alarms.delta_t = "Not specified";
        ai.alarms.delta_val = "Not specified";
      }
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void resetULAlarms(int idx) {

    // Restore user/library defaults (Tango8)
    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      if(ai.alarms!=null) {
        ai.alarms.min_alarm = "";
        ai.alarms.max_alarm = "";
        ai.alarms.min_warning = "";
        ai.alarms.max_warning = "";
        ai.alarms.delta_t = "";
        ai.alarms.delta_val = "";
      }
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void resetCULAlarms(int idx) {

    // Restore class/user/library defaults (Tango8)
    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      if(ai.alarms!=null) {
        ai.alarms.min_alarm = "NaN";
        ai.alarms.max_alarm = "NaN";
        ai.alarms.min_warning = "NaN";
        ai.alarms.max_warning = "NaN";
        ai.alarms.delta_t = "NaN";
        ai.alarms.delta_val = "NaN";
      }
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  // -- Units ----------------------------------------------------

  String getUnit(int idx) {
    if(attInfo==null) browseAttributeInfo();
    return ((TaskAttributeNode.AttInfo)attInfo.get(idx)).unit;
  }

  String getDisplayUnit(int idx) {
    if(attInfo==null) browseAttributeInfo();
    return ((TaskAttributeNode.AttInfo)attInfo.get(idx)).display_unit;
  }

  String getStandardUnit(int idx) {
    if(attInfo==null) browseAttributeInfo();
    return ((TaskAttributeNode.AttInfo)attInfo.get(idx)).standard_unit;
  }

  void setUnit(int idx,String value) {

    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      ai.unit = value;
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void setDisplayUnit(int idx,String value) {

    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      ai.display_unit = value;
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void setStandardUnit(int idx,String value) {

    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      ai.standard_unit = value;
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void resetUnit(int idx) {

    try {

      // Clear database
      String[] pNames = {"unit","display_unit","standard_unit"};
      db.delete_device_attribute_property(devName,getAttName(idx),pNames);

    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void resetLUnit(int idx) {

    // Restore library defaults (Tango8)
    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      ai.unit = "Not specified";
      ai.display_unit = "Not specified";
      ai.standard_unit = "Not specified";
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void resetULUnit(int idx) {

    // Restore user/library defaults (Tango8)
    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      ai.unit = "";
      ai.display_unit = "";
      ai.standard_unit = "";
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void resetCULUnit(int idx) {

    // Restore class/user/library defaults (Tango8)
    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      ai.unit = "NaN";
      ai.display_unit = "NaN";
      ai.standard_unit = "NaN";
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  // -- Range ----------------------------------------------------

  String getMin(int idx) {
    if(attInfo==null) browseAttributeInfo();
    return ((TaskAttributeNode.AttInfo)attInfo.get(idx)).min;
  }

  String getMax(int idx) {
    if(attInfo==null) browseAttributeInfo();
    return ((TaskAttributeNode.AttInfo)attInfo.get(idx)).max;
  }

  void setMin(int idx,String value) {

    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      ai.min_value = value;
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void setMax(int idx,String value) {

    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      ai.max_value = value;
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void resetRange(int idx) {

    try {

      // Clear database
      String[] pNames = {"min_value","max_value"};
      db.delete_device_attribute_property(devName,getAttName(idx),pNames);

    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void resetLRange(int idx) {

    // Restore library defaults (Tango8)
    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      ai.min_value = "Not specified";
      ai.max_value = "Not specified";
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void resetULRange(int idx) {

    // Restore user/library defaults (Tango8)
    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      ai.min_value = "";
      ai.max_value = "";
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void resetCULRange(int idx) {

    // Restore class/user/library defaults (Tango8)
    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      ai.min_value = "NaN";
      ai.max_value = "NaN";
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  // -- Display ----------------------------------------------------

  String getLabel(int idx) {
    if(attInfo==null) browseAttributeInfo();
    return ((TaskAttributeNode.AttInfo)attInfo.get(idx)).label;
  }

  String getFormat(int idx) {
    if(attInfo==null) browseAttributeInfo();
    return ((TaskAttributeNode.AttInfo)attInfo.get(idx)).format;
  }

  void setLabel(int idx,String value) {

    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      ai.label = value;
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void setFormat(int idx,String value) {

    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      ai.format = value;
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void resetDisplay(int idx) {

    try {

      // Clear database
      String[] pNames = {"label","format"};
      db.delete_device_attribute_property(devName,getAttName(idx),pNames);

    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void resetLDisplay(int idx) {

    // Restore library defaults (Tango8)
    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      ai.label = "Not specified";
      ai.format = "Not specified";
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void resetULDisplay(int idx) {

    // Restore user/library defaults (Tango8)
    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      ai.label = "";
      ai.format = "";
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void resetCULDisplay(int idx) {

    // Restore class/user/library defaults (Tango8)
    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      ai.label = "NaN";
      ai.format = "NaN";
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  // -- Description -------------------------------------------------------------

  String getDescription(int idx) {
    if(attInfo==null) browseAttributeInfo();
    return ((TaskAttributeNode.AttInfo)attInfo.get(idx)).descr;
  }

  void setDescription(int idx,String value) {

    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      ai.description = value;
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void resetDescription(int idx) {

    try {

      // Clear database
      String[] pNames = {"description"};
      db.delete_device_attribute_property(devName,getAttName(idx),pNames);

    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void resetLDescription(int idx) {

    // Restore library defaults (Tango8)
    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      ai.description = "Not specified";
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void resetULDescription(int idx) {

    // Restore user/library defaults (Tango8)
    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      ai.description = "";
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  void resetCULDescription(int idx) {

    // Restore class/user/library defaults (Tango8)
    try {
      DeviceProxy ds = new DeviceProxy(devName);
      AttributeInfoEx ai = ds.get_attribute_info_ex(getAttName(idx));
      ai.description = "";
      ds.set_attribute_info(new AttributeInfoEx[]{ai});
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  // -- Alias ----------------------------------------------------------------

  void setAlias(int idx,String value) {

    try {
      String fullAttName = devName + "/" + getAttName(idx);
      if( value.equalsIgnoreCase("none") || value.length()==0 ) {
        String currentAlias = db.get_alias_from_attribute(fullAttName);
        db.delete_attribute_alias(currentAlias);
      } else {
        db.put_attribute_alias(fullAttName,value);
      }
    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  String getAlias(int idx) {

    try {
      String fullAttName = devName + "/" + getAttName(idx);
      return db.get_alias_from_attribute(fullAttName);
    } catch (DevFailed e) {
    }

    return "None";

  }


  // -- Browsing -------------------------------------------------------------

  void browseAttributeInfo() {

    try {

      DeviceProxy ds = new DeviceProxy(devName);
      attInfo = new Vector();
      String[] attList = ds.get_attribute_list();
      JiveUtils.sortList(attList);
      for (int i = 0; i < attList.length; i++) {
        AttributeInfoEx ai = ds.get_attribute_info_ex(attList[i]);
        TaskAttributeNode.AttInfo ei = new TaskAttributeNode.AttInfo();
        ei.name = attList[i];
        if (ai.alarms != null) {
          ei.min_alarm = reformat(ai.alarms.min_alarm);
          ei.max_alarm = reformat(ai.alarms.max_alarm);
          ei.min_warning = reformat(ai.alarms.min_warning);
          ei.max_warning = reformat(ai.alarms.max_warning);
          ei.delta_t = reformat(ai.alarms.delta_t);
          ei.delta_val = reformat(ai.alarms.delta_val);
        } else {
          ei.min_alarm = reformat(ai.min_alarm);
          ei.max_alarm = reformat(ai.max_alarm);
          ei.min_warning = "None";
          ei.max_warning = "None";
          ei.delta_t = "None";
          ei.delta_val = "None";
        }
        ei.unit = reformat(ai.unit);
        ei.display_unit = reformat(ai.display_unit);
        ei.standard_unit = reformat(ai.standard_unit);
        ei.min = reformat(ai.min_value);
        ei.max = reformat(ai.max_value);
        ei.format = reformat(ai.format);
        ei.label = reformat(ai.label);
        ei.descr = reformat(ai.description);
        attInfo.add(ei);
      }

    } catch (DevFailed e) {
      JiveUtils.showTangoError(e);
    }

  }

  public boolean isTango8() {

    try {

      DbDevImportInfo info = db.import_device(devName);
      DeviceProxy ds = new DeviceProxy("dserver/" + info.server);
      CommandInfo[] cmds = ds.command_list_query();
      // Search "ZmqEventSubscriptionChange"
      boolean found = false;
      int i=0;
      while(!found && i




© 2015 - 2025 Weber Informatics LLC | Privacy Policy