1 package org.sapia.ubik.mcast; 2 3 import java.util.ArrayList ; 4 import java.util.List ; 5 6 7 35 public class DomainName implements java.io.Serializable { 36 public static final char DELIM = '/'; 37 private List _segments; 38 39 private DomainName(List segments) { 40 _segments = segments; 41 } 42 43 48 public int size() { 49 return _segments.size(); 50 } 51 52 58 public String get(int i) { 59 return (String ) _segments.get(i); 60 } 61 62 68 public static DomainName parse(String name) { 69 List _segments = new ArrayList (5); 70 71 int idx = 0; 72 int lastIdx = 0; 73 74 while ((idx = name.indexOf(DELIM, idx)) > -1) { 75 if (idx > 0) { 76 _segments.add(name.substring(lastIdx, idx)); 77 } 78 79 lastIdx = ++idx; 80 } 81 82 if (idx < name.length()) { 83 _segments.add(name.substring(lastIdx)); 84 } 85 86 return new DomainName(_segments); 87 } 88 89 95 public boolean contains(DomainName other) { 96 if (_segments.size() >= other.size()) { 97 for (int i = 0; i < other.size(); i++) { 98 if (!other.get(i).equals(get(i))) { 99 return false; 100 } 101 } 102 103 return true; 104 } else { 105 return false; 106 } 107 } 108 109 118 public boolean equals(Object other) { 119 try { 120 DomainName dn = (DomainName) other; 121 122 if (_segments.size() == dn.size()) { 123 for (int i = 0; i < dn.size(); i++) { 124 if (!dn.get(i).equals(get(i))) { 125 return false; 126 } 127 } 128 129 return true; 130 } else { 131 return false; 132 } 133 } catch (ClassCastException e) { 134 return false; 135 } 136 } 137 138 145 public String toString() { 146 StringBuffer s = new StringBuffer (_segments.size() * 8); 147 148 for (int i = 0; i < _segments.size(); i++) { 149 s.append((String ) _segments.get(i)); 150 151 if (i < (_segments.size() - 1)) { 152 s.append(DELIM); 153 } 154 } 155 156 return s.toString(); 157 } 158 } 159 | Popular Tags |