desktop/desktop-sample/src/main/java/cz/xelfi/quoridor/desktop/sample/Quoridor.java
2 * Quoridor server and related libraries
3 * Copyright (C) 2009-2010 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. Look for COPYING file in the top folder.
16 * If not, see http://www.gnu.org/licenses/.
19 package cz.xelfi.quoridor.desktop.sample;
21 import com.sun.jersey.api.client.Client;
22 import com.sun.jersey.api.client.GenericType;
23 import com.sun.jersey.api.client.UniformInterfaceException;
24 import com.sun.jersey.api.client.WebResource;
25 import cz.xelfi.quoridor.webidor.Game;
26 import cz.xelfi.quoridor.webidor.GameId;
27 import java.util.List;
28 import java.util.logging.Level;
29 import java.util.logging.Logger;
30 import javax.ws.rs.core.MediaType;
31 import org.openide.util.Lookup;
33 /** Class that connects to the server and answers queries.
35 * @author Jaroslav Tulach
37 abstract class Quoridor {
38 private static Quoridor q;
40 public static Quoridor getDefault() {
44 q = Lookup.getDefault().lookup(Quoridor.class);
51 public abstract List<GameId> listGames();
52 public abstract Game getGame(String id);
54 public abstract boolean login(String login, String password);
56 private static class Impl extends Quoridor {
57 private final WebResource wr;
58 private String id = "";
59 private static final Logger LOG = Logger.getLogger(Impl.class.getName());
62 Client c = new Client();
63 wr = c.resource("http://quoridor.xelfi.cz/api/");
67 public List<GameId> listGames() {
68 GenericType<List<GameId>> gType = new GenericType<List<GameId>>() {};
69 List<GameId> ids = wr.path("games").queryParam("loginID", id).
70 accept(MediaType.TEXT_XML).get(gType);
76 public Game getGame(String id) {
77 Game g = wr.path("games").path(id).queryParam("loginID", id).
78 accept(MediaType.TEXT_XML).get(Game.class);
83 public boolean login(String login, String password) {
85 id = wr.path("login").queryParam("name", login).
86 queryParam("password", password).put(String.class);
88 } catch (UniformInterfaceException ex) {
89 LOG.log(Level.INFO, "Cannot login", ex);