Skip to content

Commit

Permalink
Archiving and Deleting Improvement (1)
Browse files Browse the repository at this point in the history
  • Loading branch information
ItsLeon15 committed Oct 5, 2023
1 parent 1d4e531 commit 1d1cfce
Show file tree
Hide file tree
Showing 8 changed files with 268 additions and 53 deletions.
2 changes: 1 addition & 1 deletion dependency-reduced-pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.leon.bugreport</groupId>
<artifactId>BugReports</artifactId>
<version>0.6.0</version>
<version>0.6.2</version>
<build>
<plugins>
<plugin>
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>com.leon.bugreport</groupId>
<artifactId>BugReports</artifactId>
<version>0.6.0</version>
<version>0.6.2</version>

<properties>
<maven.compiler.source>17</maven.compiler.source>
Expand Down
59 changes: 59 additions & 0 deletions src/main/java/com/leon/bugreport/BugListArchivedCommand.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package com.leon.bugreport;

import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

import static com.leon.bugreport.BugReportManager.pluginColor;
import static com.leon.bugreport.BugReportManager.pluginTitle;

public class BugListArchivedCommand implements CommandExecutor {

public BugListArchivedCommand(BugReportManager reportManager) { }

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!(sender instanceof Player player)) {
sender.sendMessage(pluginColor + pluginTitle + " " + "This command can only be run by a player.");
return true;
}

if (player.hasPermission("bugreport.admin")) {
BugReportManager.setCurrentPage(player, 1);

Inventory bugReportGUI = BugReportManager.getArchivedBugReportsGUI(player);

ItemStack backButton = null;
ItemStack forwardButton;

if (BugReportManager.getCurrentPage(player) == 1) {
bugReportGUI.setItem(36, new ItemStack(Material.AIR));
} else {
backButton = new ItemStack(Material.ARROW);
ItemMeta backMeta = backButton.getItemMeta();
backMeta.setDisplayName(ChatColor.GREEN + BugReportLanguage.getTitleFromLanguage("back"));
backButton.setItemMeta(backMeta);
}

forwardButton = new ItemStack(Material.ARROW);
ItemMeta forwardMeta = forwardButton.getItemMeta();
forwardMeta.setDisplayName(ChatColor.GREEN + BugReportLanguage.getTitleFromLanguage("forward"));
forwardButton.setItemMeta(forwardMeta);

bugReportGUI.setItem(36, backButton);
bugReportGUI.setItem(44, forwardButton);

player.openInventory(bugReportGUI);
} else {
player.sendMessage(pluginColor + pluginTitle + " " + ChatColor.RED + "You don't have permission to use this command.");
}

return true;
}
}
40 changes: 30 additions & 10 deletions src/main/java/com/leon/bugreport/BugReportDatabase.java
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ public void addBugReport(String username, @NotNull UUID playerId, String world,
}
}

public Map<UUID, List<String>> loadBugReports() {
public static @NotNull Map<UUID, List<String>> loadBugReports() {
Map<UUID, List<String>> bugReports = new HashMap<>();

try {
Expand Down Expand Up @@ -156,12 +156,13 @@ private void connectRemote(String host, Integer port, String database, String us
try {
String databaseURL = "jdbc:mysql://" + host + ":" + port + "/" + database + "?useSSL=false";
connection = DriverManager.getConnection(databaseURL, username, password);
System.out.println("Connected to remote database");
} catch (SQLException e) {
plugin.getLogger().severe("Failed to connect to remote database.");
plugin.getLogger().severe(e.getMessage());
}

System.out.println("Connected to remote database");

createTables();
}

Expand All @@ -170,12 +171,13 @@ private void connectLocal() {
File databaseFile = new File("plugins/BugReport/bugreports.db");
String databaseURL = "jdbc:sqlite:" + databaseFile.getAbsolutePath();
connection = DriverManager.getConnection(databaseURL);
System.out.println("Connected to local database");
} catch (SQLException e) {
plugin.getLogger().severe("Failed to connect to local database.");
plugin.getLogger().severe(e.getMessage());
}

System.out.println("Connected to local database");

createTables();
}

Expand All @@ -191,7 +193,7 @@ private void createTables() {
public void updateBugReportHeader(UUID playerId, int reportIndex) {
try {
PreparedStatement statement = connection.prepareStatement("UPDATE bug_reports SET header = ? WHERE player_id = ? AND rowid = ?");
String existingHeader = BugReportManager.bugReports.get(playerId).get(reportIndex);
String existingHeader = bugReports.get(playerId).get(reportIndex);

String[] lines = existingHeader.split("\n");
StringBuilder newHeader = new StringBuilder();
Expand All @@ -210,12 +212,15 @@ public void updateBugReportHeader(UUID playerId, int reportIndex) {
statement.executeUpdate();
statement.close();
} catch (SQLException e) {
plugin.getLogger().severe("Failed to update bug report header.");
plugin.getLogger().severe("Failed to update bug report read status.");
plugin.getLogger().severe(e.getMessage());
}
}

public static void updateBugReportArchive(UUID playerId, int reportIndex, int archived) {
public static void updateBugReportArchive(@NotNull UUID playerId, int reportIndex, int archived) {
int bugReportIndex = reportIndex - 1;
System.out.println("Updating bug report " + reportIndex + " for " + playerId + " to " + archived);

try {
PreparedStatement statement = connection.prepareStatement("UPDATE bug_reports SET archived = ? WHERE player_id = ? AND report_id = ?");
statement.setInt(1, archived);
Expand All @@ -224,7 +229,8 @@ public static void updateBugReportArchive(UUID playerId, int reportIndex, int ar
statement.executeUpdate();
statement.close();

String existingHeader = BugReportManager.bugReports.get(playerId).get(reportIndex - 1);
String existingHeader = bugReports.get(playerId).get(bugReportIndex);
System.out.println("Existing header: " + existingHeader);

String[] lines = existingHeader.split("\n");
StringBuilder newHeader = new StringBuilder();
Expand All @@ -236,13 +242,27 @@ public static void updateBugReportArchive(UUID playerId, int reportIndex, int ar
}
newHeader.append("\n");
}
List<String> reports = BugReportManager.bugReports.get(playerId);
reports.set(reportIndex - 1, newHeader.toString().trim());
BugReportManager.bugReports.put(playerId, reports);
List<String> reports = bugReports.get(playerId);
reports.set(bugReportIndex, newHeader.toString().trim());
bugReports.put(playerId, reports);

} catch (SQLException e) {
plugin.getLogger().severe("Failed to update bug report archive status.");
plugin.getLogger().severe(e.getMessage());
}
}

public static void deleteBugReport(@NotNull UUID playerId, int reportIndex) {
System.out.println("Deleting bug report " + reportIndex + " for " + playerId);
try {
PreparedStatement statement = connection.prepareStatement("DELETE FROM bug_reports WHERE player_id = ? AND report_id = ?");
statement.setString(1, playerId.toString());
statement.setInt(2, reportIndex);
statement.executeUpdate();
statement.close();
} catch (SQLException e) {
plugin.getLogger().severe("Failed to delete bug report.");
plugin.getLogger().severe(e.getMessage());
}
}
}
Loading

0 comments on commit 1d1cfce

Please sign in to comment.