Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

import com.sprint.mission.discodeit.model.*;
import com.sprint.mission.discodeit.service.*;
import com.sprint.mission.discodeit.service.file.*;
import com.sprint.mission.discodeit.service.jcf.*;

import java.io.File;
import java.util.List;

public class DiscodeitAdvancedJavaApplication {
Expand Down Expand Up @@ -42,11 +44,11 @@ static void directMessageTest(DirectMessageService directMessageService, User se

public static void main(String[] args) {
// Service Initialization
UserService userService = new JCFUserService();
CategoryService categoryService = new JCFCategoryService();
ChannelService channelService = new JCFChannelService(categoryService, userService);
MessageService messageService = new JCFMessageService(userService, channelService);
DirectMessageService directMessageService = new JCFDirectMessageService(userService);
UserService userService = new FileUserService();
CategoryService categoryService = new FileCategoryService();
ChannelService channelService = new FileChannelService(categoryService, userService);
MessageService messageService = new FileMessageService(userService, channelService);
DirectMessageService directMessageService = new FileDirectMessageService(userService);
// Set up
List<User> users = setUpUsers(userService);
Category category = setUpCategory(categoryService);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package com.sprint.mission.discodeit;

import com.sprint.mission.discodeit.model.*;
import com.sprint.mission.discodeit.repository.*;
import com.sprint.mission.discodeit.repository.file.*;
import com.sprint.mission.discodeit.service.*;
import com.sprint.mission.discodeit.service.basic.*;

import java.util.List;

public class DiscodeitLayeredJavaApplication {
static List<User> setUpUsers(UserService userService) {
// User
User user1 = userService.createUser("woody", "woody@codeit.com", "woody1234", "https://lumiere-a.akamaihd.net/v1/images/open-uri20150422-20810-10n7ovy_9b42e613.jpeg");
System.out.println("Created User1: " + user1);
User user2 = userService.createUser("buzz", "buzz@codeit.com", "buzz1234", "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRSr8RwnYAsvEYAvc199pUF6AIYE6CIRBNVGg&s");
System.out.println("Created User2: " + user2);

return List.of(user1, user2);
}

static Category setUpCategory(CategoryService categoryService) {
// Category
Category category = categoryService.createCategory("favorite");
System.out.println("Created Category: " + category);
return category;
}

static Channel channelTest(ChannelService channelService, Category category, User owner) {
Channel channel = channelService.createChannel("sports", "Channel for sports.", category.getId(), owner.getId());
System.out.println("Created Channel: " + channel);
return channel;
}

static void messageTest(MessageService messageService, User author, Channel channel) {
Message message = messageService.createMessage("EPL is my favorite!!", author.getId(), channel.getId());
System.out.println("Created Message: " + message);
}

static void directMessageTest(DirectMessageService directMessageService, User sender, User receiver) {
DirectMessage directMessage = directMessageService.createDirectMessage("EPL is my favorite!!", sender.getId(), receiver.getId());
System.out.println("Created DirectMessage: " + directMessage);
}

public static void main(String[] args) {
// Service Initialization
UserService userService = new BasicUserService();
CategoryService categoryService = new BasicCategoryService();
ChannelService channelService = new BasicChannelService();
MessageService messageService = new BasicMessageService();
DirectMessageService directMessageService = new BasicDirectMessageService();

// Set up
List<User> users = setUpUsers(userService);
Category category = setUpCategory(categoryService);

// Test
Channel channel = channelTest(channelService, category, users.get(0));
messageTest(messageService, users.get(0), channel);
directMessageTest(directMessageService, users.get(0), users.get(1));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.sprint.mission.discodeit.repository;

import com.sprint.mission.discodeit.model.Category;

import java.util.Optional;
import java.util.UUID;

public interface CategoryRepository {
Category save(Category category);
Optional<Category> findById(UUID id);
boolean existsById(UUID id);
void deleteById(UUID id);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.sprint.mission.discodeit.repository;

import com.sprint.mission.discodeit.model.Channel;

import java.util.Optional;
import java.util.UUID;

public interface ChannelRepository {
Channel save(Channel channel);
Optional<Channel> findById(UUID id);
boolean existsById(UUID id);
void deleteById(UUID id);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.sprint.mission.discodeit.repository;

import com.sprint.mission.discodeit.model.DirectMessage;

import java.util.Optional;
import java.util.UUID;

public interface DirectMessageRepository {
DirectMessage save(DirectMessage directMessage);
Optional<DirectMessage> findById(UUID id);
boolean existsById(UUID id);
void deleteById(UUID id);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.sprint.mission.discodeit.repository;

import com.sprint.mission.discodeit.model.Message;

import java.util.Optional;
import java.util.UUID;

public interface MessageRepository {
Message save(Message message);
Optional<Message> findById(UUID id);
boolean existsById(UUID id);
void deleteById(UUID id);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.sprint.mission.discodeit.repository;

import com.sprint.mission.discodeit.model.User;

import java.util.Optional;
import java.util.UUID;

public interface UserRepository {
User save(User user);
Optional<User> findById(UUID id);
boolean existsById(UUID id);
void deleteById(UUID id);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package com.sprint.mission.discodeit.repository.file;

import com.sprint.mission.discodeit.model.Category;
import com.sprint.mission.discodeit.repository.CategoryRepository;

import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;

public class FileCategoryRepository implements CategoryRepository {
String filePath = "data/category.dat";
Map<UUID, Category> data;

public FileCategoryRepository() {
loadData();
}

private void loadData() {
File file = new File(filePath);
if (file.exists()) {
try {
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
data = (Map<UUID, Category>) ois.readObject();
ois.close();
} catch (Exception e) {
e.printStackTrace();
}
} else {
data = new HashMap<>();
}
}

@Override
public Category save(Category category) {
data.put(category.getId(), category);
save(data);
return category;
}

@Override
public Optional<Category> findById(UUID id) {
Category categoryNullable = data.get(id);
return Optional.ofNullable(categoryNullable);
}

@Override
public boolean existsById(UUID id) {
return data.containsKey(id);
}

@Override
public void deleteById(UUID id) {
data.remove(id);
save(data);
}

private void save(Map<UUID, Category> data) {
try(
FileOutputStream fos = new FileOutputStream(filePath);
ObjectOutputStream oos = new ObjectOutputStream(fos);
) {
oos.writeObject(data);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package com.sprint.mission.discodeit.repository.file;

import com.sprint.mission.discodeit.model.Channel;
import com.sprint.mission.discodeit.repository.ChannelRepository;

import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;

public class FileChannelRepository implements ChannelRepository {
String filePath = "data/channel.dat";
Map<UUID, Channel> data;

public FileChannelRepository() {
loadData();
}

private void loadData() {
File file = new File(filePath);
if (file.exists()) {
try {
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
data = (Map<UUID, Channel>) ois.readObject();
ois.close();
} catch (Exception e) {
e.printStackTrace();
}
} else {
data = new HashMap<>();
}
}

@Override
public Channel save(Channel channel) {
data.put(channel.getId(), channel);
save(data);
return channel;
}

@Override
public Optional<Channel> findById(UUID id) {
Channel channelNullable = data.get(id);
return Optional.ofNullable(channelNullable);
}

@Override
public boolean existsById(UUID id) {
return data.containsKey(id);
}

@Override
public void deleteById(UUID id) {
data.remove(id);
save(data);
}

private void save(Map<UUID, Channel> data) {
try(
FileOutputStream fos = new FileOutputStream(filePath);
ObjectOutputStream oos = new ObjectOutputStream(fos);
) {
oos.writeObject(data);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package com.sprint.mission.discodeit.repository.file;

import com.sprint.mission.discodeit.model.DirectMessage;
import com.sprint.mission.discodeit.repository.DirectMessageRepository;

import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;

public class FileDirectMessageRepository implements DirectMessageRepository {
String filePath = "data/directMessage.dat";
Map<UUID, DirectMessage> data;

public FileDirectMessageRepository() {
loadData();
}

private void loadData() {
File file = new File(filePath);
if (file.exists()) {
try {
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
data = (Map<UUID, DirectMessage>) ois.readObject();
ois.close();
} catch (Exception e) {
e.printStackTrace();
}
} else {
data = new HashMap<>();
}
}

@Override
public DirectMessage save(DirectMessage directMessage) {
data.put(directMessage.getId(), directMessage);
save(data);
return directMessage;
}

@Override
public Optional<DirectMessage> findById(UUID id) {
DirectMessage directMessageNullable = data.get(id);
return Optional.ofNullable(directMessageNullable);
}

@Override
public boolean existsById(UUID id) {
return data.containsKey(id);
}

@Override
public void deleteById(UUID id) {
data.remove(id);
save(data);
}

private void save(Map<UUID, DirectMessage> data) {
try(
FileOutputStream fos = new FileOutputStream(filePath);
ObjectOutputStream oos = new ObjectOutputStream(fos);
) {
oos.writeObject(data);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Loading