package org.openstack.atlas.service.domain.usage; import org.openstack.atlas.service.domain.events.UsageEvent; public final class BitTags { private int bitTags = 0; public BitTags() { } public BitTags(int bitTags) { this.bitTags = bitTags; } public void flipTagOn(BitTag bitTag) { if (!isTagOn(bitTag)) bitTags += bitTag.tagValue(); } public void flipTagOff(BitTag bitTag) { if (isTagOn(bitTag)) bitTags -= bitTag.tagValue(); } public void flipAllTagsOff() { bitTags = 0; } public boolean isTagOn(BitTag bitTag) { return BitTags.isTagOn(bitTags, bitTag); } public static boolean isTagOn(int bitTags, BitTag bitTag) { return (bitTag.tagValue() & bitTags) == bitTag.tagValue(); } public int toInt() { return bitTags; } public void applyEvent(UsageEvent usageEvent) { switch(usageEvent) { case SSL_OFF: flipTagOff(BitTag.SSL); flipTagOff(BitTag.SSL_MIXED_MODE); break; case SSL_ONLY_ON: flipTagOn(BitTag.SSL); flipTagOff(BitTag.SSL_MIXED_MODE); break; case SSL_MIXED_ON: flipTagOn(BitTag.SSL); flipTagOn(BitTag.SSL_MIXED_MODE); break; case DELETE_LOADBALANCER: flipAllTagsOff(); default: break; } } }