diff --git a/src/main/java/org/ntlab/amaryllis/server/entities/Account.java b/src/main/java/org/ntlab/amaryllis/server/entities/Account.java index 9aef321..29b2cd0 100644 --- a/src/main/java/org/ntlab/amaryllis/server/entities/Account.java +++ b/src/main/java/org/ntlab/amaryllis/server/entities/Account.java @@ -1,6 +1,7 @@ package org.ntlab.amaryllis.server.entities; import java.util.ArrayList; +import java.util.UUID; public class Account { private String uid; @@ -12,13 +13,22 @@ private ArrayList followers; private ArrayList history; private ArrayList contributions; - public Account(String name,String password){ - this.name=name; - this.password=password; - followings=new ArrayList<>(); - followers=new ArrayList<>(); - history=new ArrayList<>(); - contributions=new ArrayList<>(); + + public Account(String name, String password) { + this.name = name; + this.password = password; + this.uid= UUID.randomUUID().toString(); + this.token=UUID.randomUUID().toString(); + followings = new ArrayList<>(); + followers = new ArrayList<>(); + history = new ArrayList<>(); + contributions = new ArrayList<>(); } + public String getUid() { + return uid; + } + public String getToken(){ + return token; + } } diff --git a/src/main/java/org/ntlab/amaryllis/server/models/Accounts.java b/src/main/java/org/ntlab/amaryllis/server/models/Accounts.java index 44bedc8..d5280b7 100644 --- a/src/main/java/org/ntlab/amaryllis/server/models/Accounts.java +++ b/src/main/java/org/ntlab/amaryllis/server/models/Accounts.java @@ -1,5 +1,6 @@ package org.ntlab.amaryllis.server.models; +import com.fasterxml.jackson.annotation.JsonProperty; import org.ntlab.amaryllis.server.entities.Account; import java.util.ArrayList; @@ -7,10 +8,6 @@ public class Accounts { private static Accounts theInstance=null; private ArrayList accounts=new ArrayList(); - private Accounts(){ - - } - public static Accounts getInstance(){ if(theInstance==null){ theInstance=new Accounts(); @@ -19,4 +16,18 @@ return theInstance; } + + private Accounts( ){ + + } + + + public ArrayList getList(){ + return accounts; + } + public void addAccount(Account account){ + accounts.add(account); + } + + } diff --git a/src/main/java/org/ntlab/amaryllis/server/resources/AccountsRest.java b/src/main/java/org/ntlab/amaryllis/server/resources/AccountsRest.java index ef077d6..9d0352b 100644 --- a/src/main/java/org/ntlab/amaryllis/server/resources/AccountsRest.java +++ b/src/main/java/org/ntlab/amaryllis/server/resources/AccountsRest.java @@ -1,31 +1,74 @@ package org.ntlab.amaryllis.server.resources; +import com.fasterxml.jackson.annotation.*; +import org.ntlab.amaryllis.server.entities.Account; import org.ntlab.amaryllis.server.models.Accounts; +import org.ntlab.amaryllis.server.tests.Message; import org.springframework.stereotype.Component; import com.fasterxml.jackson.databind.ObjectMapper; + import java.io.IOException; +import java.lang.reflect.Array; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.ws.rs.FormParam; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; -import java.util.ArrayList; - @Component @Path("/accounts") public class AccountsRest { - private Accounts accounts=Accounts.getInstance(); + private Accounts accounts = Accounts.getInstance(); @GET - public String getAccounts(){ - ObjectMapper mapper =new ObjectMapper(); - String json=""; - try{ - Message message=new Message(); - message.setMessage("success"); - json=mapper.writeValueAsString(message); - }catch (IOException e) { + public String getAccounts() { + ObjectMapper mapper = new ObjectMapper(); + String json = ""; + try { + + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonPropertyOrder({ + "accounts" + }) + class Message { + + @JsonProperty("accounts") + private List accounts = null; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + @JsonProperty("accounts") + public List getAccounts() { + return accounts; + } + + @JsonProperty("accounts") + public void setAccounts(List accounts) { + this.accounts = accounts; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + + } + Message message = new Message(); + List list = new ArrayList(); + for (Account a : accounts.getList()) list.add(a.getUid()); + message.setAccounts(list); + json = mapper.writeValueAsString(message); + } catch (IOException e) { e.printStackTrace(); System.out.println("failed"); } @@ -33,5 +76,67 @@ return json; } + @POST + public String createAccount(@FormParam("name") String name, @FormParam("password") String password) { + Account newAccount = new Account(name, password); + accounts.addAccount(newAccount); + ObjectMapper mapper = new ObjectMapper(); + String json = ""; + try { + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonPropertyOrder({ + "uid", + "token" + }) + class Message { + @JsonProperty("uid") + private String uid; + @JsonProperty("token") + private String token; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + @JsonProperty("uid") + public String getUid() { + return uid; + } + + @JsonProperty("uid") + public void setUid(String uid) { + this.uid = uid; + } + + @JsonProperty("token") + public String getToken() { + return token; + } + + @JsonProperty("token") + public void setToken(String token) { + this.token = token; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + + } + Message message = new Message(); + message.setUid(newAccount.getUid()); + message.setToken(newAccount.getToken()); + json = mapper.writeValueAsString(message); + } catch (IOException e) { + e.printStackTrace(); + System.out.println("failed"); + } + System.out.println(json); + return json; + } } \ No newline at end of file diff --git a/src/main/java/org/ntlab/amaryllis/server/resources/Message.java b/src/main/java/org/ntlab/amaryllis/server/resources/Message.java deleted file mode 100644 index c137a5f..0000000 --- a/src/main/java/org/ntlab/amaryllis/server/resources/Message.java +++ /dev/null @@ -1,44 +0,0 @@ - -package org.ntlab.amaryllis.server.resources; - -import java.util.HashMap; -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@JsonPropertyOrder({ - "message" -}) -public class Message { - - @JsonProperty("message") - private String message; - @JsonIgnore - private Map additionalProperties = new HashMap(); - - @JsonProperty("message") - public String getMessage() { - return message; - } - - @JsonProperty("message") - public void setMessage(String message) { - this.message = message; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} \ No newline at end of file diff --git a/src/main/java/org/ntlab/amaryllis/server/tests/BaseSingleton.java b/src/main/java/org/ntlab/amaryllis/server/tests/BaseSingleton.java new file mode 100644 index 0000000..8838372 --- /dev/null +++ b/src/main/java/org/ntlab/amaryllis/server/tests/BaseSingleton.java @@ -0,0 +1,9 @@ +package org.ntlab.amaryllis.server.tests; + +public class BaseSingleton { + private static BaseSingleton theInstance=null; + public static BaseSingleton getInstance(){ + if(theInstance==null)theInstance=new BaseSingleton(); + return theInstance; + } +} diff --git a/src/main/java/org/ntlab/amaryllis/server/tests/Message.java b/src/main/java/org/ntlab/amaryllis/server/tests/Message.java new file mode 100644 index 0000000..1ffd493 --- /dev/null +++ b/src/main/java/org/ntlab/amaryllis/server/tests/Message.java @@ -0,0 +1,44 @@ + +package org.ntlab.amaryllis.server.tests; + +import java.util.HashMap; +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "message" +}) +public class Message { + + @JsonProperty("message") + private String message; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + @JsonProperty("message") + public String getMessage() { + return message; + } + + @JsonProperty("message") + public void setMessage(String message) { + this.message = message; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} \ No newline at end of file