Untitled

 avatar
unknown
plain_text
2 years ago
9.2 kB
6
Indexable
package assignment3;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;

public class SocialMedia {

    private List<User> users;
    private List<Post> posts;

    public SocialMedia() {
        users = new ArrayList<>();
        posts = new ArrayList<>();
    }

    public void addUser(User user) {
        users.add(user);
    }

    public void addPost(Post post) {
        posts.add(post);
    }

}

class User {
    private String username;
    private List<User> followers;
    private List<User> following;
    private List<Post> posts;
    private List<Comment> comments;

    public User(String username) {
        this.username = username;
        followers = new ArrayList<>();
        following = new ArrayList<>();
        posts = new ArrayList<>();
        comments = new ArrayList<>();
    }

    public String getUsername() {
        return username;
    }

    public void createPost(String text) {
        Post post = new Post(text, this);
        posts.add(post);
    }

    public void followUser(User user) {
        following.add(user);
        user.followers.add(this);
    }

    public void likePost(Post post) {
        post.addLike(this);
    }

    public void commentOnPost(Post post, String text) {
        Comment comment = new Comment(text, this, post);
        post.addComment(comment);
        comments.add(comment);
    }

    public List<Post> getPosts() {
        return posts;
    }

    public List<User> getFollowers() {
        return followers;
    }

    public List<User> getFollowing() {
        return following;
    }

    public List<Comment> getComments() {
        return comments;
    }
   
}

class PremiumUser extends User {
    private boolean isPremium;
    private int premiumPoints;

    public PremiumUser(String username) {
        super(username);
        isPremium = false;
        premiumPoints = 0;
    }

    
    public void subscribePremium() {
        isPremium = true;
        System.out.println(getUsername() + " has subscribed to premium membership.");
    }

    public boolean isPremium() {
        return isPremium;
    }

    public int getPremiumPoints() {
        return premiumPoints;
    }

    public void earnPremiumPoints(int points) {
        premiumPoints += points;
        System.out.println(getUsername() + " has earned " + points + " premium points.");
    }

    public void redeemPremiumPoints(int points) {
        if (points <= premiumPoints) {
            premiumPoints -= points;
            System.out.println(getUsername() + " has redeemed " + points + " premium points.");
        } else {
            System.out.println("Insufficient premium points to redeem.");
        }
    }


}

class Post {
    private String text;
    private User author;
    private List<User> likes;
    private List<Comment> comments;

    public Post(String text, User author) {
        this.text = text;
        this.author = author;
        likes = new ArrayList<>();
        comments = new ArrayList<>();
    }

    public void addLike(User user) {
        likes.add(user);
    }

    public void addComment(Comment comment) {
        comments.add(comment);
    }

    public String getText() {
        return text;
    }

    public User getAuthor() {
        return author;
    }

    public List<User> getLikes() {
        return likes;
    }

    public List<Comment> getComments() {
        return comments;
    }

   
}
class Comment {
    private String text;
    private User author;
    private Post post;

    public Comment(String text, User author, Post post) {
        this.text = text;
        this.author = author;
        this.post = post;
    }

    public String getText() {
        return text;
    }

    public User getAuthor() {
        return author;
    }

    public Post getPost() {
        return post;
    }

}
class Advertisement {
    private String content;

    public Advertisement(String content) {
        this.content = content;
    }

    public void displayAd() {
        System.out.println("Displaying ad: " + content);
    }
}

public class Main {
    public static void main(String[] args) {
        // Creating social media instance
        SocialMedia socialMedia = new SocialMedia();

        // Creating users
        User user1 = new User("Fawaz");
        PremiumUser user2 = new PremiumUser("Rehel");
        User user3 = new User("Sarah");

        // Adding users to social media
        socialMedia.addUser(user1);
        socialMedia.addUser(user2);
        socialMedia.addUser(user3);

        // User actions
        user1.createPost("Hello, everyone!");

        if (user2.getPosts().size() > 0) {
            user1.likePost(user2.getPosts().get(0)); // John likes Emily's post
            user1.commentOnPost(user2.getPosts().get(0), "Great post, Emily!"); // John comments on Emily's post
        }

        user2.subscribePremium();
        user2.createPost("I love this social media platform!");

        if (user3.getPosts().size() > 0) {
            user1.likePost(user3.getPosts().get(0)); // John likes Sarah's post
            user2.commentOnPost(user3.getPosts().get(0), "I enjoy using it a lot!!"); // Emily comments on Sarah's post
        }

        user3.createPost("Good morning, World!");

        if (user2.getPosts().size() > 0) {
            user3.likePost(user2.getPosts().get(0)); // Sarah likes Emily's post
            user2.commentOnPost(user2.getPosts().get(0), "This platform is amazing!"); // Emily comments on her own post
        }

        // Adding likes and comments to User 1's post
        if (user1.getPosts().size() > 0) {
            user2.likePost(user1.getPosts().get(0)); // Emily likes John's post
            user3.likePost(user1.getPosts().get(0)); // Sarah likes John's post
            user2.commentOnPost(user1.getPosts().get(0), "Nice to see you, John!"); // Emily comments on John's post
        }

        // Adding likes and comments to User 3's post
        if (user3.getPosts().size() > 0) {
            user1.likePost(user3.getPosts().get(0)); // John likes Sarah's post
            user2.commentOnPost(user3.getPosts().get(0), "Have a great day!"); // Emily comments on Sarah's post
            user1.likePost(user3.getPosts().get(0)); // John likes Sarah's post
            user1.commentOnPost(user3.getPosts().get(0), "Goodmorning , Sarah."); // John comments on Sarah's post
        }

        // Creating advertisements
        Advertisement ad1 = new Advertisement("Check out our new product!");
        Advertisement ad2 = new Advertisement("Get 50% off on all items!");

        // Displaying advertisements
        System.out.println("Advertisements:");
        ad1.displayAd();
        ad2.displayAd();

        // Displaying user data
        System.out.println("User 1 Posts:");
        List<Post> user1Posts = user1.getPosts();
        for (Post post : user1Posts) {
            System.out.println("- " + post.getText());
            System.out.println("  Author: " + post.getAuthor().getUsername());
            System.out.println("  Likes: " + post.getLikes().size());
            System.out.println("  Comments:");
            List<Comment> comments = post.getComments();
            for (Comment comment : comments) {
                System.out.println("    - " + comment.getText());
                System.out.println("      Author: " + comment.getAuthor().getUsername());
            }
            System.out.println();
        }

        System.out.println("User 2 Posts:");
        List<Post> user2Posts = user2.getPosts();
        for (Post post : user2Posts) {
            System.out.println("- " + post.getText());
            System.out.println("  Author: " + post.getAuthor().getUsername());
            System.out.println("  Likes: " + post.getLikes().size());
            System.out.println("  Comments:");
            List<Comment> comments = post.getComments();
            for (Comment comment : comments) {
                System.out.println("    - " + comment.getText());
                System.out.println("      Author: " + comment.getAuthor().getUsername());
            }
            System.out.println();
        }

        System.out.println("User 3 Posts:");
        List<Post> user3Posts = user3.getPosts();
        for (Post post : user3Posts) {
            System.out.println("- " + post.getText());
            System.out.println("  Author: " + post.getAuthor().getUsername());
            System.out.println("  Likes: " + post.getLikes().size());
            System.out.println("  Comments:");
            List<Comment> comments = post.getComments();
            for (Comment comment : comments) {
                System.out.println("    - " + comment.getText());
                System.out.println("      Author: " + comment.getAuthor().getUsername());
            }
            System.out.println();
        }
    }
}
Editor is loading...