/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.eas.opc.hda.dcom;
import com.eas.opc.da.dcom.FileTime;
import org.jinterop.dcom.common.JIException;
import org.jinterop.dcom.core.JIArray;
import org.jinterop.dcom.core.JIPointer;
import org.jinterop.dcom.core.JIStruct;
import org.jinterop.dcom.core.JIVariant;
/**
*
* @author pk
*/
public class OPCHDA_ITEM
{
private final JIStruct struct;
public OPCHDA_ITEM() throws JIException
{
struct = new JIStruct();
struct.addMember(Integer.class); //hClient
struct.addMember(Integer.class); //haAggregate
struct.addMember(Integer.class); //dwCount
struct.addMember(new JIPointer(new JIArray(new FileTime().getStruct(), null, 1, true))); //pftTimeStamps
struct.addMember(new JIPointer(new JIArray(Integer.class, null, 1, true))); //pdwQualities
struct.addMember(new JIPointer(new JIArray(JIVariant.class, null, 1, true))); //pvDataValues
}
public OPCHDA_ITEM(JIStruct struct)
{
this.struct = struct;
}
public int getClientHandle()
{
return (Integer) struct.getMember(0);
}
public int getAggregate()
{
return (Integer) struct.getMember(1);
}
public int getCount()
{
return (Integer) struct.getMember(2);
}
public FileTime[] getTimeStamps()
{
final JIStruct[] times = (JIStruct[]) ((JIArray) ((JIPointer) struct.getMember(3)).getReferent()).getArrayInstance();
final FileTime[] result = new FileTime[times.length];
for (int i=0; i < times.length; i++)
result[i] = new FileTime(times[i]);
return result;
}
public int[] getQualities()
{
final Integer[] q = (Integer[]) ((JIArray) ((JIPointer) struct.getMember(4)).getReferent()).getArrayInstance();
final int[] r = new int[q.length];
for (int i = 0; i < q.length; i++)
r[i] = q[i];
return r;
}
public Object[] getValues() throws JIException
{
final JIVariant[] values = (JIVariant[]) ((JIArray) ((JIPointer) struct.getMember(5)).getReferent()).getArrayInstance();
final Object[] result = new Object[values.length];
for (int i=0; i < values.length; i++)
result[i] = values[i].getObject();
return result;
}
public JIStruct getStruct()
{
return struct;
}
}