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.Move;
26 import cz.xelfi.quoridor.webidor.Game;
27 import cz.xelfi.quoridor.webidor.GameId;
28 import java.util.List;
29 import java.util.logging.Level;
30 import java.util.logging.Logger;
31 import javax.ws.rs.core.MediaType;
32 import org.openide.util.Lookup;
34 /** Class that connects to the server and answers queries.
36 * @author Jaroslav Tulach
38 abstract class Quoridor {
39 private static Quoridor q;
41 public static Quoridor getDefault() {
45 q = Lookup.getDefault().lookup(Quoridor.class);
52 public abstract List<GameId> listGames();
53 public abstract Game getGame(String id);
54 public abstract String user();
56 public abstract boolean login(String login, String password);
58 public abstract void move(String id, String player, Move move);
60 private static class Impl extends Quoridor {
61 private final WebResource wr;
62 private String id = "";
63 private String login = "";
64 private static final Logger LOG = Logger.getLogger(Impl.class.getName());
67 Client c = new Client();
68 wr = c.resource("http://quoridor.xelfi.cz/api/");
72 public List<GameId> listGames() {
73 GenericType<List<GameId>> gType = new GenericType<List<GameId>>() {};
74 List<GameId> ids = wr.path("games").queryParam("loginID", id).
75 accept(MediaType.TEXT_XML).get(gType);
81 public Game getGame(String id) {
82 Game g = wr.path("games").path(id).queryParam("loginID", id).
83 accept(MediaType.TEXT_XML).get(Game.class);
88 public boolean login(String login, String password) {
90 id = wr.path("login").queryParam("name", login).
91 queryParam("password", password).put(String.class);
96 } catch (UniformInterfaceException ex) {
97 LOG.log(Level.INFO, "Cannot login", ex);
103 public String user() {
108 public void move(String game, String player, Move move) {
109 String s = wr.path("games").path(game).queryParam("loginID", id).
110 queryParam("player", player).
111 queryParam("move", move.toString()).
112 accept(MediaType.TEXT_XML).put(String.class);
113 System.err.println("s: " + s);