author | Jaroslav Tulach <jaroslav.tulach@apidesign.org> |
Tue, 14 Sep 2010 08:30:37 +0200 | |
branch | desktop |
changeset 263 | ac802aa234fc |
parent 260 | 8ebffb5aa10e |
child 268 | 13fe01081e23 |
permissions | -rw-r--r-- |
jaroslav@260 | 1 |
/* |
jaroslav@260 | 2 |
* To change this template, choose Tools | Templates |
jaroslav@260 | 3 |
* and open the template in the editor. |
jaroslav@260 | 4 |
*/ |
jaroslav@260 | 5 |
|
jaroslav@260 | 6 |
package cz.xelfi.quoridor.desktop.sample; |
jaroslav@260 | 7 |
|
jaroslav@260 | 8 |
import com.sun.jersey.api.client.Client; |
jaroslav@260 | 9 |
import com.sun.jersey.api.client.GenericType; |
jaroslav@263 | 10 |
import com.sun.jersey.api.client.UniformInterfaceException; |
jaroslav@260 | 11 |
import com.sun.jersey.api.client.WebResource; |
jaroslav@260 | 12 |
import cz.xelfi.quoridor.webidor.Game; |
jaroslav@260 | 13 |
import cz.xelfi.quoridor.webidor.GameId; |
jaroslav@260 | 14 |
import java.util.List; |
jaroslav@263 | 15 |
import java.util.logging.Level; |
jaroslav@263 | 16 |
import java.util.logging.Logger; |
jaroslav@260 | 17 |
import javax.ws.rs.core.MediaType; |
jaroslav@260 | 18 |
import org.openide.util.Lookup; |
jaroslav@260 | 19 |
|
jaroslav@260 | 20 |
/** Class that connects to the server and answers queries. |
jaroslav@260 | 21 |
* |
jaroslav@260 | 22 |
* @author Jaroslav Tulach |
jaroslav@260 | 23 |
*/ |
jaroslav@260 | 24 |
abstract class Quoridor { |
jaroslav@263 | 25 |
private static Quoridor q; |
jaroslav@260 | 26 |
|
jaroslav@260 | 27 |
public static Quoridor getDefault() { |
jaroslav@263 | 28 |
if (q != null) { |
jaroslav@263 | 29 |
return q; |
jaroslav@263 | 30 |
} |
jaroslav@263 | 31 |
q = Lookup.getDefault().lookup(Quoridor.class); |
jaroslav@263 | 32 |
if (q == null) { |
jaroslav@263 | 33 |
q = new Impl(); |
jaroslav@263 | 34 |
} |
jaroslav@263 | 35 |
return q; |
jaroslav@260 | 36 |
} |
jaroslav@260 | 37 |
|
jaroslav@260 | 38 |
public abstract List<GameId> listGames(); |
jaroslav@260 | 39 |
public abstract Game getGame(String id); |
jaroslav@260 | 40 |
|
jaroslav@263 | 41 |
public abstract boolean login(String login, String password); |
jaroslav@263 | 42 |
|
jaroslav@260 | 43 |
private static class Impl extends Quoridor { |
jaroslav@260 | 44 |
private final WebResource wr; |
jaroslav@263 | 45 |
private String id = ""; |
jaroslav@263 | 46 |
private static final Logger LOG = Logger.getLogger(Impl.class.getName()); |
jaroslav@260 | 47 |
|
jaroslav@260 | 48 |
public Impl() { |
jaroslav@260 | 49 |
Client c = new Client(); |
jaroslav@260 | 50 |
wr = c.resource("http://quoridor.xelfi.cz/api/"); |
jaroslav@260 | 51 |
} |
jaroslav@260 | 52 |
|
jaroslav@260 | 53 |
@Override |
jaroslav@260 | 54 |
public List<GameId> listGames() { |
jaroslav@260 | 55 |
GenericType<List<GameId>> gType = new GenericType<List<GameId>>() {}; |
jaroslav@263 | 56 |
List<GameId> ids = wr.path("games").queryParam("loginID", id). |
jaroslav@263 | 57 |
accept(MediaType.TEXT_XML).get(gType); |
jaroslav@260 | 58 |
return ids; |
jaroslav@260 | 59 |
} |
jaroslav@260 | 60 |
|
jaroslav@260 | 61 |
|
jaroslav@260 | 62 |
@Override |
jaroslav@260 | 63 |
public Game getGame(String id) { |
jaroslav@263 | 64 |
Game g = wr.path("games").path(id).queryParam("loginID", id). |
jaroslav@263 | 65 |
accept(MediaType.TEXT_XML).get(Game.class); |
jaroslav@260 | 66 |
return g; |
jaroslav@260 | 67 |
} |
jaroslav@260 | 68 |
|
jaroslav@263 | 69 |
@Override |
jaroslav@263 | 70 |
public boolean login(String login, String password) { |
jaroslav@263 | 71 |
try { |
jaroslav@263 | 72 |
id = wr.path("login").queryParam("name", login). |
jaroslav@263 | 73 |
queryParam("password", password).put(String.class); |
jaroslav@263 | 74 |
return id != null; |
jaroslav@263 | 75 |
} catch (UniformInterfaceException ex) { |
jaroslav@263 | 76 |
LOG.log(Level.INFO, "Cannot login", ex); |
jaroslav@263 | 77 |
return false; |
jaroslav@263 | 78 |
} |
jaroslav@263 | 79 |
} |
jaroslav@263 | 80 |
|
jaroslav@260 | 81 |
} |
jaroslav@260 | 82 |
} |