/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 12:58:54 UTC
  • Revision ID: edam@waxworlds.org-20090111125854-u8ofzso4jatk12me
- added "all done" message
- rewrote Importer.finish() to make the exit process more consistent
- moved Doit's message definitions to Doit
- ensure the importer is destroyed in Doit.onPause()
- only show the toaster popup if a) there is an importer to abort, and b) the abort actually did something (i.e., it's not already aborted)
- bugfix: added some checks for abortion to the Importer after wait()ing after a dialog. Importer.wake() now alsy does a notify() to break out of dialog waits.
- also, made Importer.checkAbort() protected, so it can be checked from specific importers as desired

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
 
 
24
1
package org.waxworlds.importcontacts;
25
2
 
26
3
import java.util.HashMap;
465
442
                Long contactId = ContentUris.parseId( contactUri );
466
443
                Uri contactPhonesUri = Uri.withAppendedPath( contactUri,
467
444
                                Contacts.People.Phones.CONTENT_DIRECTORY );
 
445
 
 
446
                // add phone numbers
468
447
                Set phonesKeys = phones.keySet();
469
 
 
470
 
                // add phone numbers
471
448
                Iterator i = phonesKeys.iterator();
472
449
                while( i.hasNext() ) {
473
450
                        ContactData.PhoneData phone = phones.get( i.next() );
491
468
                        if( phone._isPreferred ) values.put( Contacts.Phones.ISPRIMARY, 1 );
492
469
                        _doit.getContentResolver().insert( contactPhonesUri, values );
493
470
                }
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
 
                }
511
471
        }
512
472
 
513
473
        private void importContactEmails( Uri contactUri,
516
476
                Long contactId = ContentUris.parseId( contactUri );
517
477
                Uri contactContactMethodsUri = Uri.withAppendedPath( contactUri,
518
478
                                Contacts.People.ContactMethods.CONTENT_DIRECTORY );
 
479
 
 
480
                // add phone numbers
519
481
                Set emailsKeys = emails.keySet();
520
 
 
521
 
                // add email addresses
522
482
                Iterator i = emailsKeys.iterator();
523
483
                while( i.hasNext() ) {
524
484
                        ContactData.EmailData email = emails.get( i.next() );
540
500
                        _doit.getContentResolver().insert( contactContactMethodsUri,
541
501
                                        values );
542
502
                }
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
 
                }
560
503
        }
561
504
 
562
505
        synchronized protected void checkAbort() throws AbortImportException