refactor(addon): Make LocalAddonFile implement Comparable (#6984)

This commit is contained in:
ToobLac
2026-10-15 20:33:13 +08:00
committed by GitHub
parent da9ec2c1e1
commit 452d030817
7 changed files with 10 additions and 10 deletions
@@ -36,7 +36,7 @@ import static org.jackhuang.hmcl.util.logging.Logger.LOG;
public class AddonCheckUpdatesTask extends Task<AddonUpdates> {
private final List<Task<Pair<AddonUpdate, @Nullable AddonUpdate>>> dependents;
public AddonCheckUpdatesTask(DownloadProvider downloadProvider, String gameVersion, Collection<? extends LocalAddonFile> addons) {
public AddonCheckUpdatesTask(DownloadProvider downloadProvider, String gameVersion, Collection<? extends LocalAddonFile<?>> addons) {
dependents = addons.stream().map(addon ->
Task.supplyAsync(Schedulers.io(), () -> {
AddonUpdate candidate = null;
@@ -37,14 +37,14 @@ import static org.jackhuang.hmcl.util.logging.Logger.LOG;
public class AddonUpdateTask extends Task<Void> {
private final Collection<Task<?>> dependents = new ArrayList<>();
private final List<LocalAddonFile> failedAddons = new ArrayList<>();
private final List<LocalAddonFile<?>> failedAddons = new ArrayList<>();
public AddonUpdateTask(DownloadProvider downloadProvider, Path addonDirectory, List<AddonUpdate> addons) {
setStage("addon.check_update.confirm");
getProperties().put("total", addons.size());
for (AddonUpdate addon : addons) {
LocalAddonFile local = addon.localAddonFile();
LocalAddonFile<?> local = addon.localAddonFile();
RemoteAddon.Version remote = addon.targetVersion();
boolean isDisabled = local.isDisabled();
String fileName = remote.file().filename();
@@ -91,7 +91,7 @@ public class AddonUpdateTask extends Task<Void> {
}
}
public List<LocalAddonFile> getFailedAddons() {
public List<LocalAddonFile<?>> getFailedAddons() {
return failedAddons;
}
@@ -35,8 +35,8 @@ import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
/// Sub-classes should implement `Comparable`
public abstract class LocalAddonFile {
/// @param <T> this type of addon
public abstract class LocalAddonFile<T> implements Comparable<T> {
protected LocalAddonFile() {
}
@@ -39,7 +39,7 @@ import java.util.concurrent.locks.ReentrantLock;
/// copies. Callers obtain a manager from the current instance after a refresh or COW publish.
///
/// @param <T> the local addon file type managed by this manager
public abstract class LocalAddonManager<T extends LocalAddonFile> {
public abstract class LocalAddonManager<T extends LocalAddonFile<T>> {
/// File-name suffix used for disabled addon files.
public static final String DISABLED_EXTENSION = ".disabled";
@@ -37,7 +37,7 @@ import static org.jackhuang.hmcl.util.logging.Logger.LOG;
*
* @author huangyuhui
*/
public final class LocalModFile extends LocalAddonFile implements Comparable<LocalModFile> {
public final class LocalModFile extends LocalAddonFile<LocalModFile> {
private Path file;
private final ModManager modManager;
@@ -32,7 +32,7 @@ import java.nio.file.Path;
import java.util.List;
import java.util.Locale;
public sealed abstract class ResourcePackFile extends LocalAddonFile implements Comparable<ResourcePackFile> permits ResourcePackFolder, ResourcePackZipFile {
public sealed abstract class ResourcePackFile extends LocalAddonFile<ResourcePackFile> permits ResourcePackFolder, ResourcePackZipFile {
static ResourcePackFile fromFile(ResourcePackManager manager, Path path) throws IOException {
if (isFileResourcePack(path)) {
return Files.isRegularFile(path) ? new ResourcePackZipFile(manager, path) : new ResourcePackFolder(manager, path);
@@ -23,7 +23,7 @@ import org.jetbrains.annotations.NotNullByDefault;
@NotNullByDefault
public record AddonUpdate(
LocalAddonFile localAddonFile,
LocalAddonFile<?> localAddonFile,
RemoteAddon.Version currentVersion,
RemoteAddon.Version targetVersion
) {