diff --git a/src/main/java/cactusServer/entities/Account.java b/src/main/java/cactusServer/entities/Account.java index 491178b..e5153d6 100644 --- a/src/main/java/cactusServer/entities/Account.java +++ b/src/main/java/cactusServer/entities/Account.java @@ -1,21 +1,13 @@ package cactusServer.entities; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +//import com.fasterxml.jackson.annotation.JsonIgnore; +//import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import cactusServer.utils.RandomStringGenerator; import net.arnx.jsonic.JSONHint; -public class Account extends Entity{ - private String id, name, token; - - - private String pass; - - @JSONHint(ignore=true) - private String uniqueID; - - @JSONHint(ignore=true) +public class Account extends Entity { + private String id, name, token, pass, uniqueID; private boolean login = false; public Account(String userID, String userName, String userPass, String uniqueID) { @@ -41,7 +33,8 @@ public void setName(String name) { this.name = name; } - @JSONHint(ignore=true) + + @JSONHint(ignore = true) public String getPass() { return pass; } @@ -49,7 +42,8 @@ public void setPass(String pass) { this.pass = pass; } - @JSONHint(ignore=true) + + @JSONHint(ignore = true) public boolean isLogin() { return login; } @@ -66,7 +60,8 @@ token = RandomStringGenerator.generateRandomString(64, RandomStringGenerator.ALPHA_NUMERIC); return token; } - @JSONHint(ignore=true) + + @JSONHint(ignore = true) public String getUniqueID() { return uniqueID; } diff --git a/src/main/java/cactusServer/entities/Instance.java b/src/main/java/cactusServer/entities/Instance.java index 7a5ff6c..650f494 100644 --- a/src/main/java/cactusServer/entities/Instance.java +++ b/src/main/java/cactusServer/entities/Instance.java @@ -48,25 +48,6 @@ setState(state); setStage(stageModel); } - - /** - * InstancesRest�Ƃ̃G���[�����p (��ŏ���) - * @param name - * @param state - */ - public Instance(String name, State state) { - this.name = name; - this.state = state; - } - - /** - * InstancesRest�Ƃ̃G���[�����p (��ŏ���) - * @param name - */ - public Instance(String name) { - this.name = name; - this.state = State.AVAILABLE; - } public String getName() { return name; @@ -85,6 +66,7 @@ return areaMap.keySet(); } + @JSONHint(ignore = true) public Area getArea(String areaId) { return areaMap.get(areaId); } @@ -94,35 +76,21 @@ return objMap.keySet(); } + @JSONHint(ignore = true) public Object getObject(String objId) { return objMap.get(objId); } -// @JSONHint(ignore = true) -// public List getActiveCharacters() { -// List activeCharacterList = new ArrayList<>(); -// for (Map.Entry entry : characterMap.entrySet()) { -// Character character = entry.getValue(); -// if (character.isActive()) { -// activeCharacterList.add(character); -// } -// } -// return activeCharacterList; -// } - -// public List getCharacters(String accountUniqueId) { -// List accountCharacterList = new ArrayList<>(); -// for (Map.Entry entry : characterMap.entrySet()) { -// Character character = entry.getValue(); -// URI accountURI = character.getAccountURI(); -// if (accountUniqueId.equals("")) { -// // if���̏����ɂ�accountURI�Ɋ܂܂��accountId�ƈ�����id�Ƃ̏ƍ������� -// accountCharacterList.add(character); -// } -// } -// return accountCharacterList; -// } - + @JSONHint(ignore = true) + public List getCharacters() { + List characters = new ArrayList<>(); + for (Character character : characterMap.values()) { + characters.add(character); + } + return characters; + } + + @JSONHint(ignore = true) public Character getCharacter(String characterId) { return characterMap.get(characterId); } @@ -139,23 +107,22 @@ this.stage = stage; } - public AddressedEntity createArea(String name, Plain[] region, HashSet permissions) { + public IDAddressedEntity createArea(String name, Plain[] region, HashSet permissions) { String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, areaMap.keySet()); Area area = new Area(name, region, permissions); areaMap.put(id, area); return new IDAddressedEntity(id, area); } - public AddressedEntity createObject(Position3D position, Velocity3D velocity, AngularVelocity3D angularVelocity, Angle angle, Attribute attribute, ObjectModel model) { + public IDAddressedEntity createObject(Position3D position, Velocity3D velocity, AngularVelocity3D angularVelocity, Angle angle, Attribute attribute, ObjectModel model) { String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, objMap.keySet()); Object object = new Object(position, velocity, angularVelocity, angle, attribute, model); objMap.put(id, object); return new IDAddressedEntity(id, object); } - public AddressedEntity createCharacter(String accountURI, String name, Position3D position, Angle angle, CharacterModel model) { + public IDAddressedEntity createCharacter(String accountURI, String name, Position3D position, Angle angle, CharacterModel model) { String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, characterMap.keySet()); -// String characterURI = (INSTANCE_URI + "/characters/" + id); Character character = new Character(accountURI, name, position, angle, model); characterMap.put(id, character); return new IDAddressedEntity(id, character); diff --git a/src/main/java/cactusServer/entities/Session.java b/src/main/java/cactusServer/entities/Session.java deleted file mode 100644 index cabea47..0000000 --- a/src/main/java/cactusServer/entities/Session.java +++ /dev/null @@ -1,27 +0,0 @@ -package cactusServer.entities; - -import java.net.URI; - -import cactusServer.entities.Account; - -public class Session extends URIAddressedEntity{ - public Session(Account account, URI accountURI) { - super(accountURI, account); - } - - public Account getAccount() { - return (Account)getBody(); - } - - public void setAccount(Account account) { - setBody(account); - } - - public URI getAccountURI() { - return getUri(); - } - - public void setAccountURI(URI accountURI) { - setUri(accountURI); - } -} diff --git a/src/main/java/cactusServer/models/Accounts.java b/src/main/java/cactusServer/models/Accounts.java index cf8a9d3..e06fbce 100644 --- a/src/main/java/cactusServer/models/Accounts.java +++ b/src/main/java/cactusServer/models/Accounts.java @@ -5,7 +5,6 @@ import cactusServer.entities.*; import cactusServer.utils.RandomStringGenerator; -import java.net.URI; import java.util.*; @Singleton @@ -14,7 +13,7 @@ private ArrayList accounts = new ArrayList<>(10000); private HashSet userIDSet = new HashSet<>(10000); private HashSet uniqueIDSet = new HashSet<>(10000); - private Session session; + private URIAddressedEntity session; private Accounts() { @@ -27,7 +26,7 @@ return theInstance; } - public Session createAcount(String userID, String userName, String userPass) { + public URIAddressedEntity createAcount(String userID, String userName, String userPass) { if (!userIDSet.add(userID)) return null; String uniqueID = RandomStringGenerator.generateUniqueString(12, RandomStringGenerator.ALPHA_NUMERIC, @@ -35,7 +34,7 @@ uniqueIDSet.add(uniqueID); Account newAccount = new Account(userID, userName, userPass, uniqueID); accounts.add(newAccount); - session = new Session(newAccount, URI.create("/CactusServer/rest/accounts/" + uniqueID)); + session = new URIAddressedEntity("/CactusServer/rest/accounts/" + uniqueID, newAccount); return session; } @@ -84,12 +83,13 @@ return null; } - public Session loginAccount(String userID, String userPass) { + public URIAddressedEntity loginAccount(String userID, String userPass) { if (getAccountByID(userID).getPass().equals(userPass)) { Accounts.getInstance().getAccountByID(userID).setLogin(true); Accounts.getInstance().getAccountByID(userID).formToken(); - session = new Session(Accounts.getInstance().getAccountByID(userID), URI.create( - "/CactusServer/rest/accounts/" + Accounts.getInstance().getAccountByID(userID).getUniqueID())); + session = new URIAddressedEntity( + "/CactusServer/rest/accounts/" + Accounts.getInstance().getAccountByID(userID).getUniqueID(), + Accounts.getInstance().getAccountByID(userID)); return session; } else { return null; @@ -100,16 +100,16 @@ Accounts.getInstance().getAccountToken(token).setLogin(false); return Accounts.getInstance().getAccountToken(token); } - - public Account deleteAccount(String token) { - Account edit = Accounts.getInstance().getAccountToken(token); + + public Account deleteAccount(String uniqueID) { + Account edit = Accounts.getInstance().getAccountToken(uniqueID); userIDSet.remove(edit.getId()); uniqueIDSet.remove(edit.getUniqueID()); accounts.remove(edit); return edit; } - public ArrayList getAccounts(){ + public ArrayList getAccounts() { return accounts; } } diff --git a/src/main/java/cactusServer/models/Instances.java b/src/main/java/cactusServer/models/Instances.java index 377c738..d57dd01 100644 --- a/src/main/java/cactusServer/models/Instances.java +++ b/src/main/java/cactusServer/models/Instances.java @@ -1,7 +1,9 @@ package cactusServer.models; import java.net.URI; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import org.apache.commons.lang3.RandomStringUtils; @@ -51,28 +53,14 @@ * @param stageModel * @return */ - public AddressedEntity createInstance(String name, Instance.State state, StageModel stageModel) { + public IDAddressedEntity createInstance(String name, Instance.State state, StageModel stageModel) { String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, instanceMap.keySet()); Instance instance = new Instance(name, state, stageModel); instanceMap.put(id, instance); return new IDAddressedEntity(id, instance); } - /** - * InstancesRest�Ƃ̃G���[�����p (��ŏ���) - * - * @param instance - * @return �V�����쐬���ꂽID��Instance��Map - */ - public Map createInstance(Instance instance) { - String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, instanceMap.keySet()); - instanceMap.put(id, instance); - return new HashMap() { - {put(id, instance);} - }; - } - - public AddressedEntity createPlayer(String instanceURI, String characterURI, CameraState cameraState, EmoteState.EmoteType animationClassToStart) { + public IDAddressedEntity createPlayer(String instanceURI, String characterURI, CameraState cameraState, EmoteState.EmoteType animationClassToStart) { String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, playerMap.keySet()); Player player = new Player(instanceURI, characterURI, cameraState, animationClassToStart); playerMap.put(id, player); @@ -90,6 +78,14 @@ return instanceMap.get(instanceId); } +// public List getPlayers() { +// //playerMap.values().toArray() +//// List players = new ArrayList<>(); +//// for (Player player : playerMap.values().) { +//// //players. +//// } +// } + public Player getPlayer(String playerId) { return playerMap.get(playerId); } diff --git a/src/main/java/cactusServer/resources/InstancesRest.java b/src/main/java/cactusServer/resources/InstancesRest.java index cfe6fd9..38e6427 100644 --- a/src/main/java/cactusServer/resources/InstancesRest.java +++ b/src/main/java/cactusServer/resources/InstancesRest.java @@ -1,5 +1,6 @@ package cactusServer.resources; +import java.util.HashSet; import java.util.Map; import javax.ws.rs.DELETE; @@ -13,78 +14,124 @@ import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; +import cactusServer.entities.AddressedEntity; +import cactusServer.entities.Angle; +import cactusServer.entities.Area; +import cactusServer.entities.Area.Allowed; +import cactusServer.entities.IDAddressedEntity; import cactusServer.entities.Instance; +import cactusServer.entities.Object.Attribute; +import cactusServer.entities.ObjectModel; +import cactusServer.entities.Plain; +import cactusServer.entities.StageModel; +import cactusServer.entities.URIAddressedEntity; import cactusServer.models.Instances; +import framework.model3D.Position3D; +import framework.physics.AngularVelocity3D; +import framework.physics.Velocity3D; @Path("/instances") public class InstancesRest { + public static final String INSTANCES_URI = "/CactusServer/rest/instances"; public InstancesRest() { } - /* - @Path("/test") - @GET - @Produces(MediaType.TEXT_PLAIN) - public String hoge() { - return "deploy jenkins from tomcat"; - } + +// @Path("/test") +// @GET +// @Produces(MediaType.TEXT_PLAIN) +// public String hoge() { +// return "deploy jenkins from tomcat"; +// } @Path("/{instanceId}") @GET @Produces(MediaType.APPLICATION_JSON) public Instance getInstance(@PathParam("instanceId") String instanceId) { return Instances.getInstance().getInstance(instanceId); - }*/ - -// @Path("/areas") -// @GET -// @Produces(MediaType.APPLICATION_JSON) -// public Instance getArea(@QueryParam("areaId") String areaId) { -// return null; -// } - - -// @GET -// @Path("/characters") -// @Produces(MediaType.APPLICATION_JSON) -// public Instance getCharacter(@QueryParam("AccountUniqueId") String AccountUniqueId) { -// return Instances.getInstance().getCharacter(AccountUniqueId); -// } -// -// -// @POST -// @Path("/{createCharacter}") -// @Produces(MediaType.APPLICATION_JSON) -// public Instance createCharacter(@QueryParam("characterUniqueId") String characterUniqueId) { -// return Instances.getInstance().createCharacter(characterUniqueId); -// } - - - - @POST - @Produces(MediaType.APPLICATION_JSON) - public Map create(@FormParam("name") String name) { - Instance instance = new Instance(name); - return Instances.getInstance().createInstance(instance); } + @Path("/{instanceId}/areas/{areaId}") + @GET + @Produces(MediaType.APPLICATION_JSON) + public Area getArea(@PathParam("instanceId") String instanceId, @PathParam("areaId") String areaId) { + Instance instance = Instances.getInstance().getInstance(instanceId); + if (instance != null) { + return instance.getArea(areaId); + } + return null; + } + + @Path("/{instanceId}/objects/{objectId}") + @GET + @Produces(MediaType.APPLICATION_JSON) + public Object getObject(@PathParam("instanceId") String instanceId, @PathParam("objectId") String objectId) { + Instance instance = Instances.getInstance().getInstance(instanceId); + if (instance != null) { + return instance.getObject(objectId); + } + return null; + } + +// @Path("/{instanceId}/characters/{charactersId}") +// @GET +// @Produces(MediaType.APPLICATION_JSON) +// public Character getCharacter(@PathParam("instanceId") String instanceId, @PathParam("characterId") String characterId) { +// Instance instance = Instances.getInstance().getInstance(instanceId); +// if (instance != null) { +// return Instances.getCharacter(characterId); +// } +// return null; +// } + - /* - @DELETE - @Path("/destroyInstance") - @Produces(MediaType.APPLICATION_JSON) - public Instance destroy(@QueryParam("instanceId") String instanceId) { - return Instances.getInstance().destroyInstance(instanceId); - }*/ + + + +// @POST +// @Produces(MediaType.APPLICATION_JSON) +// public URIAddressedEntity create(@FormParam("name") String name, @FormParam("state") Instance.State state, @FormParam("stageModel") StageModel stageModel) { +// IDAddressedEntity ae = Instances.getInstance().createInstance(name, state, stageModel); +// return new URIAddressedEntity((INSTANCES_URI + "/" + ae.getId()), ae.getBody()); +// } +// +// @Path("/{instanceId}/areas") +// @POST +// @Produces(MediaType.APPLICATION_JSON) +// public URIAddressedEntity create(@PathParam("instanceId") String instanceId, @FormParam("name") String name, +// @FormParam("region") Plain[] region, @FormParam("permissions") HashSet permissions) { +// Instance instance = Instances.getInstance().getInstance(instanceId); +// IDAddressedEntity ae = instance.createArea(name, region, permissions); +// return new URIAddressedEntity((INSTANCES_URI + "/" + instanceId + "/areas/" + ae.getId()), ae.getBody()); +// } +// +// @Path("/{instanceId}/objects") +// @POST +// @Produces(MediaType.APPLICATION_JSON) +// public URIAddressedEntity create(@PathParam("instanceId") String instanceId, @FormParam("position") Position3D position, +// @FormParam("velocity") Velocity3D velocity, @FormParam("angularVelocity") AngularVelocity3D angularVelocity, +// @FormParam("angle") Angle angle, @FormParam("attribute") Attribute attribute, @FormParam("model") ObjectModel model) { +// Instance instance = Instances.getInstance().getInstance(instanceId); +// IDAddressedEntity ae = instance.createObject(position, velocity, angularVelocity, angle, attribute, model); +// return new URIAddressedEntity((INSTANCES_URI + "/" + instanceId + "/objects/" + ae.getId()), ae.getBody()); +// } +// + +// @DELETE +// @Path("/destroyInstance") +// @Produces(MediaType.APPLICATION_JSON) +// public Instance destroy(@QueryParam("instanceId") String instanceId) { +// return Instances.getInstance().destroyInstance(instanceId); +// } // // @Path("/{instanceId}") // @PUT -// public Instance putInstance(@PathParam("InstanceId") String instanceId, @FormParam("areaId") int areaId, -// @FormParam("objectId") int objectId, @FormParam("characterId") String characterId) { +// public Instance putInstance(@PathParam("InstanceId") String instanceId, @FormParam("areaId") String areaId, +// @FormParam("objectId") String objectId, @FormParam("characterId") String characterId) { // // }