diff --git a/src/main/java/org/ntlab/amaryllis/server/entities/AbstractJson.java b/src/main/java/org/ntlab/amaryllis/server/entities/AbstractJson.java new file mode 100644 index 0000000..f47f525 --- /dev/null +++ b/src/main/java/org/ntlab/amaryllis/server/entities/AbstractJson.java @@ -0,0 +1,5 @@ +package org.ntlab.amaryllis.server.entities; + +public abstract class AbstractJson { + +} 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 29b2cd0..c5d5fff 100644 --- a/src/main/java/org/ntlab/amaryllis/server/entities/Account.java +++ b/src/main/java/org/ntlab/amaryllis/server/entities/Account.java @@ -1,34 +1,76 @@ package org.ntlab.amaryllis.server.entities; +import com.fasterxml.jackson.annotation.JsonIgnore; + import java.util.ArrayList; import java.util.UUID; public class Account { private String uid; private String name; + @JsonIgnore private String token; + @JsonIgnore private String password; private String introduction; private ArrayList followings; private ArrayList followers; - private ArrayList history; private ArrayList contributions; + private ArrayList history; public Account(String name, String password) { this.name = name; this.password = password; - this.uid= UUID.randomUUID().toString(); - this.token=UUID.randomUUID().toString(); + this.uid = UUID.randomUUID().toString(); followings = new ArrayList<>(); followers = new ArrayList<>(); history = new ArrayList<>(); contributions = new ArrayList<>(); + introduction = ""; + } + + public void setUid(String uid) { + this.uid = uid; } public String getUid() { return uid; } - public String getToken(){ + + public String getToken() { return token; } + + public String getPassword() { + return password; + } + + public ArrayList getContributions() { + return contributions; + } + + public ArrayList getFollowers() { + return followers; + } + + public ArrayList getFollowings() { + return followings; + } + + public ArrayList getHistory() { + return history; + } + + public String getIntroduction() { + return introduction; + } + + public String getName() { + return name; + } + + public void setToken(String token) { + this.token = token; + } + } diff --git a/src/main/java/org/ntlab/amaryllis/server/entities/LoginJson.java b/src/main/java/org/ntlab/amaryllis/server/entities/LoginJson.java new file mode 100644 index 0000000..2ee4688 --- /dev/null +++ b/src/main/java/org/ntlab/amaryllis/server/entities/LoginJson.java @@ -0,0 +1,21 @@ +package org.ntlab.amaryllis.server.entities; + +import java.util.UUID; + +public class LoginJson extends AbstractJson { + private String message; + private String token; + + public LoginJson(String message){ + this.message=message; + this.token= UUID.randomUUID().toString(); + } + + public String getMessage(){ + return message; + } + + public String getToken(){ + return token; + } +} diff --git a/src/main/java/org/ntlab/amaryllis/server/entities/MessageJson.java b/src/main/java/org/ntlab/amaryllis/server/entities/MessageJson.java new file mode 100644 index 0000000..a613efc --- /dev/null +++ b/src/main/java/org/ntlab/amaryllis/server/entities/MessageJson.java @@ -0,0 +1,13 @@ +package org.ntlab.amaryllis.server.entities; + +public class MessageJson extends AbstractJson { + private String message; + + public MessageJson(String message) { + this.message = message; + } + + public String getMessage() { + return message; + } +} 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 8ec0fb3..5637e21 100644 --- a/src/main/java/org/ntlab/amaryllis/server/models/Accounts.java +++ b/src/main/java/org/ntlab/amaryllis/server/models/Accounts.java @@ -6,43 +6,51 @@ import java.util.ArrayList; public class Accounts { - private static Accounts theInstance=null; - private ArrayList accounts=new ArrayList(); - public static Accounts getInstance(){ - if(theInstance==null){ - theInstance=new Accounts(); + private static Accounts theInstance = null; + private ArrayList accounts = new ArrayList(); + + public static Accounts getInstance() { + if (theInstance == null) { + theInstance = new Accounts(); } return theInstance; } - - private Accounts( ){ + private Accounts() { } - public Account getAccount(String uid){ - for(Account a: accounts) { - if(a.getUid().equals(uid))return a; + public Account getAccount(String uid) { + for (Account a : accounts) { + if (a.getUid().equals(uid)) return a; } return null; } - public ArrayList getList(){ + public boolean isRegisteredName(String name) { + boolean response; + for (Account a : accounts) { + if (a.getName().equals(name)) return true; + } + return false; + } + + public ArrayList getList() { return accounts; } - public void addAccount(Account account){ + public void addAccount(Account account) { accounts.add(account); } - public Account createAccount(String name,String password){ + public Account createAccount(String name, String password) { Account newAccount = new Account(name, password); addAccount(newAccount); return newAccount; } - public void removeAccount(String uid){ + public void removeAccount(String uid) { } 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 396f28a..e02df83 100644 --- a/src/main/java/org/ntlab/amaryllis/server/resources/AccountsRest.java +++ b/src/main/java/org/ntlab/amaryllis/server/resources/AccountsRest.java @@ -2,8 +2,7 @@ import com.fasterxml.jackson.annotation.*; -import org.ntlab.amaryllis.server.entities.Account; -import org.ntlab.amaryllis.server.entities.AccountJson; +import org.ntlab.amaryllis.server.entities.*; import org.ntlab.amaryllis.server.models.Accounts; import org.ntlab.amaryllis.server.tests.Message; import org.springframework.stereotype.Component; @@ -13,10 +12,9 @@ import java.awt.*; import java.io.IOException; import java.lang.reflect.Array; -import java.util.ArrayList; -import java.util.HashMap; +import java.util.*; import java.util.List; -import java.util.Map; +import javax.swing.*; import javax.ws.rs.*; import javax.ws.rs.core.MediaType; @@ -25,6 +23,17 @@ public class AccountsRest { private Accounts accounts = Accounts.getInstance(); + AccountsRest() { + /** + * ใƒ†ใ‚นใƒˆ็”จ + * */ + { + createAccount("name", "pass"); + Account a = accounts.getList().get(0); + a.setUid("test"); + } + } + @GET public String getAccounts() { ObjectMapper mapper = new ObjectMapper(); @@ -78,74 +87,76 @@ @POST @Produces(MediaType.APPLICATION_JSON) - public AccountJson createAccount(@FormParam("name") String name, @FormParam("password") String password) { - Account newAccount = accounts.createAccount(name,password); - AccountJson accountJson=new AccountJson(); - 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(); + public AbstractJson createAccount(@FormParam("name") String name, @FormParam("password") String password) { + if (accounts.isRegisteredName(name)) { + return new AbstractJson() { + String message = "conflict"; - @JsonProperty("uid") + public String getMessage() { + return message; + } + }; + } else { + Account newAccount = accounts.createAccount(name, password); + return new AbstractJson() { + String message = "success"; + String uid = newAccount.getUid(); + + public String getMessage() { + return message; + } + public String getUid() { return uid; } + }; + } - @JsonProperty("uid") - public void setUid(String uid) { - this.uid = uid; + } + + @Path("/{uid}/login") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public AbstractJson login(@PathParam("uid") String uid, @FormParam("password") String password) { + Account account = accounts.getAccount(uid); + + if (password.equals(account.getPassword())) { + + account.setToken(UUID.randomUUID().toString()); + return new AbstractJson() { + String message = "success"; + String token = account.getToken(); + + public String getMessage() { + return message; } - @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()); - */ - - //accountJson.setToken(); - accountJson.setToken(newAccount.getToken()); - accountJson.setUid(newAccount.getUid()); - json = mapper.writeValueAsString(accountJson); - - - } catch (IOException e) { - e.printStackTrace(); - System.out.println("failed"); + } else { + return new MessageJson("failed"); } - System.out.println(json); - return accountJson; + + } + + @Path("/{uid}") + @GET + @Produces(MediaType.APPLICATION_JSON) + public AbstractJson getAccount(@PathParam("uid") String uid) { + class ResponseJson extends AbstractJson { + Account account = accounts.getAccount(uid); + + public Account getAccount() { + return account; + } + } + AbstractJson response = new ResponseJson(); + + + return response; } } \ No newline at end of file