
uk.co.mruoc.promo.entity.account.Account Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of burger-promo Show documentation
Show all versions of burger-promo Show documentation
Burger promotion backend apis
The newest version!
package uk.co.mruoc.promo.entity.account;
import lombok.Builder;
import lombok.Data;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicLong;
@Builder(toBuilder = true)
@Data
public class Account {
private final String id;
@Builder.Default
private final Map promoClaims = new ConcurrentHashMap<>();
public void claim(String promoId) {
getAtomicClaimsCount(promoId).incrementAndGet();
}
public void resetClaims(String promoId) {
getAtomicClaimsCount(promoId).set(0);
}
public boolean hasClaims(String promoId) {
return getClaimsCount(promoId).get() > 0;
}
public AtomicLong getClaimsCount(String promoId) {
return getAtomicClaimsCount(promoId);
}
private AtomicLong getAtomicClaimsCount(String promoId) {
Optional existingCount = Optional.ofNullable(promoClaims.get(promoId));
if (existingCount.isEmpty()) {
var newCount = new AtomicLong();
promoClaims.put(promoId, newCount);
return newCount;
}
return existingCount.get();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy