1 16 package cintoo.messages.context; 17 18 import api.cintoo.messages.context.Context; 19 20 29 public class PackageContext implements Context { 30 private String packageName; 31 32 38 public static PackageContext string(String packageName) { 39 PackageContext context = new PackageContext(); 40 context.setPackage(packageName); 41 return context; 42 } 43 44 48 public PackageContext() { 49 packageName = ""; 50 } 51 52 57 public PackageContext(Object object) { 58 packageName = getContext(object); 59 } 60 61 67 private void setPackage(String packageName) { 68 this.packageName = packageName; 69 } 70 71 77 private String getContext(Object context) { 78 if (null == context || context.getClass().getPackage() == null) { 79 return ""; 80 } else { 81 if (context instanceof Class ) { 82 return ((Class ) context).getPackage().getName(); 83 } else { 84 return context.getClass().getPackage().getName(); 85 } 86 } 87 } 88 89 95 public boolean matches(Context otherContext) { 96 if (!(otherContext instanceof PackageContext)) return false; 97 return ((PackageContext) otherContext).packageName.startsWith(packageName); 98 } 99 100 105 public String getName() { 106 return packageName; 107 } 108 109 public boolean equals(Object o) { 110 if (this == o) return true; 111 if (!(o instanceof PackageContext)) return false; 112 113 final PackageContext packageContext = (PackageContext) o; 114 115 if (packageName != null ? !packageName.equals(packageContext.packageName) : packageContext.packageName != null) 116 return false; 117 118 return true; 119 } 120 121 public int hashCode() { 122 return packageName != null ? packageName.hashCode() : 0; 123 } 124 125 136 public int compareTo(Object o) { 137 if (!(o instanceof PackageContext)) return 0; 138 139 String otherPackageName = ((PackageContext) o).packageName; 140 141 int l1 = packageName.length(); 142 int l2 = otherPackageName.length(); 143 144 if (l1 == l2) return packageName.compareTo(otherPackageName); 146 return l1 > l2 ? -1 : 1; 147 } 148 149 public String toString() { 150 return "<" + packageName + ">"; 151 } 152 } 153 | Popular Tags |