OneCompiler

SYSTEM DEV SAMPLE

101

import java.util.*;

class User {
String id;
String name;
String role;

User(String id, String name, String role) {
    this.id = id;
    this.name = name;
    this.role = role;
}

}

class FileRecord {
String id;
String name;
String content;
String status;
String createdBy;
String approvedBy;

FileRecord(String id, String name, String content, String createdBy) {
    this.id = id;
    this.name = name;
    this.content = content;
    this.status = "Draft";
    this.createdBy = createdBy;
}

}

class Project {
String id;
String name;
String description;
List<FileRecord> files = new ArrayList<>();

Project(String id, String name, String description) {
    this.id = id;
    this.name = name;
    this.description = description;
}

}

public class ProjectSystem {

static Map<String, User> users = new HashMap<>();
static Map<String, Project> projects = new HashMap<>();
static Scanner scanner = new Scanner(System.in);

public static void main(String[] args) {
    // Read user input from STDIN
    System.out.print("Enter Admin Name: ");
    String adminName = scanner.nextLine();
    User admin = createUser(adminName, "Admin");

    System.out.print("Enter Editor Name: ");
    String editorName = scanner.nextLine();
    User editor = createUser(editorName, "Editor");

    System.out.print("Enter Project Name: ");
    String projectName = scanner.nextLine();

    System.out.print("Enter Project Description: ");
    String projectDescription = scanner.nextLine();

    Project project = createProject(projectName, projectDescription);

    System.out.print("Enter File Name: ");
    String fileName = scanner.nextLine();

    System.out.print("Enter File Content: ");
    String fileContent = scanner.nextLine();

    FileRecord file = createFile(project.id, editor.id, fileName, fileContent);

    submitFileForApproval(project.id, file.id);
    approveFile(project.id, file.id, admin.id);

    System.out.println("✔ File '" + file.name + "' Status: " + file.status);
}

public static User createUser(String name, String role) {
    String id = UUID.randomUUID().toString();
    User user = new User(id, name, role);
    users.put(id, user);
    return user;
}

public static Project createProject(String name, String description) {
    String id = UUID.randomUUID().toString();
    Project project = new Project(id, name, description);
    projects.put(id, project);
    return project;
}

public static FileRecord createFile(String projectId, String userId, String name, String content) {
    String id = UUID.randomUUID().toString();
    FileRecord file = new FileRecord(id, name, content, userId);
    projects.get(projectId).files.add(file);
    return file;
}

public static void submitFileForApproval(String projectId, String fileId) {
    for (FileRecord file : projects.get(projectId).files) {
        if (file.id.equals(fileId)) {
            file.status = "PendingApproval";
        }
    }
}

public static void approveFile(String projectId, String fileId, String approverId) {
    for (FileRecord file : projects.get(projectId).files) {
        if (file.id.equals(fileId) && file.status.equals("PendingApproval")) {
            file.status = "Approved";
            file.approvedBy = approverId;
        }
    }
}

}