package net.java.otr4j; public class OtrPolicyImpl implements OtrPolicy { public OtrPolicyImpl() { this.setPolicy(NEVER); } public OtrPolicyImpl(int policy) { this.setPolicy(policy); } private int policy; public int getPolicy() { return policy; } private void setPolicy(int policy) { this.policy = policy; } public boolean getAllowV1() { return (policy & OtrPolicy.ALLOW_V1) != 0; } public boolean getAllowV2() { return (policy & OtrPolicy.ALLOW_V2) != 0; } public boolean getErrorStartAKE() { return (policy & OtrPolicy.ERROR_START_AKE) != 0; } public boolean getRequireEncryption() { return getEnableManual() && (policy & OtrPolicy.REQUIRE_ENCRYPTION) != 0; } public boolean getSendWhitespaceTag() { return (policy & OtrPolicy.SEND_WHITESPACE_TAG) != 0; } public boolean getWhitespaceStartAKE() { return (policy & OtrPolicy.WHITESPACE_START_AKE) != 0; } public void setAllowV1(boolean value) { if (value) policy |= ALLOW_V1; else policy &= ~ALLOW_V1; } public void setAllowV2(boolean value) { if (value) policy |= ALLOW_V2; else policy &= ~ALLOW_V2; } public void setErrorStartAKE(boolean value) { if (value) policy |= ERROR_START_AKE; else policy &= ~ERROR_START_AKE; } public void setRequireEncryption(boolean value) { if (value) policy |= REQUIRE_ENCRYPTION; else policy &= ~REQUIRE_ENCRYPTION; } public void setSendWhitespaceTag(boolean value) { if (value) policy |= SEND_WHITESPACE_TAG; else policy &= ~SEND_WHITESPACE_TAG; } public void setWhitespaceStartAKE(boolean value) { if (value) policy |= WHITESPACE_START_AKE; else policy &= ~WHITESPACE_START_AKE; } public boolean getEnableAlways() { return getEnableManual() && getErrorStartAKE() && getSendWhitespaceTag() && getWhitespaceStartAKE(); } public void setEnableAlways(boolean value) { if (value) setEnableManual(true); setErrorStartAKE(value); setSendWhitespaceTag(value); setWhitespaceStartAKE(value); } public boolean getEnableManual() { return getAllowV1() && getAllowV2(); } public void setEnableManual(boolean value) { setAllowV1(value); setAllowV2(value); } public boolean equals(Object obj) { if (obj == this) return true; if (obj == null || obj.getClass() != this.getClass()) return false; OtrPolicy policy = (OtrPolicy) obj; return policy.getPolicy() == this.getPolicy(); } public int hashCode() { return this.getPolicy(); } }