Smrf.NodeXL.GraphMLLib.TwitterGraphMLUtil.TryAppendVertexXmlNode C# (CSharp) Method

TryAppendVertexXmlNode() public static method

public static TryAppendVertexXmlNode ( String screenName, String userID, GraphMLXmlDocument graphMLXmlDocument, TwitterUser>.Dictionary userIDDictionary, TwitterUser &twitterUser ) : System.Boolean
screenName String
userID String
graphMLXmlDocument Smrf.XmlLib.GraphMLXmlDocument
userIDDictionary TwitterUser>.Dictionary
twitterUser TwitterUser
return System.Boolean
    TryAppendVertexXmlNode
    (
        String screenName,
        String userID,
        GraphMLXmlDocument graphMLXmlDocument,
        Dictionary<String, TwitterUser> userIDDictionary,
        out TwitterUser twitterUser
    )
    {
        Debug.Assert( !String.IsNullOrEmpty(screenName) );
        Debug.Assert( !String.IsNullOrEmpty(userID) );
        Debug.Assert(graphMLXmlDocument != null);
        Debug.Assert(userIDDictionary != null);

        twitterUser = null;

        if ( userIDDictionary.TryGetValue(userID, out twitterUser) )
        {
            // A vertex XML node already exists.

            return (false);
        }

        XmlNode vertexXmlNode = graphMLXmlDocument.AppendVertexXmlNode(
            screenName);

        twitterUser = new TwitterUser(screenName, vertexXmlNode);
        userIDDictionary.Add(userID, twitterUser);

        graphMLXmlDocument.AppendGraphMLAttributeValue(vertexXmlNode,
            NodeXLGraphMLUtil.VertexMenuTextID,
            "Open Twitter Page for This Person");

        graphMLXmlDocument.AppendGraphMLAttributeValue(
            vertexXmlNode,
            NodeXLGraphMLUtil.VertexMenuActionID,
            String.Format(TwitterApiUrls.UserWebPageUrlPattern, screenName)
            );

        return (true);
    }

Usage Example

        TryAppendVertexXmlNode
        (
            Dictionary <String, Object> userValueDictionary,
            Boolean userTweetedSearchTerm,
            GraphMLXmlDocument graphMLXmlDocument,
            Dictionary <String, TwitterUser> userIDDictionary,
            out TwitterUser twitterUser
        )
        {
            Debug.Assert(userValueDictionary != null);
            Debug.Assert(graphMLXmlDocument != null);
            Debug.Assert(userIDDictionary != null);

            twitterUser = null;

            String screenName, userID;

            if (
                !TwitterJsonUtil.TryGetJsonValueFromDictionary(userValueDictionary,
                                                               "screen_name", out screenName)
                ||
                !TwitterJsonUtil.TryGetJsonValueFromDictionary(userValueDictionary,
                                                               "id_str", out userID)
                )
            {
                return(false);
            }

            screenName = screenName.ToLower();

            Boolean isFirstTweetForAuthor =
                TwitterGraphMLUtil.TryAppendVertexXmlNode(
                    screenName, userID, graphMLXmlDocument, userIDDictionary,
                    out twitterUser);

            if (isFirstTweetForAuthor)
            {
                TwitterGraphMLUtil.AppendCommonUserInformationFromValueDictionary(
                    userValueDictionary, graphMLXmlDocument, twitterUser);

                TwitterGraphMLUtil.AppendUserStatisticsFromValueDictionary(
                    userValueDictionary, graphMLXmlDocument, twitterUser);

                AppendTweetedSearchTermGraphMLAttributeValue(
                    graphMLXmlDocument, twitterUser, userTweetedSearchTerm);
            }

            return(true);
        }