From d7148abac74917e404cb0456abfb43ecaf935f46 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Sat, 17 Oct 2020 13:57:35 +0200 Subject: [PATCH] More SonarQube fixes. --- .../refinedstorage/RSContainers.java | 3 + .../apiimpl/autocrafting/CraftingManager.java | 151 ++++++++++-------- .../apiimpl/network/NetworkNodeManager.java | 2 +- .../apiimpl/network/grid/GridManager.java | 12 +- 4 files changed, 94 insertions(+), 74 deletions(-) diff --git a/src/main/java/com/refinedmods/refinedstorage/RSContainers.java b/src/main/java/com/refinedmods/refinedstorage/RSContainers.java index d9c35077f..1de7c6336 100644 --- a/src/main/java/com/refinedmods/refinedstorage/RSContainers.java +++ b/src/main/java/com/refinedmods/refinedstorage/RSContainers.java @@ -54,4 +54,7 @@ public final class RSContainers { public static final ContainerType CRAFTING_MONITOR = null; @ObjectHolder("wireless_crafting_monitor") public static final ContainerType WIRELESS_CRAFTING_MONITOR = null; + + private RSContainers() { + } } diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/CraftingManager.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/CraftingManager.java index 925dec31b..39a4168b4 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/CraftingManager.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/CraftingManager.java @@ -123,54 +123,15 @@ public class CraftingManager implements ICraftingManager { public void update() { if (network.canRun()) { if (tasksToRead != null) { - for (int i = 0; i < tasksToRead.size(); ++i) { - CompoundNBT taskTag = tasksToRead.getCompound(i); - - ResourceLocation taskType = new ResourceLocation(taskTag.getString(NBT_TASK_TYPE)); - CompoundNBT taskData = taskTag.getCompound(NBT_TASK_DATA); - - ICraftingTaskFactory factory = API.instance().getCraftingTaskRegistry().get(taskType); - if (factory != null) { - try { - ICraftingTask task = factory.createFromNbt(network, taskData); - - tasks.put(task.getId(), task); - } catch (CraftingTaskReadException e) { - LOGGER.error("Could not deserialize crafting task", e); - } - } - } - - this.tasksToRead = null; + readTasks(); } boolean changed = !tasksToCancel.isEmpty() || !tasksToAdd.isEmpty(); - for (UUID idToCancel : tasksToCancel) { - if (this.tasks.containsKey(idToCancel)) { - this.tasks.get(idToCancel).onCancelled(); - this.tasks.remove(idToCancel); - } - } - this.tasksToCancel.clear(); + processTasksToCancel(); + processTasksToAdd(); - for (ICraftingTask task : this.tasksToAdd) { - this.tasks.put(task.getId(), task); - } - this.tasksToAdd.clear(); - - boolean anyFinished = false; - - Iterator> it = tasks.entrySet().iterator(); - while (it.hasNext()) { - ICraftingTask task = it.next().getValue(); - - if (task.update()) { - anyFinished = true; - - it.remove(); - } - } + boolean anyFinished = updateTasks(); if (changed || anyFinished) { onTaskChanged(); @@ -182,6 +143,62 @@ public class CraftingManager implements ICraftingManager { } } + private void processTasksToCancel() { + for (UUID idToCancel : tasksToCancel) { + if (this.tasks.containsKey(idToCancel)) { + this.tasks.get(idToCancel).onCancelled(); + this.tasks.remove(idToCancel); + } + } + this.tasksToCancel.clear(); + } + + private void processTasksToAdd() { + for (ICraftingTask task : this.tasksToAdd) { + this.tasks.put(task.getId(), task); + } + this.tasksToAdd.clear(); + } + + private boolean updateTasks() { + boolean anyFinished = false; + + Iterator> it = tasks.entrySet().iterator(); + while (it.hasNext()) { + ICraftingTask task = it.next().getValue(); + + if (task.update()) { + anyFinished = true; + + it.remove(); + } + } + + return anyFinished; + } + + private void readTasks() { + for (int i = 0; i < tasksToRead.size(); ++i) { + CompoundNBT taskTag = tasksToRead.getCompound(i); + + ResourceLocation taskType = new ResourceLocation(taskTag.getString(NBT_TASK_TYPE)); + CompoundNBT taskData = taskTag.getCompound(NBT_TASK_DATA); + + ICraftingTaskFactory factory = API.instance().getCraftingTaskRegistry().get(taskType); + if (factory != null) { + try { + ICraftingTask task = factory.createFromNbt(network, taskData); + + tasks.put(task.getId(), task); + } catch (CraftingTaskReadException e) { + LOGGER.error("Could not deserialize crafting task", e); + } + } + } + + this.tasksToRead = null; + } + @Override public void readFromNbt(CompoundNBT tag) { this.tasksToRead = tag.getList(NBT_TASKS, Constants.NBT.TAG_COMPOUND); @@ -230,10 +247,8 @@ public class CraftingManager implements ICraftingManager { } for (ICraftingTask task : getTasks()) { - if (task.getRequested().getItem() != null) { - if (API.instance().getComparer().isEqualNoQuantity(task.getRequested().getItem(), stack)) { - amount -= task.getQuantity(); - } + if (task.getRequested().getItem() != null && API.instance().getComparer().isEqualNoQuantity(task.getRequested().getItem(), stack)) { + amount -= task.getQuantity(); } } @@ -242,6 +257,8 @@ public class CraftingManager implements ICraftingManager { if (result.isOk()) { start(result.getTask()); + + return result.getTask(); } else { throttle(source); } @@ -258,10 +275,8 @@ public class CraftingManager implements ICraftingManager { } for (ICraftingTask task : getTasks()) { - if (task.getRequested().getFluid() != null) { - if (API.instance().getComparer().isEqual(task.getRequested().getFluid(), stack, IComparer.COMPARE_NBT)) { - amount -= task.getQuantity(); - } + if (task.getRequested().getFluid() != null && API.instance().getComparer().isEqual(task.getRequested().getFluid(), stack, IComparer.COMPARE_NBT)) { + amount -= task.getQuantity(); } } @@ -270,6 +285,8 @@ public class CraftingManager implements ICraftingManager { if (result.isOk()) { start(result.getTask()); + + return result.getTask(); } else { throttle(source); } @@ -345,15 +362,7 @@ public class CraftingManager implements ICraftingManager { this.containerInventories.clear(); this.patternToContainer.clear(); - List containers = new ArrayList<>(); - - for (INetworkNode node : network.getNodeGraph().all()) { - if (node instanceof ICraftingPatternContainer && node.isActive()) { - containers.add((ICraftingPatternContainer) node); - } - } - - containers.sort((a, b) -> b.getPosition().compareTo(a.getPosition())); + List containers = getContainers(); for (ICraftingPatternContainer container : containers) { for (ICraftingPattern pattern : container.getPatterns()) { @@ -367,12 +376,8 @@ public class CraftingManager implements ICraftingManager { network.getFluidStorageCache().getCraftablesList().add(output); } - Set list = this.patternToContainer.get(pattern); - if (list == null) { - list = new LinkedHashSet<>(); - } - list.add(container); - this.patternToContainer.put(pattern, list); + Set containersForPattern = this.patternToContainer.computeIfAbsent(pattern, (key) -> new LinkedHashSet<>()); + containersForPattern.add(container); } IItemHandlerModifiable handler = container.getPatternInventory(); @@ -385,6 +390,20 @@ public class CraftingManager implements ICraftingManager { this.network.getFluidStorageCache().reAttachListeners(); } + private List getContainers() { + List containers = new ArrayList<>(); + + for (INetworkNode node : network.getNodeGraph().all()) { + if (node instanceof ICraftingPatternContainer && node.isActive()) { + containers.add((ICraftingPatternContainer) node); + } + } + + containers.sort((a, b) -> b.getPosition().compareTo(a.getPosition())); + + return containers; + } + @Override public Set getAllContainers(ICraftingPattern pattern) { return patternToContainer.getOrDefault(pattern, Collections.emptySet()); diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/NetworkNodeManager.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/NetworkNodeManager.java index 3c26bab9d..2e656e29e 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/NetworkNodeManager.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/NetworkNodeManager.java @@ -67,7 +67,7 @@ public class NetworkNodeManager extends WorldSavedData implements INetworkNodeMa this.nodes.put(pos, node); } } else { - logger.warn("Factory for " + id + " not found in network node registry"); + logger.warn("Factory for {} not found in network node registry", id); } } } diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/GridManager.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/GridManager.java index 072107407..273e6ec4f 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/GridManager.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/GridManager.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.apiimpl.network.grid; +import com.refinedmods.refinedstorage.api.network.grid.GridFactoryType; import com.refinedmods.refinedstorage.api.network.grid.IGrid; import com.refinedmods.refinedstorage.api.network.grid.IGridFactory; import com.refinedmods.refinedstorage.api.network.grid.IGridManager; @@ -70,13 +71,10 @@ public class GridManager implements IGridManager { IGrid grid = null; TileEntity tile = factory.getRelevantTile(player.world, pos); - switch (factory.getType()) { - case STACK: - grid = factory.createFromStack(player, stack, slotId); - break; - case BLOCK: - grid = factory.createFromBlock(player, pos); - break; + if (factory.getType() == GridFactoryType.STACK) { + grid = factory.createFromStack(player, stack, slotId); + } else if (factory.getType() == GridFactoryType.BLOCK) { + grid = factory.createFromBlock(player, pos); } if (grid == null) {