added lreed's mitab plugin
[udig-community:udig-community.git] / lreed / net.refractions.udig.catalog.mitab / src / net / refractions / udig / catalog / mitab / MITABServiceExtension.java
1 /* uDig - User Friendly Desktop Internet GIS client
2  * http://udig.refractions.net
3  * (C) 2008, AmanziTel
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation;
8  * version 2.1 of the License.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  */
15
16 package net.refractions.udig.catalog.mitab;
17
18 import java.net.URL;
19 import java.util.HashMap;
20 import java.util.Map;
21 import java.io.File;
22 import java.io.Serializable;
23
24 import net.refractions.udig.catalog.IService;
25 import net.refractions.udig.catalog.ServiceExtension;
26 import net.refractions.udig.catalog.URLUtils;
27
28 /**
29  * Contribute MITAB support to the uDig catalogue as a ServiceExtension
30  *
31  * @author Lucas Reed, (Refractions Research Inc)
32  * @since 1.1.0
33  */
34 @SuppressWarnings("nls")
35 public class MITABServiceExtension implements ServiceExtension {
36     public static final String KEY = "net.refractions.udig.catalog.mitab.url";
37
38     /**
39      * Returns either parameters Map or null
40      */
41     public Map<String, Serializable> createParams(URL url) {
42         Map<String, Serializable> params = null;
43
44         try {
45             File file = URLUtils.urlToFile(url);
46
47             if (file.exists()) {
48                 String name  = file.getName();
49                 int    start = name.lastIndexOf(".");
50
51                 if (".tab".equalsIgnoreCase(name.substring(start))) {
52                     params = new HashMap<String, Serializable>();
53
54                     params.put(MITABServiceExtension.KEY, url);
55                 }
56             }
57         } catch(Throwable t) {
58             // Intentionally left blank
59         }
60
61         return params;
62     }
63
64     public IService createService(URL id, Map<String, Serializable> params) {
65         if (null == params) {
66             return null;
67         }
68
69         if (params.containsKey(MITABServiceExtension.KEY)) {
70             return new MITABService(params);
71         }
72
73         return null;
74     }
75 }