diff --git a/src/main/java/cactusServer/entities/Account.java b/src/main/java/cactusServer/entities/Account.java index 4d24b8a..2d5319c 100644 --- a/src/main/java/cactusServer/entities/Account.java +++ b/src/main/java/cactusServer/entities/Account.java @@ -1,12 +1,17 @@ package cactusServer.entities; -import org.apache.commons.lang3.RandomStringUtils; +import cactusServer.utils.RandomStringGenerator; +import net.arnx.jsonic.JSONHint; public class Account { - private String id,name, pass, token; + private String id, name, token; + @JSONHint(ignore = true) + private String pass, uniqueID; + @JSONHint(ignore = true) private boolean login = false; - public Account(String userName, String userPass) { + public Account(String userID, String userName, String userPass) { + setId(userID); setName(userName); setPass(userPass); } @@ -48,15 +53,15 @@ } public String formToken() { - token = RandomStringUtils.random(64, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); + token = RandomStringGenerator.generateRandomString(64, RandomStringGenerator.ALPHA_NUMERIC); return token; } - public Account getAccount(String token) { - if (this.token == token) { - return this; - } else { - return null; - } + public String getUniqueID() { + return uniqueID; + } + + public void setUniqueID(String uniqueID) { + this.uniqueID = uniqueID; } } diff --git a/src/main/java/cactusServer/entities/RandomStringGenerator.java b/src/main/java/cactusServer/entities/RandomStringGenerator.java deleted file mode 100644 index 4d1caed..0000000 --- a/src/main/java/cactusServer/entities/RandomStringGenerator.java +++ /dev/null @@ -1,25 +0,0 @@ -package cactusServer.entities; - -import java.util.Set; - -import org.apache.commons.lang3.RandomStringUtils; - -public class RandomStringGenerator { - public static final String ALPHA_NUMERIC = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; - - public String createRandomString(int num, String seed) { - return RandomStringUtils.random(num, seed); - } - - public boolean checkString(String str, Set set) { - return set.contains(str); - } - - public String createUniqueString(int num, String seed, Set set) { - String str; - do { - str = createRandomString(num, seed); - } while (checkString(str, set)); - return str; - } -} diff --git a/src/main/java/cactusServer/models/Accounts.java b/src/main/java/cactusServer/models/Accounts.java index 03b05a1..027d42c 100644 --- a/src/main/java/cactusServer/models/Accounts.java +++ b/src/main/java/cactusServer/models/Accounts.java @@ -1,18 +1,21 @@ package cactusServer.models; import javax.inject.Singleton; +import javax.servlet.http.HttpServletResponse; import cactusServer.entities.*; +import cactusServer.utils.RandomStringGenerator; -import java.util.HashMap; -import java.util.HashSet; +import java.net.URI; +import java.util.*; @Singleton public class Accounts { private static Accounts theInstance = null; - private HashMap accounts = new HashMap<>(); - private HashSet idSet = new HashSet(); + private ArrayList accounts = new ArrayList<>(10000); + private HashSet idSet = new HashSet<>(10000); private Session session; + private HttpServletResponse response; private Accounts() { @@ -26,40 +29,67 @@ } public Session createAcount(String userID, String userName, String userPass) { - System.out.println(userName); - if (!idSet.add(userID)) { - return null; - } - Account newAccount = new Account(userName, userPass); - accounts.put(userID, newAccount); + String uniqueID = RandomStringGenerator.createUniqueString(12, RandomStringGenerator.ALPHA_NUMERIC, idSet); + idSet.add(uniqueID); + Account newAccount = new Account(userID, userName, userPass); + newAccount.setUniqueID(uniqueID); + accounts.add(newAccount); newAccount.formToken(); - System.out.println(userID); + session = new Session(newAccount, URI.create(uniqueID)); return session; } - public Account updateAccount(String userID, String userName, String userPass) { - if (idSet.contains(userID)) { - Accounts.getInstance().getAccount(userID).setName(userName); - Accounts.getInstance().getAccount(userID).setPass(userPass); - return Accounts.getInstance().getAccount(userID); - } else { - return null; + public Account getAccountToken(String token) { + Account editAccount; + for (int i = 0; i < accounts.size(); i++) { + editAccount = accounts.get(i); + if (editAccount.getToken().equals(token)) { + return editAccount; + } } + return null; } - public Account getAccount(String userID) { - if (idSet.contains(userID)) { - Account editAccount = accounts.get(userID); - return editAccount; - } else { - return null; + public Account getAccountByID(String userID) { + Account editAccount; + for (int i = 0; i < accounts.size(); i++) { + editAccount = accounts.get(i); + if (editAccount.getId().equals(userID)) { + return editAccount; + } } + return null; } + public Account getAccountByName(String userName) { + Account editAccount; + for (int i = 0; i < accounts.size(); i++) { + editAccount = accounts.get(i); + if (editAccount.getName().equals(userName)) { + return editAccount; + } + } + return null; + } + + public Account getAccountByuniqueID(String uniqueID) { + Account editAccount; + for (int i = 0; i < accounts.size(); i++) { + editAccount = accounts.get(i); + if (editAccount.getUniqueID().equals(uniqueID)) { + return editAccount; + } + } + return null; + } + public Session loginAccount(String userID, String userPass) { - if (idSet.contains(userID) && getAccount(userID).getPass().equals(userPass)) { - Accounts.getInstance().getAccount(userID).setLogin(true); + 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())); return session; } else { return null; @@ -67,17 +97,8 @@ } public String logoutAccount(String token) { + Accounts.getInstance().getAccountToken(token).setLogin(false); return ""; } - public String deleteAccount(String userID) { - if (idSet.contains(userID)) { - accounts.remove(userID); - idSet.remove(userID); - return "complated remove account"; - } else { - return "not exist"; - } - } - } diff --git a/src/main/java/cactusServer/resources/AccountsRest.java b/src/main/java/cactusServer/resources/AccountsRest.java index b4a7bbe..c29d730 100644 --- a/src/main/java/cactusServer/resources/AccountsRest.java +++ b/src/main/java/cactusServer/resources/AccountsRest.java @@ -29,10 +29,10 @@ } @GET - @Path("/{userID}") + @Path("/{uniqueID}") @Produces(MediaType.APPLICATION_JSON) - public Account getAccount(@PathParam("userID") String userID) { - return Accounts.getInstance().getAccount(userID); + public Account getAccount(@PathParam("uniqueID") String uniqueID) { + return Accounts.getInstance().getAccountByuniqueID(uniqueID); } } diff --git a/src/main/java/cactusServer/utils/RandomStringGenerator.java b/src/main/java/cactusServer/utils/RandomStringGenerator.java new file mode 100644 index 0000000..522e32c --- /dev/null +++ b/src/main/java/cactusServer/utils/RandomStringGenerator.java @@ -0,0 +1,29 @@ +package cactusServer.utils; + +import java.util.Set; + +import org.apache.commons.lang3.RandomStringUtils; + +public class RandomStringGenerator { + public static final String ALPHA_NUMERIC = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + + private RandomStringGenerator() { + + } + + static public String generateRandomString(int num, String seed) { + return RandomStringUtils.random(num, seed); + } + + static public boolean checkString(String str, Set set) { + return set.contains(str); + } + + static public String createUniqueString(int num, String seed, Set set) { + String str; + do { + str = generateRandomString(num, seed); + } while (checkString(str, set)); + return str; + } +}