/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/VCFImporter.java

  • Committer: edam
  • Date: 2009-01-10 16:14:11 UTC
  • Revision ID: edam@waxworlds.org-20090110161411-4d17l9hs9d6j277q
Initial import

Show diffs side-by-side

added added

removed removed

1
 
/*
2
 
 * VCFImporter.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
 
package org.waxworlds.edam.importcontacts;
 
1
package org.waxworlds.importcontacts;
25
2
 
26
3
import java.io.BufferedReader;
27
4
import java.io.File;
38
15
import java.util.regex.Matcher;
39
16
import java.util.regex.Pattern;
40
17
 
 
18
import org.waxworlds.importcontacts.Importer.AbortImportException;
 
19
 
41
20
import android.content.SharedPreferences;
42
21
import android.provider.Contacts;
43
22
import android.provider.Contacts.PhonesColumns;
67
46
                        // open directory
68
47
                        String location = prefs.getString( "location", "" );
69
48
                        File dir = new File( location );
70
 
                        if( !dir.exists() )
 
49
                        if( !dir.exists() || !dir.isDirectory() )
71
50
                                showError( R.string.error_locationnotfound );
72
51
 
73
 
                        // directory, or file?
74
 
                        if( dir.isDirectory() )
75
 
                        {
76
 
                                // get files
77
 
                                class VCardFilter implements FilenameFilter {
78
 
                                        public boolean accept( File dir, String name ) {
79
 
                                                return name.toLowerCase().endsWith( ".vcf" );
80
 
                                        }
81
 
                                }
82
 
                                files = dir.listFiles( new VCardFilter() );
83
 
                        }
84
 
                        else
85
 
                        {
86
 
                                // use just this file
87
 
                                files = new File[ 1 ];
88
 
                                files[ 0 ] = dir;
89
 
                        }
 
52
                        // get files
 
53
                        class VCardFilter implements FilenameFilter {
 
54
                            public boolean accept( File dir, String name ) {
 
55
                                return name.toLowerCase().endsWith( ".vcf" );
 
56
                            }
 
57
                        }
 
58
                        files = dir.listFiles( new VCardFilter() );
90
59
                }
91
60
                catch( SecurityException e ) {
92
61
                        showError( R.string.error_locationpermissions );
206
175
                                                if( !showContinue(
207
176
                                                                getText( R.string.error_vcf_parse ).toString()
208
177
                                                                + fileName + "\n" + e.getMessage() ) )
209
 
                                                        finish( ACTION_ABORT );
 
178
                                                        abort();
210
179
                                        }
211
180
                                        catch( VCard.SkipContactException e ) {
212
181
                                                skipContact();
225
194
                                                if( !showContinue(
226
195
                                                                getText( R.string.error_vcf_parse ).toString()
227
196
                                                                + fileName + "\n" + e.getMessage() ) )
228
 
                                                        finish( ACTION_ABORT );
 
197
                                                        abort();
229
198
 
230
199
                                                // although we're continuing, we still need to abort
231
200
                                                // this vCard. Further lines will be ignored until we
254
223
                private Vector< String > _lines = null;
255
224
                private int _nameLevel = NAMELEVEL_NONE;
256
225
 
257
 
                @SuppressWarnings("serial")
258
226
                protected class ParseException extends Exception
259
227
                {
260
 
                        @SuppressWarnings("unused")
261
228
                        public ParseException( String error )
262
229
                        {
263
230
                                super( error );
269
236
                        }
270
237
                }
271
238
 
272
 
                @SuppressWarnings("serial")
273
239
                protected class SkipContactException extends Exception { }
274
240
 
275
241
                public void parseLine( String line )