GetScreenNames() 공개 메소드

public GetScreenNames ( String statusText, String &repliedToScreenName, String &uniqueMentionedScreenNames ) : void
statusText String
repliedToScreenName String
uniqueMentionedScreenNames String
리턴 void
    AppendRepliesToAndMentionsEdgeXmlNodes
    (
        GraphMLXmlDocument graphMLXmlDocument,
        TwitterStatusTextParser twitterStatusTextParser,
        HashSet<String> uniqueScreenNames,
        Boolean includeRepliesToEdges,
        Boolean includeMentionsEdges,
        Boolean includeNonRepliesToNonMentionsEdges,
        String screenName,
        TwitterStatus twitterStatus,
        Boolean includeStatus
    )
    {
        Debug.Assert(graphMLXmlDocument != null);
        Debug.Assert(twitterStatusTextParser != null);
        Debug.Assert(uniqueScreenNames != null);
        Debug.Assert( !String.IsNullOrEmpty(screenName) );
        Debug.Assert(twitterStatus != null);

        String statusText = twitterStatus.Text;
        Boolean isReplyTo = false;
        Boolean isMentions = false;

        Debug.Assert( !String.IsNullOrEmpty(statusText) );

        String repliedToScreenName;
        String [] uniqueMentionedScreenNames;

        twitterStatusTextParser.GetScreenNames(statusText,
            out repliedToScreenName, out uniqueMentionedScreenNames);

        if (repliedToScreenName != null)
        {
            if (
                repliedToScreenName != screenName
                &&
                uniqueScreenNames.Contains(repliedToScreenName)
                )
            {
                isReplyTo = true;

                if (includeRepliesToEdges)
                {
                    AppendRepliesToAndMentionsEdgeXmlNode(
                        graphMLXmlDocument, screenName, repliedToScreenName,
                        RepliesToRelationship, twitterStatus, includeStatus);
                }
            }
        }

        foreach (String mentionedScreenName in uniqueMentionedScreenNames)
        {
            if (
                mentionedScreenName != screenName
                &&
                uniqueScreenNames.Contains(mentionedScreenName)
                )
            {
                isMentions = true;

                if (includeMentionsEdges)
                {
                    AppendRepliesToAndMentionsEdgeXmlNode(
                        graphMLXmlDocument, screenName, mentionedScreenName,
                        MentionsRelationship, twitterStatus, includeStatus);
                }
            }
        }

        if (includeNonRepliesToNonMentionsEdges && !isReplyTo && !isMentions)
        {
            // Append a self-loop edge to represent the tweet.

            AppendRepliesToAndMentionsEdgeXmlNode(
                graphMLXmlDocument, screenName, screenName,
                NonRepliesToNonMentionsRelationship, twitterStatus,
                includeStatus);
        }
    }
    GetMentionsAndRepliesToScreenNames
    (
        Dictionary<String, TwitterUser> userIDDictionary
    )
    {
        Debug.Assert(userIDDictionary != null);

        HashSet<String> uniqueScreenNamesWhoTweetedSearchTerm =
            TwitterGraphMLUtil.TwitterUsersToUniqueScreenNames(
                userIDDictionary.Values);

        HashSet<String> uniqueMentionsAndRepliesToScreenNames =
            new HashSet<String>();

        TwitterStatusTextParser twitterStatusTextParser =
            new TwitterStatusTextParser();

        foreach (TwitterUser twitterUser in userIDDictionary.Values)
        {
            foreach (TwitterStatus twitterStatus in twitterUser.Statuses)
            {
                String repliesToScreenName;
                String [] uniqueMentionsScreenNames;

                twitterStatusTextParser.GetScreenNames(twitterStatus.Text,
                    out repliesToScreenName,
                    out uniqueMentionsScreenNames);

                if (
                    repliesToScreenName != null
                    &&
                    !uniqueScreenNamesWhoTweetedSearchTerm.Contains(
                        repliesToScreenName) )
                {
                    uniqueMentionsAndRepliesToScreenNames.Add(
                        repliesToScreenName);
                }

                foreach (String uniqueMentionsScreenName in
                    uniqueMentionsScreenNames)
                {
                    if ( !uniqueScreenNamesWhoTweetedSearchTerm.Contains(
                        uniqueMentionsScreenName) )
                    {
                        uniqueMentionsAndRepliesToScreenNames.Add(
                            uniqueMentionsScreenName);
                    }
                }
            }
        }

        return ( uniqueMentionsAndRepliesToScreenNames.ToArray() );
    }