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

jive3.MultipleTestDeviceDlg Maven / Gradle / Ivy

The newest version!
package jive3;

import fr.esrf.Tango.*;
import fr.esrf.TangoApi.*;
import fr.esrf.tangoatk.widget.util.ATKConstant;
import jive.ArgParser;
import jive.JiveUtils;
import jive.MultiLineCellEditor;
import jive.MultiLineCellRenderer;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Vector;

import static fr.esrf.TangoDs.TangoConst.*;

public class MultipleTestDeviceDlg extends JFrame implements ActionListener {

  class DItem {
    String devName;
    String className;
    String value;
    long   time;
  };

  class AItem {
    String name;
    int type;
    AttrDataFormat format;
    String[] enum_labels;
    boolean writeable;
    int count;
    public String toString() {
      return name + " ("+ format.toString() + " " + Tango_CmdArgTypeName[type] + " " + (writeable?"RW":"RO") + ")";
    }
  };

  class CItem {
    String name;
    int in_type;
    int out_type;
    int count;
    public String toString() {
      return name + " (" + Tango_CmdArgTypeName[in_type] +"," + Tango_CmdArgTypeName[out_type] + ")";
    }
  };

  Database db;
  String colName[] = {"Name", "Class", "Value", "Time (ms)"};
  private MultiLineCellEditor editor;
  JTextField selectionText;
  JLabel selectionLabel;
  JButton searchButton;
  JButton dismissButton;
  JLabel infoLabel;
  DefaultTableModel dm;
  JTable theTable;
  JCheckBox showValue;
  JCheckBox ignoreUnexported;
  JButton removeButton;
  JList attList;
  JTextField attValueText;
  JButton writeAttBtn;
  JButton readAttBtn;
  JButton saveAttListBtn;
  JList cmdList;
  JTextField cmdValueText;
  JButton execCmdBtn;

  ArrayList items;
  ArrayList attItems;
  ArrayList cmdItems;

  public MultipleTestDeviceDlg() {
    this.db = null;
    initComponents();
  }

