/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-11 13:00:52 UTC
  • Revision ID: edam@waxworlds.org-20090111130052-q9bh0zz4ey47egbv
- updated todo list

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 );
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 )
461
427
                                        !charset.equals( "UTF-8" ) && !charset.equals( "UTF-16" ) )
462
428
                                throw new ParseException( R.string.error_vcf_charset );
463
429
                        if( ( encoding = checkParam( params, "ENCODING" ) ) != null &&
464
 
                                        !encoding.equals( "QUOTED-PRINTABLE" ) &&
465
 
                                        !encoding.equals( "8BIT" ) ) //&& !encoding.equals( "BASE64" ) )
 
430
                                        !encoding.equals( "QUOTED-PRINTABLE" ) )
466
431
                                throw new ParseException( R.string.error_vcf_encoding );
467
432
 
468
433
                        // do decoding?
469
434
                        if( encoding != null && encoding.equals( "QUOTED-PRINTABLE" ) )
470
435
                                return unencodeQuotedPrintable( value, charset );
471
 
//                      if( encoding != null && encoding.equals( "BASE64" ) )
472
 
//                              return unencodeBase64( value, charset );
473
436
 
474
437
                        // nothing to do!
475
438
                        return value;