1 11 package org.eclipse.jdt.internal.corext.refactoring.typeconstraints; 12 13 import java.util.Arrays ; 14 import java.util.Collection ; 15 import java.util.HashSet ; 16 17 import org.eclipse.core.runtime.Assert; 18 19 20 public final class ConstraintOperator { 21 22 private final String fOperatorString; 23 private final int fOperatorCode; 24 25 private static final int CODE_SUBTYPE= 0; 26 private static final int CODE_EQUALS= 1; 27 private static final int CODE_DEFINES= 2; 28 private static final int CODE_STRICT_SUBTYPE= 3; 29 30 private static final String STRING_SUBTYPE= "<="; private static final String STRING_EQUALS= "=="; private static final String STRING_DEFINES= "=^="; private static final String STRING_STRICT_SUBTYPE= "<"; private static final Collection fgOperatorStrings= new HashSet (Arrays.asList(new String [] {STRING_SUBTYPE, STRING_EQUALS, STRING_DEFINES, STRING_STRICT_SUBTYPE})); 35 36 private static final ConstraintOperator fgSubtype= new ConstraintOperator(STRING_SUBTYPE, CODE_SUBTYPE); 37 private static final ConstraintOperator fgEquals= new ConstraintOperator(STRING_EQUALS, CODE_EQUALS); 38 private static final ConstraintOperator fgDefines= new ConstraintOperator(STRING_DEFINES, CODE_DEFINES); 39 private static final ConstraintOperator fgStrictSubtype= new ConstraintOperator(STRING_STRICT_SUBTYPE, CODE_STRICT_SUBTYPE); 40 41 public static ConstraintOperator createSubTypeOperator() { 42 return fgSubtype; 43 } 44 45 public static ConstraintOperator createEqualsOperator() { 46 return fgEquals; 47 } 48 49 public static ConstraintOperator createDefinesOperator() { 50 return fgDefines; 51 } 52 53 public static ConstraintOperator createStrictSubtypeOperator() { 54 return fgStrictSubtype; 55 } 56 57 private ConstraintOperator(String string, int code){ 58 Assert.isTrue(fgOperatorStrings.contains(string)); 59 Assert.isTrue(code == CODE_DEFINES || code == CODE_EQUALS || code == CODE_STRICT_SUBTYPE || code == CODE_SUBTYPE); 60 fOperatorString= string; 61 fOperatorCode= code; 62 } 63 64 public String getOperatorString(){ 65 return fOperatorString; 66 } 67 68 71 public String toString() { 72 return getOperatorString(); 73 } 74 75 78 public boolean equals(Object obj) { 79 if (! (obj instanceof ConstraintOperator)) 80 return false; 81 ConstraintOperator other= (ConstraintOperator)obj; 82 return fOperatorCode == other.fOperatorCode; 83 } 84 85 88 public int hashCode() { 89 return fOperatorString.hashCode(); 90 } 91 92 public final boolean isSubtypeOperator() { 93 return fOperatorCode == CODE_SUBTYPE; 94 } 95 96 public final boolean isStrictSubtypeOperator() { 97 return fOperatorCode == CODE_STRICT_SUBTYPE; 98 } 99 100 public final boolean isEqualsOperator() { 101 return fOperatorCode == CODE_EQUALS; 102 } 103 104 public final boolean isDefinesOperator() { 105 return fOperatorCode == CODE_DEFINES; 106 } 107 } 108 | Popular Tags |