diff -r 5315a5713dd5 -r b2e1b45382a4 src/net/java/otr4j/OtrPolicyImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/net/java/otr4j/OtrPolicyImpl.java Fri Apr 15 03:01:09 2011 +0200 @@ -0,0 +1,128 @@ +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(); + } +}