aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/connector/IConnector.java
blob: 69cc7d177f7e7601d5dc6f69325357d1e445d722 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package cgeo.geocaching.connector;

import cgeo.geocaching.SearchResult;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.Viewport;

public interface IConnector {
    /**
     * get name for display (currently only used in links)
     *
     * @return
     */
    public String getName();

    /**
     * return true, if this connector is responsible for the given cache
     *
     * @param geocode
     * @return
     */
    public boolean canHandle(final String geocode);

    /**
     * get browser URL for the given cache
     *
     * @param cache
     * @return
     */
    public String getCacheUrl(final cgCache cache);

    /**
     * enable/disable watchlist controls in cache details
     *
     * @return
     */
    public boolean supportsWatchList();

    /**
     * enable/disable favorite points controls in cache details
     *
     * @return
     */
    public boolean supportsFavoritePoints();

    /**
     * enable/disable logging controls in cache details
     *
     * @return
     */
    public boolean supportsLogging();

    /**
     * get host name of the connector server for dynamic loading of data
     *
     * @return
     */
    public String getHost();

    /**
     * get cache data license text
     *
     * @param cache
     * @return
     */
    public String getLicenseText(final cgCache cache);

    /**
     * enable/disable user actions in cache details
     *
     * @return
     */
    public boolean supportsUserActions();

    /**
     * Search caches by viewport.
     *
     * @param viewport
     * @param tokens
     * @return
     */
    public SearchResult searchByViewport(final Viewport viewport, final String[] tokens);

    /**
     * return true if this is a ZIP file containing a GPX file
     *
     * @param fileName
     * @return
     */
    public boolean isZippedGPXFile(final String fileName);

    /**
     * return true if coordinates of a cache are reliable. only implemented by GC connector
     *
     * @param cacheHasReliableLatLon
     *            flag of the cache
     * @return
     */
    public boolean isReliableLatLon(boolean cacheHasReliableLatLon);

    /**
     * Return required tokens for specific following actions
     *
     * @return
     */
    public String[] getTokens();

    /**
     * extract a geocode from the given URL, if this connector can handle that URL somehow
     *
     * @param url
     * @return
     */
    public String getGeocodeFromUrl(final String url);

    /**
     * enable/disable uploading modified coordinates to website
     * 
     * @return true, when uploading is possible
     */
    public boolean supportsOwnCoordinates();

    /**
     * Uploading modified coordinates to website
     *
     * @param cache
     * @param wpt
     * @return success
     */
    public boolean uploadModifiedCoordinates(cgCache cache, Geopoint wpt);

    /**
     * Reseting of modified coordinates on website to details
     *
     * @param cache
     * @return success
     */
    public boolean deleteModifiedCoordinates(cgCache cache);

}