mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2026-10-16 21:21:33 +08:00
refactor(addon): Make LocalAddonFile implement Comparable (#6984)
This commit is contained in:
@@ -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
|
||||
) {
|
||||
|
||||
Reference in New Issue
Block a user