paul@74 | 1 | #!/usr/bin/env python |
paul@74 | 2 | |
paul@93 | 3 | # Interfaces. |
paul@93 | 4 | |
paul@93 | 5 | class Collection(object): |
paul@93 | 6 | pass |
paul@93 | 7 | |
paul@102 | 8 | class Iterator(object): |
paul@102 | 9 | pass |
paul@102 | 10 | |
paul@93 | 11 | class List(object): |
paul@93 | 12 | pass |
paul@93 | 13 | |
paul@102 | 14 | class Map(object): |
paul@102 | 15 | pass |
paul@102 | 16 | |
paul@102 | 17 | class Set(Collection): |
paul@102 | 18 | pass |
paul@102 | 19 | |
paul@102 | 20 | # Abstract classes. |
paul@102 | 21 | |
paul@102 | 22 | class AbstractMap(Map): |
paul@102 | 23 | pass |
paul@102 | 24 | |
paul@102 | 25 | class Dictionary(object): |
paul@102 | 26 | pass |
paul@102 | 27 | |
paul@102 | 28 | # Exceptions. |
paul@102 | 29 | |
paul@102 | 30 | class NoSuchElementException(object): |
paul@102 | 31 | pass |
paul@102 | 32 | |
paul@102 | 33 | # Special Python classes. |
paul@102 | 34 | |
paul@102 | 35 | class _Iterator(Iterator): |
paul@102 | 36 | def __init__(self, iterator): |
paul@102 | 37 | self.iterator = iterator |
paul@102 | 38 | self.current = None |
paul@102 | 39 | |
paul@102 | 40 | def hasNext(self): |
paul@102 | 41 | if self.current is None: |
paul@102 | 42 | try: |
paul@102 | 43 | self.current = self.iterator.next() |
paul@102 | 44 | except StopIteration: |
paul@102 | 45 | self.current = None |
paul@102 | 46 | return 0 |
paul@102 | 47 | return 1 |
paul@102 | 48 | hasNext___ = hasNext |
paul@102 | 49 | |
paul@102 | 50 | def next(self): |
paul@102 | 51 | if self.hasNext(): |
paul@102 | 52 | current = self.current |
paul@102 | 53 | self.current = None |
paul@102 | 54 | return current |
paul@102 | 55 | raise Exception, NoSuchElementException() |
paul@102 | 56 | next___ = next |
paul@102 | 57 | |
paul@93 | 58 | # Classes. |
paul@93 | 59 | |
paul@74 | 60 | class EventObject(object): |
paul@74 | 61 | def __init__(self, source): |
paul@74 | 62 | self.source = source |
paul@74 | 63 | def getSource(self): |
paul@74 | 64 | return self.source |
paul@74 | 65 | def toString(self): |
paul@74 | 66 | # NOTE: Use Python conventions. |
paul@74 | 67 | return str(self) |
paul@74 | 68 | |
paul@102 | 69 | class Hashtable(Dictionary): |
paul@74 | 70 | def __init__(self, *args): |
paul@74 | 71 | # NOTE: To be implemented. |
paul@74 | 72 | pass |
paul@74 | 73 | |
paul@80 | 74 | setattr(Hashtable, "__init_____", Hashtable.__init__) |
paul@74 | 75 | |
paul@102 | 76 | class HashMap(AbstractMap): |
paul@102 | 77 | def __init__(self, *args): |
paul@102 | 78 | self.d = {} |
paul@102 | 79 | |
paul@102 | 80 | def init_____java__util__Map(self, map): |
paul@102 | 81 | self.d = {} |
paul@102 | 82 | iterator = map.keySet().iterator() |
paul@102 | 83 | while iterator.hasNext(): |
paul@102 | 84 | key = iterator.next() |
paul@102 | 85 | value = map.get(key) |
paul@102 | 86 | self.d[key] = value |
paul@102 | 87 | |
paul@102 | 88 | def get(self, key): |
paul@102 | 89 | return self.d[key] |
paul@102 | 90 | get___java__lang__Object = get |
paul@102 | 91 | |
paul@102 | 92 | def keySet(self): |
paul@102 | 93 | return HashSet(self.d.keys()) |
paul@102 | 94 | keySet___ = keySet |
paul@102 | 95 | |
paul@102 | 96 | def put(self, key, value): |
paul@102 | 97 | self.d[key] = value |
paul@102 | 98 | put___java__lang__Object___java__lang__Object = put |
paul@102 | 99 | |
paul@102 | 100 | # Python helper methods. |
paul@102 | 101 | |
paul@102 | 102 | def __getitem__(self, key): |
paul@102 | 103 | return self.d[key] |
paul@102 | 104 | |
paul@102 | 105 | def __setitem__(self, key, value): |
paul@102 | 106 | self.d[key] = value |
paul@102 | 107 | |
paul@102 | 108 | def keys(self): |
paul@102 | 109 | return self.d.keys() |
paul@102 | 110 | |
paul@102 | 111 | def values(self): |
paul@102 | 112 | return self.d.values() |
paul@102 | 113 | |
paul@102 | 114 | def items(self): |
paul@102 | 115 | return self.d.items() |
paul@102 | 116 | |
paul@102 | 117 | setattr(HashMap, "__init_____", HashMap.__init__) |
paul@102 | 118 | setattr(HashMap, "__init_____java__util__Map", HashMap.init_____java__util__Map) |
paul@102 | 119 | |
paul@102 | 120 | class HashSet(Set): |
paul@102 | 121 | def __init__(self): |
paul@102 | 122 | self.s = [] |
paul@102 | 123 | |
paul@102 | 124 | def iterator(self): |
paul@102 | 125 | return _Iterator(iter(self.s)) |
paul@102 | 126 | iterator___ = iterator |
paul@102 | 127 | |
paul@102 | 128 | setattr(HashSet, "__init_____", HashSet.__init__) |
paul@102 | 129 | |
paul@74 | 130 | class ResourceBundle(object): |
paul@74 | 131 | def __init__(self, *args): |
paul@74 | 132 | # NOTE: To be implemented. |
paul@74 | 133 | pass |
paul@80 | 134 | |
paul@74 | 135 | def getBundle(self, *args): |
paul@74 | 136 | # getBundle(self, baseName) |
paul@74 | 137 | # getBundle(self, baseName, locale) |
paul@74 | 138 | # getBundle(self, baseName, locale, loader) |
paul@74 | 139 | # NOTE: Obviously not the correct implementation. |
paul@74 | 140 | return ResourceBundle(args) |
paul@74 | 141 | getBundle = staticmethod(getBundle) |
paul@80 | 142 | getBundle___java__lang__String = getBundle |
paul@80 | 143 | getBundle___java__lang__String___java__util__Locale = getBundle |
paul@80 | 144 | getBundle___java__lang__String___java__util__Locale___java__lang__ClassLoader = getBundle |
paul@74 | 145 | |
paul@80 | 146 | def getObject(self, key): |
paul@80 | 147 | # NOTE: To be implemented. |
paul@80 | 148 | return None |
paul@80 | 149 | getObject___java__lang__String = getObject |
paul@80 | 150 | |
paul@80 | 151 | def getString(self, key): |
paul@80 | 152 | # NOTE: To be implemented. |
paul@80 | 153 | return None |
paul@80 | 154 | getString___java__lang__String = getString |
paul@80 | 155 | |
paul@80 | 156 | def getStringArray(self, key): |
paul@80 | 157 | # NOTE: To be implemented. |
paul@80 | 158 | return None |
paul@80 | 159 | getStringArray___java__lang__String = getStringArray |
paul@80 | 160 | |
paul@80 | 161 | def getLocale(self, key): |
paul@80 | 162 | # NOTE: To be implemented. |
paul@80 | 163 | return None |
paul@80 | 164 | getLocale___ = getLocale |
paul@74 | 165 | |
paul@93 | 166 | class AbstractCollection(Collection): |
paul@93 | 167 | pass |
paul@93 | 168 | |
paul@93 | 169 | class AbstractList(AbstractCollection, List): |
paul@93 | 170 | pass |
paul@93 | 171 | |
paul@93 | 172 | class Vector(AbstractList): |
paul@93 | 173 | pass |
paul@93 | 174 | |
paul@74 | 175 | # vim: tabstop=4 expandtab shiftwidth=4 |