From 44ba02b8b49ddd1e5039c5c04cc8eeeb7fa8615c Mon Sep 17 00:00:00 2001 From: dsandersoremutah Date: Wed, 16 Aug 2006 21:56:40 +0000 Subject: [PATCH] Added methods for the DOMNode class. git-svn-id: https://svn.code.sf.net/p/flaim/code/trunk@771 0109f412-320b-0410-ab79-c3e0c5ffbbe6 --- xflaim/java/jni/jdomnode.cpp | 1116 +++++++++++++++++++++-------- xflaim/java/jni/xflaim_DOMNode.h | 172 ++++- xflaim/java/xflaim/DOMNode.java | 1119 ++++++++++++++++++++---------- 3 files changed, 1756 insertions(+), 651 deletions(-) diff --git a/xflaim/java/jni/jdomnode.cpp b/xflaim/java/jni/jdomnode.cpp index 5d23aef..14129c9 100644 --- a/xflaim/java/jni/jdomnode.cpp +++ b/xflaim/java/jni/jdomnode.cpp @@ -27,8 +27,7 @@ #include "xflaim_DOMNode.h" #include "jniftk.h" -#define THIS_NODE() \ - ((IF_DOMNode *)(FLMUINT)lThis) +#define THIS_NODE() ((IF_DOMNode *)((FLMUINT)lThis)) /**************************************************************************** Desc: @@ -37,7 +36,7 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1createNode( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef, + jlong lDbRef, jint iNodeType, jint iNameId, jint iInsertLoc, @@ -45,16 +44,13 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1createNode( { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; - IF_DOMNode * ifpNewNode = NULL; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + IF_DOMNode * pNewNode = lReusedNodeRef + ? (IF_DOMNode *)((FLMUINT)lReusedNodeRef) + : NULL; - if (lReusedNodeRef) - { - ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef; - } - - if( RC_BAD( rc = pThisNode->createNode( ifpDb, (eDomNodeType)iNodeType, - (FLMUINT)iNameId, (eNodeInsertLoc)iInsertLoc, &ifpNewNode, NULL))) + if( RC_BAD( rc = pThisNode->createNode( pDb, (eDomNodeType)iNodeType, + (FLMUINT)iNameId, (eNodeInsertLoc)iInsertLoc, &pNewNode, NULL))) { ThrowError( rc, pEnv); goto Exit; @@ -62,7 +58,40 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1createNode( Exit: - return( (jlong)((FLMUINT)ifpNewNode)); + return( (jlong)((FLMUINT)pNewNode)); +} + +/**************************************************************************** +Desc: +****************************************************************************/ +JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1createChildElement( + JNIEnv * pEnv, + jobject, // obj, + jlong lThis, + jlong lDbRef, + jint iChildElementNameId, + jboolean bFirstChild, + jlong lReusedNodeRef) +{ + RCODE rc = NE_XFLM_OK; + IF_DOMNode * pThisNode = THIS_NODE(); + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + IF_DOMNode * pNewNode = lReusedNodeRef + ? (IF_DOMNode *)((FLMUINT)lReusedNodeRef) + : NULL; + + if( RC_BAD( rc = pThisNode->createChildElement( pDb, + (FLMUINT)iChildElementNameId, + (eNodeInsertLoc)(bFirstChild ? XFLM_FIRST_CHILD : XFLM_LAST_CHILD), + &pNewNode, NULL))) + { + ThrowError( rc, pEnv); + goto Exit; + } + +Exit: + + return( (jlong)((FLMUINT)pNewNode)); } /**************************************************************************** @@ -72,13 +101,13 @@ JNIEXPORT void JNICALL Java_xflaim_DOMNode__1deleteNode( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); - if (RC_BAD( rc = pNode->deleteNode( ifpDb))) + if (RC_BAD( rc = pNode->deleteNode( pDb))) { ThrowError( rc, pEnv); goto Exit; @@ -96,13 +125,13 @@ JNIEXPORT void JNICALL Java_xflaim_DOMNode__1deleteChildren( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); - if (RC_BAD( rc = pNode->deleteChildren( ifpDb))) + if (RC_BAD( rc = pNode->deleteChildren( pDb))) { ThrowError( rc, pEnv); goto Exit; @@ -131,22 +160,19 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1createAttribute( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef, + jlong lDbRef, jint iNameId, jlong lReusedNodeRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; - IF_DOMNode * ifpNewNode = NULL; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + IF_DOMNode * pNewNode = lReusedNodeRef + ? (IF_DOMNode *)((FLMUINT)lReusedNodeRef) + : NULL; - if (lReusedNodeRef) - { - ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef; - } - - if( RC_BAD( rc = pThisNode->createAttribute( ifpDb, - (FLMUINT)iNameId, &ifpNewNode))) + if( RC_BAD( rc = pThisNode->createAttribute( pDb, + (FLMUINT)iNameId, &pNewNode))) { ThrowError( rc, pEnv); goto Exit; @@ -154,7 +180,7 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1createAttribute( Exit: - return( (jlong)((FLMUINT)ifpNewNode)); + return( (jlong)((FLMUINT)pNewNode)); } /**************************************************************************** @@ -164,20 +190,17 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getFirstAttribute( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef, + jlong lDbRef, jlong lReusedNodeRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; - IF_DOMNode * ifpNewNode = NULL; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + IF_DOMNode * pNewNode = lReusedNodeRef + ? (IF_DOMNode *)((FLMUINT)lReusedNodeRef) + : NULL; - if (lReusedNodeRef) - { - ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef; - } - - if ( RC_BAD( rc = pThisNode->getFirstAttribute( ifpDb, &ifpNewNode))) + if ( RC_BAD( rc = pThisNode->getFirstAttribute( pDb, &pNewNode))) { ThrowError( rc, pEnv); goto Exit; @@ -185,7 +208,7 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getFirstAttribute( Exit: - return( (jlong)((FLMUINT)ifpNewNode)); + return( (jlong)((FLMUINT)pNewNode)); } /**************************************************************************** @@ -195,20 +218,17 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getLastAttribute( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef, + jlong lDbRef, jlong lReusedNodeRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; - IF_DOMNode * ifpNewNode = NULL; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + IF_DOMNode * pNewNode = lReusedNodeRef + ? (IF_DOMNode *)((FLMUINT)lReusedNodeRef) + : NULL; - if (lReusedNodeRef) - { - ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef; - } - - if ( RC_BAD( rc = pThisNode->getLastAttribute( ifpDb, &ifpNewNode))) + if ( RC_BAD( rc = pThisNode->getLastAttribute( pDb, &pNewNode))) { ThrowError( rc, pEnv); goto Exit; @@ -216,7 +236,7 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getLastAttribute( Exit: - return( (jlong)((FLMUINT)ifpNewNode)); + return( (jlong)((FLMUINT)pNewNode)); } /**************************************************************************** @@ -226,22 +246,19 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getAttribute( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef, + jlong lDbRef, jint iAttributeId, jlong lReusedNodeRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; - IF_DOMNode * ifpNewNode = NULL; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + IF_DOMNode * pNewNode = lReusedNodeRef + ? (IF_DOMNode *)((FLMUINT)lReusedNodeRef) + : NULL; - if (lReusedNodeRef) - { - ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef; - } - - if( RC_BAD( rc = pThisNode->getAttribute( ifpDb, (FLMUINT)iAttributeId, - &ifpNewNode))) + if( RC_BAD( rc = pThisNode->getAttribute( pDb, (FLMUINT)iAttributeId, + &pNewNode))) { ThrowError( rc, pEnv); goto Exit; @@ -249,7 +266,7 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getAttribute( Exit: - return( (jlong)((FLMUINT)ifpNewNode)); + return( (jlong)((FLMUINT)pNewNode)); } /**************************************************************************** @@ -259,14 +276,14 @@ JNIEXPORT void JNICALL Java_xflaim_DOMNode__1deleteAttribute( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef, + jlong lDbRef, jint iAttributeId) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); - if (RC_BAD( rc = pThisNode->deleteAttribute( ifpDb, (FLMUINT)iAttributeId))) + if (RC_BAD( rc = pThisNode->deleteAttribute( pDb, (FLMUINT)iAttributeId))) { ThrowError( rc, pEnv); goto Exit; @@ -284,19 +301,19 @@ JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1hasAttribute( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef, + jlong lDbRef, jint iAttributeId) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; - jboolean bRv = false; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + jboolean bRv = JNI_FALSE; - rc = pThisNode->hasAttribute( ifpDb, (FLMUINT)iAttributeId, NULL); + rc = pThisNode->hasAttribute( pDb, (FLMUINT)iAttributeId, NULL); if (RC_OK( rc)) { - bRv = true; + bRv = JNI_TRUE; } else if (rc != NE_XFLM_DOM_NODE_NOT_FOUND) { @@ -316,14 +333,14 @@ JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1hasAttributes( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMBOOL bHasAttr = FALSE; - if( RC_BAD( rc = pThisNode->hasAttributes( ifpDb, &bHasAttr))) + if( RC_BAD( rc = pThisNode->hasAttributes( pDb, &bHasAttr))) { ThrowError( rc, pEnv); goto Exit; @@ -331,7 +348,7 @@ JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1hasAttributes( Exit: - return( bHasAttr ? true : false); + return( bHasAttr ? JNI_TRUE : JNI_FALSE); } /**************************************************************************** @@ -341,14 +358,14 @@ JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1hasNextSibling( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMBOOL bHasNextSib = FALSE; - if (RC_BAD( rc = pThisNode->hasNextSibling( ifpDb, &bHasNextSib))) + if (RC_BAD( rc = pThisNode->hasNextSibling( pDb, &bHasNextSib))) { ThrowError( rc, pEnv); goto Exit; @@ -356,7 +373,7 @@ JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1hasNextSibling( Exit: - return( bHasNextSib ? true : false); + return( bHasNextSib ? JNI_TRUE : JNI_FALSE); } /**************************************************************************** @@ -366,14 +383,14 @@ JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1hasPreviousSibling( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMBOOL bHasPreviousSib = FALSE; - if (RC_BAD( rc = pThisNode->hasPreviousSibling( ifpDb, &bHasPreviousSib))) + if (RC_BAD( rc = pThisNode->hasPreviousSibling( pDb, &bHasPreviousSib))) { ThrowError( rc, pEnv); goto Exit; @@ -381,7 +398,7 @@ JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1hasPreviousSibling( Exit: - return( bHasPreviousSib ? true : false); + return( bHasPreviousSib ? JNI_TRUE : JNI_FALSE); } /**************************************************************************** @@ -391,14 +408,14 @@ JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1hasChildren( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMBOOL bHasChild = FALSE; - if (RC_BAD( rc = pThisNode->hasChildren( ifpDb, &bHasChild))) + if (RC_BAD( rc = pThisNode->hasChildren( pDb, &bHasChild))) { ThrowError( rc, pEnv); goto Exit; @@ -406,7 +423,7 @@ JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1hasChildren( Exit: - return( bHasChild ? true : false); + return( bHasChild ? JNI_TRUE : JNI_FALSE); } /**************************************************************************** @@ -416,14 +433,14 @@ JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1isNamespaceDecl( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMBOOL bIsDecl = FALSE; - if (RC_BAD( rc = pThisNode->isNamespaceDecl( ifpDb, &bIsDecl))) + if (RC_BAD( rc = pThisNode->isNamespaceDecl( pDb, &bIsDecl))) { ThrowError( rc, pEnv); goto Exit; @@ -431,7 +448,35 @@ JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1isNamespaceDecl( Exit: - return( bIsDecl ? true : false); + return( bIsDecl ? JNI_TRUE : JNI_FALSE); +} + +/**************************************************************************** +Desc: +****************************************************************************/ +JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getDocumentNode( + JNIEnv * pEnv, + jobject, // obj, + jlong lThis, + jlong lDbRef, + jlong lReusedNodeRef) +{ + RCODE rc = NE_XFLM_OK; + IF_DOMNode * pThisNode = THIS_NODE(); + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + IF_DOMNode * pNewNode = lReusedNodeRef + ? (IF_DOMNode *)((FLMUINT)lReusedNodeRef) + : NULL; + + if (RC_BAD( rc = pThisNode->getDocumentNode( pDb, &pNewNode))) + { + ThrowError( rc, pEnv); + goto Exit; + } + +Exit: + + return( (jlong)((FLMUINT)pNewNode)); } /**************************************************************************** @@ -441,20 +486,17 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getParentNode( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef, + jlong lDbRef, jlong lReusedNodeRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; - IF_DOMNode * ifpNewNode = NULL; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + IF_DOMNode * pNewNode = lReusedNodeRef + ? (IF_DOMNode *)((FLMUINT)lReusedNodeRef) + : NULL; - if (lReusedNodeRef) - { - ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef; - } - - if (RC_BAD( rc = pThisNode->getParentNode( ifpDb, &ifpNewNode))) + if (RC_BAD( rc = pThisNode->getParentNode( pDb, &pNewNode))) { ThrowError( rc, pEnv); goto Exit; @@ -462,7 +504,7 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getParentNode( Exit: - return( (jlong)(FLMUINT)ifpNewNode); + return( (jlong)((FLMUINT)pNewNode)); } /**************************************************************************** @@ -472,20 +514,17 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getFirstChild( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef, + jlong lDbRef, jlong lReusedNodeRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; - IF_DOMNode * ifpNewNode = NULL; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + IF_DOMNode * pNewNode = lReusedNodeRef + ? (IF_DOMNode *)((FLMUINT)lReusedNodeRef) + : NULL; - if (lReusedNodeRef) - { - ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef; - } - - if (RC_BAD( rc = pThisNode->getFirstChild( ifpDb, &ifpNewNode))) + if (RC_BAD( rc = pThisNode->getFirstChild( pDb, &pNewNode))) { ThrowError( rc, pEnv); goto Exit; @@ -493,7 +532,7 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getFirstChild( Exit: - return( (jlong)(FLMUINT)ifpNewNode); + return( (jlong)((FLMUINT)pNewNode)); } /**************************************************************************** @@ -503,20 +542,17 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getLastChild( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef, + jlong lDbRef, jlong lReusedNodeRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; - IF_DOMNode * ifpNewNode = NULL; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + IF_DOMNode * pNewNode = lReusedNodeRef + ? (IF_DOMNode *)((FLMUINT)lReusedNodeRef) + : NULL; - if (lReusedNodeRef) - { - ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef; - } - - if (RC_BAD( rc = pThisNode->getLastChild( ifpDb, &ifpNewNode))) + if (RC_BAD( rc = pThisNode->getLastChild( pDb, &pNewNode))) { ThrowError( rc, pEnv); goto Exit; @@ -524,7 +560,7 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getLastChild( Exit: - return( (jlong)(FLMUINT)ifpNewNode); + return( (jlong)((FLMUINT)pNewNode)); } /**************************************************************************** @@ -534,20 +570,17 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getPreviousSibling( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef, + jlong lDbRef, jlong lReusedNodeRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = (IF_DOMNode *)(FLMUINT)lThis; - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; - IF_DOMNode * ifpNewNode = NULL; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + IF_DOMNode * pNewNode = lReusedNodeRef + ? (IF_DOMNode *)((FLMUINT)lReusedNodeRef) + : NULL; - if (lReusedNodeRef) - { - ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef; - } - - if (RC_BAD( rc = pThisNode->getPreviousSibling( ifpDb, &ifpNewNode))) + if (RC_BAD( rc = pThisNode->getPreviousSibling( pDb, &pNewNode))) { ThrowError( rc, pEnv); goto Exit; @@ -555,7 +588,7 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getPreviousSibling( Exit: - return( (jlong)(FLMUINT)ifpNewNode); + return( (jlong)((FLMUINT)pNewNode)); } /**************************************************************************** @@ -565,20 +598,17 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getNextSibling( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef, + jlong lDbRef, jlong lReusedNodeRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; - IF_DOMNode * ifpNewNode = NULL; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + IF_DOMNode * pNewNode = lReusedNodeRef + ? (IF_DOMNode *)((FLMUINT)lReusedNodeRef) + : NULL; - if (lReusedNodeRef) - { - ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef; - } - - if (RC_BAD( rc = pThisNode->getNextSibling( ifpDb, &ifpNewNode))) + if (RC_BAD( rc = pThisNode->getNextSibling( pDb, &pNewNode))) { ThrowError( rc, pEnv); goto Exit; @@ -586,7 +616,7 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getNextSibling( Exit: - return( (jlong)(FLMUINT)ifpNewNode); + return( (jlong)((FLMUINT)pNewNode)); } /**************************************************************************** @@ -596,20 +626,17 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getPreviousDocument( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef, + jlong lDbRef, jlong lReusedNodeRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; - IF_DOMNode * ifpNewNode = NULL; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + IF_DOMNode * pNewNode = lReusedNodeRef + ? (IF_DOMNode *)((FLMUINT)lReusedNodeRef) + : NULL; - if (lReusedNodeRef) - { - ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef; - } - - if (RC_BAD( rc = pThisNode->getPreviousDocument( ifpDb, &ifpNewNode))) + if (RC_BAD( rc = pThisNode->getPreviousDocument( pDb, &pNewNode))) { ThrowError( rc, pEnv); goto Exit; @@ -617,7 +644,7 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getPreviousDocument( Exit: - return( (jlong)(FLMUINT)ifpNewNode); + return( (jlong)((FLMUINT)pNewNode)); } /**************************************************************************** @@ -627,20 +654,17 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getNextDocument( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef, + jlong lDbRef, jlong lReusedNodeRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; - IF_DOMNode * ifpNewNode = NULL; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + IF_DOMNode * pNewNode = lReusedNodeRef + ? (IF_DOMNode *)((FLMUINT)lReusedNodeRef) + : NULL; - if (lReusedNodeRef) - { - ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef; - } - - if (RC_BAD( rc = pThisNode->getNextDocument( ifpDb, &ifpNewNode))) + if (RC_BAD( rc = pThisNode->getNextDocument( pDb, &pNewNode))) { ThrowError( rc, pEnv); goto Exit; @@ -648,7 +672,7 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getNextDocument( Exit: - return( (jlong)(FLMUINT)ifpNewNode); + return( (jlong)((FLMUINT)pNewNode)); } /**************************************************************************** @@ -658,18 +682,18 @@ JNIEXPORT jstring JNICALL Java_xflaim_DOMNode__1getPrefix( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMUNICODE uzPrefix[ 128]; FLMUNICODE * puzPrefix = uzPrefix; FLMUINT uiBufSize = sizeof( uzPrefix); FLMUINT uiNumChars; jstring sPrefix = NULL; - if (RC_BAD( rc = pThisNode->getPrefix( ifpDb, + if (RC_BAD( rc = pThisNode->getPrefix( pDb, (FLMUNICODE *)NULL, 0, &uiNumChars))) { ThrowError( rc, pEnv); @@ -687,7 +711,7 @@ JNIEXPORT jstring JNICALL Java_xflaim_DOMNode__1getPrefix( } } - if (RC_BAD( rc = pThisNode->getPrefix( ifpDb, puzPrefix, uiBufSize, NULL))) + if (RC_BAD( rc = pThisNode->getPrefix( pDb, puzPrefix, uiBufSize, NULL))) { ThrowError( rc, pEnv); goto Exit; @@ -705,6 +729,113 @@ Exit: return( sPrefix); } +/**************************************************************************** +Desc: +****************************************************************************/ +JNIEXPORT jint JNICALL Java_xflaim_DOMNode__1getPrefixId( + JNIEnv * pEnv, + jobject, // obj, + jlong lThis, + jlong lDbRef) +{ + RCODE rc = NE_XFLM_OK; + IF_DOMNode * pThisNode = THIS_NODE(); + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + FLMUINT uiPrefixId = 0; + + if (RC_BAD( rc = pThisNode->getPrefixId( pDb, &uiPrefixId))) + { + ThrowError( rc, pEnv); + goto Exit; + } + +Exit: + + return( (jint)uiPrefixId); +} + +/**************************************************************************** +Desc: +****************************************************************************/ +JNIEXPORT jint JNICALL Java_xflaim_DOMNode__1getEncDefId( + JNIEnv * pEnv, + jobject, // obj, + jlong lThis, + jlong lDbRef) +{ + RCODE rc = NE_XFLM_OK; + IF_DOMNode * pThisNode = THIS_NODE(); + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + FLMUINT uiEncDefId = 0; + + if (RC_BAD( rc = pThisNode->getEncDefId( pDb, &uiEncDefId))) + { + ThrowError( rc, pEnv); + goto Exit; + } + +Exit: + + return( (jint)uiEncDefId); +} + +/**************************************************************************** +Desc: +****************************************************************************/ +JNIEXPORT void JNICALL Java_xflaim_DOMNode__1setPrefix( + JNIEnv * pEnv, + jobject, // obj, + jlong lThis, + jlong lDbRef, + jstring sPrefix) +{ + RCODE rc = NE_XFLM_OK; + IF_DOMNode * pThisNode = THIS_NODE(); + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + FLMBYTE ucPrefix [256]; + F_DynaBuf prefixBuf( ucPrefix, sizeof( ucPrefix)); + + if (RC_BAD( rc = getUniString( pEnv, sPrefix, &prefixBuf))) + { + ThrowError( rc, pEnv); + goto Exit; + } + if (RC_BAD( rc = pThisNode->setPrefix( pDb, prefixBuf.getUnicodePtr()))) + { + ThrowError( rc, pEnv); + goto Exit; + } + +Exit: + + return; +} + +/**************************************************************************** +Desc: +****************************************************************************/ +JNIEXPORT void JNICALL Java_xflaim_DOMNode__1setPrefixId( + JNIEnv * pEnv, + jobject, // obj, + jlong lThis, + jlong lDbRef, + jint iPrefixId) +{ + RCODE rc = NE_XFLM_OK; + IF_DOMNode * pThisNode = THIS_NODE(); + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + + if (RC_BAD( rc = pThisNode->setPrefixId( pDb, (FLMUINT)iPrefixId))) + { + ThrowError( rc, pEnv); + goto Exit; + } + +Exit: + + return; +} + /**************************************************************************** Desc: ****************************************************************************/ @@ -712,22 +843,19 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getChildElement( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef, + jlong lDbRef, jint iNameId, jlong lReusedNodeRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; - IF_DOMNode * ifpNewNode = NULL; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + IF_DOMNode * pNewNode = lReusedNodeRef + ? (IF_DOMNode *)((FLMUINT)lReusedNodeRef) + : NULL; - if (lReusedNodeRef) - { - ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef; - } - - if (RC_BAD( rc = pThisNode->getChildElement( ifpDb, - (FLMUINT)iNameId, &ifpNewNode))) + if (RC_BAD( rc = pThisNode->getChildElement( pDb, + (FLMUINT)iNameId, &pNewNode))) { ThrowError( rc, pEnv); goto Exit; @@ -735,7 +863,7 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getChildElement( Exit: - return( (jlong)(FLMUINT)ifpNewNode); + return( (jlong)((FLMUINT)pNewNode)); } /**************************************************************************** @@ -745,23 +873,20 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getSiblingElement( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef, + jlong lDbRef, jint iNameId, jboolean bNext, jlong lReusedNodeRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; - IF_DOMNode * ifpNewNode = NULL; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + IF_DOMNode * pNewNode = lReusedNodeRef + ? (IF_DOMNode *)((FLMUINT)lReusedNodeRef) + : NULL; - if (lReusedNodeRef) - { - ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef; - } - - if (RC_BAD( rc = pThisNode->getSiblingElement( ifpDb, - (FLMUINT)iNameId, bNext ? TRUE : FALSE, &ifpNewNode))) + if (RC_BAD( rc = pThisNode->getSiblingElement( pDb, + (FLMUINT)iNameId, bNext ? TRUE : FALSE, &pNewNode))) { ThrowError( rc, pEnv); goto Exit; @@ -769,7 +894,67 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getSiblingElement( Exit: - return( (jlong)(FLMUINT)ifpNewNode); + return( (jlong)((FLMUINT)pNewNode)); +} + +/**************************************************************************** +Desc: +****************************************************************************/ +JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getAncestorElement( + JNIEnv * pEnv, + jobject, // obj, + jlong lThis, + jlong lDbRef, + jint iNameId, + jlong lReusedNodeRef) +{ + RCODE rc = NE_XFLM_OK; + IF_DOMNode * pThisNode = THIS_NODE(); + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + IF_DOMNode * pNewNode = lReusedNodeRef + ? (IF_DOMNode *)((FLMUINT)lReusedNodeRef) + : NULL; + + if (RC_BAD( rc = pThisNode->getAncestorElement( pDb, + (FLMUINT)iNameId, &pNewNode))) + { + ThrowError( rc, pEnv); + goto Exit; + } + +Exit: + + return( (jlong)((FLMUINT)pNewNode)); +} + +/**************************************************************************** +Desc: +****************************************************************************/ +JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getDescendantElement( + JNIEnv * pEnv, + jobject, // obj, + jlong lThis, + jlong lDbRef, + jint iNameId, + jlong lReusedNodeRef) +{ + RCODE rc = NE_XFLM_OK; + IF_DOMNode * pThisNode = THIS_NODE(); + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + IF_DOMNode * pNewNode = lReusedNodeRef + ? (IF_DOMNode *)((FLMUINT)lReusedNodeRef) + : NULL; + + if (RC_BAD( rc = pThisNode->getDescendantElement( pDb, + (FLMUINT)iNameId, &pNewNode))) + { + ThrowError( rc, pEnv); + goto Exit; + } + +Exit: + + return( (jlong)((FLMUINT)pNewNode)); } /**************************************************************************** @@ -779,14 +964,14 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getParentId( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMUINT64 ui64Id; - if (RC_BAD( rc = pThisNode->getParentId( ifpDb, &ui64Id))) + if (RC_BAD( rc = pThisNode->getParentId( pDb, &ui64Id))) { ThrowError( rc, pEnv); goto Exit; @@ -804,14 +989,14 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getNodeId( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMUINT64 ui64Id; - if (RC_BAD( rc = pThisNode->getNodeId( ifpDb, &ui64Id))) + if (RC_BAD( rc = pThisNode->getNodeId( pDb, &ui64Id))) { ThrowError( rc, pEnv); goto Exit; @@ -829,14 +1014,14 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getDocumentId( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMUINT64 ui64Id; - if (RC_BAD( rc = pThisNode->getDocumentId( ifpDb, &ui64Id))) + if (RC_BAD( rc = pThisNode->getDocumentId( pDb, &ui64Id))) { ThrowError( rc, pEnv); goto Exit; @@ -854,14 +1039,14 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getPrevSibId( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMUINT64 ui64Id; - if (RC_BAD( rc = pThisNode->getPrevSibId( ifpDb, &ui64Id))) + if (RC_BAD( rc = pThisNode->getPrevSibId( pDb, &ui64Id))) { ThrowError( rc, pEnv); goto Exit; @@ -879,14 +1064,14 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getNextSibId( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMUINT64 ui64Id; - if (RC_BAD( rc = pThisNode->getNextSibId( ifpDb, &ui64Id))) + if (RC_BAD( rc = pThisNode->getNextSibId( pDb, &ui64Id))) { ThrowError( rc, pEnv); goto Exit; @@ -904,14 +1089,14 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getFirstChildId( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMUINT64 ui64Id; - if (RC_BAD( rc = pThisNode->getFirstChildId( ifpDb, &ui64Id))) + if (RC_BAD( rc = pThisNode->getFirstChildId( pDb, &ui64Id))) { ThrowError( rc, pEnv); goto Exit; @@ -929,14 +1114,14 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getLastChildId( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMUINT64 ui64Id; - if (RC_BAD( rc = pThisNode->getLastChildId( ifpDb, &ui64Id))) + if (RC_BAD( rc = pThisNode->getLastChildId( pDb, &ui64Id))) { ThrowError( rc, pEnv); goto Exit; @@ -954,14 +1139,14 @@ JNIEXPORT jint JNICALL Java_xflaim_DOMNode__1getNameId( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMUINT uiId; - if (RC_BAD( rc = pThisNode->getNameId( ifpDb, &uiId))) + if (RC_BAD( rc = pThisNode->getNameId( pDb, &uiId))) { ThrowError( rc, pEnv); goto Exit; @@ -979,18 +1164,18 @@ JNIEXPORT jstring JNICALL Java_xflaim_DOMNode__1getNamespaceURI( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMUNICODE uzNamespaceURI[ 128]; FLMUNICODE * puzNamespaceURI = uzNamespaceURI; FLMUINT uiBufSize = sizeof( uzNamespaceURI); FLMUINT uiNumChars; jstring sNamespaceURI = NULL; - if (RC_BAD( rc = pThisNode->getNamespaceURI( ifpDb, + if (RC_BAD( rc = pThisNode->getNamespaceURI( pDb, (FLMUNICODE *)NULL, 0, &uiNumChars))) { ThrowError( rc, pEnv); @@ -1008,7 +1193,7 @@ JNIEXPORT jstring JNICALL Java_xflaim_DOMNode__1getNamespaceURI( } } - if (RC_BAD( rc = pThisNode->getNamespaceURI( ifpDb, puzNamespaceURI, + if (RC_BAD( rc = pThisNode->getNamespaceURI( pDb, puzNamespaceURI, uiBufSize, NULL))) { ThrowError( rc, pEnv); @@ -1034,18 +1219,18 @@ JNIEXPORT jstring JNICALL Java_xflaim_DOMNode__1getLocalName( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = (IF_DOMNode *)(FLMUINT)lThis; - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMUNICODE uzLocalName[ 128]; FLMUNICODE * puzLocalName = uzLocalName; FLMUINT uiBufSize = sizeof(uzLocalName); FLMUINT uiNumChars; jstring sLocalName = NULL; - if (RC_BAD( rc = pThisNode->getLocalName( ifpDb, (FLMUNICODE *)NULL, + if (RC_BAD( rc = pThisNode->getLocalName( pDb, (FLMUNICODE *)NULL, 0, &uiNumChars))) { ThrowError( rc, pEnv); @@ -1063,7 +1248,7 @@ JNIEXPORT jstring JNICALL Java_xflaim_DOMNode__1getLocalName( } } - if (RC_BAD( rc = pThisNode->getLocalName( ifpDb, puzLocalName, + if (RC_BAD( rc = pThisNode->getLocalName( pDb, puzLocalName, uiBufSize, NULL))) { ThrowError( rc, pEnv); @@ -1089,18 +1274,18 @@ JNIEXPORT jstring JNICALL Java_xflaim_DOMNode__1getQualifiedName( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = (IF_DOMNode *)(FLMUINT)lThis; - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMUNICODE uzQualName[ 128]; FLMUNICODE * puzQualName = uzQualName; FLMUINT uiNumChars; FLMUINT uiBufSize = sizeof( uzQualName); jstring sLocalName = NULL; - if (RC_BAD( rc = pThisNode->getQualifiedName( ifpDb, (FLMUNICODE *)NULL, + if (RC_BAD( rc = pThisNode->getQualifiedName( pDb, (FLMUNICODE *)NULL, 0, &uiNumChars))) { ThrowError( rc, pEnv); @@ -1118,7 +1303,7 @@ JNIEXPORT jstring JNICALL Java_xflaim_DOMNode__1getQualifiedName( } } - if (RC_BAD( rc = pThisNode->getQualifiedName( ifpDb, puzQualName, + if (RC_BAD( rc = pThisNode->getQualifiedName( pDb, puzQualName, uiBufSize, NULL))) { ThrowError( rc, pEnv); @@ -1144,14 +1329,14 @@ JNIEXPORT jint JNICALL Java_xflaim_DOMNode__1getCollection( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMUINT uiColNum; - if (RC_BAD( rc = pThisNode->getCollection( ifpDb, &uiColNum))) + if (RC_BAD( rc = pThisNode->getCollection( pDb, &uiColNum))) { ThrowError( rc, pEnv); goto Exit; @@ -1169,14 +1354,53 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getLong( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMINT64 i64Val; - if (RC_BAD( rc = pThisNode->getINT64( ifpDb, &i64Val))) + if (RC_BAD( rc = pThisNode->getINT64( pDb, &i64Val))) + { + ThrowError( rc, pEnv); + goto Exit; + } + +Exit: + + return( (jlong)i64Val); +} + +/**************************************************************************** +Desc: +****************************************************************************/ +JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getAttributeValueLong( + JNIEnv * pEnv, + jobject, // obj, + jlong lThis, + jlong lDbRef, + jint iAttrNameId, + jboolean bDefaultOk, + jlong lDefaultToUse) +{ + RCODE rc = NE_XFLM_OK; + IF_DOMNode * pThisNode = THIS_NODE(); + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + FLMINT64 i64Val; + + if (bDefaultOk) + { + rc = pThisNode->getAttributeValueINT64( pDb, (FLMUINT)iAttrNameId, + &i64Val, (FLMINT64)lDefaultToUse); + } + else + { + rc = pThisNode->getAttributeValueINT64( pDb, (FLMUINT)iAttrNameId, + &i64Val); + } + + if (RC_BAD( rc)) { ThrowError( rc, pEnv); goto Exit; @@ -1194,23 +1418,35 @@ JNIEXPORT jstring JNICALL Java_xflaim_DOMNode__1getString( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef, + jint iStartPos, + jint iNumChars) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMUNICODE uzBuffer[ 128]; FLMUNICODE * puzBuf = uzBuffer; FLMUINT uiBufSize = sizeof(uzBuffer); FLMUINT uiNumChars; jstring sBuf = NULL; - if (RC_BAD( rc = pThisNode->getUnicodeChars( ifpDb, &uiNumChars))) + if (RC_BAD( rc = pThisNode->getUnicodeChars( pDb, &uiNumChars))) { ThrowError( rc, pEnv); goto Exit; - } - + } + + if ((FLMUINT)iStartPos >= uiNumChars) + { + goto Exit; + } + uiNumChars -= (FLMUINT)iStartPos; + if (iNumChars && (FLMUINT)iNumChars < uiNumChars) + { + uiNumChars = (FLMUINT)iNumChars; + } + if (uiNumChars * sizeof( FLMUNICODE) >= uiBufSize) { uiBufSize = (uiNumChars + 1) * sizeof(FLMUNICODE); @@ -1222,8 +1458,8 @@ JNIEXPORT jstring JNICALL Java_xflaim_DOMNode__1getString( } } - if (RC_BAD( rc = pThisNode->getUnicode( ifpDb, puzBuf, uiBufSize, 0, - uiNumChars, NULL))) + if (RC_BAD( rc = pThisNode->getUnicode( pDb, puzBuf, uiBufSize, + (FLMUINT)iStartPos, uiNumChars, NULL))) { ThrowError( rc, pEnv); goto Exit; @@ -1241,6 +1477,37 @@ Exit: return( sBuf); } +/**************************************************************************** +Desc: +****************************************************************************/ +JNIEXPORT jstring JNICALL Java_xflaim_DOMNode__1getAttributeValueString( + JNIEnv * pEnv, + jobject, // obj, + jlong lThis, + jlong lDbRef, + jint iAttrNameId) +{ + RCODE rc = NE_XFLM_OK; + IF_DOMNode * pThisNode = THIS_NODE(); + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + FLMBYTE ucBuf [256]; + F_DynaBuf dynaBuf( ucBuf, sizeof( ucBuf)); + jstring sBuf = NULL; + + if (RC_BAD( rc = pThisNode->getAttributeValueUnicode( pDb, + (FLMUINT)iAttrNameId, &dynaBuf))) + { + ThrowError( rc, pEnv); + goto Exit; + } + sBuf = pEnv->NewString( dynaBuf.getUnicodePtr(), + (jsize)dynaBuf.getUnicodeLength()); + +Exit: + + return( sBuf); +} + /**************************************************************************** Desc: ****************************************************************************/ @@ -1248,14 +1515,14 @@ JNIEXPORT jint JNICALL Java_xflaim_DOMNode__1getStringLen( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMUINT uiVal; - if (RC_BAD(rc = pThisNode->getUnicodeChars( ifpDb, &uiVal))) + if (RC_BAD(rc = pThisNode->getUnicodeChars( pDb, &uiVal))) { ThrowError( rc, pEnv); goto Exit; @@ -1273,14 +1540,14 @@ JNIEXPORT jint JNICALL Java_xflaim_DOMNode__1getDataType( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMUINT uiType; - if (RC_BAD( rc = pThisNode->getDataType( ifpDb, &uiType))) + if (RC_BAD( rc = pThisNode->getDataType( pDb, &uiType))) { ThrowError( rc, pEnv); goto Exit; @@ -1298,14 +1565,14 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getDataLength( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMUINT uiLength; - if (RC_BAD( rc = pThisNode->getDataLength( ifpDb, &uiLength))) + if (RC_BAD( rc = pThisNode->getDataLength( pDb, &uiLength))) { ThrowError( rc, pEnv); goto Exit; @@ -1323,21 +1590,33 @@ JNIEXPORT jbyteArray JNICALL Java_xflaim_DOMNode__1getBinary( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef, + jint iStartPos, + jint iNumBytes) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMUINT uiLength; jbyteArray Data = NULL; void * pvData = NULL; - jboolean bIsCopy = false; + jboolean bIsCopy = JNI_FALSE; - if (RC_BAD(rc = pThisNode->getDataLength( ifpDb, &uiLength))) + if (RC_BAD(rc = pThisNode->getDataLength( pDb, &uiLength))) { ThrowError( rc, pEnv); goto Exit; - } + } + + if ((FLMUINT)iStartPos >= uiLength) + { + goto Exit; + } + uiLength -= (FLMUINT)iStartPos; + if (iNumBytes && (FLMUINT)iNumBytes < uiLength) + { + uiLength = (FLMUINT)iNumBytes; + } Data = pEnv->NewByteArray( (jsize)uiLength); @@ -1348,7 +1627,68 @@ JNIEXPORT jbyteArray JNICALL Java_xflaim_DOMNode__1getBinary( goto Exit; } - if (RC_BAD( rc = pThisNode->getBinary(ifpDb, pvData, 0, uiLength, NULL))) + if (RC_BAD( rc = pThisNode->getBinary( pDb, pvData, (FLMUINT)iStartPos, + uiLength, NULL))) + { + ThrowError( rc, pEnv); + goto Exit; + } + +Exit: + + if (pvData) + { + if (RC_BAD( rc)) + { + pEnv->ReleasePrimitiveArrayCritical( Data, pvData, JNI_ABORT); + pEnv->DeleteLocalRef( Data); + Data = NULL; + } + else + { + pEnv->ReleasePrimitiveArrayCritical( Data, pvData, 0); + } + } + + return( Data); +} + +/**************************************************************************** +Desc: +****************************************************************************/ +JNIEXPORT jbyteArray JNICALL Java_xflaim_DOMNode__1getAttributeValueBinary( + JNIEnv * pEnv, + jobject, // obj, + jlong lThis, + jlong lDbRef, + jint iAttrNameId) +{ + RCODE rc = NE_XFLM_OK; + IF_DOMNode * pThisNode = THIS_NODE(); + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + FLMUINT uiLength; + jbyteArray Data = NULL; + void * pvData = NULL; + jboolean bIsCopy = JNI_FALSE; + + if (RC_BAD(rc = pThisNode->getAttributeValueBinary( pDb, (FLMUINT)iAttrNameId, + NULL, 0, &uiLength))) + { + ThrowError( rc, pEnv); + goto Exit; + } + + Data = pEnv->NewByteArray( (jsize)uiLength); + + if ( (pvData = pEnv->GetPrimitiveArrayCritical( Data, &bIsCopy)) == NULL) + { + rc = RC_SET( NE_XFLM_MEM); + ThrowError( rc, pEnv); + goto Exit; + } + + if (RC_BAD( rc = pThisNode->getAttributeValueBinary( pDb, (FLMUINT)iAttrNameId, + pvData, uiLength, NULL))) { ThrowError( rc, pEnv); goto Exit; @@ -1380,14 +1720,39 @@ JNIEXPORT void JNICALL Java_xflaim_DOMNode__1setLong( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef, - jlong lValue) + jlong lDbRef, + jlong lValue, + jint iEncId) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); - if (RC_BAD( rc = pThisNode->setINT64( ifpDb, (FLMINT64)lValue))) + if (RC_BAD( rc = pThisNode->setINT64( pDb, (FLMINT64)lValue, + (FLMUINT)iEncId))) + { + ThrowError( rc, pEnv); + } +} + +/**************************************************************************** +Desc: +****************************************************************************/ +JNIEXPORT void JNICALL Java_xflaim_DOMNode__1setAttributeValueLong( + JNIEnv * pEnv, + jobject, // obj, + jlong lThis, + jlong lDbRef, + jint iAttrNameId, + jlong lValue, + jint iEncId) +{ + RCODE rc = NE_XFLM_OK; + IF_DOMNode * pThisNode = THIS_NODE(); + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + + if (RC_BAD( rc = pThisNode->setAttributeValueINT64( pDb, (FLMUINT)iAttrNameId, + (FLMINT64)lValue, (FLMUINT)iEncId))) { ThrowError( rc, pEnv); } @@ -1400,13 +1765,14 @@ JNIEXPORT void JNICALL Java_xflaim_DOMNode__1setString( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef, + jlong lDbRef, jstring sValue, - jboolean bLast) + jboolean bLast, + jint iEncId) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); jchar * pszValue = NULL; FLMUINT uiLength = 0; @@ -1416,8 +1782,8 @@ JNIEXPORT void JNICALL Java_xflaim_DOMNode__1setString( uiLength = (FLMUINT)pEnv->GetStringLength( sValue); } - if (RC_BAD( rc = pThisNode->setUnicode( ifpDb, pszValue, uiLength, - bLast ? TRUE : FALSE))) + if (RC_BAD( rc = pThisNode->setUnicode( pDb, pszValue, uiLength, + bLast ? TRUE : FALSE, (FLMUINT)iEncId))) { ThrowError( rc, pEnv); goto Exit; @@ -1431,6 +1797,42 @@ Exit: } } +/**************************************************************************** +Desc: +****************************************************************************/ +JNIEXPORT void JNICALL Java_xflaim_DOMNode__1setAttributeValueString( + JNIEnv * pEnv, + jobject, // obj, + jlong lThis, + jlong lDbRef, + jint iAttrNameId, + jstring sValue, + jint iEncId) +{ + RCODE rc = NE_XFLM_OK; + IF_DOMNode * pThisNode = THIS_NODE(); + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + FLMBYTE ucValue [256]; + F_DynaBuf valueBuf( ucValue, sizeof( ucValue)); + + if (RC_BAD( rc = getUTF8String( pEnv, sValue, &valueBuf))) + { + ThrowError( rc, pEnv); + goto Exit; + } + + if (RC_BAD( rc = pThisNode->setAttributeValueUTF8( pDb, (FLMUINT)iAttrNameId, + (const FLMBYTE *)valueBuf.getBufferPtr(), 0, (FLMUINT)iEncId))) + { + ThrowError( rc, pEnv); + goto Exit; + } + +Exit: + + return; +} + /**************************************************************************** Desc: ****************************************************************************/ @@ -1438,15 +1840,17 @@ JNIEXPORT void JNICALL Java_xflaim_DOMNode__1setBinary( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef, - jbyteArray Value) + jlong lDbRef, + jbyteArray Value, + jboolean bLast, + jint iEncId) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMUINT uiLength = pEnv->GetArrayLength( Value); void * pvValue = NULL; - jboolean bIsCopy = false; + jboolean bIsCopy = JNI_FALSE; if( (pvValue = pEnv->GetPrimitiveArrayCritical( Value, &bIsCopy)) == NULL) { @@ -1455,7 +1859,50 @@ JNIEXPORT void JNICALL Java_xflaim_DOMNode__1setBinary( goto Exit; } - if( RC_BAD( rc = pThisNode->setBinary(ifpDb, pvValue, uiLength))) + if( RC_BAD( rc = pThisNode->setBinary(pDb, pvValue, uiLength, + bLast ? TRUE : FALSE, + (FLMUINT)iEncId))) + { + ThrowError( rc, pEnv); + goto Exit; + } + +Exit: + + if (pvValue) + { + pEnv->ReleasePrimitiveArrayCritical( Value, pvValue, JNI_ABORT); + } +} + +/**************************************************************************** +Desc: +****************************************************************************/ +JNIEXPORT void JNICALL Java_xflaim_DOMNode__1setAttributeValueBinary( + JNIEnv * pEnv, + jobject, // obj, + jlong lThis, + jlong lDbRef, + jint iAttrNameId, + jbyteArray Value, + jint iEncId) +{ + RCODE rc = NE_XFLM_OK; + IF_DOMNode * pThisNode = THIS_NODE(); + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + FLMUINT uiLength = pEnv->GetArrayLength( Value); + void * pvValue = NULL; + jboolean bIsCopy = JNI_FALSE; + + if( (pvValue = pEnv->GetPrimitiveArrayCritical( Value, &bIsCopy)) == NULL) + { + rc = RC_SET( NE_XFLM_MEM); + ThrowError( rc, pEnv); + goto Exit; + } + + if( RC_BAD( rc = pThisNode->setAttributeValueBinary(pDb, (FLMUINT)iAttrNameId, + pvValue, uiLength, (FLMUINT)iEncId))) { ThrowError( rc, pEnv); goto Exit; @@ -1492,20 +1939,17 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1createAnnotation( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef, + jlong lDbRef, jlong lReusedNodeRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; - IF_DOMNode * ifpNewNode = NULL; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + IF_DOMNode * pNewNode = lReusedNodeRef + ? (IF_DOMNode *)((FLMUINT)lReusedNodeRef) + : NULL; - if( lReusedNodeRef) - { - ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef; - } - - if( RC_BAD( rc = pThisNode->createAnnotation( ifpDb, &ifpNewNode, NULL))) + if( RC_BAD( rc = pThisNode->createAnnotation( pDb, &pNewNode, NULL))) { ThrowError( rc, pEnv); goto Exit; @@ -1513,7 +1957,7 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1createAnnotation( Exit: - return( (jlong)((FLMUINT)ifpNewNode)); + return( (jlong)((FLMUINT)pNewNode)); } /**************************************************************************** @@ -1523,20 +1967,17 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getAnnotation( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef, + jlong lDbRef, jlong lReusedNodeRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; - IF_DOMNode * ifpNewNode = NULL; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + IF_DOMNode * pNewNode = lReusedNodeRef + ? (IF_DOMNode *)((FLMUINT)lReusedNodeRef) + : NULL; - if( lReusedNodeRef) - { - ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef; - } - - if( RC_BAD( rc = pThisNode->getAnnotation( ifpDb, &ifpNewNode))) + if( RC_BAD( rc = pThisNode->getAnnotation( pDb, &pNewNode))) { ThrowError( rc, pEnv); goto Exit; @@ -1544,7 +1985,32 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getAnnotation( Exit: - return( (jlong)((FLMUINT)ifpNewNode)); + return( (jlong)((FLMUINT)pNewNode)); +} + +/**************************************************************************** +Desc: +****************************************************************************/ +JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getAnnotationId( + JNIEnv * pEnv, + jobject, // obj, + jlong lThis, + jlong lDbRef) +{ + RCODE rc = NE_XFLM_OK; + IF_DOMNode * pThisNode = THIS_NODE(); + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + FLMUINT64 ui64AnnotationId; + + if( RC_BAD( rc = pThisNode->getAnnotationId( pDb, &ui64AnnotationId))) + { + ThrowError( rc, pEnv); + goto Exit; + } + +Exit: + + return( (jlong)ui64AnnotationId); } /**************************************************************************** @@ -1554,14 +2020,14 @@ JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1hasAnnotation( JNIEnv * pEnv, jobject, // obj, jlong lThis, - jlong lpDbRef) + jlong lDbRef) { RCODE rc = NE_XFLM_OK; IF_DOMNode * pThisNode = THIS_NODE(); - IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef; + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); FLMBOOL bHasAnnotation; - if( RC_BAD( rc = pThisNode->hasAnnotation( ifpDb, &bHasAnnotation))) + if( RC_BAD( rc = pThisNode->hasAnnotation( pDb, &bHasAnnotation))) { ThrowError( rc, pEnv); goto Exit; @@ -1569,5 +2035,81 @@ JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1hasAnnotation( Exit: - return( (bHasAnnotation ? true : false)); + return( (bHasAnnotation ? JNI_TRUE : JNI_FALSE)); } + +/**************************************************************************** +Desc: +****************************************************************************/ +JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getMetaValue( + JNIEnv * pEnv, + jobject, // obj, + jlong lThis, + jlong lDbRef) +{ + RCODE rc = NE_XFLM_OK; + IF_DOMNode * pThisNode = THIS_NODE(); + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + FLMUINT64 ui64Value; + + if( RC_BAD( rc = pThisNode->getMetaValue( pDb, &ui64Value))) + { + ThrowError( rc, pEnv); + goto Exit; + } + +Exit: + + return( (jlong)ui64Value); +} + +/**************************************************************************** +Desc: +****************************************************************************/ +JNIEXPORT void JNICALL Java_xflaim_DOMNode__1setMetaValue( + JNIEnv * pEnv, + jobject, // obj, + jlong lThis, + jlong lDbRef, + jlong lValue) +{ + RCODE rc = NE_XFLM_OK; + IF_DOMNode * pThisNode = THIS_NODE(); + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + + if( RC_BAD( rc = pThisNode->setMetaValue( pDb, (FLMUINT64)lValue))) + { + ThrowError( rc, pEnv); + goto Exit; + } + +Exit: + + return; +} + +/**************************************************************************** +Desc: +****************************************************************************/ +JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1isDataLocalToNode( + JNIEnv * pEnv, + jobject, // obj, + jlong lThis, + jlong lDbRef) +{ + RCODE rc = NE_XFLM_OK; + IF_DOMNode * pThisNode = THIS_NODE(); + IF_Db * pDb = (IF_Db *)((FLMUINT)lDbRef); + FLMBOOL bLocal = FALSE; + + if (RC_BAD( rc = pThisNode->isDataLocalToNode( pDb, &bLocal))) + { + ThrowError( rc, pEnv); + goto Exit; + } + +Exit: + + return( bLocal ? JNI_TRUE : JNI_FALSE); +} + diff --git a/xflaim/java/jni/xflaim_DOMNode.h b/xflaim/java/jni/xflaim_DOMNode.h index 325e95e..1f51049 100644 --- a/xflaim/java/jni/xflaim_DOMNode.h +++ b/xflaim/java/jni/xflaim_DOMNode.h @@ -15,6 +15,14 @@ extern "C" { JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1createNode (JNIEnv *, jobject, jlong, jlong, jint, jint, jint, jlong); +/* + * Class: xflaim_DOMNode + * Method: _createChildElement + * Signature: (JJIZJ)J + */ +JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1createChildElement + (JNIEnv *, jobject, jlong, jlong, jint, jboolean, jlong); + /* * Class: xflaim_DOMNode * Method: _deleteNode @@ -135,6 +143,14 @@ JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1hasPreviousSibling JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1isNamespaceDecl (JNIEnv *, jobject, jlong, jlong); +/* + * Class: xflaim_DOMNode + * Method: _getDocumentNode + * Signature: (JJJ)J + */ +JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getDocumentNode + (JNIEnv *, jobject, jlong, jlong, jlong); + /* * Class: xflaim_DOMNode * Method: _getParentNode @@ -207,6 +223,38 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getNextDocument JNIEXPORT jstring JNICALL Java_xflaim_DOMNode__1getPrefix (JNIEnv *, jobject, jlong, jlong); +/* + * Class: xflaim_DOMNode + * Method: _getPrefixId + * Signature: (JJ)I + */ +JNIEXPORT jint JNICALL Java_xflaim_DOMNode__1getPrefixId + (JNIEnv *, jobject, jlong, jlong); + +/* + * Class: xflaim_DOMNode + * Method: _getEncDefId + * Signature: (JJ)I + */ +JNIEXPORT jint JNICALL Java_xflaim_DOMNode__1getEncDefId + (JNIEnv *, jobject, jlong, jlong); + +/* + * Class: xflaim_DOMNode + * Method: _setPrefix + * Signature: (JJLjava/lang/String;)V + */ +JNIEXPORT void JNICALL Java_xflaim_DOMNode__1setPrefix + (JNIEnv *, jobject, jlong, jlong, jstring); + +/* + * Class: xflaim_DOMNode + * Method: _setPrefixId + * Signature: (JJI)V + */ +JNIEXPORT void JNICALL Java_xflaim_DOMNode__1setPrefixId + (JNIEnv *, jobject, jlong, jlong, jint); + /* * Class: xflaim_DOMNode * Method: _getChildElement @@ -223,6 +271,22 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getChildElement JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getSiblingElement (JNIEnv *, jobject, jlong, jlong, jint, jboolean, jlong); +/* + * Class: xflaim_DOMNode + * Method: _getAncestorElement + * Signature: (JJIJ)J + */ +JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getAncestorElement + (JNIEnv *, jobject, jlong, jlong, jint, jlong); + +/* + * Class: xflaim_DOMNode + * Method: _getDescendantElement + * Signature: (JJIJ)J + */ +JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getDescendantElement + (JNIEnv *, jobject, jlong, jlong, jint, jlong); + /* * Class: xflaim_DOMNode * Method: _getParentId @@ -343,13 +407,29 @@ JNIEXPORT jint JNICALL Java_xflaim_DOMNode__1getCollection JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getLong (JNIEnv *, jobject, jlong, jlong); +/* + * Class: xflaim_DOMNode + * Method: _getAttributeValueLong + * Signature: (JJIZJ)J + */ +JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getAttributeValueLong + (JNIEnv *, jobject, jlong, jlong, jint, jboolean, jlong); + /* * Class: xflaim_DOMNode * Method: _getString - * Signature: (JJ)Ljava/lang/String; + * Signature: (JJII)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_xflaim_DOMNode__1getString - (JNIEnv *, jobject, jlong, jlong); + (JNIEnv *, jobject, jlong, jlong, jint, jint); + +/* + * Class: xflaim_DOMNode + * Method: _getAttributeValueString + * Signature: (JJI)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_xflaim_DOMNode__1getAttributeValueString + (JNIEnv *, jobject, jlong, jlong, jint); /* * Class: xflaim_DOMNode @@ -378,34 +458,66 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getDataLength /* * Class: xflaim_DOMNode * Method: _getBinary - * Signature: (JJ)[B + * Signature: (JJII)[B */ JNIEXPORT jbyteArray JNICALL Java_xflaim_DOMNode__1getBinary - (JNIEnv *, jobject, jlong, jlong); + (JNIEnv *, jobject, jlong, jlong, jint, jint); + +/* + * Class: xflaim_DOMNode + * Method: _getAttributeValueBinary + * Signature: (JJI)[B + */ +JNIEXPORT jbyteArray JNICALL Java_xflaim_DOMNode__1getAttributeValueBinary + (JNIEnv *, jobject, jlong, jlong, jint); /* * Class: xflaim_DOMNode * Method: _setLong - * Signature: (JJJ)V + * Signature: (JJJI)V */ JNIEXPORT void JNICALL Java_xflaim_DOMNode__1setLong - (JNIEnv *, jobject, jlong, jlong, jlong); + (JNIEnv *, jobject, jlong, jlong, jlong, jint); + +/* + * Class: xflaim_DOMNode + * Method: _setAttributeValueLong + * Signature: (JJIJI)V + */ +JNIEXPORT void JNICALL Java_xflaim_DOMNode__1setAttributeValueLong + (JNIEnv *, jobject, jlong, jlong, jint, jlong, jint); /* * Class: xflaim_DOMNode * Method: _setString - * Signature: (JJLjava/lang/String;Z)V + * Signature: (JJLjava/lang/String;ZI)V */ JNIEXPORT void JNICALL Java_xflaim_DOMNode__1setString - (JNIEnv *, jobject, jlong, jlong, jstring, jboolean); + (JNIEnv *, jobject, jlong, jlong, jstring, jboolean, jint); + +/* + * Class: xflaim_DOMNode + * Method: _setAttributeValueString + * Signature: (JJILjava/lang/String;I)V + */ +JNIEXPORT void JNICALL Java_xflaim_DOMNode__1setAttributeValueString + (JNIEnv *, jobject, jlong, jlong, jint, jstring, jint); /* * Class: xflaim_DOMNode * Method: _setBinary - * Signature: (JJ[B)V + * Signature: (JJ[BZI)V */ JNIEXPORT void JNICALL Java_xflaim_DOMNode__1setBinary - (JNIEnv *, jobject, jlong, jlong, jbyteArray); + (JNIEnv *, jobject, jlong, jlong, jbyteArray, jboolean, jint); + +/* + * Class: xflaim_DOMNode + * Method: _setAttributeValueBinary + * Signature: (JJI[BI)V + */ +JNIEXPORT void JNICALL Java_xflaim_DOMNode__1setAttributeValueBinary + (JNIEnv *, jobject, jlong, jlong, jint, jbyteArray, jint); /* * Class: xflaim_DOMNode @@ -423,6 +535,14 @@ JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1createAnnotation JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getAnnotation (JNIEnv *, jobject, jlong, jlong, jlong); +/* + * Class: xflaim_DOMNode + * Method: _getAnnotationId + * Signature: (JJ)J + */ +JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getAnnotationId + (JNIEnv *, jobject, jlong, jlong); + /* * Class: xflaim_DOMNode * Method: _hasAnnotation @@ -439,6 +559,38 @@ JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1hasAnnotation JNIEXPORT void JNICALL Java_xflaim_DOMNode__1release (JNIEnv *, jobject, jlong); +/* + * Class: xflaim_DOMNode + * Method: setPrefix + * Signature: (JJLjava/lang/String;)V + */ +JNIEXPORT void JNICALL Java_xflaim_DOMNode_setPrefix + (JNIEnv *, jobject, jlong, jlong, jstring); + +/* + * Class: xflaim_DOMNode + * Method: _getMetaValue + * Signature: (JJ)J + */ +JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getMetaValue + (JNIEnv *, jobject, jlong, jlong); + +/* + * Class: xflaim_DOMNode + * Method: _setMetaValue + * Signature: (JJJ)V + */ +JNIEXPORT void JNICALL Java_xflaim_DOMNode__1setMetaValue + (JNIEnv *, jobject, jlong, jlong, jlong); + +/* + * Class: xflaim_DOMNode + * Method: _isDataLocalToNode + * Signature: (JJ)Z + */ +JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1isDataLocalToNode + (JNIEnv *, jobject, jlong, jlong); + #ifdef __cplusplus } #endif diff --git a/xflaim/java/xflaim/DOMNode.java b/xflaim/java/xflaim/DOMNode.java index a1a7dc8..1691026 100644 --- a/xflaim/java/xflaim/DOMNode.java +++ b/xflaim/java/xflaim/DOMNode.java @@ -31,9 +31,6 @@ package xflaim; public class DOMNode { - /** - * Desc: - */ DOMNode( long lThis, Db jdb) throws XFlaimException @@ -53,9 +50,6 @@ public class DOMNode m_jdb = jdb; } - /** - * Desc: - */ protected void finalize() { // The F_DOMNode and F_Db classes are not thread-safe. The proper way @@ -85,9 +79,6 @@ public class DOMNode m_jdb = null; } - /** - * Desc: - */ public void release() { synchronized( m_jdb) @@ -101,6 +92,11 @@ public class DOMNode m_jdb = null; } + public long getThis() + { + return m_this; + } + /** * Creates a new DOM node and inserts it into the database in the * specified position relative to the current node. An existing @@ -129,14 +125,11 @@ public class DOMNode int iInsertLoc, DOMNode ReusedNode) throws XFlaimException { - long lReusedNodeRef = 0; long lNewNodeRef = 0; DOMNode NewNode; - - if (ReusedNode != null) - { - lReusedNodeRef = ReusedNode.m_this; - } + long lReusedNodeRef = (ReusedNode != null) + ? ReusedNode.m_this + : 0; // See to comments in the finalize function for an explanation of this // call synchronized call @@ -159,6 +152,59 @@ public class DOMNode return( NewNode); } + + /** + * Creates a new element node and inserts it into the database in the + * as either the first or last child of the current node. An existing + * DOMNode object can optionally be passed in, and it will be reused + * instead of a new object being allocated. + * @param iChildElementNameId The dictionary tag number that represents the + * element node name. + * This value must exist in the dictionary before it can be used here. The + * value may be one of the predefined ones, or it may be created with + * {@link Db#createElementDef Db::createElementDef}. + * @param bFirstChild Specifies whether the new element is to be created as + * a first or last child. + * @param ReusedNode An instance of DOMNode which is no longer needed and + * can be reassigned to point to different data in the database. (Reusing + * DOMNode objects is encouraged as it saves the system from allocating + * and freeing memory for each object.) Can be null, if no instances are + * available to be reused. + * @return Returns an instance of DOMNode + * @throws XFlaimException + */ + public DOMNode createChildElement( + int iChildElementNameId, + boolean bFirstChild, + DOMNode ReusedNode) throws XFlaimException + { + long lNewNodeRef = 0; + DOMNode NewNode; + long lReusedNodeRef = (ReusedNode != null) + ? ReusedNode.m_this + : 0; + + // See to comments in the finalize function for an explanation of this + // call synchronized call + + synchronized( m_jdb) + { + lNewNodeRef = _createChildElement( m_this, m_jdb.m_this, + iChildElementNameId, bFirstChild, lReusedNodeRef); + } + + if (ReusedNode == null) + { + NewNode = new DOMNode(lNewNodeRef, m_jdb); + } + else + { + NewNode=ReusedNode; + NewNode.setRef( lNewNodeRef, m_jdb); + } + + return( NewNode); + } /** * Removes this node as well as all of it's descendants from the database. @@ -198,6 +244,16 @@ public class DOMNode return _canHaveData( m_this); } + /** + * Tests the current node for the ability to hold data. + * @return Returns true if this is a node type that can have data + * associated with it. + */ + public boolean isDataLocalToNode() throws XFlaimException + { + return( _isDataLocalToNode( m_this, m_jdb.m_this)); + } + /** * Creates a new attribute node assigned to the current node. Note that * some nodes are not allowed to have attributes. @@ -216,15 +272,12 @@ public class DOMNode int iNameId, DOMNode ReusedNode) throws XFlaimException { - long lReusedNodeRef = 0; long lNewNodeRef = 0; DOMNode NewNode; + long lReusedNodeRef = (ReusedNode != null) + ? ReusedNode.m_this + : 0; - if (ReusedNode != null) - { - lReusedNodeRef = ReusedNode.m_this; - } - // See to comments in the finalize function for an explanation of this // call synchronized call @@ -260,14 +313,11 @@ public class DOMNode public DOMNode getFirstAttribute( DOMNode ReusedNode) throws XFlaimException { - long lReusedNodeRef = 0; - long lNewNodeRef = 0; - DOMNode NewNode; - - if (ReusedNode != null) - { - lReusedNodeRef = ReusedNode.m_this; - } + long lNewNodeRef = 0; + DOMNode NewNode; + long lReusedNodeRef = (ReusedNode != null) + ? ReusedNode.m_this + : 0; // See the comment in the finalize function for an explanation of // this synchronized call @@ -304,15 +354,12 @@ public class DOMNode public DOMNode getLastAttribute( DOMNode ReusedNode) throws XFlaimException { - long lReusedNodeRef = 0; long lNewNodeRef = 0; DOMNode NewNode; + long lReusedNodeRef = (ReusedNode != null) + ? ReusedNode.m_this + : 0; - if (ReusedNode != null) - { - lReusedNodeRef = ReusedNode.m_this; - } - // See to comments in the finalize function for an explanation of this // call synchronized call @@ -352,15 +399,12 @@ public class DOMNode int iAttributeId, DOMNode ReusedNode) throws XFlaimException { - long lReusedNodeRef = 0; long lNewNodeRef = 0; DOMNode NewNode; + long lReusedNodeRef = (ReusedNode != null) + ? ReusedNode.m_this + : 0; - if (ReusedNode != null) - { - lReusedNodeRef = ReusedNode.m_this; - } - // See to comments in the finalize function for an explanation of this // call synchronized call @@ -502,7 +546,7 @@ public class DOMNode * @return Returns the next sibling node's node ID. * @throws XFlaimException */ - public long getNextsibId() throws XFlaimException + public long getNextSibId() throws XFlaimException { return _getNextSibId( m_this, m_jdb.m_this); } @@ -565,7 +609,52 @@ public class DOMNode public void setLong( long lValue) throws XFlaimException { - _setLong( m_this, m_jdb.m_this, lValue); + _setLong( m_this, m_jdb.m_this, lValue, 0); + } + + /** + * Assigns a 64-bit value to this node. + * @param lValue The value to be assigned. + * @param iEncId Encryption definition to use. If zero is passed, the + * data will not be encrypted. + * @throws XFlaimException + */ + public void setLong( + long lValue, + int iEncId) throws XFlaimException + { + _setLong( m_this, m_jdb.m_this, lValue, iEncId); + } + + /** + * Assigns a 64-bit value to an attribute for this element node (node must + * be an element node). + * @param iAttrNameId The attribute id whose value is to be assigned. + * @param lValue The value to be assigned. + * @throws XFlaimException + */ + public void setAttributeValueLong( + int iAttrNameId, + long lValue) throws XFlaimException + { + _setAttributeValueLong( m_this, m_jdb.m_this, iAttrNameId, lValue, 0); + } + + /** + * Assigns a 64-bit value to an attribute for this element node (node must + * be an element node). + * @param iAttrNameId The attribute id whose value is to be assigned. + * @param lValue The value to be assigned. + * @param iEncId Encryption definition to use. If zero is passed, the + * data will not be encrypted. + * @throws XFlaimException + */ + public void setAttributeValueLong( + int iAttrNameId, + long lValue, + int iEncId) throws XFlaimException + { + _setAttributeValueLong( m_this, m_jdb.m_this, iAttrNameId, lValue, iEncId); } /** @@ -585,7 +674,30 @@ public class DOMNode String sValue, boolean bLast) throws XFlaimException { - _setString( m_this, m_jdb.m_this, sValue, bLast); + _setString( m_this, m_jdb.m_this, sValue, bLast, 0); + } + + /** + * Assigns a text string to this node. Existing text is either + * overwritten or has the new text appended to it. See the + * explanation for the bLast parameter. + * @param sValue The text to be assigned + * @param bLast Specifies whether sValue is the last text to be + * appended to this node. If false, then another call to setString + * is expected, and the new text will be appended to the text currently + * stored in this node. If true, then no more text is expected and + * another call to setString will overwrite the what is currently + * stored in this node. + * @param iEncId Specifies the encryption definition to use to encryp + * this data. Zero means that the data is not to be encrypted. + * @throws XFlaimException + */ + public void setString( + String sValue, + boolean bLast, + int iEncId) throws XFlaimException + { + _setString( m_this, m_jdb.m_this, sValue, bLast, iEncId); } /** @@ -593,12 +705,57 @@ public class DOMNode * equivalent to setString( sValue, true). * @param sValue The text to be assigned. * @throws XFlaimException - * @see #setString( String, boolean) */ public void setString( String sValue) throws XFlaimException { - _setString( m_this, m_jdb.m_this, sValue, true); + _setString( m_this, m_jdb.m_this, sValue, true, 0); + } + + /** + * Assigns or appends a text string to this node. This function is + * equivalent to setString( sValue, true, iEncId). + * @param sValue The text to be assigned. + * @param iEncId The encryption id to be used to encrypt the data. If zero + * the data will not be encrypted. + * @throws XFlaimException + */ + public void setString( + String sValue, + int iEncId) throws XFlaimException + { + _setString( m_this, m_jdb.m_this, sValue, true, iEncId); + } + + /** + * Assigns a text string to an attribute for this element node (node must be + * an element node). + * @param iAttrNameId Attribute id of the attribute whose value is to be set. + * @param sValue The text to be assigned. + * @throws XFlaimException + */ + public void setAttributeValueString( + int iAttrNameId, + String sValue) throws XFlaimException + { + _setAttributeValueString( m_this, m_jdb.m_this, iAttrNameId, sValue, 0); + } + + /** + * Assigns a text string to an attribute for this element node (node must be + * an element node). + * @param iAttrNameId Attribute id of the attribute whose value is to be set. + * @param sValue The text to be assigned. + * @param iEncId The encryption id to be used to encrypt the data. If zero + * the data will not be encrypted. + * @throws XFlaimException + */ + public void setAttributeValueString( + int iAttrNameId, + String sValue, + int iEncId) throws XFlaimException + { + _setAttributeValueString( m_this, m_jdb.m_this, iAttrNameId, sValue, iEncId); } /** @@ -609,7 +766,91 @@ public class DOMNode public void setBinary( byte[] Value) throws XFlaimException { - _setBinary( m_this, m_jdb.m_this, Value); + _setBinary( m_this, m_jdb.m_this, Value, true, 0); + } + + /** + * Assigns a piece of binary data to this node. + * @param Value An array of bytes to be stored in this node. + * @param iEncId Encryption id to be used to encrypt the data. If zero + * is passed, data will not be encrypted. + * @throws XFlaimException + */ + public void setBinary( + byte[] Value, + int iEncId) throws XFlaimException + { + _setBinary( m_this, m_jdb.m_this, Value, true, iEncId); + } + + /** + * Assigns a piece of binary data to this node. + * @param Value An array of bytes to be stored in this node. + * @param bLast Specifies whether Value is the last data to be + * appended to this node. If false, then another call to setBinary + * is expected, and the new data will be appended to the data currently + * stored in this node. If true, then no more data is expected and + * another call to setBinary will overwrite the what is currently + * stored in this node. + * @throws XFlaimException + */ + public void setBinary( + byte[] Value, + boolean bLast) throws XFlaimException + { + _setBinary( m_this, m_jdb.m_this, Value, bLast, 0); + } + + /** + * Assigns a piece of binary data to this node. + * @param Value An array of bytes to be stored in this node. + * @param bLast Specifies whether Value is the last data to be + * appended to this node. If false, then another call to setBinary + * is expected, and the new data will be appended to the data currently + * stored in this node. If true, then no more data is expected and + * another call to setBinary will overwrite the what is currently + * stored in this node. + * @param iEncId Encryption id to be used to encrypt the data. If zero + * is passed, data will not be encrypted. + * @throws XFlaimException + */ + public void setBinary( + byte[] Value, + boolean bLast, + int iEncId) throws XFlaimException + { + _setBinary( m_this, m_jdb.m_this, Value, bLast, iEncId); + } + + /** + * Assigns a piece of binary data to an attribute of this element node (node + * must be an element). + * @param iAttrNameId Attribute id of the attribute whose value is to be set. + * @param Value An array of bytes to be stored. + * @throws XFlaimException + */ + public void setAttributeValueBinary( + int iAttrNameId, + byte[] Value) throws XFlaimException + { + _setAttributeValueBinary( m_this, m_jdb.m_this, iAttrNameId, Value, 0); + } + + /** + * Assigns a piece of binary data to an attribute of this element node (node + * must be an element). + * @param iAttrNameId Attribute id of the attribute whose value is to be set. + * @param Value An array of bytes to be stored. + * @param iEncId Encryption id to be used to encrypt the data. If zero + * is passed, data will not be encrypted. + * @throws XFlaimException + */ + public void setAttributeValueBinary( + int iAttrNameId, + byte[] Value, + int iEncId) throws XFlaimException + { + _setAttributeValueBinary( m_this, m_jdb.m_this, iAttrNameId, Value, iEncId); } /** @@ -644,6 +885,25 @@ public class DOMNode return _getLong( m_this, m_jdb.m_this); } + /** + * Retrieves the value stored in an attribute associated with this node + * (node must be an element node) as a long. + * @param iAttrNameId Name of attribute whose value is to be returned. + * @param bDefaultOk If true, specifies that if the attribute is not found + * then the value in lDefaultToUse is to be returned. If false, and the + * attribute is not found, an exception will be thrown. + * @return Returns the value stored in the element node's attribute. + * @throws XFlaimException + */ + public long getAttributeValueLong( + int iAttrNameId, + boolean bDefaultOk, + long lDefaultToUse) throws XFlaimException + { + return _getAttributeValueLong( m_this, m_jdb.m_this, iAttrNameId, + bDefaultOk, lDefaultToUse); + } + /** * Retrieves a string representation of the value stored in this node. * @return Returns the value stored in the node. @@ -651,7 +911,36 @@ public class DOMNode */ public String getString() throws XFlaimException { - return _getString( m_this, m_jdb.m_this); + return _getString( m_this, m_jdb.m_this, 0, 0); + } + + /** + * Retrieves a string representation of the value stored in this node. + * @param iStartPos Starting character position in string to retrieve from. + * @param iNumChars Maximum number of characters to retrieve. May return + * fewer than this number of characters if there are not that many + * characters available from the specified starting position. + * @return Returns the sub-string stored in the node. + * @throws XFlaimException + */ + public String getSubString( + int iStartPos, + int iNumChars) throws XFlaimException + { + return _getString( m_this, m_jdb.m_this, iStartPos, iNumChars); + } + + /** + * Retrieves a string representation of the value stored in this element + * node's (node must be an element) attribute. + * @param iAttrNameId Name id of attribute whose value is to be returned. + * @return Returns the value stored in the element node's attribute. + * @throws XFlaimException + */ + public String getAttributeValueString( + int iAttrNameId) throws XFlaimException + { + return _getAttributeValueString( m_this, m_jdb.m_this, iAttrNameId); } /** @@ -673,7 +962,77 @@ public class DOMNode */ public byte[] getBinary() throws XFlaimException { - return _getBinary( m_this, m_jdb.m_this); + return _getBinary( m_this, m_jdb.m_this, 0, 0); + } + + /** + * Retrieves the value of the node as raw data. + * @param iStartPos Starting byte position in binary data to retrieve from. + * @param iNumBytes Maximum number of bytes to retrieve. May return + * fewer than this number of bytes if there are not that many + * bytes available from the specified starting position. + * @return Returns a byte array containing the requested data from + * the value of this node. + * @throws XFlaimException + */ + public byte[] getBinary( + int iStartPos, + int iNumBytes) throws XFlaimException + { + return _getBinary( m_this, m_jdb.m_this, iStartPos, iNumBytes); + } + + /** + * Retrieves the value of the element node's (node must be an element) + * attribute as raw data. + * @param iAttrNameId Name of attribute whose data is to be returned. + * @return Returns a byte array containing the value of this element node's + * attribute. + * @throws XFlaimException + */ + public byte[] getAttributeValueBinary( + int iAttrNameId) throws XFlaimException + { + return _getAttributeValueBinary( m_this, m_jdb.m_this, iAttrNameId); + } + + /** + * Retrieves the document node of the current node. + * @param ReusedNode An instance of DOMNode which is no longer needed and + * can be reassigned to point to different data in the database. (Reusing + * DOMNode objects is encouraged as it saves the system from allocating + * and freeing memory for each object.) Can be null, if no instances are + * available to be reused. + * @return Returns an instance of DOMNode + * @throws XFlaimException + */ + public DOMNode getDocumentNode( + DOMNode ReusedNode) throws XFlaimException + { + long lNewNodeRef = 0; + DOMNode NewNode; + long lReusedNodeRef = (ReusedNode != null) + ? ReusedNode.m_this + : 0; + + // See to comments in the finalize function for an explanation of this + // call synchronized call + synchronized( m_jdb) + { + lNewNodeRef = _getDocumentNode( m_this, m_jdb.m_this, lReusedNodeRef); + } + + if (ReusedNode == null) + { + NewNode = new DOMNode(lNewNodeRef, m_jdb); + } + else + { + NewNode=ReusedNode; + NewNode.setRef( lNewNodeRef, m_jdb); + } + + return NewNode; } /** @@ -689,14 +1048,11 @@ public class DOMNode public DOMNode getParentNode( DOMNode ReusedNode) throws XFlaimException { - long lReusedNodeRef = 0; long lNewNodeRef = 0; DOMNode NewNode; - - if (ReusedNode != null) - { - lReusedNodeRef = ReusedNode.m_this; - } + long lReusedNodeRef = (ReusedNode != null) + ? ReusedNode.m_this + : 0; // See to comments in the finalize function for an explanation of this // call synchronized call @@ -731,15 +1087,12 @@ public class DOMNode public DOMNode getFirstChild( DOMNode ReusedNode) throws XFlaimException { - long lReusedNodeRef = 0; long lNewNodeRef = 0; DOMNode NewNode; + long lReusedNodeRef = (ReusedNode != null) + ? ReusedNode.m_this + : 0; - if (ReusedNode != null) - { - lReusedNodeRef = ReusedNode.m_this; - } - // See to comments in the finalize function for an explanation of this // call synchronized call @@ -774,15 +1127,12 @@ public class DOMNode public DOMNode getLastChild( DOMNode ReusedNode) throws XFlaimException { - long lReusedNodeRef = 0; long lNewNodeRef = 0; DOMNode NewNode; + long lReusedNodeRef = (ReusedNode != null) + ? ReusedNode.m_this + : 0; - if (ReusedNode != null) - { - lReusedNodeRef = ReusedNode.m_this; - } - // See to comments in the finalize function for an explanation of this // synchronized call @@ -821,15 +1171,12 @@ public class DOMNode int eNodeType, DOMNode ReusedNode) throws XFlaimException { - long lReusedNodeRef = 0; long lNewNodeRef = 0; DOMNode NewNode; + long lReusedNodeRef = (ReusedNode != null) + ? ReusedNode.m_this + : 0; - if (ReusedNode != null) - { - lReusedNodeRef = ReusedNode.m_this; - } - // See to comments in the finalize function for an explanation of this // synchronized call @@ -868,15 +1215,12 @@ public class DOMNode int iNameId, DOMNode ReusedNode) throws XFlaimException { - long lReusedNodeRef = 0; long lNewNodeRef = 0; DOMNode NewNode; + long lReusedNodeRef = (ReusedNode != null) + ? ReusedNode.m_this + : 0; - if (ReusedNode != null) - { - lReusedNodeRef = ReusedNode.m_this; - } - // See to comments in the finalize function for an explanation of this // synchronized call @@ -919,15 +1263,12 @@ public class DOMNode boolean bNext, DOMNode ReusedNode) throws XFlaimException { - long lReusedNodeRef = 0; long lNewNodeRef = 0; DOMNode NewNode; + long lReusedNodeRef = (ReusedNode != null) + ? ReusedNode.m_this + : 0; - if (ReusedNode != null) - { - lReusedNodeRef = ReusedNode.m_this; - } - // See to comments in the finalize function for an explanation of this // synchronized call @@ -950,6 +1291,94 @@ public class DOMNode return NewNode; } + /** + * Retrieves the specified element node from the current node's + * ancestor nodes. + * @param iNameId The name ID of the desired node. + * @param ReusedNode An instance of DOMNode which is no longer needed and + * can be reassigned to point to different data in the database. (Reusing + * DOMNode objects is encouraged as it saves the system from allocating + * and freeing memory for each object.) Can be null, if no instances are + * available to be reused. + * @return Returns an instance of DOMNode + * @throws XFlaimException + */ + public DOMNode getAncestorElement( + int iNameId, + DOMNode ReusedNode) throws XFlaimException + { + long lNewNodeRef = 0; + DOMNode NewNode; + long lReusedNodeRef = (ReusedNode != null) + ? ReusedNode.m_this + : 0; + + // See to comments in the finalize function for an explanation of this + // synchronized call + + synchronized( m_jdb) + { + lNewNodeRef = _getAncestorElement( m_this, m_jdb.m_this, iNameId, + lReusedNodeRef); + } + + if (ReusedNode == null) + { + NewNode = new DOMNode(lNewNodeRef, m_jdb); + } + else + { + NewNode=ReusedNode; + NewNode.setRef( lNewNodeRef, m_jdb); + } + + return NewNode; + } + + /** + * Retrieves the specified element node from the current node's + * descendant nodes. + * @param iNameId The name ID of the desired node. + * @param ReusedNode An instance of DOMNode which is no longer needed and + * can be reassigned to point to different data in the database. (Reusing + * DOMNode objects is encouraged as it saves the system from allocating + * and freeing memory for each object.) Can be null, if no instances are + * available to be reused. + * @return Returns an instance of DOMNode + * @throws XFlaimException + */ + public DOMNode getDescendantElement( + int iNameId, + DOMNode ReusedNode) throws XFlaimException + { + long lNewNodeRef = 0; + DOMNode NewNode; + long lReusedNodeRef = (ReusedNode != null) + ? ReusedNode.m_this + : 0; + + // See to comments in the finalize function for an explanation of this + // synchronized call + + synchronized( m_jdb) + { + lNewNodeRef = _getDescendantElement( m_this, m_jdb.m_this, iNameId, + lReusedNodeRef); + } + + if (ReusedNode == null) + { + NewNode = new DOMNode(lNewNodeRef, m_jdb); + } + else + { + NewNode=ReusedNode; + NewNode.setRef( lNewNodeRef, m_jdb); + } + + return NewNode; + } + /** * Retrieve's the previous node from the current node's list of * siblings nodes. @@ -964,15 +1393,12 @@ public class DOMNode public DOMNode getPreviousSibling( DOMNode ReusedNode) throws XFlaimException { - long lReusedNodeRef = 0; long lNewNodeRef = 0; DOMNode NewNode; + long lReusedNodeRef = (ReusedNode != null) + ? ReusedNode.m_this + : 0; - if (ReusedNode != null) - { - lReusedNodeRef = ReusedNode.m_this; - } - // See to comments in the finalize function for an explanation of this // synchronized call @@ -1008,15 +1434,12 @@ public class DOMNode public DOMNode getNextSibling( DOMNode ReusedNode) throws XFlaimException { - long lReusedNodeRef = 0; long lNewNodeRef = 0; DOMNode NewNode; + long lReusedNodeRef = (ReusedNode != null) + ? ReusedNode.m_this + : 0; - if (ReusedNode != null) - { - lReusedNodeRef = ReusedNode.m_this; - } - // See to comments in the finalize function for an explanation of this // synchronized call @@ -1051,15 +1474,12 @@ public class DOMNode public DOMNode getPreviousDocument( DOMNode ReusedNode) throws XFlaimException { - long lReusedNodeRef = 0; long lNewNodeRef = 0; DOMNode NewNode; - - if (ReusedNode != null) - { - lReusedNodeRef = ReusedNode.m_this; - } - + long lReusedNodeRef = (ReusedNode != null) + ? ReusedNode.m_this + : 0; + // See to comments in the finalize function for an explanation of this // synchronized call @@ -1095,15 +1515,12 @@ public class DOMNode public DOMNode getNextDocument( DOMNode ReusedNode) throws XFlaimException { - long lReusedNodeRef = 0; long lNewNodeRef = 0; DOMNode NewNode; + long lReusedNodeRef = (ReusedNode != null) + ? ReusedNode.m_this + : 0; - if (ReusedNode != null) - { - lReusedNodeRef = ReusedNode.m_this; - } - // See to comments in the finalize function for an explanation of this // synchronized call @@ -1135,6 +1552,48 @@ public class DOMNode return _getPrefix( m_this, m_jdb.m_this); } + /** + * Retrieves the namespace prefix ID for this node + * @return Returns a number containing this node's namespace prefix id + * @throws XFlaimException + */ + public int getPrefixId() throws XFlaimException + { + return( _getPrefixId( m_this, m_jdb.m_this)); + } + + /** + * Retrieves the encryption definition ID for this node + * @return Returns a number containing this node's encryption definition id + * @throws XFlaimException + */ + public int getEncDefId() throws XFlaimException + { + return( _getEncDefId( m_this, m_jdb.m_this)); + } + + /** + * Sets the namespace prefix for this node + * @param sPrefix The prefix that is to be set for this node + * @throws XFlaimException + */ + public void setPrefix( + String sPrefix) throws XFlaimException + { + _setPrefix( m_this, m_jdb.m_this, sPrefix); + } + + /** + * Sets the namespace prefix for this node + * @param iPrefixId The prefix that is to be set for this node + * @throws XFlaimException + */ + public void setPrefixId( + int iPrefixId) throws XFlaimException + { + _setPrefixId( m_this, m_jdb.m_this, iPrefixId); + } + /** * Retrieves the namespace URI that this node's name belongs to. * @return Returns the namespace URI @@ -1189,15 +1648,12 @@ public class DOMNode public DOMNode createAnnotation( DOMNode ReusedNode) throws XFlaimException { - long lReusedNodeRef = 0; - long lNewNodeRef = 0; - DOMNode NewNode; - - if (ReusedNode != null) - { - lReusedNodeRef = ReusedNode.m_this; - } - + long lNewNodeRef = 0; + DOMNode NewNode; + long lReusedNodeRef = (ReusedNode != null) + ? ReusedNode.m_this + : 0; + // See to comments in the finalize function for an explanation of this // synchronized call @@ -1232,15 +1688,12 @@ public class DOMNode public DOMNode getAnnotation( DOMNode ReusedNode) throws XFlaimException { - long lReusedNodeRef = 0; - long lNewNodeRef = 0; - DOMNode NewNode; + long lNewNodeRef = 0; + DOMNode NewNode; + long lReusedNodeRef = (ReusedNode != null) + ? ReusedNode.m_this + : 0; - if (ReusedNode != null) - { - lReusedNodeRef = ReusedNode.m_this; - } - // See to comments in the finalize function for an explanation of this // synchronized call @@ -1262,6 +1715,16 @@ public class DOMNode return NewNode; } + /** + * Retrieves the id of the annotation associated with this node. + * @return returns the id of the annotation assigned to this node + * @throws XFlaimException + */ + public long getAnnotationId() throws XFlaimException + { + return( _getAnnotationId( m_this, m_jdb.m_this)); + } + /** * Checks to see if this node has an annotation * @return Returns true if the current node has an annotation @@ -1272,6 +1735,17 @@ public class DOMNode return _hasAnnotation( m_this, m_jdb.m_this); } + public long getMetaValue() throws XFlaimException + { + return( _getMetaValue( m_this, m_jdb.m_this)); + } + + public void setMetaValue( + long lValue) throws XFlaimException + { + _setMetaValue( m_this, m_jdb.m_this, lValue); + } + /** * Reassigns the object to "point" to a new F_DOMNode instance and a new * Db. Called by any of the member functions that take a ReusuedNode @@ -1292,437 +1766,374 @@ public class DOMNode m_jdb = jdb; } - /** - * Desc: - */ long getRef() { return m_this; } - /** - * Desc: - */ Db getJdb() { return m_jdb; } - /** - * Desc: - */ private native long _createNode( long lThis, - long lpDbRef, + long lDbRef, int iNodeType, int iNameId, int iInsertLoc, long lReusedNodeRef) throws XFlaimException; - /** - * Desc: - */ + private native long _createChildElement( + long lThis, + long lDbRef, + int iChildElementNameId, + boolean bFirstChild, + long lReusedNodeRef) throws XFlaimException; + private native void _deleteNode( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; - /** - * Desc: - */ private native void _deleteChildren( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; - /** - * Desc: - */ private native int _getNodeType( long lThis); - /** - * Desc: - */ private native boolean _canHaveData( long lThis); - /** - * Desc: - */ private native long _createAttribute( long lThis, - long lpDbRef, + long lDbRef, int iNameId, long lReusedNodeRef) throws XFlaimException; - /** - * Desc: - */ private native long _getFirstAttribute( long lThis, - long lpDbRef, + long lDbRef, long lReusedNodeRef) throws XFlaimException; - /** - * Desc: - */ private native long _getLastAttribute( long lThis, - long lpDbRef, + long lDbRef, long lReusedNodeRef) throws XFlaimException; - /** - * Desc: - */ private native long _getAttribute( long lThis, - long lpDbRef, + long lDbRef, int iAttributeId, long lReusedNodeRef) throws XFlaimException; - /** - * Desc: - */ private native void _deleteAttribute( long lThis, - long lpDbRef, + long lDbRef, int iAttributeId) throws XFlaimException; - /** - * Desc: - */ private native boolean _hasAttribute( long lThis, - long lpDbRef, + long lDbRef, int iAttributeId) throws XFlaimException; - /** - * Desc: - */ private native boolean _hasAttributes( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; - /** - * Desc: - */ private native boolean _hasChildren( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; - /** - * Desc: - */ private native boolean _hasNextSibling( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; - /** - * Desc: - */ private native boolean _hasPreviousSibling( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; - /** - * Desc: - */ private native boolean _isNamespaceDecl( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; + + private native long _getDocumentNode( + long lThis, + long lDbRef, + long lReusedNodeRef) throws XFlaimException; - /** - * Desc: - */ private native long _getParentNode( long lThis, - long lpDbRef, + long lDbRef, long lReusedNodeRef) throws XFlaimException; - /** - * Desc: - */ private native long _getFirstChild( long lThis, - long lpDbRef, + long lDbRef, long lReusedNodeRef) throws XFlaimException; - /** - * Desc: - */ private native long _getLastChild( long lThis, - long lpDbRef, + long lDbRef, long lReusedNodeRef) throws XFlaimException; - /** - * Desc: - */ private native long _getChild( long lThis, - long lpDbRef, + long lDbRef, int iNodeType, long lReusedNodeRef) throws XFlaimException; - /** - * Desc: - */ private native long _getPreviousSibling( long lThis, - long lpDbRef, + long lDbRef, long lReusedNodeRef) throws XFlaimException; - /** - * Desc: - */ private native long _getNextSibling ( long lThis, - long lpDbRef, + long lDbRef, long lReusedNodeRef) throws XFlaimException; - /** - * Desc: - */ private native long _getPreviousDocument ( long lThis, - long lpDbRef, + long lDbRef, long lReusedNodeRef) throws XFlaimException; - /** - * Desc: - */ private native long _getNextDocument( long lThis, - long lpDbRef, + long lDbRef, long lReusedNodeRef) throws XFlaimException; - /** - * Desc: - */ private native String _getPrefix( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; + + private native int _getPrefixId( + long lThis, + long lDbRef) throws XFlaimException; + + private native int _getEncDefId( + long lThis, + long lDbRef) throws XFlaimException; + + private native void _setPrefix( + long lThis, + long lDbRef, + String sPrefix) throws XFlaimException; + + private native void _setPrefixId( + long lThis, + long lDbRef, + int iPrefixId) throws XFlaimException; - /** - * Desc: - */ private native long _getChildElement( long lThis, - long lpDbRef, + long lDbRef, int iNameId, long lReusedNodeRef) throws XFlaimException; - /** - * Desc: - */ private native long _getSiblingElement( long lThis, - long lpDbRef, + long lDbRef, int iNameId, boolean bNext, long lReusedNodeRef) throws XFlaimException; - /** - * Desc: - */ + private native long _getAncestorElement( + long lThis, + long lDbRef, + int iNameId, + long lReusedNodeRef) throws XFlaimException; + + private native long _getDescendantElement( + long lThis, + long lDbRef, + int iNameId, + long lReusedNodeRef) throws XFlaimException; + private native long _getParentId( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; - /** - * Desc: - */ private native long _getNodeId( long lThis, - long lpDbRef); + long lDbRef); - /** - * Desc: - */ private native long _getDocumentId( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; - /** - * Desc: - */ private native long _getPrevSibId( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; - /** - * Desc: - */ private native long _getNextSibId( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; - /** - * Desc: - */ private native long _getFirstChildId( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; - /** - * Desc: - */ private native long _getLastChildId( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; - /** - * Desc: - */ private native long _getFirstAttrId( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; - /** - * Desc: - */ private native long _getLastAttrId( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; - /** - * Desc: - */ private native int _getNameId( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; - /** - * Desc: - */ private native String _getNamespaceURI( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; - /** - * Desc: - */ private native String _getLocalName( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; - /** - * Desc: - */ private native String _getQualifiedName( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; - /** - * Desc: - */ private native int _getCollection( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; - - /** - * Desc: - */ private native long _getLong( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; + + private native long _getAttributeValueLong( + long lThis, + long lDbRef, + int iAttrNameId, + boolean bDefaultOk, + long lDefaultToUse) throws XFlaimException; - /** - * Desc: - */ private native String _getString( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef, + int iStartPos, + int iNumChars) throws XFlaimException; + + private native String _getAttributeValueString( + long lThis, + long lDbRef, + int iAttrNameId) throws XFlaimException; - /** - * Desc: - */ private native int _getStringLen( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; - /** - * Desc: - */ private native int _getDataType( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; - /** - * Desc: - */ private native long _getDataLength( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; - /** - * Desc: - */ private native byte[] _getBinary( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef, + int iStartPos, + int iNumBytes) throws XFlaimException; - /** - * Desc: - */ + private native byte[] _getAttributeValueBinary( + long lThis, + long lDbRef, + int iAttrNameId) throws XFlaimException; + private native void _setLong( long lThis, - long lpDbRef, - long lValue) throws XFlaimException; + long lDbRef, + long lValue, + int iEncId) throws XFlaimException; + + private native void _setAttributeValueLong( + long lThis, + long lDbRef, + int iAttrNameId, + long lValue, + int iEncId) throws XFlaimException; - /** - * Desc: - */ private native void _setString( long lThis, - long lpDbRef, + long lDbRef, String sValue, - boolean bLast) throws XFlaimException; + boolean bLast, + int iEncId) throws XFlaimException; + + private native void _setAttributeValueString( + long lThis, + long lDbRef, + int iAttrNameId, + String sValue, + int iEncId) throws XFlaimException; - /** - * Desc: - */ private native void _setBinary( long lThis, - long lpDbRef, - byte[] Value) throws XFlaimException; + long lDbRef, + byte[] Value, + boolean bLast, + int iEncId) throws XFlaimException; + + private native void _setAttributeValueBinary( + long lThis, + long lDbRef, + int iAttrNameId, + byte[] Value, + int iEncId) throws XFlaimException; - /** - * Desc: - */ private native long _createAnnotation( long lThis, - long lpDbRef, + long lDbRef, long lReusedNodeRef) throws XFlaimException; - /** - * Desc: - */ private native long _getAnnotation( long lThis, - long lpDbRef, + long lDbRef, long lReusedNodeRef) throws XFlaimException; - /** - * Desc: - */ + private native long _getAnnotationId( + long lThis, + long lDbRef) throws XFlaimException; + private native boolean _hasAnnotation( long lThis, - long lpDbRef) throws XFlaimException; + long lDbRef) throws XFlaimException; - /** - * Desc: - */ private native void _release( long lThis); - public long getThis() - { - return m_this; - } + private native void setPrefix( + long lThis, + long lDbRef, + String sPrefix) throws XFlaimException; + + private native long _getMetaValue( + long lThis, + long lDbRef) throws XFlaimException; + private native void _setMetaValue( + long lThis, + long lDbRef, + long lValue) throws XFlaimException; + + private native boolean _isDataLocalToNode( + long lThis, + long lDbRef) throws XFlaimException; + private long m_this; private Db m_jdb; } +