void nsAbLDIFService::AddLdifColToDatabase()

in mailnews/addrbook/src/nsAbLDIFService.cpp [400:676]


void nsAbLDIFService::AddLdifColToDatabase(nsIAbDirectory* aDirectory,
                                           nsIAbCard* newCard,
                                           nsCString colType, nsCString column,
                                           bool bIsList) {
  nsString value = NS_ConvertUTF8toUTF16(column);

  char firstByte = colType.get()[0];
  switch (firstByte) {
    case 'b':
      if (colType.EqualsLiteral("birthyear"))
        newCard->SetPropertyAsAString(kBirthYearProperty, value);
      else if (colType.EqualsLiteral("birthmonth"))
        newCard->SetPropertyAsAString(kBirthMonthProperty, value);
      else if (colType.EqualsLiteral("birthday"))
        newCard->SetPropertyAsAString(kBirthDayProperty, value);
      break;  // 'b'

    case 'c':
      if (colType.EqualsLiteral("cn") || colType.EqualsLiteral("commonname")) {
        newCard->SetDisplayName(value);
      } else if (colType.EqualsLiteral("c") ||
                 colType.EqualsLiteral("countryname")) {
        if (mStoreLocAsHome)
          newCard->SetPropertyAsAString(kHomeCountryProperty, value);
        else
          newCard->SetPropertyAsAString(kWorkCountryProperty, value);
      }

      else if (colType.EqualsLiteral("cellphone"))
        newCard->SetPropertyAsAString(kCellularProperty, value);

      else if (colType.EqualsLiteral("carphone"))
        newCard->SetPropertyAsAString(kCellularProperty, value);

      else if (colType.EqualsLiteral("custom1"))
        newCard->SetPropertyAsAString(kCustom1Property, value);

      else if (colType.EqualsLiteral("custom2"))
        newCard->SetPropertyAsAString(kCustom2Property, value);

      else if (colType.EqualsLiteral("custom3"))
        newCard->SetPropertyAsAString(kCustom3Property, value);

      else if (colType.EqualsLiteral("custom4"))
        newCard->SetPropertyAsAString(kCustom4Property, value);

      else if (colType.EqualsLiteral("company"))
        newCard->SetPropertyAsAString(kCompanyProperty, value);
      break;  // 'c'

    case 'd':
      if (colType.EqualsLiteral("description"))
        newCard->SetPropertyAsAString(kNotesProperty, value);

      else if (colType.EqualsLiteral("department"))
        newCard->SetPropertyAsAString(kDepartmentProperty, value);

      else if (colType.EqualsLiteral("displayname"))
        newCard->SetDisplayName(value);
      break;  // 'd'

    case 'f':

      if (colType.EqualsLiteral("fax") ||
          colType.EqualsLiteral("facsimiletelephonenumber"))
        newCard->SetPropertyAsAString(kFaxProperty, value);
      break;  // 'f'

    case 'g':
      if (colType.EqualsLiteral("givenname")) newCard->SetFirstName(value);
      break;  // 'g'

    case 'h':
      if (colType.EqualsLiteral("homephone"))
        newCard->SetPropertyAsAString(kHomePhoneProperty, value);

      else if (colType.EqualsLiteral("homestreet"))
        newCard->SetPropertyAsAString(kHomeAddressProperty, value);

      else if (colType.EqualsLiteral("homeurl"))
        newCard->SetPropertyAsAString(kHomeWebPageProperty, value);
      break;  // 'h'

    case 'l':
      if (colType.EqualsLiteral("l") || colType.EqualsLiteral("locality")) {
        if (mStoreLocAsHome)
          newCard->SetPropertyAsAString(kHomeCityProperty, value);
        else
          newCard->SetPropertyAsAString(kWorkCityProperty, value);
      }
      // labeledURI contains a URI and, optionally, a label
      // This will remove the label and place the URI as the work URL
      else if (colType.EqualsLiteral("labeleduri")) {
        int32_t index = column.FindChar(' ');
        if (index != -1) column.SetLength(index);

        newCard->SetPropertyAsAString(kWorkWebPageProperty,
                                      NS_ConvertUTF8toUTF16(column));
      }

      break;  // 'l'

    case 'm':
      if (colType.EqualsLiteral("mail"))
        newCard->SetPrimaryEmail(value);

      else if (colType.EqualsLiteral("mobile"))
        newCard->SetPropertyAsAString(kCellularProperty, value);

      else if (colType.EqualsLiteral("mozilla_aimscreenname"))
        newCard->SetPropertyAsAString(kAIMProperty, value);

      else if (colType.EqualsLiteral("mozillacustom1"))
        newCard->SetPropertyAsAString(kCustom1Property, value);

      else if (colType.EqualsLiteral("mozillacustom2"))
        newCard->SetPropertyAsAString(kCustom2Property, value);

      else if (colType.EqualsLiteral("mozillacustom3"))
        newCard->SetPropertyAsAString(kCustom3Property, value);

      else if (colType.EqualsLiteral("mozillacustom4"))
        newCard->SetPropertyAsAString(kCustom4Property, value);

      else if (colType.EqualsLiteral("mozillahomecountryname"))
        newCard->SetPropertyAsAString(kHomeCountryProperty, value);

      else if (colType.EqualsLiteral("mozillahomelocalityname"))
        newCard->SetPropertyAsAString(kHomeCityProperty, value);

      else if (colType.EqualsLiteral("mozillahomestate"))
        newCard->SetPropertyAsAString(kHomeStateProperty, value);

      else if (colType.EqualsLiteral("mozillahomestreet"))
        newCard->SetPropertyAsAString(kHomeAddressProperty, value);

      else if (colType.EqualsLiteral("mozillahomestreet2"))
        newCard->SetPropertyAsAString(kHomeAddress2Property, value);

      else if (colType.EqualsLiteral("mozillahomepostalcode"))
        newCard->SetPropertyAsAString(kHomeZipCodeProperty, value);

      else if (colType.EqualsLiteral("mozillahomeurl"))
        newCard->SetPropertyAsAString(kHomeWebPageProperty, value);

      else if (colType.EqualsLiteral("mozillanickname"))
        newCard->SetPropertyAsAString(kNicknameProperty, value);

      else if (colType.EqualsLiteral("mozillasecondemail"))
        newCard->SetPropertyAsAString(k2ndEmailProperty, value);

      else if (colType.EqualsLiteral("mozillaworkstreet2"))
        newCard->SetPropertyAsAString(kWorkAddress2Property, value);

      else if (colType.EqualsLiteral("mozillaworkurl"))
        newCard->SetPropertyAsAString(kWorkWebPageProperty, value);

      break;  // 'm'

    case 'n':
      if (colType.EqualsLiteral("notes"))
        newCard->SetPropertyAsAString(kNotesProperty, value);

      else if (colType.EqualsLiteral("nscpaimscreenname") ||
               colType.EqualsLiteral("nsaimid"))
        newCard->SetPropertyAsAString(kAIMProperty, value);

      break;  // 'n'

    case 'o':
      if (colType.EqualsLiteral("objectclass"))
        break;

      else if (colType.EqualsLiteral("ou") || colType.EqualsLiteral("orgunit"))
        newCard->SetPropertyAsAString(kDepartmentProperty, value);

      else if (colType.EqualsLiteral("o"))  // organization
        newCard->SetPropertyAsAString(kCompanyProperty, value);

      break;  // 'o'

    case 'p':
      if (colType.EqualsLiteral("postalcode")) {
        if (mStoreLocAsHome)
          newCard->SetPropertyAsAString(kHomeZipCodeProperty, value);
        else
          newCard->SetPropertyAsAString(kWorkZipCodeProperty, value);
      }

      else if (colType.EqualsLiteral("postofficebox")) {
        nsAutoCString workAddr1, workAddr2;
        SplitCRLFAddressField(column, workAddr1, workAddr2);
        newCard->SetPropertyAsAString(kWorkAddressProperty,
                                      NS_ConvertUTF8toUTF16(workAddr1));
        newCard->SetPropertyAsAString(kWorkAddress2Property,
                                      NS_ConvertUTF8toUTF16(workAddr2));
      } else if (colType.EqualsLiteral("pager") ||
                 colType.EqualsLiteral("pagerphone"))
        newCard->SetPropertyAsAString(kPagerProperty, value);

      break;  // 'p'

    case 'r':
      if (colType.EqualsLiteral("region")) {
        newCard->SetPropertyAsAString(kWorkStateProperty, value);
      }

      break;  // 'r'

    case 's':
      if (colType.EqualsLiteral("sn") || colType.EqualsLiteral("surname"))
        newCard->SetPropertyAsAString(kLastNameProperty, value);

      else if (colType.EqualsLiteral("street"))
        newCard->SetPropertyAsAString(kWorkAddressProperty, value);

      else if (colType.EqualsLiteral("streetaddress")) {
        nsAutoCString addr1, addr2;
        SplitCRLFAddressField(column, addr1, addr2);
        if (mStoreLocAsHome) {
          newCard->SetPropertyAsAString(kHomeAddressProperty,
                                        NS_ConvertUTF8toUTF16(addr1));
          newCard->SetPropertyAsAString(kHomeAddress2Property,
                                        NS_ConvertUTF8toUTF16(addr2));
        } else {
          newCard->SetPropertyAsAString(kWorkAddressProperty,
                                        NS_ConvertUTF8toUTF16(addr1));
          newCard->SetPropertyAsAString(kWorkAddress2Property,
                                        NS_ConvertUTF8toUTF16(addr2));
        }
      } else if (colType.EqualsLiteral("st")) {
        if (mStoreLocAsHome)
          newCard->SetPropertyAsAString(kHomeStateProperty, value);
        else
          newCard->SetPropertyAsAString(kWorkStateProperty, value);
      }

      break;  // 's'

    case 't':
      if (colType.EqualsLiteral("title"))
        newCard->SetPropertyAsAString(kJobTitleProperty, value);

      else if (colType.EqualsLiteral("telephonenumber")) {
        newCard->SetPropertyAsAString(kWorkPhoneProperty, value);
      }

      break;  // 't'

    case 'w':
      if (colType.EqualsLiteral("workurl"))
        newCard->SetPropertyAsAString(kWorkWebPageProperty, value);

      break;  // 'w'

    case 'x':
      if (colType.EqualsLiteral("xmozillanickname")) {
        newCard->SetPropertyAsAString(kNicknameProperty, value);
      }

      break;  // 'x'

    case 'z':
      if (colType.EqualsLiteral("zip"))  // alias for postalcode
      {
        if (mStoreLocAsHome)
          newCard->SetPropertyAsAString(kHomeZipCodeProperty, value);
        else
          newCard->SetPropertyAsAString(kWorkZipCodeProperty, value);
      }

      break;  // 'z'

    default:
      break;  // default
  }
}