PlotSquared/Core/src/main/java/com/plotsquared/core/plot/PlotService.java

57 lines
2.1 KiB
Java

package com.plotsquared.core.plot;
import com.plotsquared.core.repository.PlotRepository;
import com.plotsquared.core.repository.PlotRoleRepository;
import com.plotsquared.core.repository.PlotSettingsRepository;
import com.plotsquared.core.repository.dbo.PlotSettingsDBOBuilder;
import org.checkerframework.checker.nullness.qual.NonNull;
import javax.inject.Inject;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
public final class PlotService {
private static final String PLOT_SETTINGS_DEFAULT_POSITION = "default";
private final PlotRepository plotRepository;
private final PlotSettingsRepository plotSettingsRepository;
private final PlotRoleRepository plotRoleRepository;
@Inject
public PlotService(
final @NonNull PlotRepository plotRepository,
final @NonNull PlotSettingsRepository plotSettingsRepository,
final @NonNull PlotRoleRepository plotRoleRepository
) {
this.plotRepository = plotRepository;
this.plotSettingsRepository = plotSettingsRepository;
this.plotRoleRepository = plotRoleRepository;
}
/**
* Returns a list containing all the plots in the given {@code plotArea}.
*
* @param plotArea the area
* @return all plots in the area
*/
public @NonNull Collection<Plot> getPlotsInArea(final @NonNull PlotArea plotArea) {
return this.plotRepository.getPlotsInArea(plotArea.getId())
.map(plotDBO -> {
final var settings = this.plotSettingsRepository.findById(plotDBO)
.orElseGet(() -> PlotSettingsDBOBuilder.builder()
.plot(plotDBO)
.position(PLOT_SETTINGS_DEFAULT_POSITION)
.build()
);
return plotDBO.toPlot(
plotArea,
settings,
this.plotRoleRepository.findAllFor(plotDBO),
List.of()
);
}).collect(Collectors.toList());
}
}