  void initComponents() {

    getContentPane().setLayout(new BorderLayout());

    // Search line
    JPanel innerPanel = new JPanel();
    innerPanel.setLayout(new GridBagLayout());
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.weightx = 0;
    gbc.fill = GridBagConstraints.VERTICAL;
    JLabel selectionLabel = new JLabel(" Selection ");
    selectionLabel.setFont(ATKConstant.labelFont);
    innerPanel.add(selectionLabel, gbc);

    gbc.gridx = 1;
    gbc.gridy = 0;
    gbc.weightx = 1;
    gbc.fill = GridBagConstraints.BOTH;
    selectionText = new JTextField();
    selectionText.addActionListener(this);
    selectionText.setFont(ATKConstant.labelFont);
    innerPanel.add(selectionText, gbc);

    gbc.gridx = 2;
    gbc.gridy = 0;
    gbc.weightx = 0;
    gbc.fill = GridBagConstraints.VERTICAL;
    searchButton = new JButton("Search");
    searchButton.addActionListener(this);
    innerPanel.add(searchButton, gbc);

    // Bottom panel
    JPanel bottomPanel = new JPanel();
    bottomPanel.setLayout(new BorderLayout());

    JTabbedPane tabPane = new JTabbedPane();

    // Attribute Panel
    JPanel attributePanel = new JPanel();
    attributePanel.setLayout(new BorderLayout());
    attributePanel.setBorder(BorderFactory.createEtchedBorder());

    JPanel valuePanel = new JPanel();
    valuePanel.setLayout(new GridBagLayout());
    gbc.gridx = GridBagConstraints.RELATIVE;
    gbc.gridy = 0;
    gbc.fill = GridBagConstraints.BOTH;
    gbc.weightx = 0;

    JLabel arginLabel = new JLabel("Argin ");
    valuePanel.add(arginLabel,gbc);
    gbc.weightx = 1.0;
    attValueText = new JTextField();
    attValueText.setEditable(true);
    valuePanel.add(attValueText,gbc);

    gbc.weightx = 0.0;
    readAttBtn = new JButton("Read");
    readAttBtn.addActionListener(this);
    valuePanel.add(readAttBtn,gbc);
    writeAttBtn = new JButton("Write");
    writeAttBtn.addActionListener(this);
    valuePanel.add(writeAttBtn,gbc);
    saveAttListBtn = new JButton("Save list");
    saveAttListBtn.addActionListener(this);
    valuePanel.add(saveAttListBtn,gbc);

    attributePanel.add(valuePanel,BorderLayout.NORTH);

    attList = new JList();
    JScrollPane attListScrool = new JScrollPane(attList);
    attributePanel.add(attListScrool,BorderLayout.CENTER);

    tabPane.add(attributePanel,"Attribute");

    // Command Panel
    JPanel commandPanel = new JPanel();
    commandPanel.setLayout(new BorderLayout());
    commandPanel.setBorder(BorderFactory.createEtchedBorder());

    JPanel cmdValuePanel = new JPanel();
    cmdValuePanel.setLayout(new GridBagLayout());
    gbc.gridx = GridBagConstraints.RELATIVE;
    gbc.gridy = 0;
    gbc.fill = GridBagConstraints.BOTH;
    gbc.weightx = 0;

    JLabel cmdArginLabel = new JLabel("Argin ");
    cmdValuePanel.add(cmdArginLabel,gbc);
    gbc.weightx = 1.0;
    cmdValueText = new JTextField();
    cmdValueText.setEditable(true);
    cmdValuePanel.add(cmdValueText,gbc);

    gbc.weightx = 0.0;
    execCmdBtn = new JButton("Execute");
    execCmdBtn.addActionListener(this);
    cmdValuePanel.add(execCmdBtn,gbc);

    commandPanel.add(cmdValuePanel,BorderLayout.NORTH);

    cmdList = new JList();
    JScrollPane cmdListScrool = new JScrollPane(cmdList);
    commandPanel.add(cmdListScrool,BorderLayout.CENTER);

    tabPane.add(commandPanel,"Command");


    // Bottom Panel

    JPanel bottomBtnPanel = new JPanel();
    bottomBtnPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
    infoLabel = new JLabel("0 item(s)");
    infoLabel.setFont(ATKConstant.labelFont);
    bottomBtnPanel.add(infoLabel);

    dismissButton = new JButton("Dismiss");
    dismissButton.addActionListener(this);
    bottomBtnPanel.add(dismissButton);

    bottomPanel.add(tabPane,BorderLayout.CENTER);
    bottomPanel.add(bottomBtnPanel,BorderLayout.SOUTH);

    getContentPane().add(innerPanel, BorderLayout.NORTH);
    getContentPane().add(bottomPanel, BorderLayout.SOUTH);

    // Table model
    dm = new DefaultTableModel() {

      public Class getColumnClass(int columnIndex) {
        return String.class;
      }

      public boolean isCellEditable(int row, int column) {
        return false;
      }

      public void setValueAt(Object aValue, int row, int column) {
      }

    };

    JPanel tablePanel = new JPanel();
    tablePanel.setLayout(new BorderLayout());

    theTable = new JTable(dm);
    editor = new MultiLineCellEditor(theTable);
    theTable.setDefaultEditor(String.class, editor);
    MultiLineCellRenderer renderer = new MultiLineCellRenderer(false, true, false);
    theTable.setDefaultRenderer(String.class, renderer);
    theTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
    JScrollPane textView = new JScrollPane(theTable);

    tablePanel.add(textView,BorderLayout.CENTER);

    JPanel tableButtonPanel = new JPanel();
    tableButtonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));

    ignoreUnexported = new JCheckBox("Ignore unexported");
    ignoreUnexported.setSelected(false);
    ignoreUnexported.addActionListener(this);
    showValue = new JCheckBox("Show value");
    showValue.setSelected(true);
    showValue.addActionListener(this);
    tableButtonPanel.add(ignoreUnexported);
    tableButtonPanel.add(showValue);
    removeButton = new JButton("Remove items");
    removeButton.addActionListener(this);
    tableButtonPanel.add(removeButton);


    tablePanel.add(tableButtonPanel, BorderLayout.SOUTH);

    getContentPane().add(tablePanel, BorderLayout.CENTER);

    setTitle("Multiple device selection");
    setPreferredSize(new Dimension(800, 600));

    addWindowListener(new WindowAdapter() {
      @Override
      public void windowClosing(WindowEvent e) {
        exitDlg();
        super.windowClosing(e);
      }
    });

    items = new ArrayList();
    attItems = new ArrayList();
    cmdItems = new ArrayList();
    clear();

  }

  private void exitDlg() {


  }

  public void clear() {
    items.clear();
    infoLabel.setText(items.size() + " item(s)");
    String[][] prop = new String[0][2];
    dm.setDataVector(prop, colName);
    editor.updateRows();
    theTable.getColumnModel().getColumn(1).setPreferredWidth(250);
    theTable.validate();
    ((JPanel) getContentPane()).revalidate();
  }

  public void setDatabase(Database db) {
    this.db = db;
  }

  private void selectDevice() {
    refresh();
  }

  private void refresh() {

    String selectText = selectionText.getText().trim();

    String[] fields = selectText.split("/");

    if (fields.length != 3 && fields.length != 4) {
      JiveUtils.showJiveError("Invalid selection pattern, 3 or 4 slash separated fields expected");
      return;
    }

    try {

      items.clear();
      String request;

      // Select devices
      String exportedClause = ignoreUnexported.isSelected()?" and exported=1":"";

      if (fields.length == 3) {

        fields[0] = fields[0].replace('*', '%');
        fields[1] = fields[1].replace('*', '%');
        fields[2] = fields[2].replace('*', '%');

        request = "select name,class from device where domain like '" + fields[0] + "' and family like '" +
                fields[1] + "' and member like '" + fields[2] + "'" + exportedClause;

      } else {

        fields[0] = fields[0].replace('*', '%');
        fields[1] = fields[1].replace('*', '%');
        fields[2] = fields[2].replace('*', '%');
        fields[3] = fields[3].replace('*', '%');

        request = "select name,class from device where domain like '" + fields[0] + "' and family like '" +
                fields[1] + "' and member like '" + fields[2] + "' and class like '" + fields[3] + "'" + exportedClause;

      }

      DeviceData argin = new DeviceData();
      argin.insert(request);
      DeviceData argout = db.command_inout("DbMySqlSelect", argin);

      DevVarLongStringArray arg = argout.extractLongStringArray();

      items.clear();
      for (int i = 0; i < arg.svalue.length; i += 2) {

        DItem pi = new DItem();
        pi.devName = arg.svalue[i];
        pi.className = arg.svalue[i + 1];
        pi.value = "";
        items.add(pi);

      }

      if (items.size() == 0)
        JOptionPane.showMessageDialog(this, "No device found");

      infoLabel.setText(items.size() + " item(s)");

      refreshCommandAndAttribute();
      refreshTable();

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

  }

  private void refreshCommandAndAttribute() {

    Vector errStr = new Vector();
    attItems.clear();
    cmdItems.clear();

    for(int i=0;i0) {
      JiveUtils.showJiveErrors(errStr);
    }

    // Remove non common item
    for (int i = 0; i < attItems.size(); ) {
      if (attItems.get(i).count != items.size())
        attItems.remove(i);
      else
        i++;
    }

    for (int i = 0; i < cmdItems.size(); ) {
      if (cmdItems.get(i).count != items.size())
        cmdItems.remove(i);
      else
        i++;
    }

    // Populate list
    DefaultListModel ml = new DefaultListModel();
    for (int i = 0; i < attItems.size(); i++)
      ml.add(i, attItems.get(i));
    attList.setModel(ml);

    ml = new DefaultListModel();
    for (int i = 0; i < cmdItems.size(); i++)
      ml.add(i, cmdItems.get(i));
    cmdList.setModel(ml);

  }

  private void addAttribute(AttributeInfoEx e) {

    boolean found = false;
    int i = 0;
    while( !found && i=0) {
        AItem ai = attItems.get(attId);
        for(int i=0;i=0) {
        AItem ai = attItems.get(attId);
        try {
          writeAtts(ai);
        } catch (NumberFormatException e) {
          JiveUtils.showJiveError(e.getMessage());
        }

      }

    } else if(src==saveAttListBtn) {

      int attId = attList.getSelectedIndex();
      if(attId>=0) {
        AItem ai = attItems.get(attId);
        try {
          saveAttList(ai);
        } catch (NumberFormatException e) {
          JiveUtils.showJiveError(e.getMessage());
        }

      }

    } else if(src==execCmdBtn) {

      int cmdId = cmdList.getSelectedIndex();
      if(cmdId>=0) {
        CItem ci = cmdItems.get(cmdId);
        try {
          execCommand(ci);
        } catch (NumberFormatException e) {
          JiveUtils.showJiveError(e.getMessage());
        }

      }

    } else if(src==removeButton) {

      int[] sel = theTable.getSelectedRows();
      for(int i=sel.length-1;i>=0;i--) {
        items.remove(sel[i]);
      }
      refreshCommandAndAttribute();
      refreshTable();

    } else if(src==showValue) {

      refreshTable();

    }

  }

  private void saveAttList(AItem att) throws NumberFormatException {

    File file = TreePanel.getSaveFile(null);
    if (file != null) {

      try {

        FileWriter attFile = new FileWriter(file.getAbsolutePath());
        for (DItem item : items) {
          String attName = item.devName + "/" + att.name;
          attFile.write(attName + "\n");
        }
        attFile.close();

      } catch (IOException e) {
        JiveUtils.showJiveError(e.getMessage());
      }
    }

  }

  private void writeAtts(AItem att) throws NumberFormatException {

    DeviceAttribute send = new DeviceAttribute(att.name);
    ArgParser arg = new ArgParser(attValueText.getText());

    if (items.size() > 1) {
      Vector propChange = new Vector();
      propChange.add(att.name);
      propChange.add(attValueText.getText());
      if (!MultiChangeConfirmDlg.confirmChange(propChange, items.size(),"", "Attribute")) {
        return;
      }
    }

    switch (att.type) {

      case Tango_DEV_STATE:
        switch (att.format.value()) {
          case AttrDataFormat._SCALAR:
            send.insert(arg.parse_state());
            break;
          case AttrDataFormat._SPECTRUM:
            send.insert(arg.parse_state_array());
            break;
          case AttrDataFormat._IMAGE:
            send.insert(arg.parse_state_image(),arg.get_image_width(),arg.get_image_height());
            break;
        }
        break;

      case Tango_DEV_UCHAR:
        switch (att.format.value()) {
          case AttrDataFormat._SCALAR:
            send.insert_uc(arg.parse_uchar());
            break;
          case AttrDataFormat._SPECTRUM:
            send.insert_uc(arg.parse_uchar_array());
            break;
          case AttrDataFormat._IMAGE:
            send.insert_uc(arg.parse_uchar_image(),arg.get_image_width(),arg.get_image_height());
            break;
        }
        break;

      case Tango_DEV_BOOLEAN:
        switch (att.format.value()) {
          case AttrDataFormat._SCALAR:
            send.insert(arg.parse_boolean());
            break;
          case AttrDataFormat._SPECTRUM:
            send.insert(arg.parse_boolean_array());
            break;
          case AttrDataFormat._IMAGE:
            send.insert(arg.parse_boolean_image(),arg.get_image_width(),arg.get_image_height());
            break;
        }
        break;

      case Tango_DEV_SHORT:
        switch (att.format.value()) {
          case AttrDataFormat._SCALAR:
            send.insert(arg.parse_short());
            break;
          case AttrDataFormat._SPECTRUM:
            send.insert(arg.parse_short_array());
            break;
          case AttrDataFormat._IMAGE:
            send.insert(arg.parse_short_image(),arg.get_image_width(),arg.get_image_height());
            break;
        }
        break;

      case Tango_DEV_USHORT:
        switch (att.format.value()) {
          case AttrDataFormat._SCALAR:
            send.insert_us(arg.parse_ushort());
            break;
          case AttrDataFormat._SPECTRUM:
            send.insert_us(arg.parse_ushort_array());
            break;
          case AttrDataFormat._IMAGE:
            send.insert_us(arg.parse_ushort_image(),arg.get_image_width(),arg.get_image_height());
            break;
        }
        break;

      case Tango_DEV_LONG:
        switch (att.format.value()) {
          case AttrDataFormat._SCALAR:
            send.insert(arg.parse_long());
            break;
          case AttrDataFormat._SPECTRUM:
            send.insert(arg.parse_long_array());
            break;
          case AttrDataFormat._IMAGE:
            send.insert(arg.parse_long_image(),arg.get_image_width(),arg.get_image_height());
            break;
        }
        break;

      case Tango_DEV_ULONG:
        switch (att.format.value()) {
          case AttrDataFormat._SCALAR:
            send.insert_ul(arg.parse_ulong());
            break;
          case AttrDataFormat._SPECTRUM:
            send.insert_ul(arg.parse_ulong_array());
            break;
          case AttrDataFormat._IMAGE:
            send.insert_ul(arg.parse_ulong_image(),arg.get_image_width(),arg.get_image_height());
            break;
        }
        break;

      case Tango_DEV_LONG64:
        switch (att.format.value()) {
          case AttrDataFormat._SCALAR:
            send.insert(arg.parse_long64());
            break;
          case AttrDataFormat._SPECTRUM:
            send.insert(arg.parse_long64_array());
            break;
          case AttrDataFormat._IMAGE:
            send.insert(arg.parse_long64_image(),arg.get_image_width(),arg.get_image_height());
            break;
        }
        break;

      case Tango_DEV_ULONG64:
        switch (att.format.value()) {
          case AttrDataFormat._SCALAR:
            send.insert_u64(arg.parse_long64());
            break;
          case AttrDataFormat._SPECTRUM:
            send.insert_u64(arg.parse_long64_array());
            break;
          case AttrDataFormat._IMAGE:
            send.insert_u64(arg.parse_long64_image(),arg.get_image_width(),arg.get_image_height());
            break;
        }
        break;

      case Tango_DEV_FLOAT:
        switch (att.format.value()) {
          case AttrDataFormat._SCALAR:
            send.insert(arg.parse_float());
            break;
          case AttrDataFormat._SPECTRUM:
            send.insert(arg.parse_float_array());
            break;
          case AttrDataFormat._IMAGE:
            send.insert(arg.parse_float_image(),arg.get_image_width(),arg.get_image_height());
            break;
        }
        break;

      case Tango_DEV_DOUBLE:
        switch (att.format.value()) {
          case AttrDataFormat._SCALAR:
            send.insert(arg.parse_double());
            break;
          case AttrDataFormat._SPECTRUM:
            send.insert(arg.parse_double_array());
            break;
          case AttrDataFormat._IMAGE:
            send.insert(arg.parse_double_image(),arg.get_image_width(),arg.get_image_height());
            break;
        }
        break;

      case Tango_DEV_STRING:
        switch (att.format.value()) {
          case AttrDataFormat._SCALAR:
            send.insert(arg.parse_string());
            break;
          case AttrDataFormat._SPECTRUM:
            send.insert(arg.parse_string_array());
            break;
          case AttrDataFormat._IMAGE:
            send.insert(arg.parse_string_image(),arg.get_image_width(),arg.get_image_height());
            break;
        }
        break;

      case Tango_DEV_ENUM:

        // Convert string to short array
        switch (att.format.value())
        {
          case AttrDataFormat._SCALAR: {
            String in = arg.parse_string();
            short idx = (short) JiveUtils.isInsideArray(in, att.enum_labels);
            if (idx < 0)
              throw new NumberFormatException("\"" + in + "\" not known in enum\nPossible values are:\n"+
                      JiveUtils.stringArrayToString(att.enum_labels));
            send.insert(idx);
          }
          break;
          case AttrDataFormat._SPECTRUM:
          {
            String[] in = arg.parse_string_array();
            short[] idx = new short[in.length];
            for (int i = 0; i < in.length; i++) {
              idx[i] = (short) JiveUtils.isInsideArray(in[i], att.enum_labels);
              if (idx[i] < 0)
                throw new NumberFormatException("\"" + in[i] + "\" not known in enum\nPossible values are:\n"+
                        JiveUtils.stringArrayToString(att.enum_labels));
            }
            send.insert(idx);
          }
          break;
          case AttrDataFormat._IMAGE:
          {
            String[] in = arg.parse_string_image();
            int width = arg.get_image_width();
            int height = arg.get_image_height();
            short[] idx = new short[in.length];
            for (int i = 0; i < in.length; i++) {
              idx[i] = (short) JiveUtils.isInsideArray(in[i], att.enum_labels);
              if (idx[i] < 0)
                throw new NumberFormatException("\"" + in[i] + "\" not known in enum\nPossible values are:\n"+
                        JiveUtils.stringArrayToString(att.enum_labels));
            }
            send.insert(idx, width, height);
          }
          break;
        }
        break;

      default:
        throw new NumberFormatException("Attribute type not supported code=" + att.type);

    }

    Vector errList = new Vector();

    for(int i=0;i0) {
      JiveUtils.showJiveErrors(errList);
    }

  }

  private void readAtt(DItem di, AItem att) {


    StringBuffer ret_string = new StringBuffer();
    long t0 = System.currentTimeMillis();

    try {

      DeviceProxy ds = new DeviceProxy(di.devName);
      t0 = System.currentTimeMillis();
      DeviceAttribute data = ds.read_attribute(att.name);
      long t1 = System.currentTimeMillis();

      // Add the quality information
      if( data.getQuality().value() == AttrQuality._ATTR_INVALID ) {
        di.value = "INVALID";
        di.time = (t1-t0);
        return;
      }

      int nbRead = data.getNbRead();

      switch (att.type) {

        case Tango_DEV_STATE:
        {
          DevState[] dummy = data.extractDevStateArray();
          for (int i = 0; i < nbRead; i++) {
            ret_string.append(Tango_DevStateName[dummy[i].value()]);
            if(i 1) {
      Vector propChange = new Vector();
      propChange.add(ci.name);
      if(arg==null) {
        propChange.add("None");
      } else {
        propChange.add(cmdValueText.getText());
      }
      if (!MultiChangeConfirmDlg.confirmChange(propChange, items.size(),"", "Command")) {
        return;
      }
    }

    if(send!=null) {

      switch (ci.in_type) {
        case Tango_DEV_BOOLEAN:
          send.insert(arg.parse_boolean());
          break;
        case Tango_DEV_USHORT:
          send.insert_us(arg.parse_ushort());
          break;
        case Tango_DEV_SHORT:
          send.insert(arg.parse_short());
          break;
        case Tango_DEV_ULONG:
          send.insert_ul(arg.parse_ulong());
          break;
        case Tango_DEV_LONG:
          send.insert(arg.parse_long());
          break;
        case Tango_DEV_LONG64:
          send.insert(arg.parse_long64());
          break;
        case Tango_DEV_ULONG64:
          send.insert_u64(arg.parse_long64());
          break;
        case Tango_DEV_FLOAT:
          send.insert(arg.parse_float());
          break;
        case Tango_DEV_DOUBLE:
          send.insert(arg.parse_double());
          break;
        case Tango_DEV_STRING:
          send.insert(arg.parse_string());
          break;
        case Tango_DEVVAR_CHARARRAY:
          send.insert(arg.parse_char_array());
          break;
        case Tango_DEVVAR_USHORTARRAY:
          send.insert_us(arg.parse_ushort_array());
          break;
        case Tango_DEVVAR_SHORTARRAY:
          send.insert(arg.parse_short_array());
          break;
        case Tango_DEVVAR_ULONGARRAY:
          send.insert_ul(arg.parse_ulong_array());
          break;
        case Tango_DEVVAR_LONGARRAY:
          send.insert(arg.parse_long_array());
          break;
        case Tango_DEVVAR_LONG64ARRAY:
          send.insert(arg.parse_long64_array());
          break;
        case Tango_DEVVAR_ULONG64ARRAY:
          send.insert_u64(arg.parse_long64_array());
          break;
        case Tango_DEVVAR_FLOATARRAY:
          send.insert(arg.parse_float_array());
          break;
        case Tango_DEVVAR_DOUBLEARRAY:
          send.insert(arg.parse_double_array());
          break;
        case Tango_DEVVAR_STRINGARRAY:
          send.insert(arg.parse_string_array());
          break;
        case Tango_DEVVAR_LONGSTRINGARRAY:
          send.insert(new DevVarLongStringArray(arg.parse_long_array(), arg.parse_string_array()));
          break;
        case Tango_DEVVAR_DOUBLESTRINGARRAY:
          send.insert(new DevVarDoubleStringArray(arg.parse_double_array(), arg.parse_string_array()));
          break;
        case Tango_DEV_STATE:
          send.insert(DevState.from_int(arg.parse_ushort()));
          break;

        default:
          throw new NumberFormatException("Command type not supported code=" + ci.in_type);

      }

    }

    Vector errList = new Vector();

    for(int i=0;i0) {
      JiveUtils.showJiveErrors(errList);
    }

    if(ci.out_type!=Tango_DEV_VOID)
      refreshTable();

  }



}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy