Example #1
0
  public String autoLinkEntities(
      String text,
      TwitterMediaEntity twitterMediaEntity,
      List<Entity> entities,
      MediaEntity[] mediaEntities,
      URLEntity[] urlEntities) {
    StringBuilder builder = new StringBuilder(text.length() * 2);
    int beginIndex = 0;

    int urlCount = 0;

    for (Entity entity : entities) {
      builder.append(text.subSequence(beginIndex, entity.start));

      switch (entity.type) {
        case URL:
          URLEntity urlEntity = null;

          if (urlEntities != null && urlCount < urlEntities.length) {
            urlEntity = urlEntities[urlCount];
            urlCount += 1;
            // if (twitterMediaEntity != null &&
            // twitterMediaEntity.getUrl().equals(urlEntity.getURL().toString()))
            // {
            // break;
            // }
          }

          if (urlEntity == null) {
            if (entity != null
                && entity.value != null
                && mediaEntities != null
                && mediaEntities.length > 0) {
              MediaEntity mediaEntity = mediaEntities[0];
              if (entity.value.equals(mediaEntity.getURL().toString())) {
                entity.displayURL = mediaEntity.getDisplayURL();
                entity.expandedURL = mediaEntity.getExpandedURL().toString();
              }
            }
          }

          /*
           * if (twitterMediaEntity != null && urlEntity != null) { if
           * (urlEntity.getExpandedURL
           * ().toString().equals(twitterMediaEntity.getExpandedUrl())) {
           * entity.expandedURL = DEFAULT_MEDIA_URL_BASE +
           * twitterMediaEntity.getExpandedUrl().toString(); entity.value
           * = DEFAULT_MEDIA_URL_BASE +
           * twitterMediaEntity.getExpandedUrl().toString(); } }
           */

          linkToURL(entity, text, builder, urlEntity);
          break;
        case HASHTAG:
          linkToHashtag(entity, text, builder);
          break;
        case MENTION:
          linkToMentionAndList(entity, text, builder);
          break;
        case CASHTAG:
          linkToCashtag(entity, text, builder);
          break;
      }
      beginIndex = entity.end;
    }
    builder.append(text.subSequence(beginIndex, text.length()));

    return builder.toString();
  }