content: /*
   * CDDL HEADER START
   *
   * The contents of this file are subject to the terms of the Common Development
   * and Distribution License (the "License").
   * You may not use this file except in compliance with the License.
   *
   * You can obtain a copy of the license at
   * src/com/vodafone360/people/VODAFONE.LICENSE.txt or
   * http://github.com/360/360-Engine-for-Android
   * See the License for the specific language governing permissions and
   * limitations under the License.
   *
   * When distributing Covered Code, include this CDDL HEADER in each file and
   * include the License file at src/com/vodafone360/people/VODAFONE.LICENSE.txt.
   * If applicable, add the following below this CDDL HEADER, with the fields
   * enclosed by brackets "[]" replaced with your own identifying information:
   * Portions Copyright [yyyy] [name of copyright owner]
   *
   * CDDL HEADER END
   *
   * Copyright 2010 Vodafone Sales & Services Ltd.  All rights reserved.
   * Use is subject to license terms.
   */
  
  package com.vodafone360.people.utils;
  
  import android.content.Context;
  import android.graphics.Bitmap;
  
  import com.vodafone360.people.R;
  import com.vodafone360.people.datatypes.Identity;
  import com.vodafone360.people.utils.LogUtils;
  
  /**
   * Holds data about a third party account i.e. facebook, msn, google.
   */
  public class ThirdPartyAccount {
      private Identity mIdentity;
  
      private Bitmap mBitmap;
  
      private boolean mIsVerified = false;
  
      private String mDisplayName;
  
      /** username */
      private String mIdentityID;
  
      /**
       * Hard coded SN account names.
       */
      public static final String SNS_TYPE_FACEBOOK = "facebook";
      
      public static final String SNS_TYPE_VKONTAKTE = "vkontakte";
      
      public static final String SNS_TYPE_ODNOKLASSNIKI = "odnoklassniki";
  
      private static final String SNS_TYPE_MICROSOFT = "microsoft";
  
      private static final String SNS_TYPE_MSN = "msn";
  
      private static final String SNS_TYPE_WINDOWS = "windows";
  
      private static final String SNS_TYPE_LIVE = "live";
  
      public static final String SNS_TYPE_GOOGLE = "google";
  
      public static final String SNS_TYPE_VODAFONE = "vodafone";
  
      private static final String SNS_TYPE_NOWPLUS = "nowplus";
  
      private static final String SNS_TYPE_ZYB = "zyb";
  
      public static final String SNS_TYPE_TWITTER = "twitter";
  
      public static final String SNS_TYPE_HYVES = "hyves";
      
      public static final String SNS_TYPE_STUDIVZ = "studivz";
  
  
      /**
       * Create a new third party account object.
       * 
       * @param userName - the username for the account.
       * @param identity - Identity details retrieved from server.
       * @param isVerified -
       */
      public ThirdPartyAccount(String userName, Identity identity, boolean isVerified) {
          mIdentityID = userName;
          mIdentity = identity;
          mIsVerified = isVerified;
          mDisplayName = identity.mName;
      }
  
      /** {@inheritDoc} */
      @Override
      public String toString() {
          final StringBuffer sb = new StringBuffer("ThirdPartyAccount: \n\tmUsername = ");
          sb.append(getIdentityID());
          sb.append("\n\tmDisplayName = "); sb.append(getDisplayName());
          sb.append("\n\tmIsVerified = "); sb.append(isVerified());
          return sb.toString();
      }
  
      /*
       * Checks if the sns string contains text to identify it as Windows live sns
       * @param sns - the text to check
       * @return true if this is a Windows Live sns
       */
      public static boolean isWindowsLive(String sns) {
          String snsLower = sns.toLowerCase();
          return (snsLower.contains(SNS_TYPE_MSN) || snsLower.contains(SNS_TYPE_LIVE)
                  || snsLower.contains(SNS_TYPE_MICROSOFT) || snsLower.contains(SNS_TYPE_WINDOWS));
      }
  
      /**
       * Gets the Localised string for the given SNS.
       * 
       * @param sns - text of the sns type
       * @return Localised string for the given SNS.
       */
      public static String getSnsString(Context context, String sns) {
          if (sns == null) {
              return context.getString(R.string.Utils_sns_name_vodafone);
          } else if (sns.contains(SNS_TYPE_FACEBOOK)) {
              return context.getString(R.string.Utils_sns_name_facebook);
          } else if (sns.contains(SNS_TYPE_ODNOKLASSNIKI)) {
              return context.getString(R.string.Utils_sns_name_odnoklassniki);
          } else if (sns.contains(SNS_TYPE_VKONTAKTE)) {
              return context.getString(R.string.Utils_sns_name_vkontakte);
          } else if (sns.contains(SNS_TYPE_GOOGLE)) {
              return context.getString(R.string.Utils_sns_name_google);
          } else if (isWindowsLive(sns)) {
              return context.getString(R.string.Utils_sns_name_msn);
          } else if (sns.contains(SNS_TYPE_TWITTER)) {
              return context.getString(R.string.Utils_sns_name_twitter);
          } else if (sns.startsWith(SNS_TYPE_HYVES)) {
              return context.getString(R.string.Utils_sns_name_hyves);
          } else if (sns.startsWith(SNS_TYPE_STUDIVZ)) {
              return context.getString(R.string.Utils_sns_name_studivz);
          } else {
              LogUtils.logE("SNSIconUtils.getSNSStringResId() SNS String[" + sns + "] is not of a "
                      + "known type, so returning empty string value");
              return "";
          }
      }
  
      /**
       * @param mBitmap the mBitmap to set
       */
      public void setBitmap(Bitmap mBitmap) {
          this.mBitmap = mBitmap;
      }
  
      /**
       * @return the mBitmap
       */
      public Bitmap getBitmap() {
          return mBitmap;
      }
  
      /**
       * @param mIdentity the mIdentity to set
       */
      public void setIdentity(Identity mIdentity) {
          this.mIdentity = mIdentity;
      }
  
      /**
       * @return the mIdentity
       */
      public Identity getIdentity() {
          return mIdentity;
      }
  
      /**
       * @param mIsVerified the mIsVerified to set
       */
      public void setIsVerified(boolean mIsVerified) {
          this.mIsVerified = mIsVerified;
      }
  
      /**
       * @return the mIsVerified
       */
      public boolean isVerified() {
          return mIsVerified;
      }
  
      /**
       * @param mDisplayName the mDisplayName to set
       */
      public void setDisplayName(String mDisplayName) {
          this.mDisplayName = mDisplayName;
      }
  
      /**
       * @return the mDisplayName
       */
      public String getDisplayName() {
          return mDisplayName;
      }
  
      /**
       * @param mIdentityID the mIdentityID to set
       */
      public void setIdentityID(String mIdentityID) {
          this.mIdentityID = mIdentityID;
      }
  
      /**
       * @return the mIdentityID
       */
      public String getIdentityID() {
          return mIdentityID;
      }
  
      /**
       * Checks if the sns string contains text to identify it as Vodafone sns
       * @param sns - the text to check
       * @return true if this is a Vodafone sns
       */	 	
      public static boolean isVodafone(String sns) {
      	String snsLower = sns.toLowerCase();
      	return (snsLower.contains(SNS_TYPE_VODAFONE) || snsLower.contains(SNS_TYPE_NOWPLUS) || 
      			snsLower.contains(SNS_TYPE_ZYB));
      }
  }
  