From 25f772ed318c5366bf0e3270b098084d6b646ede Mon Sep 17 00:00:00 2001 From: Soumya Ghosh Dastidar Date: Tue, 29 Oct 2019 03:43:44 +0530 Subject: [PATCH 1/2] solved trello --- .../com/soumya/projectManagement/Board.java | 66 ++++++ .../projectManagement/BoardManager.java | 81 +++++++ .../com/soumya/projectManagement/CList.java | 38 ++++ .../com/soumya/projectManagement/Card.java | 43 ++++ .../soumya/projectManagement/CardManager.java | 83 ++++++++ .../soumya/projectManagement/DriverApp.java | 18 ++ .../soumya/projectManagement/ListManager.java | 48 +++++ .../com/soumya/projectManagement/Privacy.java | 6 + .../projectManagement/ProjectManager.java | 198 ++++++++++++++++++ .../soumya/projectManagement/StorageUtil.java | 21 ++ .../com/soumya/projectManagement/User.java | 33 +++ 11 files changed, 635 insertions(+) create mode 100644 Trello/src/com/soumya/projectManagement/Board.java create mode 100644 Trello/src/com/soumya/projectManagement/BoardManager.java create mode 100644 Trello/src/com/soumya/projectManagement/CList.java create mode 100644 Trello/src/com/soumya/projectManagement/Card.java create mode 100644 Trello/src/com/soumya/projectManagement/CardManager.java create mode 100644 Trello/src/com/soumya/projectManagement/DriverApp.java create mode 100644 Trello/src/com/soumya/projectManagement/ListManager.java create mode 100644 Trello/src/com/soumya/projectManagement/Privacy.java create mode 100644 Trello/src/com/soumya/projectManagement/ProjectManager.java create mode 100644 Trello/src/com/soumya/projectManagement/StorageUtil.java create mode 100644 Trello/src/com/soumya/projectManagement/User.java diff --git a/Trello/src/com/soumya/projectManagement/Board.java b/Trello/src/com/soumya/projectManagement/Board.java new file mode 100644 index 0000000..d7f502e --- /dev/null +++ b/Trello/src/com/soumya/projectManagement/Board.java @@ -0,0 +1,66 @@ +package com.soumya.projectManagement; + +import java.util.ArrayList; +import java.util.List; + +public class Board { + + private String name, bid, url; + private Privacy privacy; + private List lists; + private List members; + + public Board(String name, String bid, String url) { + this.name = name; + this.bid = bid; + this.privacy = Privacy.PUBLIC; + this.url = url; + this.lists = new ArrayList<>(); + this.members = new ArrayList<>();; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getBid() { + return bid; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public Privacy getPrivacy() { + return privacy; + } + + public void setPrivacy(Privacy privacy) { + this.privacy = privacy; + } + + public List getLists() { + return lists; + } + + public void setLists(List lists) { + this.lists = lists; + } + + public List getMembers() { + return members; + } + + public void setMembers(List members) { + this.members = members; + } + +} diff --git a/Trello/src/com/soumya/projectManagement/BoardManager.java b/Trello/src/com/soumya/projectManagement/BoardManager.java new file mode 100644 index 0000000..f2e58cf --- /dev/null +++ b/Trello/src/com/soumya/projectManagement/BoardManager.java @@ -0,0 +1,81 @@ +package com.soumya.projectManagement; + +import java.util.UUID; + +public class BoardManager { + + public static boolean isValid(String bid, StorageUtil store) { + return store.boards.containsKey(bid); + } + + public static String createBoard(String name, StorageUtil store) { + String bid = UUID.randomUUID().toString().replace("-",""); + String url = "/boards/"+bid; + store.boards.put(bid, new Board(name, bid, url)); + return bid; + } + + public static void deleteBoard(String bid, StorageUtil store) { + Board board = store.boards.get(bid); + for(CList list : board.getLists()) { + for(Card card : list.getCards()) + store.cards.remove(card.getCid()); + store.lists.remove(list.getLid()); + } + store.boards.remove(bid); + } + + public static void updateBoard(String bid, String name, String privacy, StorageUtil store) { + Board board = store.boards.get(bid); + if(name!=null) + board.setName(name); + if(privacy!=null) + switch(privacy.toUpperCase()) { + case "PUBLIC": + board.setPrivacy(Privacy.PUBLIC); + break; + case "PRIVATE": + board.setPrivacy(Privacy.PRIVATE); + break; + default: + System.out.println("ERROR: Wrong Privacy Specification !"); + } + } + + public static void addMember(String bid, String uid, StorageUtil store) { + Board board = store.boards.get(bid); + User user = (User) store.users.get(uid).keySet().toArray()[0]; + store.users.get(uid).get(user).add(board); + board.getMembers().add(user); + } + + public static void removeMember(String bid, String uid, StorageUtil store) { + Board board = store.boards.get(bid); + User user = (User) store.users.get(uid).keySet().toArray()[0]; + store.users.get(uid).get(user).remove(board); + board.getMembers().remove(user); + } + + public static void showBoard(String bid, Board board, StorageUtil store) { + board = board==null?store.boards.get(bid):board; + System.out.println("BID : "+bid); + System.out.println("BOARD NAME : "+board.getName()); + if(board.getPrivacy()==Privacy.PRIVATE) + System.out.println("BOARD PRIVACY : PRIVATE"); + else + System.out.println("BOARD PRIVACY : PUBLIC"); + System.out.println("BOARD MEMEBERS :"); + if(board.getMembers().size()>0) + for(User usr : board.getMembers()) + System.out.println("UID :"+usr.getUid()+" Name : "+usr.getName()+" Email : "+usr.getEmail()); + else + System.out.println("N/A"); + System.out.println("BOARD LISTS :"); + if(board.getLists().size()>0) + for(CList list : board.getLists()) + ListManager.showList(list.getLid(),list,store); + else + System.out.println("N/A"); + System.out.println(); + } +} diff --git a/Trello/src/com/soumya/projectManagement/CList.java b/Trello/src/com/soumya/projectManagement/CList.java new file mode 100644 index 0000000..390c80e --- /dev/null +++ b/Trello/src/com/soumya/projectManagement/CList.java @@ -0,0 +1,38 @@ +package com.soumya.projectManagement; + +import java.util.ArrayList; +import java.util.List; + +public class CList { + + private String lid, name; + private List cards; + + public CList(String lid, String name) { + this.lid = lid; + this.name = name; + this.cards = new ArrayList<>(); + } + + public String getLid() { + return lid; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List getCards() { + return cards; + } + + public void setCards(List cards) { + this.cards = cards; + } + + +} diff --git a/Trello/src/com/soumya/projectManagement/Card.java b/Trello/src/com/soumya/projectManagement/Card.java new file mode 100644 index 0000000..79f2d98 --- /dev/null +++ b/Trello/src/com/soumya/projectManagement/Card.java @@ -0,0 +1,43 @@ +package com.soumya.projectManagement; + + +public class Card { + + private String cid, name, description; + private User assgndUser; + + public Card(String cid, String name, String description) { + this.cid = cid; + this.name = name; + this.description = description; + this.assgndUser = null; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public User getAssgndUser() { + return assgndUser; + } + + public void setAssgndUser(User assgndUser) { + this.assgndUser = assgndUser; + } + + public String getCid() { + return cid; + } +} diff --git a/Trello/src/com/soumya/projectManagement/CardManager.java b/Trello/src/com/soumya/projectManagement/CardManager.java new file mode 100644 index 0000000..e28d508 --- /dev/null +++ b/Trello/src/com/soumya/projectManagement/CardManager.java @@ -0,0 +1,83 @@ +package com.soumya.projectManagement; + +import java.util.HashMap; +import java.util.UUID; + +public class CardManager { + + public static boolean isValid(String cid, StorageUtil store) { + return store.cards.containsKey(cid); + } + + public static String createCard(String lid, String name, StorageUtil store) { + String cid = UUID.randomUUID().toString().replace("-",""); + CList list = (CList) store.lists.get(lid).keySet().toArray()[0]; + Card card = new Card(cid, name, ""); + list.getCards().add(card); + store.cards.put(cid, new HashMap()); + store.cards.get(cid).put(card, list); + return cid; + } + + public static void deleteCard(String cid, StorageUtil store) { + CList list = (CList) store.cards.get(cid).values().toArray()[0]; + Card card = (Card) store.cards.get(cid).keySet().toArray()[0]; + store.cards.remove(cid); + list.getCards().remove(card); + } + + public static void updateCard(String cid, String name, String description, StorageUtil store) { + Card card = (Card) store.cards.get(cid).keySet().toArray()[0]; + if(name!=null) + card.setName(name); + if(description!=null) + card.setDescription(description); + } + + public static void assignToCard(String cid, String uid, StorageUtil store) { + User user = (User) store.users.get(uid).keySet().toArray()[0]; + CList list = (CList) store.cards.get(cid).values().toArray()[0]; + Card card = (Card) store.cards.get(cid).keySet().toArray()[0]; + Board board = (Board) store.lists.get(list.getLid()).values().toArray()[0]; + if(board.getMembers().contains(user)) + card.setAssgndUser(user); + else + System.out.println("ERROR: USER DOESN'T BELONG TO CONTAINER BOARD - NAME: "+board.getName()+", BID: "+board.getBid()); + } + + public static void unassignToCard(String cid, StorageUtil store) { + Card card = (Card) store.cards.get(cid).keySet().toArray()[0]; + card.setAssgndUser(null); + } + + public static void moveCard(String cid, String lid, StorageUtil store) { + CList newlist = (CList) store.lists.get(lid).keySet().toArray()[0]; + CList oldlist = (CList) store.cards.get(cid).values().toArray()[0]; + Board board = (Board) store.lists.get(lid).values().toArray()[0]; + if(!board.getLists().contains(oldlist)) { + System.out.println("ERROR: LIST : "+lid+" IS NOT IN THE SAME BOARD AS CARD : "+cid); + return; + } + Card card = (Card) store.cards.get(cid).keySet().toArray()[0]; + oldlist.getCards().remove(card); + newlist.getCards().add(card); + store.cards.get(cid).put(card, newlist); + } + + public static void showCard(String cid, Card card, StorageUtil store) { + card = card==null?(Card) store.cards.get(cid).keySet().toArray()[0]:card; + System.out.println("CID : "+cid); + System.out.println("CARD NAME : "+card.getName()); + if(!card.getDescription().isEmpty()) + System.out.println("CARD DESCRIPTION : "+card.getDescription()); + else + System.out.println("CARD DESCRIPTION : N/A"); + System.out.print("CARD ASSIGNED USER : "); + if(card.getAssgndUser()==null) + System.out.println("N/A"); + else { + User usr=card.getAssgndUser(); + System.out.println("\nUID :"+usr.getUid()+" Name : "+usr.getName()+" Email : "+usr.getEmail()); + } + } +} diff --git a/Trello/src/com/soumya/projectManagement/DriverApp.java b/Trello/src/com/soumya/projectManagement/DriverApp.java new file mode 100644 index 0000000..4b395ed --- /dev/null +++ b/Trello/src/com/soumya/projectManagement/DriverApp.java @@ -0,0 +1,18 @@ +package com.soumya.projectManagement; + +import java.util.Scanner; + +public class DriverApp { + + public static void main(String[] args) { + ProjectManager pm = new ProjectManager(); + pm.registerUser("User1", "user1@hello.com"); + pm.registerUser("User2", "user2@hello.com"); + pm.registerUser("User3", "user3@hello.com"); + pm.showAllUsers(); + Scanner sc=new Scanner(System.in); + while(true) { + pm.handleRequest(sc.nextLine()); + } + } +} diff --git a/Trello/src/com/soumya/projectManagement/ListManager.java b/Trello/src/com/soumya/projectManagement/ListManager.java new file mode 100644 index 0000000..7fb45cc --- /dev/null +++ b/Trello/src/com/soumya/projectManagement/ListManager.java @@ -0,0 +1,48 @@ +package com.soumya.projectManagement; + +import java.util.HashMap; +import java.util.UUID; + +public class ListManager { + + public static boolean isValid(String lid, StorageUtil store) { + return store.lists.containsKey(lid); + } + + public static String createList(String bid, String name, StorageUtil store) { + String lid = UUID.randomUUID().toString().replace("-",""); + Board board = store.boards.get(bid); + CList list = new CList(lid, name); + board.getLists().add(list); + store.lists.put(lid, new HashMap()); + store.lists.get(lid).put(list, board); + return lid; + } + + public static void deleteList(String lid, StorageUtil store) { + CList list = (CList) store.lists.get(lid).keySet().toArray()[0]; + Board board = (Board) store.lists.get(lid).values().toArray()[0]; + for(Card card : list.getCards()) + store.cards.remove(card.getCid()); + store.lists.remove(lid); + board.getLists().remove(list); + } + + public static void updateList(String lid, String name, StorageUtil store) { + CList list = (CList) store.lists.get(lid).keySet().toArray()[0]; + list.setName(name); + } + + public static void showList(String lid, CList list, StorageUtil store) { + list = list==null?(CList) store.lists.get(lid).keySet().toArray()[0]:list; + System.out.println("LID : "+lid); + System.out.println("LIST NAME : "+list.getName()); + System.out.println("LIST CARDS :"); + if(list.getCards().size()>0) + for(Card card : list.getCards()) + CardManager.showCard(card.getCid(),card, store); + else + System.out.println("N/A"); + System.out.println(); + } +} diff --git a/Trello/src/com/soumya/projectManagement/Privacy.java b/Trello/src/com/soumya/projectManagement/Privacy.java new file mode 100644 index 0000000..41e056b --- /dev/null +++ b/Trello/src/com/soumya/projectManagement/Privacy.java @@ -0,0 +1,6 @@ +package com.soumya.projectManagement; + +public enum Privacy { + PUBLIC, + PRIVATE; +} diff --git a/Trello/src/com/soumya/projectManagement/ProjectManager.java b/Trello/src/com/soumya/projectManagement/ProjectManager.java new file mode 100644 index 0000000..97fd941 --- /dev/null +++ b/Trello/src/com/soumya/projectManagement/ProjectManager.java @@ -0,0 +1,198 @@ +package com.soumya.projectManagement; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class ProjectManager { + + private StorageUtil store; + + public ProjectManager() { + store = new StorageUtil(); + } + + public void registerUser(String name, String email) { + ++store.userCount; + String uid = "user"+store.userCount; + store.users.put(uid, new HashMap>()); + store.users.get(uid).put(new User(name, uid, email), new ArrayList<>()); + } + + public void showAllUsers() { + System.out.println("ALL USERS : "); + for(Map> users : store.users.values()) { + User usr = (User) users.keySet().toArray()[0]; + System.out.println("UID :"+usr.getUid()+" Name : "+usr.getName()+" Email : "+usr.getEmail()); + } + } + private void showAll() { + if(store.boards.size()==0) { + System.out.println("No Boards"); + return; + } + for(Board board : store.boards.values()) + BoardManager.showBoard(board.getBid(), board, store); + } + + public void handleRequest(String request) { + String req[] = request.split(" "); + switch(req[0].toUpperCase()) { + case "BOARD": + switch(req[1].toUpperCase()) { + case "CREATE": + String name=request.substring(request.indexOf(" ", request.indexOf(req[1]))+1); + System.out.println("Created Board: "+BoardManager.createBoard(name, store)); + break; + case "DELETE": + if(!BoardManager.isValid(req[2], store)) { + System.out.println("ERROR: BOARD - "+req[2]+" DOESN'T EXIST"); + return; + } + BoardManager.deleteBoard(req[2], store); + break; + default: + if(!BoardManager.isValid(req[1], store)) { + System.out.println("ERROR: BOARD - "+req[1]+" DOESN'T EXIST"); + return; + } + switch(req[2].toUpperCase()) { + case "NAME": + name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); + BoardManager.updateBoard(req[1], name, null,store); + break; + case "PRIVACY": + name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); + BoardManager.updateBoard(req[1], null, name,store); + break; + case "ADD_MEMBER": + name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); + BoardManager.addMember(req[1], name, store); + break; + case "REMOVE_MEMBER": + name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); + BoardManager.removeMember(req[1], name, store); + break; + default: + System.out.println("ERROR: MALFORMED INPUT"); + } + } + break; + case "LIST": + switch(req[1].toUpperCase()) { + case "CREATE": + if(!BoardManager.isValid(req[2], store)) { + System.out.println("ERROR: BOARD - "+req[2]+" DOESN'T EXIST"); + return; + } + String name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); + System.out.println("Created List: "+ListManager.createList(req[2], name, store)); + break; + case "DELETE": + if(!ListManager.isValid(req[2], store)) { + System.out.println("ERROR: LIST - "+req[1]+" DOESN'T EXIST"); + return; + } + ListManager.deleteList(req[2], store); + break; + default: + if(!ListManager.isValid(req[1], store)) { + System.out.println("ERROR: LIST - "+req[1]+" DOESN'T EXIST"); + return; + } + switch(req[2].toUpperCase()) { + case "NAME": + name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); + ListManager.updateList(req[1], name, store); + break; + default: + System.out.println("ERROR: MALFORMED INPUT"); + } + } + break; + case "CARD": + switch(req[1].toUpperCase()) { + case "CREATE": + if(!ListManager.isValid(req[2], store)) { + System.out.println("ERROR: LIST - "+req[1]+" DOESN'T EXIST"); + return; + } + String name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); + System.out.println("Created Card: "+CardManager.createCard(req[2],name,store)); + break; + case "DELETE": + if(!CardManager.isValid(req[2], store)) { + System.out.println("ERROR: CARD - "+req[2]+" DOESN'T EXIST"); + return; + } + CardManager.deleteCard(req[2], store); + break; + default: + if(!CardManager.isValid(req[1], store)) { + System.out.println("ERROR: CARD - "+req[1]+" DOESN'T EXIST"); + return; + } + switch(req[2].toUpperCase()) { + case "NAME": + name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); + CardManager.updateCard(req[1], name, null,store); + break; + case "DESCRIPTION": + name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); + CardManager.updateCard(req[1], null, name,store); + break; + case "ASSIGN": + name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); + CardManager.assignToCard(req[1], name, store); + break; + case "UNASSIGN": + CardManager.unassignToCard(req[1], store); + break; + case "MOVE": + if(!ListManager.isValid(req[3], store)) { + System.out.println("ERROR: LIST - "+req[1]+" DOESN'T EXIST"); + return; + } + CardManager.moveCard(req[1], req[3], store); + break; + default: + System.out.println("ERROR: MALFORMED INPUT"); + } + } + break; + case "SHOW": + if(req.length==1) + showAll(); + else + switch(req[1].toUpperCase()) { + case "BOARD": + if(!BoardManager.isValid(req[2], store)) { + System.out.println("ERROR: BOARD - "+req[2]+" DOESN'T EXIST"); + return; + } + BoardManager.showBoard(req[2], null, store); + break; + case "LIST": + if(!ListManager.isValid(req[2], store)) { + System.out.println("ERROR: LIST - "+req[1]+" DOESN'T EXIST"); + return; + } + ListManager.showList(req[2], null, store); + break; + case "CARD": + if(!CardManager.isValid(req[2], store)) { + System.out.println("ERROR: LIST - "+req[1]+" DOESN'T EXIST"); + return; + } + CardManager.showCard(req[2], null, store); + break; + default: + System.out.println("ERROR: MALFORMED INPUT"); + } + break; + default: + System.out.println("ERROR: MALFORMED INPUT"); + } + } +} \ No newline at end of file diff --git a/Trello/src/com/soumya/projectManagement/StorageUtil.java b/Trello/src/com/soumya/projectManagement/StorageUtil.java new file mode 100644 index 0000000..3f2c670 --- /dev/null +++ b/Trello/src/com/soumya/projectManagement/StorageUtil.java @@ -0,0 +1,21 @@ +package com.soumya.projectManagement; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class StorageUtil { + public Map>> users; + public Map boards; + public Map> lists; + public Map> cards; + public int userCount; + + public StorageUtil() { + this.userCount = 0; + this.users = new HashMap<>(); + this.boards = new HashMap<>(); + this.lists = new HashMap<>(); + this.cards = new HashMap<>(); + } +} diff --git a/Trello/src/com/soumya/projectManagement/User.java b/Trello/src/com/soumya/projectManagement/User.java new file mode 100644 index 0000000..c54e2df --- /dev/null +++ b/Trello/src/com/soumya/projectManagement/User.java @@ -0,0 +1,33 @@ +package com.soumya.projectManagement; + +public class User { + + private String name, uid, email; + + public User(String name, String uid, String email) { + this.name = name; + this.uid = uid; + this.email = email; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getUid() { + return uid; + } + +} From 61e25efafd33baf61c4f7447b859dd9105a473d6 Mon Sep 17 00:00:00 2001 From: Soumya Ghosh Dastidar <44349253+gdsoumya@users.noreply.github.com> Date: Tue, 29 Oct 2019 14:38:45 +0530 Subject: [PATCH 2/2] Added Comments --- .../com/soumya/projectManagement/Board.java | 133 +++--- .../projectManagement/BoardManager.java | 170 ++++---- .../com/soumya/projectManagement/CList.java | 77 ++-- .../com/soumya/projectManagement/Card.java | 86 ++-- .../soumya/projectManagement/CardManager.java | 175 ++++---- .../soumya/projectManagement/DriverApp.java | 46 +- .../soumya/projectManagement/ListManager.java | 102 ++--- .../com/soumya/projectManagement/Privacy.java | 13 +- .../projectManagement/ProjectManager.java | 401 +++++++++--------- .../soumya/projectManagement/StorageUtil.java | 53 ++- .../com/soumya/projectManagement/User.java | 67 +-- 11 files changed, 689 insertions(+), 634 deletions(-) diff --git a/Trello/src/com/soumya/projectManagement/Board.java b/Trello/src/com/soumya/projectManagement/Board.java index d7f502e..36ee771 100644 --- a/Trello/src/com/soumya/projectManagement/Board.java +++ b/Trello/src/com/soumya/projectManagement/Board.java @@ -1,66 +1,67 @@ -package com.soumya.projectManagement; - -import java.util.ArrayList; -import java.util.List; - -public class Board { - - private String name, bid, url; - private Privacy privacy; - private List lists; - private List members; - - public Board(String name, String bid, String url) { - this.name = name; - this.bid = bid; - this.privacy = Privacy.PUBLIC; - this.url = url; - this.lists = new ArrayList<>(); - this.members = new ArrayList<>();; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getBid() { - return bid; - } - - public String getUrl() { - return url; - } - - public void setUrl(String url) { - this.url = url; - } - - public Privacy getPrivacy() { - return privacy; - } - - public void setPrivacy(Privacy privacy) { - this.privacy = privacy; - } - - public List getLists() { - return lists; - } - - public void setLists(List lists) { - this.lists = lists; - } - - public List getMembers() { - return members; - } - - public void setMembers(List members) { - this.members = members; - } - -} +package com.soumya.projectManagement; + +import java.util.ArrayList; +import java.util.List; + +// Model for Board +public class Board { + + private String name, bid, url; + private Privacy privacy; + private List lists; + private List members; + + public Board(String name, String bid, String url) { + this.name = name; + this.bid = bid; + this.privacy = Privacy.PUBLIC; + this.url = url; + this.lists = new ArrayList<>(); + this.members = new ArrayList<>();; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getBid() { + return bid; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public Privacy getPrivacy() { + return privacy; + } + + public void setPrivacy(Privacy privacy) { + this.privacy = privacy; + } + + public List getLists() { + return lists; + } + + public void setLists(List lists) { + this.lists = lists; + } + + public List getMembers() { + return members; + } + + public void setMembers(List members) { + this.members = members; + } + +} diff --git a/Trello/src/com/soumya/projectManagement/BoardManager.java b/Trello/src/com/soumya/projectManagement/BoardManager.java index f2e58cf..e1d0f1a 100644 --- a/Trello/src/com/soumya/projectManagement/BoardManager.java +++ b/Trello/src/com/soumya/projectManagement/BoardManager.java @@ -1,81 +1,89 @@ -package com.soumya.projectManagement; - -import java.util.UUID; - -public class BoardManager { - - public static boolean isValid(String bid, StorageUtil store) { - return store.boards.containsKey(bid); - } - - public static String createBoard(String name, StorageUtil store) { - String bid = UUID.randomUUID().toString().replace("-",""); - String url = "/boards/"+bid; - store.boards.put(bid, new Board(name, bid, url)); - return bid; - } - - public static void deleteBoard(String bid, StorageUtil store) { - Board board = store.boards.get(bid); - for(CList list : board.getLists()) { - for(Card card : list.getCards()) - store.cards.remove(card.getCid()); - store.lists.remove(list.getLid()); - } - store.boards.remove(bid); - } - - public static void updateBoard(String bid, String name, String privacy, StorageUtil store) { - Board board = store.boards.get(bid); - if(name!=null) - board.setName(name); - if(privacy!=null) - switch(privacy.toUpperCase()) { - case "PUBLIC": - board.setPrivacy(Privacy.PUBLIC); - break; - case "PRIVATE": - board.setPrivacy(Privacy.PRIVATE); - break; - default: - System.out.println("ERROR: Wrong Privacy Specification !"); - } - } - - public static void addMember(String bid, String uid, StorageUtil store) { - Board board = store.boards.get(bid); - User user = (User) store.users.get(uid).keySet().toArray()[0]; - store.users.get(uid).get(user).add(board); - board.getMembers().add(user); - } - - public static void removeMember(String bid, String uid, StorageUtil store) { - Board board = store.boards.get(bid); - User user = (User) store.users.get(uid).keySet().toArray()[0]; - store.users.get(uid).get(user).remove(board); - board.getMembers().remove(user); - } - - public static void showBoard(String bid, Board board, StorageUtil store) { - board = board==null?store.boards.get(bid):board; - System.out.println("BID : "+bid); - System.out.println("BOARD NAME : "+board.getName()); - if(board.getPrivacy()==Privacy.PRIVATE) - System.out.println("BOARD PRIVACY : PRIVATE"); - else - System.out.println("BOARD PRIVACY : PUBLIC"); - System.out.println("BOARD MEMEBERS :"); - if(board.getMembers().size()>0) - for(User usr : board.getMembers()) - System.out.println("UID :"+usr.getUid()+" Name : "+usr.getName()+" Email : "+usr.getEmail()); - else - System.out.println("N/A"); - System.out.println("BOARD LISTS :"); - if(board.getLists().size()>0) - for(CList list : board.getLists()) - ListManager.showList(list.getLid(),list,store); - else - System.out.println("N/A"); - System.out.println(); - } -} +package com.soumya.projectManagement; + +import java.util.UUID; + +// Core Functions related to Board Management +public class BoardManager { + + // Checks whether BID is valid or not + public static boolean isValid(String bid, StorageUtil store) { + return store.boards.containsKey(bid); + } + + // Creates new Board with given name + public static String createBoard(String name, StorageUtil store) { + String bid = UUID.randomUUID().toString().replace("-",""); + String url = "/boards/"+bid; + store.boards.put(bid, new Board(name, bid, url)); + return bid; + } + + // Deletes Board with given BID + public static void deleteBoard(String bid, StorageUtil store) { + Board board = store.boards.get(bid); + for(CList list : board.getLists()) { + for(Card card : list.getCards()) + store.cards.remove(card.getCid()); + store.lists.remove(list.getLid()); + } + store.boards.remove(bid); + } + + // Updates Board property + public static void updateBoard(String bid, String name, String privacy, StorageUtil store) { + Board board = store.boards.get(bid); + if(name!=null) + board.setName(name); + if(privacy!=null) + switch(privacy.toUpperCase()) { + case "PUBLIC": + board.setPrivacy(Privacy.PUBLIC); + break; + case "PRIVATE": + board.setPrivacy(Privacy.PRIVATE); + break; + default: + System.out.println("ERROR: Wrong Privacy Specification !"); + } + } + + // Add Members to a Board + public static void addMember(String bid, String uid, StorageUtil store) { + Board board = store.boards.get(bid); + User user = (User) store.users.get(uid).keySet().toArray()[0]; + store.users.get(uid).get(user).add(board); + board.getMembers().add(user); + } + + // Removes Member form a Board + public static void removeMember(String bid, String uid, StorageUtil store) { + Board board = store.boards.get(bid); + User user = (User) store.users.get(uid).keySet().toArray()[0]; + store.users.get(uid).get(user).remove(board); + board.getMembers().remove(user); + } + + // Displays Particular Board with all sub details + public static void showBoard(String bid, Board board, StorageUtil store) { + board = board==null?store.boards.get(bid):board; + System.out.println("BID : "+bid); + System.out.println("BOARD NAME : "+board.getName()); + if(board.getPrivacy()==Privacy.PRIVATE) + System.out.println("BOARD PRIVACY : PRIVATE"); + else + System.out.println("BOARD PRIVACY : PUBLIC"); + System.out.println("BOARD MEMEBERS :"); + if(board.getMembers().size()>0) + for(User usr : board.getMembers()) + System.out.println("UID :"+usr.getUid()+" Name : "+usr.getName()+" Email : "+usr.getEmail()); + else + System.out.println("N/A"); + System.out.println("BOARD LISTS :"); + if(board.getLists().size()>0) + for(CList list : board.getLists()) + ListManager.showList(list.getLid(),list,store); + else + System.out.println("N/A"); + System.out.println(); + } +} diff --git a/Trello/src/com/soumya/projectManagement/CList.java b/Trello/src/com/soumya/projectManagement/CList.java index 390c80e..3e844b6 100644 --- a/Trello/src/com/soumya/projectManagement/CList.java +++ b/Trello/src/com/soumya/projectManagement/CList.java @@ -1,38 +1,39 @@ -package com.soumya.projectManagement; - -import java.util.ArrayList; -import java.util.List; - -public class CList { - - private String lid, name; - private List cards; - - public CList(String lid, String name) { - this.lid = lid; - this.name = name; - this.cards = new ArrayList<>(); - } - - public String getLid() { - return lid; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public List getCards() { - return cards; - } - - public void setCards(List cards) { - this.cards = cards; - } - - -} +package com.soumya.projectManagement; + +import java.util.ArrayList; +import java.util.List; + +// Model for List +public class CList { + + private String lid, name; + private List cards; + + public CList(String lid, String name) { + this.lid = lid; + this.name = name; + this.cards = new ArrayList<>(); + } + + public String getLid() { + return lid; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List getCards() { + return cards; + } + + public void setCards(List cards) { + this.cards = cards; + } + + +} diff --git a/Trello/src/com/soumya/projectManagement/Card.java b/Trello/src/com/soumya/projectManagement/Card.java index 79f2d98..b0ba800 100644 --- a/Trello/src/com/soumya/projectManagement/Card.java +++ b/Trello/src/com/soumya/projectManagement/Card.java @@ -1,43 +1,43 @@ -package com.soumya.projectManagement; - - -public class Card { - - private String cid, name, description; - private User assgndUser; - - public Card(String cid, String name, String description) { - this.cid = cid; - this.name = name; - this.description = description; - this.assgndUser = null; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public User getAssgndUser() { - return assgndUser; - } - - public void setAssgndUser(User assgndUser) { - this.assgndUser = assgndUser; - } - - public String getCid() { - return cid; - } -} +package com.soumya.projectManagement; + +// Model for Card +public class Card { + + private String cid, name, description; + private User assgndUser; + + public Card(String cid, String name, String description) { + this.cid = cid; + this.name = name; + this.description = description; + this.assgndUser = null; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public User getAssgndUser() { + return assgndUser; + } + + public void setAssgndUser(User assgndUser) { + this.assgndUser = assgndUser; + } + + public String getCid() { + return cid; + } +} diff --git a/Trello/src/com/soumya/projectManagement/CardManager.java b/Trello/src/com/soumya/projectManagement/CardManager.java index e28d508..93b2d65 100644 --- a/Trello/src/com/soumya/projectManagement/CardManager.java +++ b/Trello/src/com/soumya/projectManagement/CardManager.java @@ -1,83 +1,92 @@ -package com.soumya.projectManagement; - -import java.util.HashMap; -import java.util.UUID; - -public class CardManager { - - public static boolean isValid(String cid, StorageUtil store) { - return store.cards.containsKey(cid); - } - - public static String createCard(String lid, String name, StorageUtil store) { - String cid = UUID.randomUUID().toString().replace("-",""); - CList list = (CList) store.lists.get(lid).keySet().toArray()[0]; - Card card = new Card(cid, name, ""); - list.getCards().add(card); - store.cards.put(cid, new HashMap()); - store.cards.get(cid).put(card, list); - return cid; - } - - public static void deleteCard(String cid, StorageUtil store) { - CList list = (CList) store.cards.get(cid).values().toArray()[0]; - Card card = (Card) store.cards.get(cid).keySet().toArray()[0]; - store.cards.remove(cid); - list.getCards().remove(card); - } - - public static void updateCard(String cid, String name, String description, StorageUtil store) { - Card card = (Card) store.cards.get(cid).keySet().toArray()[0]; - if(name!=null) - card.setName(name); - if(description!=null) - card.setDescription(description); - } - - public static void assignToCard(String cid, String uid, StorageUtil store) { - User user = (User) store.users.get(uid).keySet().toArray()[0]; - CList list = (CList) store.cards.get(cid).values().toArray()[0]; - Card card = (Card) store.cards.get(cid).keySet().toArray()[0]; - Board board = (Board) store.lists.get(list.getLid()).values().toArray()[0]; - if(board.getMembers().contains(user)) - card.setAssgndUser(user); - else - System.out.println("ERROR: USER DOESN'T BELONG TO CONTAINER BOARD - NAME: "+board.getName()+", BID: "+board.getBid()); - } - - public static void unassignToCard(String cid, StorageUtil store) { - Card card = (Card) store.cards.get(cid).keySet().toArray()[0]; - card.setAssgndUser(null); - } - - public static void moveCard(String cid, String lid, StorageUtil store) { - CList newlist = (CList) store.lists.get(lid).keySet().toArray()[0]; - CList oldlist = (CList) store.cards.get(cid).values().toArray()[0]; - Board board = (Board) store.lists.get(lid).values().toArray()[0]; - if(!board.getLists().contains(oldlist)) { - System.out.println("ERROR: LIST : "+lid+" IS NOT IN THE SAME BOARD AS CARD : "+cid); - return; - } - Card card = (Card) store.cards.get(cid).keySet().toArray()[0]; - oldlist.getCards().remove(card); - newlist.getCards().add(card); - store.cards.get(cid).put(card, newlist); - } - - public static void showCard(String cid, Card card, StorageUtil store) { - card = card==null?(Card) store.cards.get(cid).keySet().toArray()[0]:card; - System.out.println("CID : "+cid); - System.out.println("CARD NAME : "+card.getName()); - if(!card.getDescription().isEmpty()) - System.out.println("CARD DESCRIPTION : "+card.getDescription()); - else - System.out.println("CARD DESCRIPTION : N/A"); - System.out.print("CARD ASSIGNED USER : "); - if(card.getAssgndUser()==null) - System.out.println("N/A"); - else { - User usr=card.getAssgndUser(); - System.out.println("\nUID :"+usr.getUid()+" Name : "+usr.getName()+" Email : "+usr.getEmail()); - } - } -} +package com.soumya.projectManagement; + +import java.util.HashMap; +import java.util.UUID; + +//Core Functions related to Card Management +public class CardManager { + + // Checks whether CID is valid or not + public static boolean isValid(String cid, StorageUtil store) { + return store.cards.containsKey(cid); + } + + // Creates new Card with given name in specified List + public static String createCard(String lid, String name, StorageUtil store) { + String cid = UUID.randomUUID().toString().replace("-",""); + CList list = (CList) store.lists.get(lid).keySet().toArray()[0]; + Card card = new Card(cid, name, ""); + list.getCards().add(card); + store.cards.put(cid, new HashMap()); + store.cards.get(cid).put(card, list); + return cid; + } + + // Deletes Card with given CID + public static void deleteCard(String cid, StorageUtil store) { + CList list = (CList) store.cards.get(cid).values().toArray()[0]; + Card card = (Card) store.cards.get(cid).keySet().toArray()[0]; + store.cards.remove(cid); + list.getCards().remove(card); + } + + // Updates Card properties + public static void updateCard(String cid, String name, String description, StorageUtil store) { + Card card = (Card) store.cards.get(cid).keySet().toArray()[0]; + if(name!=null) + card.setName(name); + if(description!=null) + card.setDescription(description); + } + + // Assigns Member to a Card + public static void assignToCard(String cid, String uid, StorageUtil store) { + User user = (User) store.users.get(uid).keySet().toArray()[0]; + CList list = (CList) store.cards.get(cid).values().toArray()[0]; + Card card = (Card) store.cards.get(cid).keySet().toArray()[0]; + Board board = (Board) store.lists.get(list.getLid()).values().toArray()[0]; + if(board.getMembers().contains(user)) + card.setAssgndUser(user); + else + System.out.println("ERROR: USER DOESN'T BELONG TO CONTAINER BOARD - NAME: "+board.getName()+", BID: "+board.getBid()); + } + + // Unassigns Member from a Card + public static void unassignToCard(String cid, StorageUtil store) { + Card card = (Card) store.cards.get(cid).keySet().toArray()[0]; + card.setAssgndUser(null); + } + + // Moves Card to another List + public static void moveCard(String cid, String lid, StorageUtil store) { + CList newlist = (CList) store.lists.get(lid).keySet().toArray()[0]; + CList oldlist = (CList) store.cards.get(cid).values().toArray()[0]; + Board board = (Board) store.lists.get(lid).values().toArray()[0]; + if(!board.getLists().contains(oldlist)) { + System.out.println("ERROR: LIST : "+lid+" IS NOT IN THE SAME BOARD AS CARD : "+cid); + return; + } + Card card = (Card) store.cards.get(cid).keySet().toArray()[0]; + oldlist.getCards().remove(card); + newlist.getCards().add(card); + store.cards.get(cid).put(card, newlist); + } + + // Displays details of Card + public static void showCard(String cid, Card card, StorageUtil store) { + card = card==null?(Card) store.cards.get(cid).keySet().toArray()[0]:card; + System.out.println("CID : "+cid); + System.out.println("CARD NAME : "+card.getName()); + if(!card.getDescription().isEmpty()) + System.out.println("CARD DESCRIPTION : "+card.getDescription()); + else + System.out.println("CARD DESCRIPTION : N/A"); + System.out.print("CARD ASSIGNED USER : "); + if(card.getAssgndUser()==null) + System.out.println("N/A"); + else { + User usr=card.getAssgndUser(); + System.out.println("\nUID :"+usr.getUid()+" Name : "+usr.getName()+" Email : "+usr.getEmail()); + } + } +} diff --git a/Trello/src/com/soumya/projectManagement/DriverApp.java b/Trello/src/com/soumya/projectManagement/DriverApp.java index 4b395ed..d2015a7 100644 --- a/Trello/src/com/soumya/projectManagement/DriverApp.java +++ b/Trello/src/com/soumya/projectManagement/DriverApp.java @@ -1,18 +1,28 @@ -package com.soumya.projectManagement; - -import java.util.Scanner; - -public class DriverApp { - - public static void main(String[] args) { - ProjectManager pm = new ProjectManager(); - pm.registerUser("User1", "user1@hello.com"); - pm.registerUser("User2", "user2@hello.com"); - pm.registerUser("User3", "user3@hello.com"); - pm.showAllUsers(); - Scanner sc=new Scanner(System.in); - while(true) { - pm.handleRequest(sc.nextLine()); - } - } -} +package com.soumya.projectManagement; + +import java.util.Scanner; + +// Main Driver Class +public class DriverApp { + + public static void main(String[] args) { + + // Initialize ProjectManager instance + ProjectManager pm = new ProjectManager(); + + // Hard coded registered users + pm.registerUser("User1", "user1@hello.com"); + pm.registerUser("User2", "user2@hello.com"); + pm.registerUser("User3", "user3@hello.com"); + + // Display details of registered users with their UID + pm.showAllUsers(); + + // User Command Input + Scanner sc=new Scanner(System.in); + while(true) { + // Execute Command + pm.handleRequest(sc.nextLine()); + } + } +} diff --git a/Trello/src/com/soumya/projectManagement/ListManager.java b/Trello/src/com/soumya/projectManagement/ListManager.java index 7fb45cc..1a25cec 100644 --- a/Trello/src/com/soumya/projectManagement/ListManager.java +++ b/Trello/src/com/soumya/projectManagement/ListManager.java @@ -1,48 +1,54 @@ -package com.soumya.projectManagement; - -import java.util.HashMap; -import java.util.UUID; - -public class ListManager { - - public static boolean isValid(String lid, StorageUtil store) { - return store.lists.containsKey(lid); - } - - public static String createList(String bid, String name, StorageUtil store) { - String lid = UUID.randomUUID().toString().replace("-",""); - Board board = store.boards.get(bid); - CList list = new CList(lid, name); - board.getLists().add(list); - store.lists.put(lid, new HashMap()); - store.lists.get(lid).put(list, board); - return lid; - } - - public static void deleteList(String lid, StorageUtil store) { - CList list = (CList) store.lists.get(lid).keySet().toArray()[0]; - Board board = (Board) store.lists.get(lid).values().toArray()[0]; - for(Card card : list.getCards()) - store.cards.remove(card.getCid()); - store.lists.remove(lid); - board.getLists().remove(list); - } - - public static void updateList(String lid, String name, StorageUtil store) { - CList list = (CList) store.lists.get(lid).keySet().toArray()[0]; - list.setName(name); - } - - public static void showList(String lid, CList list, StorageUtil store) { - list = list==null?(CList) store.lists.get(lid).keySet().toArray()[0]:list; - System.out.println("LID : "+lid); - System.out.println("LIST NAME : "+list.getName()); - System.out.println("LIST CARDS :"); - if(list.getCards().size()>0) - for(Card card : list.getCards()) - CardManager.showCard(card.getCid(),card, store); - else - System.out.println("N/A"); - System.out.println(); - } -} +package com.soumya.projectManagement; + +import java.util.HashMap; +import java.util.UUID; + +//Core Functions related to List Management +public class ListManager { + + // Checks whether LID is valid or not + public static boolean isValid(String lid, StorageUtil store) { + return store.lists.containsKey(lid); + } + + // Creates new List with given name in specified Board + public static String createList(String bid, String name, StorageUtil store) { + String lid = UUID.randomUUID().toString().replace("-",""); + Board board = store.boards.get(bid); + CList list = new CList(lid, name); + board.getLists().add(list); + store.lists.put(lid, new HashMap()); + store.lists.get(lid).put(list, board); + return lid; + } + + // Deletes List with given LID + public static void deleteList(String lid, StorageUtil store) { + CList list = (CList) store.lists.get(lid).keySet().toArray()[0]; + Board board = (Board) store.lists.get(lid).values().toArray()[0]; + for(Card card : list.getCards()) + store.cards.remove(card.getCid()); + store.lists.remove(lid); + board.getLists().remove(list); + } + + // Updates a List property + public static void updateList(String lid, String name, StorageUtil store) { + CList list = (CList) store.lists.get(lid).keySet().toArray()[0]; + list.setName(name); + } + + // Display details of a List + public static void showList(String lid, CList list, StorageUtil store) { + list = list==null?(CList) store.lists.get(lid).keySet().toArray()[0]:list; + System.out.println("LID : "+lid); + System.out.println("LIST NAME : "+list.getName()); + System.out.println("LIST CARDS :"); + if(list.getCards().size()>0) + for(Card card : list.getCards()) + CardManager.showCard(card.getCid(),card, store); + else + System.out.println("N/A"); + System.out.println(); + } +} diff --git a/Trello/src/com/soumya/projectManagement/Privacy.java b/Trello/src/com/soumya/projectManagement/Privacy.java index 41e056b..0151991 100644 --- a/Trello/src/com/soumya/projectManagement/Privacy.java +++ b/Trello/src/com/soumya/projectManagement/Privacy.java @@ -1,6 +1,7 @@ -package com.soumya.projectManagement; - -public enum Privacy { - PUBLIC, - PRIVATE; -} +package com.soumya.projectManagement; + +// Defines the Privacy properties for a Board +public enum Privacy { + PUBLIC, + PRIVATE; +} diff --git a/Trello/src/com/soumya/projectManagement/ProjectManager.java b/Trello/src/com/soumya/projectManagement/ProjectManager.java index 97fd941..f339dcf 100644 --- a/Trello/src/com/soumya/projectManagement/ProjectManager.java +++ b/Trello/src/com/soumya/projectManagement/ProjectManager.java @@ -1,198 +1,205 @@ -package com.soumya.projectManagement; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class ProjectManager { - - private StorageUtil store; - - public ProjectManager() { - store = new StorageUtil(); - } - - public void registerUser(String name, String email) { - ++store.userCount; - String uid = "user"+store.userCount; - store.users.put(uid, new HashMap>()); - store.users.get(uid).put(new User(name, uid, email), new ArrayList<>()); - } - - public void showAllUsers() { - System.out.println("ALL USERS : "); - for(Map> users : store.users.values()) { - User usr = (User) users.keySet().toArray()[0]; - System.out.println("UID :"+usr.getUid()+" Name : "+usr.getName()+" Email : "+usr.getEmail()); - } - } - private void showAll() { - if(store.boards.size()==0) { - System.out.println("No Boards"); - return; - } - for(Board board : store.boards.values()) - BoardManager.showBoard(board.getBid(), board, store); - } - - public void handleRequest(String request) { - String req[] = request.split(" "); - switch(req[0].toUpperCase()) { - case "BOARD": - switch(req[1].toUpperCase()) { - case "CREATE": - String name=request.substring(request.indexOf(" ", request.indexOf(req[1]))+1); - System.out.println("Created Board: "+BoardManager.createBoard(name, store)); - break; - case "DELETE": - if(!BoardManager.isValid(req[2], store)) { - System.out.println("ERROR: BOARD - "+req[2]+" DOESN'T EXIST"); - return; - } - BoardManager.deleteBoard(req[2], store); - break; - default: - if(!BoardManager.isValid(req[1], store)) { - System.out.println("ERROR: BOARD - "+req[1]+" DOESN'T EXIST"); - return; - } - switch(req[2].toUpperCase()) { - case "NAME": - name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); - BoardManager.updateBoard(req[1], name, null,store); - break; - case "PRIVACY": - name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); - BoardManager.updateBoard(req[1], null, name,store); - break; - case "ADD_MEMBER": - name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); - BoardManager.addMember(req[1], name, store); - break; - case "REMOVE_MEMBER": - name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); - BoardManager.removeMember(req[1], name, store); - break; - default: - System.out.println("ERROR: MALFORMED INPUT"); - } - } - break; - case "LIST": - switch(req[1].toUpperCase()) { - case "CREATE": - if(!BoardManager.isValid(req[2], store)) { - System.out.println("ERROR: BOARD - "+req[2]+" DOESN'T EXIST"); - return; - } - String name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); - System.out.println("Created List: "+ListManager.createList(req[2], name, store)); - break; - case "DELETE": - if(!ListManager.isValid(req[2], store)) { - System.out.println("ERROR: LIST - "+req[1]+" DOESN'T EXIST"); - return; - } - ListManager.deleteList(req[2], store); - break; - default: - if(!ListManager.isValid(req[1], store)) { - System.out.println("ERROR: LIST - "+req[1]+" DOESN'T EXIST"); - return; - } - switch(req[2].toUpperCase()) { - case "NAME": - name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); - ListManager.updateList(req[1], name, store); - break; - default: - System.out.println("ERROR: MALFORMED INPUT"); - } - } - break; - case "CARD": - switch(req[1].toUpperCase()) { - case "CREATE": - if(!ListManager.isValid(req[2], store)) { - System.out.println("ERROR: LIST - "+req[1]+" DOESN'T EXIST"); - return; - } - String name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); - System.out.println("Created Card: "+CardManager.createCard(req[2],name,store)); - break; - case "DELETE": - if(!CardManager.isValid(req[2], store)) { - System.out.println("ERROR: CARD - "+req[2]+" DOESN'T EXIST"); - return; - } - CardManager.deleteCard(req[2], store); - break; - default: - if(!CardManager.isValid(req[1], store)) { - System.out.println("ERROR: CARD - "+req[1]+" DOESN'T EXIST"); - return; - } - switch(req[2].toUpperCase()) { - case "NAME": - name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); - CardManager.updateCard(req[1], name, null,store); - break; - case "DESCRIPTION": - name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); - CardManager.updateCard(req[1], null, name,store); - break; - case "ASSIGN": - name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); - CardManager.assignToCard(req[1], name, store); - break; - case "UNASSIGN": - CardManager.unassignToCard(req[1], store); - break; - case "MOVE": - if(!ListManager.isValid(req[3], store)) { - System.out.println("ERROR: LIST - "+req[1]+" DOESN'T EXIST"); - return; - } - CardManager.moveCard(req[1], req[3], store); - break; - default: - System.out.println("ERROR: MALFORMED INPUT"); - } - } - break; - case "SHOW": - if(req.length==1) - showAll(); - else - switch(req[1].toUpperCase()) { - case "BOARD": - if(!BoardManager.isValid(req[2], store)) { - System.out.println("ERROR: BOARD - "+req[2]+" DOESN'T EXIST"); - return; - } - BoardManager.showBoard(req[2], null, store); - break; - case "LIST": - if(!ListManager.isValid(req[2], store)) { - System.out.println("ERROR: LIST - "+req[1]+" DOESN'T EXIST"); - return; - } - ListManager.showList(req[2], null, store); - break; - case "CARD": - if(!CardManager.isValid(req[2], store)) { - System.out.println("ERROR: LIST - "+req[1]+" DOESN'T EXIST"); - return; - } - CardManager.showCard(req[2], null, store); - break; - default: - System.out.println("ERROR: MALFORMED INPUT"); - } - break; - default: - System.out.println("ERROR: MALFORMED INPUT"); - } - } +package com.soumya.projectManagement; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +// Orchestrates all the different functionalities [ Board, List, Card, User ] +public class ProjectManager { + + // Stores all the instance data related to users, boards, cards, lists + private StorageUtil store; + + public ProjectManager() { + store = new StorageUtil(); + } + + // Register new User + public void registerUser(String name, String email) { + ++store.userCount; + String uid = "user"+store.userCount; + store.users.put(uid, new HashMap>()); + store.users.get(uid).put(new User(name, uid, email), new ArrayList<>()); + } + + // Display all Registered Users + public void showAllUsers() { + System.out.println("ALL USERS : "); + for(Map> users : store.users.values()) { + User usr = (User) users.keySet().toArray()[0]; + System.out.println("UID :"+usr.getUid()+" Name : "+usr.getName()+" Email : "+usr.getEmail()); + } + } + + //Display all the Boards and their details + private void showAll() { + if(store.boards.size()==0) { + System.out.println("No Boards"); + return; + } + for(Board board : store.boards.values()) + BoardManager.showBoard(board.getBid(), board, store); + } + + // Parses the Input, validates the data and calls required functions + public void handleRequest(String request) { + String req[] = request.split(" "); + switch(req[0].toUpperCase()) { + case "BOARD": + switch(req[1].toUpperCase()) { + case "CREATE": + String name=request.substring(request.indexOf(" ", request.indexOf(req[1]))+1); + System.out.println("Created Board: "+BoardManager.createBoard(name, store)); + break; + case "DELETE": + if(!BoardManager.isValid(req[2], store)) { + System.out.println("ERROR: BOARD - "+req[2]+" DOESN'T EXIST"); + return; + } + BoardManager.deleteBoard(req[2], store); + break; + default: + if(!BoardManager.isValid(req[1], store)) { + System.out.println("ERROR: BOARD - "+req[1]+" DOESN'T EXIST"); + return; + } + switch(req[2].toUpperCase()) { + case "NAME": + name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); + BoardManager.updateBoard(req[1], name, null,store); + break; + case "PRIVACY": + name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); + BoardManager.updateBoard(req[1], null, name,store); + break; + case "ADD_MEMBER": + name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); + BoardManager.addMember(req[1], name, store); + break; + case "REMOVE_MEMBER": + name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); + BoardManager.removeMember(req[1], name, store); + break; + default: + System.out.println("ERROR: MALFORMED INPUT"); + } + } + break; + case "LIST": + switch(req[1].toUpperCase()) { + case "CREATE": + if(!BoardManager.isValid(req[2], store)) { + System.out.println("ERROR: BOARD - "+req[2]+" DOESN'T EXIST"); + return; + } + String name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); + System.out.println("Created List: "+ListManager.createList(req[2], name, store)); + break; + case "DELETE": + if(!ListManager.isValid(req[2], store)) { + System.out.println("ERROR: LIST - "+req[1]+" DOESN'T EXIST"); + return; + } + ListManager.deleteList(req[2], store); + break; + default: + if(!ListManager.isValid(req[1], store)) { + System.out.println("ERROR: LIST - "+req[1]+" DOESN'T EXIST"); + return; + } + switch(req[2].toUpperCase()) { + case "NAME": + name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); + ListManager.updateList(req[1], name, store); + break; + default: + System.out.println("ERROR: MALFORMED INPUT"); + } + } + break; + case "CARD": + switch(req[1].toUpperCase()) { + case "CREATE": + if(!ListManager.isValid(req[2], store)) { + System.out.println("ERROR: LIST - "+req[1]+" DOESN'T EXIST"); + return; + } + String name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); + System.out.println("Created Card: "+CardManager.createCard(req[2],name,store)); + break; + case "DELETE": + if(!CardManager.isValid(req[2], store)) { + System.out.println("ERROR: CARD - "+req[2]+" DOESN'T EXIST"); + return; + } + CardManager.deleteCard(req[2], store); + break; + default: + if(!CardManager.isValid(req[1], store)) { + System.out.println("ERROR: CARD - "+req[1]+" DOESN'T EXIST"); + return; + } + switch(req[2].toUpperCase()) { + case "NAME": + name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); + CardManager.updateCard(req[1], name, null,store); + break; + case "DESCRIPTION": + name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); + CardManager.updateCard(req[1], null, name,store); + break; + case "ASSIGN": + name=request.substring(request.indexOf(" ", request.indexOf(req[2]))+1); + CardManager.assignToCard(req[1], name, store); + break; + case "UNASSIGN": + CardManager.unassignToCard(req[1], store); + break; + case "MOVE": + if(!ListManager.isValid(req[3], store)) { + System.out.println("ERROR: LIST - "+req[1]+" DOESN'T EXIST"); + return; + } + CardManager.moveCard(req[1], req[3], store); + break; + default: + System.out.println("ERROR: MALFORMED INPUT"); + } + } + break; + case "SHOW": + if(req.length==1) + showAll(); + else + switch(req[1].toUpperCase()) { + case "BOARD": + if(!BoardManager.isValid(req[2], store)) { + System.out.println("ERROR: BOARD - "+req[2]+" DOESN'T EXIST"); + return; + } + BoardManager.showBoard(req[2], null, store); + break; + case "LIST": + if(!ListManager.isValid(req[2], store)) { + System.out.println("ERROR: LIST - "+req[1]+" DOESN'T EXIST"); + return; + } + ListManager.showList(req[2], null, store); + break; + case "CARD": + if(!CardManager.isValid(req[2], store)) { + System.out.println("ERROR: LIST - "+req[1]+" DOESN'T EXIST"); + return; + } + CardManager.showCard(req[2], null, store); + break; + default: + System.out.println("ERROR: MALFORMED INPUT"); + } + break; + default: + System.out.println("ERROR: MALFORMED INPUT"); + } + } } \ No newline at end of file diff --git a/Trello/src/com/soumya/projectManagement/StorageUtil.java b/Trello/src/com/soumya/projectManagement/StorageUtil.java index 3f2c670..451af45 100644 --- a/Trello/src/com/soumya/projectManagement/StorageUtil.java +++ b/Trello/src/com/soumya/projectManagement/StorageUtil.java @@ -1,21 +1,32 @@ -package com.soumya.projectManagement; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class StorageUtil { - public Map>> users; - public Map boards; - public Map> lists; - public Map> cards; - public int userCount; - - public StorageUtil() { - this.userCount = 0; - this.users = new HashMap<>(); - this.boards = new HashMap<>(); - this.lists = new HashMap<>(); - this.cards = new HashMap<>(); - } -} +package com.soumya.projectManagement; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +// Utility class, holds all the different storage variables +public class StorageUtil { + + // Map of users and the Boards they are assigned to + public Map>> users; + + // Map of Boards + public Map boards; + + // Map of Lists and the Board they belong to + public Map> lists; + + // Map of Cards and the List they belong to + public Map> cards; + + // Counts no. of registered users + public int userCount; + + public StorageUtil() { + this.userCount = 0; + this.users = new HashMap<>(); + this.boards = new HashMap<>(); + this.lists = new HashMap<>(); + this.cards = new HashMap<>(); + } +} diff --git a/Trello/src/com/soumya/projectManagement/User.java b/Trello/src/com/soumya/projectManagement/User.java index c54e2df..9c0d616 100644 --- a/Trello/src/com/soumya/projectManagement/User.java +++ b/Trello/src/com/soumya/projectManagement/User.java @@ -1,33 +1,34 @@ -package com.soumya.projectManagement; - -public class User { - - private String name, uid, email; - - public User(String name, String uid, String email) { - this.name = name; - this.uid = uid; - this.email = email; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } - - public String getUid() { - return uid; - } - -} +package com.soumya.projectManagement; + +// Model for the User +public class User { + + private String name, uid, email; + + public User(String name, String uid, String email) { + this.name = name; + this.uid = uid; + this.email = email; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getUid() { + return uid; + } + +}