From e034bad71e00d5a0e1f0203bb9df78df9548de4d Mon Sep 17 00:00:00 2001 From: ScarletRedMan Date: Sun, 26 Nov 2023 23:11:42 +0700 Subject: [PATCH] Implemented bucket service --- .../loadbalancer/service/BucketService.java | 4 +- .../service/impl/BucketServiceImpl.java | 59 +++++++++++++++++++ .../loadbalancer/util/NamingValidator.java | 4 ++ 3 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 src/main/java/ru/dragonestia/loadbalancer/service/impl/BucketServiceImpl.java 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-]+$"); + } }