/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-13 06:35:26 UTC
  • Revision ID: edam@waxworlds.org-20090113063526-l9t1s9git4bav60a
- new contact's phone numebrs and email addresses are added to the caches after those contacts are updated to account for the situation where the same contact is imported again from another file (or the contact exists twice in the same file!?)

Show diffs side-by-side

added added

removed removed

 
1
/*
 
2
 * Importer.java
 
3
 *
 
4
 * Copyright (C) 2009 Tim Marston <edam@waxworlds.org>
 
5
 *
 
6
 * This file is part of the Import Contacts program (hereafter referred
 
7
 * to as "this program"). For more information, see
 
8
 * http://www.waxworlds.org/edam/software/android/import-contacts
 
9
 *
 
10
 * This program is free software: you can redistribute it and/or modify
 
11
 * it under the terms of the GNU General Public License as published by
 
12
 * the Free Software Foundation, either version 3 of the License, or
 
13
 * (at your option) any later version.
 
14
 *
 
15
 * This program is distributed in the hope that it will be useful,
 
16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
18
 * GNU General Public License for more details.
 
19
 *
 
20
 * You should have received a copy of the GNU General Public License
 
21
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
22
 */
 
23
 
1
24
package org.waxworlds.importcontacts;
2
25
 
3
26
import java.util.HashMap;
442
465
                Long contactId = ContentUris.parseId( contactUri );
443
466
                Uri contactPhonesUri = Uri.withAppendedPath( contactUri,
444
467
                                Contacts.People.Phones.CONTENT_DIRECTORY );
445
 
 
446
 
                // add phone numbers
447
468
                Set phonesKeys = phones.keySet();
 
469
 
 
470
                // add phone numbers
448
471
                Iterator i = phonesKeys.iterator();
449
472
                while( i.hasNext() ) {
450
473
                        ContactData.PhoneData phone = phones.get( i.next() );
468
491
                        if( phone._isPreferred ) values.put( Contacts.Phones.ISPRIMARY, 1 );
469
492
                        _doit.getContentResolver().insert( contactPhonesUri, values );
470
493
                }
 
494
 
 
495
                // now add those phone numbers to the cache to prevent the addition of
 
496
                // duplicate data from another file
 
497
                i = phonesKeys.iterator();
 
498
                while( i.hasNext() ) {
 
499
                        ContactData.PhoneData phone = phones.get( i.next() );
 
500
 
 
501
                        String number = sanitisePhoneNumber( phone._number );
 
502
                        if( number != null ) {
 
503
                                HashSet< String > numbers = _contactNumbers.get( contactId );
 
504
                                if( numbers == null ) {
 
505
                                        _contactNumbers.put( contactId, new HashSet< String >() );
 
506
                                        numbers = _contactNumbers.get( contactId );
 
507
                                }
 
508
                                numbers.add( number );
 
509
                        }
 
510
                }
471
511
        }
472
512
 
473
513
        private void importContactEmails( Uri contactUri,
476
516
                Long contactId = ContentUris.parseId( contactUri );
477
517
                Uri contactContactMethodsUri = Uri.withAppendedPath( contactUri,
478
518
                                Contacts.People.ContactMethods.CONTENT_DIRECTORY );
479
 
 
480
 
                // add phone numbers
481
519
                Set emailsKeys = emails.keySet();
 
520
 
 
521
                // add email addresses
482
522
                Iterator i = emailsKeys.iterator();
483
523
                while( i.hasNext() ) {
484
524
                        ContactData.EmailData email = emails.get( i.next() );
500
540
                        _doit.getContentResolver().insert( contactContactMethodsUri,
501
541
                                        values );
502
542
                }
 
543
 
 
544
                // now add those email addresses to the cache to prevent the addition of
 
545
                // duplicate data from another file
 
546
                i = emailsKeys.iterator();
 
547
                while( i.hasNext() ) {
 
548
                        ContactData.EmailData email = emails.get( i.next() );
 
549
 
 
550
                        String address = sanitiseEmailAddress( email.getAddress() );
 
551
                        if( address != null ) {
 
552
                                HashSet< String > addresses = _contactEmails.get( contactId );
 
553
                                if( addresses == null ) {
 
554
                                        _contactEmails.put( contactId, new HashSet< String >() );
 
555
                                        addresses = _contactEmails.get( contactId );
 
556
                                }
 
557
                                addresses.add( address );
 
558
                        }
 
559
                }
503
560
        }
504
561
 
505
562
        synchronized protected void checkAbort() throws AbortImportException