1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package de.desy.acop.transport.tine;
24
25 import java.util.Date;
26 import java.util.Vector;
27 import de.desy.acop.chart.Acop;
28 import de.desy.acop.transport.AcopTransportAccessMethods;
29 import de.desy.acop.transport.AcopTransportPlug;
30 import de.desy.acop.transport.AcopTransportRequest;
31 import de.desy.tine.queryUtils.*;
32 import de.desy.tine.client.*;
33 import de.desy.tine.dataUtils.*;
34 import de.desy.tine.definitions.*;
35 import de.desy.tine.io.*;
36 import de.desy.tine.structUtils.*;
37 import de.desy.tine.stringUtils.*;
38 import de.desy.tine.types.*;
39
40
41
42
43
44 public class AcopTransportTine implements AcopTransportPlug
45 {
46 private AcopTransportTineCallback tcb;
47 private Vector linkTable = new Vector();
48 private int addLink(TLink tl)
49 {
50 linkTable.addElement(tl);
51 return linkTable.indexOf(tl);
52 }
53 private int getTableId(TLink tl)
54 {
55 return linkTable.indexOf(tl);
56 }
57 private int getTableId(int linkId)
58 {
59 for (int i=0; i<linkTable.size(); i++)
60 {
61 if (((TLink)linkTable.elementAt(i)).linkId == linkId) return i;
62 }
63 return -1;
64 }
65 private int rmvLink(TLink tl)
66 {
67 linkTable.removeElement(tl);
68 return 0;
69 }
70 private String deviceName;
71 private String makeDeviceName(AcopTransportRequest atr)
72 {
73 if (atr.deviceContext != null && atr.deviceContext.length() > 0)
74 {
75 return new String("/" + atr.deviceContext +
76 "/" + atr.deviceGroup +
77 "/" + atr.deviceName);
78 }
79 else
80 {
81 return new String(atr.deviceGroup + "/" + atr.deviceName);
82 }
83 }
84 private int makeAccessRate(AcopTransportRequest atr)
85 {
86 int rate = (new Integer(atr.accessRate)).intValue();
87 if (rate == 0) rate = 1000;
88 return rate;
89 }
90 private short makeAccessMode(AcopTransportRequest atr)
91 {
92 short m = 0;
93 String tmp = atr.accessMode.toString();
94 if (tmp.indexOf("READ") >= 0) m |= TMode.CM_SINGLE;
95 if (tmp.indexOf("WRITE") >= 0) m |= TMode.CM_SINGLE;
96 if (tmp.indexOf("POLL") >= 0) m |= TMode.CM_POLL;
97 if (tmp.indexOf("REFRESH") >= 0) m |= TMode.CM_REFRESH;
98 if (tmp.indexOf("EVENT") >= 0) m |= TMode.CM_EVENT;
99 if (tmp.indexOf("CONNECT") >= 0) m |= TMode.CM_CONNECT;
100 if (tmp.indexOf("NETWORK") >= 0) m |= TMode.CM_NETWORK;
101 if (tmp.indexOf("BROADCAST") >= 0) m |= TMode.CM_BCAST;
102 if (tmp.indexOf("MULTICAST") >= 0) m |= TMode.CM_MCAST;
103 if (tmp.indexOf("RECEIVE") >= 0) m |= TMode.CM_GLOBAL;
104 if (tmp.indexOf("GLOBAL") >= 0) m |= TMode.CM_GLOBAL;
105 if (tmp.indexOf("WAIT") >= 0) m |= TMode.CM_WAIT;
106 if (tmp.indexOf("USE_ON_ERROR") >= 0) m |= TMode.CM_WAIT;
107 return m;
108 }
109 public int acquireDisplayProperties(Acop a,String deviceContext,String deviceGroup,String deviceName,String deviceProperty)
110 {
111 PropertyQueryEx[] p = TQuery.getDevicePropertyInformation(deviceContext, deviceGroup, deviceName, deviceProperty);
112 if (p != null)
113 {
114 a.setYMax(p[0].prpMaxValue);
115 a.setYMin(p[0].prpMinValue);
116 a.setXMax(p[0].prpSize);
117 a.setXMin(0);
118 a.setYAxisLabel(p[0].prpUnits);
119 a.setXAxisLabel(p[0].prpDescription);
120 switch (p[0].prpGraphType)
121 {
122 case 0: a.setGraphStyle(0); break;
123 case 1: a.setGraphStyle(1); break;
124 }
125 return 0;
126 }
127 return -1;
128 }
129
130
131
132 public int handleRequest(AcopTransportRequest atr)
133 {
134 TDataType dout, din;
135 short access;
136 int id;
137 TLink tl = null;
138
139 switch (atr.accessMethod)
140 {
141 case AcopTransportAccessMethods.EXECUTE:
142 if (!atr.accessMode.isReadMode() && !atr.accessMode.isWriteMode())
143 {
144 atr.status = "illegal mode (READ or WRITE required)";
145 atr.setDataTimeStamp(new Date());
146 return -1;
147 }
148 deviceName = makeDeviceName(atr);
149 dout = toTDataType(atr.getData(),atr.getArraySize(),!atr.isUnboundToData);
150 if (dout == null) dout = new TDataType();
151 din = toTDataType(atr.getDataEx(),atr.getArraySizeEx(),!atr.isUnboundToData);
152 if (din == null) din = new TDataType();
153 access = TAccess.CA_READ;
154 if (atr.accessMode.isWriteMode()) access |= TAccess.CA_WRITE;
155 try
156 {
157 tl = new TLink(deviceName,atr.deviceProperty,dout,din,access);
158 atr.statusCode = tl.execute(makeAccessRate(atr));
159 atr.setDataSize(dout.getLastDataSize());
160 if (atr.statusCode > 0) atr.status = tl.getLastError();
161 else atr.status = "Success";
162 tl.cancel();
163 if (atr.getDataTimeStamp() == null) atr.setDataTimeStamp(new Date());
164 atr.getDataTimeStamp().setTime(dout.getTimeStamp());
165 return atr.statusCode;
166 }
167 catch (Exception e)
168 {
169 atr.status = e.getMessage();
170 if (tl != null) tl.cancel();
171 return -1;
172 }
173 case AcopTransportAccessMethods.ATTACH:
174 deviceName = makeDeviceName(atr);
175 dout = toTDataType(atr.getData(),atr.getArraySize(),!atr.isUnboundToData);
176 din = toTDataType(atr.getDataEx(),atr.getArraySizeEx(),!atr.isUnboundToData);
177 access = TAccess.CA_READ;
178 if (atr.accessMode.isWriteMode()) access |= TAccess.CA_WRITE;
179 tl = new TLink(deviceName,atr.deviceProperty,dout,din,access);
180 tcb = new AcopTransportTineCallback(atr.atc);
181 addLink(tl);
182 short mode = makeAccessMode(atr);
183 try
184 {
185 if ((mode & TMode.CM_GLOBAL) == TMode.CM_GLOBAL)
186 {
187 atr.setLinkHandle(tl.receive(tcb));
188 }
189 else
190 {
191 atr.setLinkHandle(tl.attach(mode,tcb,makeAccessRate(atr)));
192 }
193 if (atr.getLinkHandle() < 0)
194 {
195 atr.statusCode = -atr.getLinkHandle();
196 atr.status = tl.getError(atr.statusCode);
197 return -1;
198 }
199 return atr.getLinkHandle();
200 }
201 catch (Exception e)
202 {
203 atr.statusCode = -1;
204 atr.status = e.getMessage();
205 return -1;
206 }
207 case AcopTransportAccessMethods.CLOSE:
208 id = getTableId(atr.getLinkHandle());
209 if (id >= 0) tl = (TLink)linkTable.elementAt(id);
210 if (tl != null)
211 {
212 tl.cancel();
213 linkTable.remove(id);
214 }
215 break;
216 case AcopTransportAccessMethods.GETDATA:
217 id = getTableId(atr.getLinkHandle());
218 if (id >= 0) tl = (TLink)linkTable.elementAt(id);
219 if (tl == null)
220 {
221 atr.statusCode = -1;
222 atr.status = "Invalid Link Index";
223 return -1;
224 }
225 atr.statusCode = tl.getLinkStatus();
226 if (atr.statusCode > 0) atr.status = tl.getLastError();
227 else atr.status = "Success";
228 if (atr.getDataTimeStamp() == null) atr.setDataTimeStamp(new Date());
229 atr.getDataTimeStamp().setTime(tl.getLastTimeStamp());
230 if (atr.isUnboundToData)
231 {
232 if (atr.getData() != null)
233 {
234 dout = tl.getOutputDataObject();
235 dout.getData(atr.getData());
236 }
237 if (atr.getDataEx() != null)
238 {
239 din = tl.getInputDataObject();
240 din.getData(atr.getDataEx());
241 }
242 }
243 break;
244 case AcopTransportAccessMethods.SHUTDOWN:
245 for (id=0; id<linkTable.size(); id++)
246 {
247 ((TLink)linkTable.elementAt(id)).cancel();
248 }
249 break;
250 case AcopTransportAccessMethods.GETINFO:
251 id = getTableId(atr.getLinkHandle());
252 if (id >= 0) tl = (TLink)linkTable.elementAt(id);
253 if (tl == null)
254 {
255 atr.statusCode = -1;
256 atr.status = "Invalid Link Index";
257 return -1;
258 }
259 atr.setDeviceInfo(TQuery.getModuleAddressInfo(tl.getDeviceServer(), tl.getContext()));
260 break;
261 default:
262 return -1;
263 }
264 return 0;
265 }
266
267
268
269 public String getPlugName()
270 {
271 return "TINE";
272 }
273 public double[] getYAxis(Object data)
274 {
275 int siz = getObjectSize(data);
276 if (siz > 0)
277 {
278 if (data instanceof double[]) return (double[])data;
279 double[] y;
280 if (data instanceof SPECTRUM)
281 {
282 siz = ((SPECTRUM)data).length;
283 y = new double[siz];
284 for (int i=0; i<siz; i++) y[i] = ((SPECTRUM)data).d_spect_array[i];
285 return y;
286 }
287 y = new double[siz];
288 if (data instanceof float[]) for (int i=0; i<siz; i++) y[i] = ((float[])data)[i];
289 else if (data instanceof byte[]) for (int i=0; i<siz; i++) y[i] = ((byte[])data)[i];
290 else if (data instanceof short[]) for (int i=0; i<siz; i++) y[i] = ((short[])data)[i];
291 else if (data instanceof int[]) for (int i=0; i<siz; i++) y[i] = ((int[])data)[i];
292 else if (data instanceof long[]) for (int i=0; i<siz; i++) y[i] = (double)((long[])data)[i];
293 else if (data instanceof FLTINT[]) for (int i=0; i<siz; i++) y[i] = ((FLTINT[])data)[i] != null ? ((FLTINT[])data)[i].fval : 0;
294 else if (data instanceof POINT[]) for (int i=0; i<siz; i++) y[i] = ((POINT[])data)[i] != null ? ((POINT[])data)[i].f2val : 0;
295 else if (data instanceof FLTFLT[]) for (int i=0; i<siz; i++) y[i] = ((FLTFLT[])data)[i] != null ? ((FLTFLT[])data)[i].f1val : 0;
296 else if (data instanceof DBLINT[]) for (int i=0; i<siz; i++) y[i] = ((DBLINT[])data)[i] != null ? ((DBLINT[])data)[i].dval : 0;
297 else if (data instanceof INTINT[]) for (int i=0; i<siz; i++) y[i] = ((INTINT[])data)[i] != null ? ((INTINT[])data)[i].i1val : 0;
298 else if (data instanceof DBLDBL[]) for (int i=0; i<siz; i++) y[i] = ((DBLDBL[])data)[i] != null ? ((DBLDBL[])data)[i].d1val : 0;
299 else if (data instanceof TDS[]) for (int i=0; i<siz; i++) y[i] = ((TDS[])data)[i] != null ? ((TDS[])data)[i].dval : 0;
300 else if (data instanceof INTFLTINT[]) for (int i=0; i<siz; i++) y[i] = ((INTFLTINT[])data)[i] != null ? ((INTFLTINT[])data)[i].fval : 0;
301 else if (data instanceof FLTFLTINT[]) for (int i=0; i<siz; i++) y[i] = ((FLTFLTINT[])data)[i] != null ? ((FLTFLTINT[])data)[i].f1val : 0;
302 else if (data instanceof FLTINTINT[]) for (int i=0; i<siz; i++) y[i] = ((FLTINTINT[])data)[i] != null ? ((FLTINTINT[])data)[i].f1val : 0;
303 else if (data instanceof INTINTINT[]) for (int i=0; i<siz; i++) y[i] = ((INTINTINT[])data)[i] != null ? ((INTINTINT[])data)[i].i1val : 0;
304 else if (data instanceof INTINTINTINT[]) for (int i=0; i<siz; i++) y[i] = ((INTINTINTINT[])data)[i] != null ? ((INTINTINTINT[])data)[i].i1val : 0;
305 else if (data instanceof NAME16I[]) for (int i=0; i<siz; i++) y[i] = ((NAME16I[])data)[i] != null ? ((NAME16I[])data)[i].ival : 0;
306 else if (data instanceof NAME32I[]) for (int i=0; i<siz; i++) y[i] = ((NAME32I[])data)[i] != null ? ((NAME32I[])data)[i].ival : 0;
307 else if (data instanceof NAME64I[]) for (int i=0; i<siz; i++) y[i] = ((NAME64I[])data)[i] != null ? ((NAME64I[])data)[i].ival : 0;
308 else if (data instanceof NAME16FI[]) for (int i=0; i<siz; i++) y[i] = ((NAME16FI[])data)[i] != null ? ((NAME16FI[])data)[i].fval : 0;
309 else if (data instanceof NAME16II[]) for (int i=0; i<siz; i++) y[i] = ((NAME16II[])data)[i] != null ? ((NAME16II[])data)[i].i1val : 0;
310 else if (data instanceof NAME16DBLDBL[]) for (int i=0; i<siz; i++) y[i] = ((NAME16DBLDBL[])data)[i] != null ? ((NAME16DBLDBL[])data)[i].d1val : 0;
311 else if (data instanceof NAME32DBLDBL[]) for (int i=0; i<siz; i++) y[i] = ((NAME32DBLDBL[])data)[i] != null ? ((NAME32DBLDBL[])data)[i].d1val : 0;
312 else if (data instanceof NAME64DBLDBL[]) for (int i=0; i<siz; i++) y[i] = ((NAME64DBLDBL[])data)[i] != null ? ((NAME64DBLDBL[])data)[i].d1val : 0;
313 else if (data instanceof USTRING[]) for (int i=0; i<siz; i++) y[i] = ((USTRING[])data)[i] != null ? ((USTRING[])data)[i].f1val : 0;
314 else if (data instanceof UNAME[]) for (int i=0; i<siz; i++) y[i] = ((UNAME[])data)[i] != null ? ((UNAME[])data)[i].f2val : 0;
315 else if (data instanceof Object[])
316 {
317 if ((((Object[])data)[0]) instanceof Double) for (int i=0; i<siz; i++) y[i] = ((Double)(((Object[])data)[i])).doubleValue();
318 else if ((((Object[])data)[0]) instanceof Float) for (int i=0; i<siz; i++) y[i] = ((Float)(((Object[])data)[i])).floatValue();
319 else if ((((Object[])data)[0]) instanceof Short) for (int i=0; i<siz; i++) y[i] = ((Short)(((Object[])data)[i])).shortValue();
320 else if ((((Object[])data)[0]) instanceof Integer) for (int i=0; i<siz; i++) y[i] = ((Integer)(((Object[])data)[i])).intValue();
321 else if ((((Object[])data)[0]) instanceof Long) for (int i=0; i<siz; i++) y[i] = (double)((Long)(((Object[])data)[i])).intValue();
322 else if ((((Object[])data)[0]) instanceof Byte) for (int i=0; i<siz; i++) y[i] = ((Byte)(((Object[])data)[i])).intValue();
323 else if ((((Object[])data)[0]) instanceof FLTINT) for (int i=0; i<siz; i++) y[i] = ((FLTINT)(((Object[])data)[i])).fval;
324 else if ((((Object[])data)[0]) instanceof POINT) for (int i=0; i<siz; i++) y[i] = ((POINT)(((Object[])data)[i])).f2val;
325 else if ((((Object[])data)[0]) instanceof FLTFLT) for (int i=0; i<siz; i++) y[i] = ((FLTFLT)(((Object[])data)[i])).f1val;
326 else if ((((Object[])data)[0]) instanceof INTINT) for (int i=0; i<siz; i++) y[i] = ((INTINT)(((Object[])data)[i])).i1val;
327 else if ((((Object[])data)[0]) instanceof DBLDBL) for (int i=0; i<siz; i++) y[i] = ((DBLDBL)(((Object[])data)[i])).d1val;
328 else if ((((Object[])data)[0]) instanceof TDS) for (int i=0; i<siz; i++) y[i] = ((TDS)(((Object[])data)[i])).dval;
329 else if ((((Object[])data)[0]) instanceof INTFLTINT) for (int i=0; i<siz; i++) y[i] = ((INTFLTINT)(((Object[])data)[i])).fval;
330 else if ((((Object[])data)[0]) instanceof FLTFLTINT) for (int i=0; i<siz; i++) y[i] = ((FLTFLTINT)(((Object[])data)[i])).f1val;
331 else if ((((Object[])data)[0]) instanceof FLTINTINT) for (int i=0; i<siz; i++) y[i] = ((FLTINTINT)(((Object[])data)[i])).f1val;
332 else if ((((Object[])data)[0]) instanceof INTINTINT) for (int i=0; i<siz; i++) y[i] = ((INTINTINT)(((Object[])data)[i])).i1val;
333 else if ((((Object[])data)[0]) instanceof INTINTINTINT) for (int i=0; i<siz; i++) y[i] = ((INTINTINTINT)(((Object[])data)[i])).i1val;
334 else if ((((Object[])data)[0]) instanceof NAME16I) for (int i=0; i<siz; i++) y[i] = ((NAME16I)(((Object[])data)[i])).ival;
335 else if ((((Object[])data)[0]) instanceof NAME32I) for (int i=0; i<siz; i++) y[i] = ((NAME32I)(((Object[])data)[i])).ival;
336 else if ((((Object[])data)[0]) instanceof NAME64I) for (int i=0; i<siz; i++) y[i] = ((NAME64I)(((Object[])data)[i])).ival;
337 else if ((((Object[])data)[0]) instanceof NAME16FI) for (int i=0; i<siz; i++) y[i] = ((NAME16FI)(((Object[])data)[i])).fval;
338 else if ((((Object[])data)[0]) instanceof NAME16II) for (int i=0; i<siz; i++) y[i] = ((NAME16II)(((Object[])data)[i])).i1val;
339 else if ((((Object[])data)[0]) instanceof NAME16DBLDBL) for (int i=0; i<siz; i++) y[i] = ((NAME16DBLDBL)(((Object[])data)[i])).d1val;
340 else if ((((Object[])data)[0]) instanceof NAME32DBLDBL) for (int i=0; i<siz; i++) y[i] = ((NAME32DBLDBL)(((Object[])data)[i])).d1val;
341 else if ((((Object[])data)[0]) instanceof NAME64DBLDBL) for (int i=0; i<siz; i++) y[i] = ((NAME64DBLDBL)(((Object[])data)[i])).d1val;
342 else if ((((Object[])data)[0]) instanceof USTRING) for (int i=0; i<siz; i++) y[i] = ((USTRING)(((Object[])data)[i])).f1val;
343 else if ((((Object[])data)[0]) instanceof UNAME) for (int i=0; i<siz; i++) y[i] = ((UNAME)(((Object[])data)[i])).f2val;
344 }
345 return y;
346 }
347 return null;
348 }
349 public double[] getXAxis(Object data)
350 {
351 int siz = getObjectSize(data);
352 if (siz > 0)
353 {
354 if (data instanceof double[]) return (double[])data;
355 double[] x;
356 if (data instanceof SPECTRUM)
357 {
358 siz = ((SPECTRUM)data).length;
359 x = new double[siz];
360 for (int i=0; i<siz; i++)
361 x[i] = ((SPECTRUM)data).s_start + i * ((SPECTRUM)data).s_inc;
362 return x;
363 }
364 x = new double[siz];
365 if (data instanceof float[]) for (int i=0; i<siz; i++) x[i] = ((float[])data)[i];
366 else if (data instanceof byte[]) for (int i=0; i<siz; i++) x[i] = ((byte[])data)[i];
367 else if (data instanceof short[]) for (int i=0; i<siz; i++) x[i] = ((short[])data)[i];
368 else if (data instanceof int[]) for (int i=0; i<siz; i++) x[i] = ((int[])data)[i];
369 else if (data instanceof long[]) for (int i=0; i<siz; i++) x[i] = (double)((long[])data)[i];
370 else if (data instanceof FLTINT[]) for (int i=0; i<siz; i++) x[i] = ((FLTINT[])data)[i] != null ? ((FLTINT[])data)[i].ival : 0;
371 else if (data instanceof POINT[]) for (int i=0; i<siz; i++) x[i] = ((POINT[])data)[i] != null ? ((POINT[])data)[i].f1val : 0;
372 else if (data instanceof FLTFLT[]) for (int i=0; i<siz; i++) x[i] = ((FLTFLT[])data)[i] != null ? ((FLTFLT[])data)[i].f2val : 0;
373 else if (data instanceof DBLINT[]) for (int i=0; i<siz; i++) x[i] = ((DBLINT[])data)[i] != null ? ((DBLINT[])data)[i].ival : 0;
374 else if (data instanceof INTINT[]) for (int i=0; i<siz; i++) x[i] = ((INTINT[])data)[i] != null ? ((INTINT[])data)[i].i2val : 0;
375 else if (data instanceof DBLDBL[]) for (int i=0; i<siz; i++) x[i] = ((DBLDBL[])data)[i] != null ? ((DBLDBL[])data)[i].d2val : 0;
376 else if (data instanceof TDS[]) for (int i=0; i<siz; i++) x[i] = ((TDS[])data)[i] != null ? ((TDS[])data)[i].tval : 0;
377 else if (data instanceof INTFLTINT[]) for (int i=0; i<siz; i++) x[i] = ((INTFLTINT[])data)[i] != null ? ((INTFLTINT[])data)[i].i1val : 0;
378 else if (data instanceof FLTFLTINT[]) for (int i=0; i<siz; i++) x[i] = ((FLTFLTINT[])data)[i] != null ? ((FLTFLTINT[])data)[i].f2val : 0;
379 else if (data instanceof FLTINTINT[]) for (int i=0; i<siz; i++) x[i] = ((FLTINTINT[])data)[i] != null ? ((FLTINTINT[])data)[i].i1val : 0;
380 else if (data instanceof INTINTINT[]) for (int i=0; i<siz; i++) x[i] = ((INTINTINT[])data)[i] != null ? ((INTINTINT[])data)[i].i2val : 0;
381 else if (data instanceof INTINTINTINT[]) for (int i=0; i<siz; i++) x[i] = ((INTINTINTINT[])data)[i] != null ? ((INTINTINTINT[])data)[i].i2val : 0;
382 else if (data instanceof NAME16I[]) for (int i=0; i<siz; i++) x[i] = ((NAME16I[])data)[i] != null ? i : 0;
383 else if (data instanceof NAME32I[]) for (int i=0; i<siz; i++) x[i] = ((NAME32I[])data)[i] != null ? i : 0;
384 else if (data instanceof NAME64I[]) for (int i=0; i<siz; i++) x[i] = ((NAME64I[])data)[i] != null ? i : 0;
385 else if (data instanceof NAME16FI[]) for (int i=0; i<siz; i++) x[i] = ((NAME16FI[])data)[i] != null ? ((NAME16FI[])data)[i].ival : 0;
386 else if (data instanceof NAME16II[]) for (int i=0; i<siz; i++) x[i] = ((NAME16II[])data)[i] != null ? ((NAME16II[])data)[i].i2val : 0;
387 else if (data instanceof NAME16DBLDBL[]) for (int i=0; i<siz; i++) x[i] = ((NAME16DBLDBL[])data)[i] != null ? ((NAME16DBLDBL[])data)[i].d2val : 0;
388 else if (data instanceof NAME32DBLDBL[]) for (int i=0; i<siz; i++) x[i] = ((NAME32DBLDBL[])data)[i] != null ? ((NAME32DBLDBL[])data)[i].d2val : 0;
389 else if (data instanceof NAME64DBLDBL[]) for (int i=0; i<siz; i++) x[i] = ((NAME64DBLDBL[])data)[i] != null ? ((NAME64DBLDBL[])data)[i].d2val : 0;
390 else if (data instanceof USTRING[]) for (int i=0; i<siz; i++) x[i] = ((USTRING[])data)[i] != null ? ((USTRING[])data)[i].f2val : 0;
391 else if (data instanceof UNAME[]) for (int i=0; i<siz; i++) x[i] = ((UNAME[])data)[i] != null ? ((UNAME[])data)[i].f1val : 0;
392 else if (data instanceof Object[])
393 {
394 if ((((Object[])data)[0]) instanceof Double) for (int i=0; i<siz; i++) x[i] = ((Double)(((Object[])data)[i])).doubleValue();
395 else if ((((Object[])data)[0]) instanceof Float) for (int i=0; i<siz; i++) x[i] = ((Float)(((Object[])data)[i])).floatValue();
396 else if ((((Object[])data)[0]) instanceof Short) for (int i=0; i<siz; i++) x[i] = ((Short)(((Object[])data)[i])).shortValue();
397 else if ((((Object[])data)[0]) instanceof Integer) for (int i=0; i<siz; i++) x[i] = ((Integer)(((Object[])data)[i])).intValue();
398 else if ((((Object[])data)[0]) instanceof Long) for (int i=0; i<siz; i++) x[i] = (double)((Long)(((Object[])data)[i])).intValue();
399 else if ((((Object[])data)[0]) instanceof Byte) for (int i=0; i<siz; i++) x[i] = ((Byte)(((Object[])data)[i])).intValue();
400 else if ((((Object[])data)[0]) instanceof FLTINT) for (int i=0; i<siz; i++) x[i] = ((FLTINT)(((Object[])data)[i])).ival;
401 else if ((((Object[])data)[0]) instanceof POINT) for (int i=0; i<siz; i++) x[i] = ((POINT)(((Object[])data)[i])).f1val;
402 else if ((((Object[])data)[0]) instanceof FLTFLT) for (int i=0; i<siz; i++) x[i] = ((FLTFLT)(((Object[])data)[i])).f2val;
403 else if ((((Object[])data)[0]) instanceof INTINT) for (int i=0; i<siz; i++) x[i] = ((INTINT)(((Object[])data)[i])).i2val;
404 else if ((((Object[])data)[0]) instanceof DBLDBL) for (int i=0; i<siz; i++) x[i] = ((DBLDBL)(((Object[])data)[i])).d2val;
405 else if ((((Object[])data)[0]) instanceof TDS) for (int i=0; i<siz; i++) x[i] = ((TDS)(((Object[])data)[i])).tval;
406 else if ((((Object[])data)[0]) instanceof INTFLTINT) for (int i=0; i<siz; i++) x[i] = ((INTFLTINT)(((Object[])data)[i])).i1val;
407 else if ((((Object[])data)[0]) instanceof FLTFLTINT) for (int i=0; i<siz; i++) x[i] = ((FLTFLTINT)(((Object[])data)[i])).f2val;
408 else if ((((Object[])data)[0]) instanceof FLTINTINT) for (int i=0; i<siz; i++) x[i] = ((FLTINTINT)(((Object[])data)[i])).i1val;
409 else if ((((Object[])data)[0]) instanceof INTINTINT) for (int i=0; i<siz; i++) x[i] = ((INTINTINT)(((Object[])data)[i])).i2val;
410 else if ((((Object[])data)[0]) instanceof INTINTINTINT) for (int i=0; i<siz; i++) x[i] = ((INTINTINTINT)(((Object[])data)[i])).i2val;
411 else if ((((Object[])data)[0]) instanceof NAME16I) for (int i=0; i<siz; i++) x[i] = i;
412 else if ((((Object[])data)[0]) instanceof NAME32I) for (int i=0; i<siz; i++) x[i] = i;
413 else if ((((Object[])data)[0]) instanceof NAME64I) for (int i=0; i<siz; i++) x[i] = i;
414 else if ((((Object[])data)[0]) instanceof NAME16FI) for (int i=0; i<siz; i++) x[i] = ((NAME16FI)(((Object[])data)[i])).ival;
415 else if ((((Object[])data)[0]) instanceof NAME16II) for (int i=0; i<siz; i++) x[i] = ((NAME16II)(((Object[])data)[i])).i2val;
416 else if ((((Object[])data)[0]) instanceof NAME16DBLDBL) for (int i=0; i<siz; i++) x[i] = ((NAME16DBLDBL)(((Object[])data)[i])).d2val;
417 else if ((((Object[])data)[0]) instanceof NAME32DBLDBL) for (int i=0; i<siz; i++) x[i] = ((NAME32DBLDBL)(((Object[])data)[i])).d2val;
418 else if ((((Object[])data)[0]) instanceof NAME64DBLDBL) for (int i=0; i<siz; i++) x[i] = ((NAME64DBLDBL)(((Object[])data)[i])).d2val;
419 else if ((((Object[])data)[0]) instanceof USTRING) for (int i=0; i<siz; i++) x[i] = ((USTRING)(((Object[])data)[i])).f2val;
420 else if ((((Object[])data)[0]) instanceof UNAME) for (int i=0; i<siz; i++) x[i] = ((UNAME)(((Object[])data)[i])).f3val;
421 }
422 return x;
423 }
424 return null;
425 }
426 public String[] getXAxisChannelNames(Object data)
427 {
428 int siz = getObjectSize(data);
429 if (siz > 0)
430 {
431 String[] s;
432 s = new String[siz];
433 if (data instanceof NAME8[]) for (int i=0; i<siz; i++) s[i] = ((NAME16I[])data)[i] != null ? ((NAME8[])data)[i].getName() : "";
434 if (data instanceof NAME16[]) for (int i=0; i<siz; i++) s[i] = ((NAME16I[])data)[i] != null ? ((NAME16[])data)[i].getName() : "";
435 else if (data instanceof NAME32[]) for (int i=0; i<siz; i++) s[i] = ((NAME32I[])data)[i] != null ? ((NAME32[])data)[i].getName() : "";
436 else if (data instanceof NAME48[]) for (int i=0; i<siz; i++) s[i] = ((NAME32I[])data)[i] != null ? ((NAME48[])data)[i].getName() : "";
437 else if (data instanceof NAME64[]) for (int i=0; i<siz; i++) s[i] = ((NAME64I[])data)[i] != null ? ((NAME64[])data)[i].getName() : "";
438 else if (data instanceof NAME16I[]) for (int i=0; i<siz; i++) s[i] = ((NAME16I[])data)[i] != null ? ((NAME16I[])data)[i].getName() : "";
439 else if (data instanceof NAME32I[]) for (int i=0; i<siz; i++) s[i] = ((NAME32I[])data)[i] != null ? ((NAME32I[])data)[i].getName() : "";
440 else if (data instanceof NAME64I[]) for (int i=0; i<siz; i++) s[i] = ((NAME64I[])data)[i] != null ? ((NAME64I[])data)[i].getName() : "";
441 else if (data instanceof NAME16FI[]) for (int i=0; i<siz; i++) s[i] = ((NAME16FI[])data)[i] != null ? ((NAME16FI[])data)[i].getName() : "";
442 else if (data instanceof NAME16II[]) for (int i=0; i<siz; i++) s[i] = ((NAME16II[])data)[i] != null ? ((NAME16II[])data)[i].getName() : "";
443 else if (data instanceof NAME16DBLDBL[]) for (int i=0; i<siz; i++) s[i] = ((NAME16DBLDBL[])data)[i] != null ? ((NAME16DBLDBL[])data)[i].getName() : "";
444 else if (data instanceof NAME32DBLDBL[]) for (int i=0; i<siz; i++) s[i] = ((NAME32DBLDBL[])data)[i] != null ? ((NAME32DBLDBL[])data)[i].getName() : "";
445 else if (data instanceof NAME64DBLDBL[]) for (int i=0; i<siz; i++) s[i] = ((NAME64DBLDBL[])data)[i] != null ? ((NAME64DBLDBL[])data)[i].getName() : "";
446 else if (data instanceof USTRING[]) for (int i=0; i<siz; i++) s[i] = ((USTRING[])data)[i] != null ? ((USTRING[])data)[i].getString() : "";
447 else if (data instanceof UNAME[]) for (int i=0; i<siz; i++) s[i] = ((UNAME[])data)[i] != null ? ((UNAME[])data)[i].getString() : "";
448 else if (data instanceof Object[])
449 {
450 if ((((Object[])data)[0]) instanceof NAME8) for (int i=0; i<siz; i++) s[i] = ((NAME8)(((Object[])data)[i])).getName();
451 else if ((((Object[])data)[0]) instanceof NAME16) for (int i=0; i<siz; i++) s[i] = ((NAME16)(((Object[])data)[i])).getName();
452 else if ((((Object[])data)[0]) instanceof NAME32) for (int i=0; i<siz; i++) s[i] = ((NAME32)(((Object[])data)[i])).getName();
453 else if ((((Object[])data)[0]) instanceof NAME48) for (int i=0; i<siz; i++) s[i] = ((NAME48)(((Object[])data)[i])).getName();
454 else if ((((Object[])data)[0]) instanceof NAME64) for (int i=0; i<siz; i++) s[i] = ((NAME64)(((Object[])data)[i])).getName();
455 else if ((((Object[])data)[0]) instanceof NAME16I) for (int i=0; i<siz; i++) s[i] = ((NAME16I)(((Object[])data)[i])).getName();
456 else if ((((Object[])data)[0]) instanceof NAME32I) for (int i=0; i<siz; i++) s[i] = ((NAME32I)(((Object[])data)[i])).getName();
457 else if ((((Object[])data)[0]) instanceof NAME64I) for (int i=0; i<siz; i++) s[i] = ((NAME64I)(((Object[])data)[i])).getName();
458 else if ((((Object[])data)[0]) instanceof NAME16FI) for (int i=0; i<siz; i++) s[i] = ((NAME16FI)(((Object[])data)[i])).getName();
459 else if ((((Object[])data)[0]) instanceof NAME16II) for (int i=0; i<siz; i++) s[i] = ((NAME16II)(((Object[])data)[i])).getName();
460 else if ((((Object[])data)[0]) instanceof NAME16DBLDBL) for (int i=0; i<siz; i++) s[i] = ((NAME16DBLDBL)(((Object[])data)[i])).getName();
461 else if ((((Object[])data)[0]) instanceof NAME32DBLDBL) for (int i=0; i<siz; i++) s[i] = ((NAME32DBLDBL)(((Object[])data)[i])).getName();
462 else if ((((Object[])data)[0]) instanceof NAME64DBLDBL) for (int i=0; i<siz; i++) s[i] = ((NAME64DBLDBL)(((Object[])data)[i])).getName();
463 else if ((((Object[])data)[0]) instanceof USTRING) for (int i=0; i<siz; i++) s[i] = ((USTRING)(((Object[])data)[i])).getString();
464 else if ((((Object[])data)[0]) instanceof UNAME) for (int i=0; i<siz; i++) s[i] = ((UNAME)(((Object[])data)[i])).getString();
465 else return null;
466 }
467 else return null;
468 return s;
469 }
470 return null;
471 }
472 public int getObjectSize(Object data)
473 {
474 if (data == null) return 0;
475 if (data instanceof char[]) return ((char[])data).length;
476 if (data instanceof TTaggedStructure[]) return ((TTaggedStructure[])data).length;
477 if (data instanceof TTaggedStructure) return 1;
478 return TDataType.getObjectSize(data);
479 }
480 private TDataType toTDataType(Object data, int length, boolean isBound)
481 {
482 if (data == null) return null;
483 if (data instanceof double[])
484 {
485 return isBound ? new TDataType((double[])data, length) : new TDataType(((double[])data).length,TFormat.CF_DOUBLE);
486 }
487 if (data instanceof float[])
488 {
489 return isBound ? new TDataType((float[])data, length) : new TDataType(length,TFormat.CF_FLOAT);
490 }
491 if (data instanceof int[])
492 {
493 return isBound ? new TDataType((int[])data, length) : new TDataType(((int[])data).length,TFormat.CF_LONG);
494 }
495 if (data instanceof short[])
496 {
497 return isBound ? new TDataType((short[])data, length) : new TDataType(((short[])data).length,TFormat.CF_SHORT);
498 }
499 if (data instanceof byte[])
500 {
501 return isBound ? new TDataType((byte[])data, length) : new TDataType(((byte[])data).length,TFormat.CF_BYTE);
502 }
503 if (data instanceof long[])
504 {
505 return isBound ? new TDataType((long[])data, length) : new TDataType(((long[])data).length,TFormat.CF_DLONG);
506 }
507 if (data instanceof TCompoundDataObject[])
508 {
509 return isBound ? new TDataType((TCompoundDataObject[])data, length) : new TDataType(((TCompoundDataObject[])data).length,((TCompoundDataObject[])data)[0].getFormat());
510 }
511 if (data instanceof SPECTRUM)
512 {
513 return isBound ? new TDataType((SPECTRUM)data) : new TDataType(((SPECTRUM)data).length,TFormat.CF_SPECTRUM);
514 }
515 if (data instanceof String)
516 {
517 return isBound ? new TDataType((String)data, length) : new TDataType(((String[])data).length,TFormat.CF_TEXT);
518 }
519 if (data instanceof StringBuffer)
520 {
521 return isBound ? new TDataType((StringBuffer)data, length) : new TDataType(((StringBuffer)data).length(),TFormat.CF_TEXT);
522 }
523 if (data instanceof char[])
524 {
525 return isBound ? new TDataType((char[])data, length) : new TDataType(((char[])data).length,TFormat.CF_TEXT);
526 }
527 if (data instanceof TTaggedStructure)
528 {
529 return isBound ? new TDataType((TTaggedStructure)data) : new TDataType(((TTaggedStructure)data).getSizeInBytes(),TFormat.CF_STRUCT);
530 }
531 if (data instanceof TTaggedStructure[])
532 {
533 return isBound ? new TDataType((TTaggedStructure[])data) : new TDataType(((TTaggedStructure[])data)[0].getSizeInBytes()*((TTaggedStructure[])data).length,TFormat.CF_STRUCT);
534 }
535 return null;
536 }
537 public String[] getDeviceContexts()
538 {
539 return TQuery.getContexts();
540 }
541 public String[] getDeviceGroups(String deviceContext,String deviceGroup,String deviceName,String deviceProperty)
542 {
543 return TQuery.getDeviceServers(deviceContext);
544 }
545 public String[] getDeviceNames(String deviceContext,String deviceGroup,String deviceName,String deviceProperty)
546 {
547 return TQuery.getDeviceNames(deviceContext,deviceGroup,deviceProperty);
548 }
549 public String[] getDeviceProperties(String deviceContext,String deviceGroup,String deviceName,String deviceProperty)
550 {
551 return TQuery.getDeviceProperties(deviceContext,deviceGroup,deviceName);
552 }
553 public String getTargetInformation(String deviceContext, String deviceGroup, String deviceName, String deviceProperty)
554 {
555 return TQuery.getModuleAddressInfo(deviceGroup, deviceContext);
556 }
557 }