--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/net/java/otr4j/OtrPolicyImpl.java Sun Dec 05 18:43:51 2010 +0100
@@ -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();
+ }
+}