Exemple #1
0
  @Override
  protected Pair<BasicPlane, Integer> cleanPlane() {
    List<BasicBlock> cleanBlocks = getNewBlocksList();
    Pair<Integer, BasicBlock> pickedToClean = pickBlockToClean();
    int toMove = pickedToClean.getValue1().getValidCounter();
    int active = getActiveBlockIndex();
    BasicBlock activeBlock = cleanBlocks.get(active);

    for (BasicPage page : pickedToClean.getValue1().getPages()) {
      if (page.isValid()) {
        activeBlock = activeBlock.move(page.getLp());
      }
    }
    if (!activeBlock.hasRoomForWrite()) {
      activeBlock = (BasicBlock) activeBlock.setStatus(BlockStatusGeneral.USED);
    }
    cleanBlocks.set(active, activeBlock);
    cleanBlocks.set(pickedToClean.getValue0(), (BasicBlock) pickedToClean.getValue1().eraseBlock());
    Builder builder = getSelfBuilder();
    builder.setBlocks(cleanBlocks);
    return new Pair<>(builder.build(), toMove);
  }