/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.eas.opc.da.dcom; import org.jinterop.dcom.common.JIException; import org.jinterop.dcom.core.IJIComObject; import org.jinterop.dcom.core.JIArray; import org.jinterop.dcom.core.JICallBuilder; import org.jinterop.dcom.core.JIComObjectImplWrapper; import org.jinterop.dcom.core.JIFlags; import org.jinterop.dcom.core.JIPointer; import org.jinterop.dcom.core.JIString; /** * * @author pk */ public class IOPCCommon extends JIComObjectImplWrapper { public static final String IID_IOPCCommon = "F31DFDE2-07B6-11d2-B2D8-0060083BA1FB"; private static final int METHOD_INDEX_IOPCCommon_SetLocaleID = 0; private static final int METHOD_INDEX_IOPCCommon_GetLocaleID = 1; private static final int METHOD_INDEX_IOPCCommon_QueryAvailableLocaleIDs = 2; private static final int METHOD_INDEX_IOPCCommon_GetErrorString = 3; private static final int METHOD_INDEX_IOPCCommon_SetClientName = 4; public IOPCCommon(IJIComObject server) throws JIException { super(server.queryInterface(IID_IOPCCommon)); // The interface will become comObject. } public void setLocaleID(int lcid) throws JIException { JICallBuilder callObject = new JICallBuilder(true); callObject.setOpnum(METHOD_INDEX_IOPCCommon_SetLocaleID); callObject.addInParamAsInt(lcid, JIFlags.FLAG_REPRESENTATION_UNSIGNED_INT); comObject.call(callObject); if (callObject.isError()) throw new JIException(callObject.getHRESULT()); } public int getLocaleID() throws JIException { JICallBuilder callObject = new JICallBuilder(true); callObject.setOpnum(METHOD_INDEX_IOPCCommon_GetLocaleID); callObject.addOutParamAsType(Integer.class, JIFlags.FLAG_REPRESENTATION_UNSIGNED_INT); Object[] result = comObject.call(callObject); if (callObject.isError()) throw new JIException(callObject.getHRESULT()); return (Integer) result[0]; } public int[] queryAvailableLocaleIDs() throws JIException { JICallBuilder callObject = new JICallBuilder(true); callObject.setOpnum(METHOD_INDEX_IOPCCommon_QueryAvailableLocaleIDs); callObject.addOutParamAsType(Integer.class, JIFlags.FLAG_REPRESENTATION_UNSIGNED_INT); callObject.addOutParamAsObject(new JIPointer(new JIArray(Integer.class, null, 1, true)), JIFlags.FLAG_NULL); Object[] result = comObject.call(callObject); if (callObject.isError()) throw new JIException(callObject.getHRESULT()); Integer count = (Integer) result[0]; if (count == null) throw new NullPointerException("Count is null"); int[] availLocales = new int[count]; Integer[] returned = (Integer[]) ((JIArray) ((JIPointer) result[1]).getReferent()).getArrayInstance(); for (int i = 0; i < count; i++) availLocales[i] = returned[i]; return availLocales; } public String getErrorString(long errorCode) throws JIException { JICallBuilder callObject = new JICallBuilder(true); callObject.setOpnum(METHOD_INDEX_IOPCCommon_GetErrorString); callObject.addInParamAsInt((int) errorCode, JIFlags.FLAG_NULL); callObject.addOutParamAsObject(new JIPointer(new JIString(JIFlags.FLAG_REPRESENTATION_STRING_LPWSTR)), JIFlags.FLAG_REPRESENTATION_STRING_LPWSTR); // out param ppString Object[] result = comObject.call(callObject); if (callObject.isError()) throw new JIException(callObject.getHRESULT()); return ((JIString) ((JIPointer) result[0]).getReferent()).getString(); } public void setClientName(String name) throws JIException { JICallBuilder callObject = new JICallBuilder(true); callObject.setOpnum(METHOD_INDEX_IOPCCommon_SetClientName); callObject.addInParamAsString(name, JIFlags.FLAG_REPRESENTATION_STRING_LPWSTR); comObject.call(callObject); if (callObject.isError()) throw new JIException(callObject.getHRESULT()); } }