File Storage
unknown
java
a year ago
7.1 kB
7
Indexable
import java.util.ArrayList;
import java.util.List;
// Class representing a User
public class User {
private String id;
private String name;
private String email;
private List<Permission> permissions;
public User(String id, String name, String email) {
this.id = id;
this.name = name;
this.email = email;
this.permissions = new ArrayList<>();
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public String getEmail() {
return email;
}
public List<Permission> getPermissions() {
return permissions;
}
public void addPermission(Permission permission) {
permissions.add(permission);
}
}
// Class representing a File
import java.util.List;
public class File {
private String id;
private String name;
private String content;
private List<FileVersion> versions;
private User owner;
public File(String id, String name, String content, User owner) {
this.id = id;
this.name = name;
this.content = content;
this.owner = owner;
this.versions = new ArrayList<>();
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public List<FileVersion> getVersions() {
return versions;
}
public void addVersion(FileVersion version) {
versions.add(version);
}
public User getOwner() {
return owner;
}
}
// Class representing a FileVersion
public class FileVersion {
private String versionId;
private String content;
private String timestamp;
public FileVersion(String versionId, String content, String timestamp) {
this.versionId = versionId;
this.content = content;
this.timestamp = timestamp;
}
public String getVersionId() {
return versionId;
}
public String getContent() {
return content;
}
public String getTimestamp() {
return timestamp;
}
}
// Class representing a Folder
import java.util.List;
public class Folder {
private String id;
private String name;
private List<File> files;
private List<Folder> subfolders;
private User owner;
public Folder(String id, String name, User owner) {
this.id = id;
this.name = name;
this.owner = owner;
this.files = new ArrayList<>();
this.subfolders = new ArrayList<>();
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public List<File> getFiles() {
return files;
}
public List<Folder> getSubfolders() {
return subfolders;
}
public User getOwner() {
return owner;
}
public void addFile(File file) {
files.add(file);
}
public void removeFile(String fileName) {
files.removeIf(file -> file.getName().equals(fileName));
}
public void addSubfolder(Folder folder) {
subfolders.add(folder);
}
public void removeSubfolder(String folderName) {
subfolders.removeIf(folder -> folder.getName().equals(folderName));
}
}
// Class representing a Permission
public class Permission {
private User user;
private File file;
private boolean canRead;
private boolean canWrite;
public Permission(User user, File file, boolean canRead, boolean canWrite) {
this.user = user;
this.file = file;
this.canRead = canRead;
this.canWrite = canWrite;
}
public User getUser() {
return user;
}
public File getFile() {
return file;
}
public boolean isCanRead() {
return canRead;
}
public boolean isCanWrite() {
return canWrite;
}
}
// Class representing the File Storage System
public class FileStorageSystem {
private List<User> users;
private List<Folder> folders;
public FileStorageSystem() {
this.users = new ArrayList<>();
this.folders = new ArrayList<>();
}
public void addUser(User user) {
users.add(user);
}
public void addFolder(Folder folder) {
folders.add(folder);
}
public void uploadFile(User user, Folder folder, File file) {
if (folder.getOwner().equals(user)) {
folder.addFile(file);
} else {
System.out.println("User does not have permission to upload files to this folder.");
}
}
public String downloadFile(User user, File file) {
Permission permission = findPermission(user, file);
if (permission != null && permission.isCanRead()) {
return file.getContent();
} else {
return "Permission denied.";
}
}
public void shareFile(User owner, File file, User targetUser, boolean canRead, boolean canWrite) {
if (file.getOwner().equals(owner)) {
Permission permission = new Permission(targetUser, file, canRead, canWrite);
targetUser.addPermission(permission);
} else {
System.out.println("User does not have permission to share this file.");
}
}
private Permission findPermission(User user, File file) {
for (Permission permission : user.getPermissions()) {
if (permission.getFile().equals(file)) {
return permission;
}
}
return null;
}
}
// Example Main Application
public class FileStorageApp {
public static void main(String[] args) {
FileStorageSystem fileSystem = new FileStorageSystem();
// Create users
User user1 = new User("1", "Alice", "alice@example.com");
User user2 = new User("2", "Bob", "bob@example.com");
fileSystem.addUser(user1);
fileSystem.addUser(user2);
// Create folders
Folder rootFolder = new Folder("root", "Root Folder", user1);
Folder docsFolder = new Folder("docs", "Documents", user1);
fileSystem.addFolder(rootFolder);
fileSystem.addFolder(docsFolder);
rootFolder.addSubfolder(docsFolder);
// Create files
File file1 = new File("file1", "file1.txt", "This is file 1 content.", user1);
File file2 = new File("file2", "file2.txt", "This is file 2 content.", user1);
fileSystem.uploadFile(user1, docsFolder, file1);
fileSystem.uploadFile(user1, docsFolder, file2);
// Share file with another user
fileSystem.shareFile(user1, file1, user2, true, false);
// Download file
System.out.println("Content of file1.txt for Bob: " + fileSystem.downloadFile(user2, file1));
// Attempt to download a file without permission
System.out.println("Content of file2.txt for Bob: " + fileSystem.downloadFile(user2, file2));
}
}
Editor is loading...
Leave a Comment