/android/import-contacts

To get this branch, use:
bzr branch http://bzr.ed.am/android/import-contacts

« back to all changes in this revision

Viewing changes to src/org/waxworlds/importcontacts/Importer.java

  • Committer: edam
  • Date: 2009-01-11 16:47:01 UTC
  • Revision ID: edam@waxworlds.org-20090111164701-tvnnv5axo6jd7ck0
- added GPL header comments to all files
- added GPLv3 to project as COPYING

Show diffs side-by-side

added added

removed removed

150
150
                _doit = doit;
151
151
 
152
152
                SharedPreferences prefs = getSharedPreferences();
153
 
                _mergeSetting = prefs.getInt( "merge_setting", Doit.ACTION_PROMPT );
 
153
                _mergeSetting = prefs.getInt( "merge_setting", 0 );
154
154
        }
155
155
 
156
156
        @Override
346
346
                // handle special cases
347
347
                switch( mergeSetting )
348
348
                {
349
 
                case Doit.ACTION_KEEP:
 
349
                case R.id.merge_keep:
350
350
                        // if we keep contacts on duplicate, we better check for one
351
351
                        return !_contacts.containsKey( name );
352
352
 
353
 
                case Doit.ACTION_PROMPT:
 
353
                case R.id.merge_prompt:
354
354
                        // if we are prompting on duplicate, we better check for one
355
355
                        if( !_contacts.containsKey( name ) )
356
356
                                return true;
402
402
                if( ( id = (Long)_contacts.get( contact._name ) ) != null )
403
403
                {
404
404
                        // should we skip this import altogether?
405
 
                        if( _lastMergeDecision == Doit.ACTION_KEEP ) return;
 
405
                        if( _lastMergeDecision == R.id.merge_keep ) return;
406
406
 
407
407
                        // get contact's URI
408
408
                        contactUri = ContentUris.withAppendedId(
409
409
                                        Contacts.People.CONTENT_URI, id );
410
410
 
411
411
                        // should we destroy the existing contact before importing?
412
 
                        if( _lastMergeDecision == Doit.ACTION_OVERWRITE ) {
 
412
                        if( _lastMergeDecision == R.id.merge_overwrite ) {
413
413
                                _doit.getContentResolver().delete( contactUri, null, null );
414
414
                                contactUri = null;
415
415
 
434
434
                        if( id <= 0 ) return;   // shouldn't happen!
435
435
 
436
436
                        // add them to the "My Contacts" group
437
 
                        Contacts.People.addToMyContactsGroup(
438
 
                                        _doit.getContentResolver(), id );
 
437
                        Contacts.People.addToGroup(
 
438
                                        _doit.getContentResolver(), id,
 
439
                                        Contacts.Groups.GROUP_MY_CONTACTS );
439
440
 
440
441
                        // update cache
441
442
                        _contacts.put( contact._name, id );
464
465
                Long contactId = ContentUris.parseId( contactUri );
465
466
                Uri contactPhonesUri = Uri.withAppendedPath( contactUri,
466
467
                                Contacts.People.Phones.CONTENT_DIRECTORY );
 
468
 
 
469
                // add phone numbers
467
470
                Set phonesKeys = phones.keySet();
468
 
 
469
 
                // add phone numbers
470
471
                Iterator i = phonesKeys.iterator();
471
472
                while( i.hasNext() ) {
472
473
                        ContactData.PhoneData phone = phones.get( i.next() );
490
491
                        if( phone._isPreferred ) values.put( Contacts.Phones.ISPRIMARY, 1 );
491
492
                        _doit.getContentResolver().insert( contactPhonesUri, values );
492
493
                }
493
 
 
494
 
                // now add those phone numbers to the cache to prevent the addition of
495
 
                // duplicate data from another file
496
 
                i = phonesKeys.iterator();
497
 
                while( i.hasNext() ) {
498
 
                        ContactData.PhoneData phone = phones.get( i.next() );
499
 
 
500
 
                        String number = sanitisePhoneNumber( phone._number );
501
 
                        if( number != null ) {
502
 
                                HashSet< String > numbers = _contactNumbers.get( contactId );
503
 
                                if( numbers == null ) {
504
 
                                        _contactNumbers.put( contactId, new HashSet< String >() );
505
 
                                        numbers = _contactNumbers.get( contactId );
506
 
                                }
507
 
                                numbers.add( number );
508
 
                        }
509
 
                }
510
494
        }
511
495
 
512
496
        private void importContactEmails( Uri contactUri,
515
499
                Long contactId = ContentUris.parseId( contactUri );
516
500
                Uri contactContactMethodsUri = Uri.withAppendedPath( contactUri,
517
501
                                Contacts.People.ContactMethods.CONTENT_DIRECTORY );
 
502
 
 
503
                // add phone numbers
518
504
                Set emailsKeys = emails.keySet();
519
 
 
520
 
                // add email addresses
521
505
                Iterator i = emailsKeys.iterator();
522
506
                while( i.hasNext() ) {
523
507
                        ContactData.EmailData email = emails.get( i.next() );
539
523
                        _doit.getContentResolver().insert( contactContactMethodsUri,
540
524
                                        values );
541
525
                }
542
 
 
543
 
                // now add those email addresses to the cache to prevent the addition of
544
 
                // duplicate data from another file
545
 
                i = emailsKeys.iterator();
546
 
                while( i.hasNext() ) {
547
 
                        ContactData.EmailData email = emails.get( i.next() );
548
 
 
549
 
                        String address = sanitiseEmailAddress( email.getAddress() );
550
 
                        if( address != null ) {
551
 
                                HashSet< String > addresses = _contactEmails.get( contactId );
552
 
                                if( addresses == null ) {
553
 
                                        _contactEmails.put( contactId, new HashSet< String >() );
554
 
                                        addresses = _contactEmails.get( contactId );
555
 
                                }
556
 
                                addresses.add( address );
557
 
                        }
558
 
                }
559
526
        }
560
527
 
561
528
        synchronized protected void checkAbort() throws AbortImportException