diff --git a/src/main/java/ru/dragonestia/loadbalancer/service/BucketService.java b/src/main/java/ru/dragonestia/loadbalancer/service/BucketService.java index 465b547..2da742c 100644 --- a/src/main/java/ru/dragonestia/loadbalancer/service/BucketService.java +++ b/src/main/java/ru/dragonestia/loadbalancer/service/BucketService.java @@ -9,9 +9,9 @@ import java.util.Optional; public interface BucketService { - void createBucket(Bucket lobby); + void createBucket(Bucket bucket); - void removeBucket(Bucket lobby); + void removeBucket(Bucket bucket); Optional findBucket(Node node, String identifier); diff --git a/src/main/java/ru/dragonestia/loadbalancer/service/impl/BucketServiceImpl.java b/src/main/java/ru/dragonestia/loadbalancer/service/impl/BucketServiceImpl.java new file mode 100644 index 0000000..8d8c6a8 --- /dev/null +++ b/src/main/java/ru/dragonestia/loadbalancer/service/impl/BucketServiceImpl.java @@ -0,0 +1,59 @@ +package ru.dragonestia.loadbalancer.service.impl; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import ru.dragonestia.loadbalancer.model.Bucket; +import ru.dragonestia.loadbalancer.model.Node; +import ru.dragonestia.loadbalancer.model.User; +import ru.dragonestia.loadbalancer.repository.BucketRepository; +import ru.dragonestia.loadbalancer.service.BucketService; +import ru.dragonestia.loadbalancer.util.NamingValidator; + +import java.util.List; +import java.util.Optional; + +@Service +@RequiredArgsConstructor +public class BucketServiceImpl implements BucketService { + + private final BucketRepository bucketRepository; + + @Override + public void createBucket(Bucket bucket) { + if (!NamingValidator.validateBucketIdentifier(bucket.getIdentifier())) { + throw new Error("Invalid bucket identifier format"); + } + + bucketRepository.createBucket(bucket); + } + + @Override + public void removeBucket(Bucket bucket) { + bucketRepository.removeBucket(bucket); + } + + @Override + public Optional findBucket(Node node, String identifier) { + return bucketRepository.findBucket(node, identifier); + } + + @Override + public List allBuckets(Node node) { + return bucketRepository.all(node); + } + + @Override + public int countAvailableBuckets(Node node, int requiredSlots) { + throw new RuntimeException("Not implemented"); + } + + @Override + public Bucket pickAvailableBucket(Node node, List users) { + throw new RuntimeException("Not implemented"); + } + + @Override + public void freeBucket(Bucket bucket, List users) { + throw new RuntimeException("Not implemented"); + } +} diff --git a/src/main/java/ru/dragonestia/loadbalancer/util/NamingValidator.java b/src/main/java/ru/dragonestia/loadbalancer/util/NamingValidator.java index 73a5700..b71ec04 100644 --- a/src/main/java/ru/dragonestia/loadbalancer/util/NamingValidator.java +++ b/src/main/java/ru/dragonestia/loadbalancer/util/NamingValidator.java @@ -8,4 +8,8 @@ public class NamingValidator { public boolean validateNodeIdentifier(String input) { return input.matches("^[a-z\\d-]+$"); } + + public boolean validateBucketIdentifier(String input) { + return input.matches("^[a-z\\d-]+$"); + } }