VertexPtr CTinOrientDBStorage::_GetStringToVertex(String& str)
{
	String vertexRID = _GetProperty(str, "rid");
	String X = _GetProperty(str, "x");
	String Y = _GetProperty(str, "y");
	String HalfEdgeRID = _GetProperty(str, "halfedge");

	if (HalfEdgeRID == "null")
		HalfEdgeRID = "";

	CTinOrientDBVertex* pV = new CTinOrientDBVertex(vertexRID, atof(X.c_str()), atof(Y.c_str()), HalfEdgeRID);

	return VertexPtr(pV);
}
EdgePtr CTinOrientDBStorage::GetHalfEdge(RID RealEdgeRID)
{
	RID EdgeRID = RealEdgeRID;
	std::map<RID,RID>::iterator oldRIDIter = m_MemoryRIDList.find(RealEdgeRID);
	if (oldRIDIter != m_MemoryRIDList.end()) {
		EdgeRID = oldRIDIter->second;
	}

	std::map<RID,EdgePtr>::iterator iter = m_EdgeCache.find(EdgeRID);

	if (iter != m_EdgeCache.end()) {
		return iter->second;
	}

	String strE = m_JNIOrientDB.GetHalfEdge(RealEdgeRID);

	String strEdgeRID = _GetProperty(strE, "rid");
	String strIn = _GetProperty(strE, "in");
	String strOut = _GetProperty(strE, "out");
	String strPair = _GetProperty(strE, "pair");
	String strCCW = _GetProperty(strE, "ccw");
	String strCW = _GetProperty(strE, "cw");

	CTinOrientDBHalfEdge* pV = new CTinOrientDBHalfEdge(strEdgeRID, strOut, strIn, strPair, strCCW, strCW);

	EdgePtr edgePtr = EdgePtr(pV);
	m_EdgeCache[strEdgeRID] = edgePtr;

	return edgePtr;
}
VJSObject VJSPropertyIterator::GetPropertyAsObject( JS4D::ExceptionRef *outException) const
{
	JS4D::ValueRef value = _GetProperty(  outException);
	return VJSObject( fObject.GetContextRef(), ((value != NULL) && JSValueIsObject( fObject.GetContextRef(), value)) ? JSValueToObject( fObject.GetContextRef(), value, outException) : NULL);
}