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