/* * 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.JIFlags; import org.jinterop.dcom.core.JIPointer; import org.jinterop.dcom.core.JIString; import org.jinterop.dcom.core.JIStruct; import org.jinterop.dcom.core.JIVariant; /** * * @author pk */ public class OPCHDA_MODIFIEDITEM { private JIStruct struct; public OPCHDA_MODIFIEDITEM(JIStruct struct) { this.struct = struct; } public OPCHDA_MODIFIEDITEM() throws JIException { struct = new JIStruct(); struct.addMember(Integer.class);//hClient struct.addMember(Integer.class);//dwCount struct.addMember(new JIPointer(new JIArray(new FileTime().getStruct(), null, 1, true))); //pftTimeStamps struct.addMember(new JIPointer(new JIArray(Short.class, null, 1, true))); //pdwQualities struct.addMember(new JIPointer(new JIArray(JIVariant.class, null, 1, true))); //pvDataValues struct.addMember(new JIPointer(new JIArray(new FileTime().getStruct(), null, 1, true))); //pftModificationTimes struct.addMember(new JIPointer(new JIArray(Short.class, null, 1, true))); //pEditType struct.addMember(new JIPointer(new JIArray(new JIString(JIFlags.FLAG_REPRESENTATION_STRING_LPWSTR), null, 1, true)));//szUser } public JIStruct getStruct() { return struct; } public int getClientHandle() { return (Integer) struct.getMember(0); } public int getCount() { return (Integer) struct.getMember(1); } public FileTime[] getTimeStamps() { JIStruct[] structs = (JIStruct[]) ((JIArray) ((JIPointer) struct.getMember(2)).getReferent()).getArrayInstance(); FileTime[] timeStamps = new FileTime[structs.length]; for (int i = 0; i < structs.length; i++) timeStamps[i] = new FileTime(structs[i]); return timeStamps; } public Short[] getQualities() { return (Short[]) ((JIArray) ((JIPointer) struct.getMember(3)).getReferent()).getArrayInstance(); } public Object[] getDataValues() throws JIException { JIVariant[] variants = (JIVariant[]) ((JIArray) ((JIPointer) struct.getMember(4)).getReferent()).getArrayInstance(); Object[] values = new Object[variants.length]; for (int i = 0; i < variants.length; i++) values[i] = variants[i].getObject(); return values; } public FileTime[] getModificationTimes() { JIStruct[] structs = (JIStruct[]) ((JIArray) ((JIPointer) struct.getMember(5)).getReferent()).getArrayInstance(); FileTime[] timeStamps = new FileTime[structs.length]; for (int i = 0; i < structs.length; i++) timeStamps[i] = new FileTime(structs[i]); return timeStamps; } public EditType[] getEditTypes() { Short[] typeIDs = (Short[]) ((JIArray) ((JIPointer) struct.getMember(6)).getReferent()).getArrayInstance(); EditType[] types = new EditType[typeIDs.length]; for (int i = 0; i < typeIDs.length; i++) types[i] = EditType.getEditType(typeIDs[i]); return types; } public String[] getUsers() { JIString[] users = (JIString[]) ((JIArray) ((JIPointer) struct.getMember(6)).getReferent()).getArrayInstance(); String[] r = new String[users.length]; for (int i = 0; i < users.length; i++) r[i] = users[i].getString(); return r; } }