//venu changed dialogueId and stmtId from int to long for 64 bit 
JNIEXPORT void JNICALL Java_org_trafodion_jdbc_t2_SQLMXResultSet_getResultSetInfo
  (JNIEnv *jenv, jobject jobj, jlong dialogueId, jlong stmtId, jobject RSInfo)
{
	FUNCTION_ENTRY_LEVEL(DEBUG_LEVEL_STMT,"Java_org_trafodion_jdbc_t2_SQLMXResultSet_getResultSetInfo",
		("dialogueId=0x%08x, stmtId=0x%08x, RSInfo=0x%08x",
		dialogueId,
		stmtId,
		RSInfo));

	SQLCTX_HANDLE	ctxHandle;
	SRVR_STMT_HDL	*pSrvrStmt;
	long			sqlcode;

	// Get the Statement ID
	if ((pSrvrStmt = getSrvrStmt(dialogueId, stmtId, &sqlcode)) == NULL)
	{
		/*
		* Start Solution No. 10-100412-9447
		*/
		// Set the Field ID 
		//Start Solution No.: 10-091103-5969
		DEBUG_OUT(DEBUG_LEVEL_STMT,("getResultSetInfo() &pSrvrStmt->stmt: 0x%08x", 0));
		//End Solution No.: 10-091103-5969
		JNI_SetIntField(jenv, RSInfo, gJNICache.SPJRS_stmtIDFieldID, (jint)(0));
		// Set the CTXHandle, this is same as the dialogId.
		DEBUG_OUT(DEBUG_LEVEL_STMT,("getResultSetInfo() ctxHandle: 0x%08x", dialogueId));
		JNI_SetIntField(jenv, RSInfo, gJNICache.SPJRS_ctxHandleFieldID, (jint)(dialogueId));
		// Set the CLI statement closure status to the java variable
		DEBUG_OUT(DEBUG_LEVEL_STMT,("getResultSetInfo() pSrvrStmt->isClosed: 0x%08x", JNI_TRUE)); //10-060831-8723
		JNI_SetBooleanField(jenv, RSInfo, gJNICache.SPJRS_stmtClosedFieldID, (jint)(JNI_TRUE));  //10-060831-8723
		/*
		* End Solution No. 10-100412-9447
		*/
		// Variable initialized to zero in calling routine, so 
		// if getting pSrvrStmt fails, just return w/o setting
		DEBUG_OUT(DEBUG_LEVEL_STMT,("getResultSetInfo() getSrvrStmt() failed"));
		FUNCTION_RETURN_VOID((NULL));
	} 
	
	// Set the Field ID 
	DEBUG_OUT(DEBUG_LEVEL_STMT,("getResultSetInfo() &pSrvrStmt->stmt: 0x%08x", &(pSrvrStmt->stmt)));
	JNI_SetIntField(jenv, RSInfo, gJNICache.SPJRS_stmtIDFieldID, (jlong)&(pSrvrStmt->stmt));

	// Get the Current Context Handle
	ctxHandle = pSrvrStmt->getContext();
	if (ctxHandle == 0)		// getContext() failed
	{
		// if ctxHandle = 0, call failed to obtain current context, rtn w/o setting
		DEBUG_OUT(DEBUG_LEVEL_STMT,("getResultSetInfo() ctxHandle failed ctxHandle: 0x%08x", ctxHandle));
		FUNCTION_RETURN_VOID((NULL));
	} 
	DEBUG_OUT(DEBUG_LEVEL_STMT,("getResultSetInfo() ctxHandle: 0x%08x", ctxHandle));
	JNI_SetIntField(jenv, RSInfo, gJNICache.SPJRS_ctxHandleFieldID, (jint)(ctxHandle));

	// Set the CLI statement closure status to the java variable
	DEBUG_OUT(DEBUG_LEVEL_STMT,("getResultSetInfo() pSrvrStmt->isClosed: 0x%08x", pSrvrStmt->isClosed)); //10-060831-8723
	JNI_SetBooleanField(jenv, RSInfo, gJNICache.SPJRS_stmtClosedFieldID, (jint)(pSrvrStmt->isClosed));  //10-060831-8723
	FUNCTION_RETURN_VOID((NULL));
}
Ejemplo n.º 2
0
bool SysUtil::StatEventValue(const char* szEventID, const char* szEventLabel, TCAgentHelper& refAgentHelper, long lVal)
{
	CCLog("TCAgentEvent:%s,%s,%d", szEventID, szEventLabel, lVal);
	JniMethodInfo t;
	if(JniHelper::getStaticMethodInfo(t, CLASS_NAME, "rtnObject", "()Ljava/lang/Object;"))
	{
		jobject jobj;
		jobj = t.env->CallStaticObjectMethod(t.classID, t.methodID);
		
		if(JniHelper::getMethodInfo(t, CLASS_NAME, "TCAgentEvent", "(Ljava/lang/String;Ljava/lang/String;[Lcom/ourgame/common/JniTCAgentVal;J)V"))
		{
			jclass objClass = t.env->FindClass("com/ourgame/common/JniTCAgentVal");
			jmethodID jmcons = t.env->GetMethodID(objClass, "<init>", "()V");
			
			std::vector<TCAgentHelper::TCAgentVal>& vtVal = refAgentHelper.m_vtVal;
			int nNum = vtVal.size();
			CCLog("Num:%d", nNum);
			jobjectArray jayVal;
			jayVal = t.env->NewObjectArray(nNum, objClass, 0);
			int i = 0;
			vector<TCAgentHelper::TCAgentVal>::iterator it;
			for(it = vtVal.begin(); it != vtVal.end(); it++, i++)
			{
				TCAgentHelper::TCAgentVal& v = *it;
				jobject jobjVal = t.env->NewObject(objClass, jmcons);
				
				JNI_SetStringField(t.env, objClass, jobjVal, "strKey", v.szKey);
				JNI_SetIntField(t.env, objClass, jobjVal, "nType", (jint)v.nType);
				switch(v.nType)
				{
					case TCAgentHelper::TCAVT_STRING:
						JNI_SetStringField(t.env, objClass, jobjVal, "strVal", v.szVal);
						break;
					case TCAgentHelper::TCAVT_INT:
						JNI_SetIntField(t.env, objClass, jobjVal, "nVal", (jint)v.nVal);
						break;
					case TCAgentHelper::TCAVT_FLOAT:
						JNI_SetFloatField(t.env, objClass, jobjVal, "fVal", (jfloat)v.fVal);
						break;
				}
				
				t.env->SetObjectArrayElement(jayVal, i, jobjVal);
			}
			jstring jstrEventID = t.env->NewStringUTF(szEventID);
			jstring jstrEventLabel = t.env->NewStringUTF(szEventLabel);
			t.env->CallVoidMethod(jobj, t.methodID, jstrEventID, jstrEventLabel, jayVal, (jlong)lVal);
			t.env->DeleteLocalRef(jstrEventID);
			t.env->DeleteLocalRef(jstrEventLabel);
			t.env->DeleteLocalRef(jayVal);
			
			return true;
		}
	}
	
	return false;
	
}