package org.objectstyle.wolips.eomodeler.core.sql;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.webobjects.foundation.NSArray;
import com.webobjects.foundation.NSDictionary;
import com.webobjects.foundation.NSMutableArray;
import com.webobjects.foundation.NSMutableDictionary;
import com.webobjects.foundation.NSMutableSet;
import com.webobjects.foundation.NSSet;
public class EOFSQLUtils53 {
public static Object toWOCollections(Object obj) {
Object result;
if (obj instanceof Map) {
NSMutableDictionary nsDict = new NSMutableDictionary();
Map map = (Map) obj;
Iterator entriesIter = map.entrySet().iterator();
while (entriesIter.hasNext()) {
Map.Entry entry = (Map.Entry) entriesIter.next();
Object key = entry.getKey();
Object value = entry.getValue();
if (key != null && value != null) {
key = toWOCollections(key);
value = toWOCollections(value);
nsDict.setObjectForKey(value, key);
}
}
result = nsDict;
} else if (obj instanceof List) {
NSMutableArray nsArray = new NSMutableArray();
List list = (List) obj;
Iterator valuesEnum = list.iterator();
while (valuesEnum.hasNext()) {
Object value = valuesEnum.next();
if (value != null) {
value = toWOCollections(value);
nsArray.addObject(value);
}
}
result = nsArray;
} else if (obj instanceof Set) {
Set set = (Set) obj;
NSMutableSet nsSet = new NSMutableSet();
Iterator valuesEnum = set.iterator();
while (valuesEnum.hasNext()) {
Object value = valuesEnum.next();
if (value != null) {
value = toWOCollections(value);
nsSet.addObject(value);
}
}
result = nsSet;
} else {
result = obj;
}
return result;
}
public static Object toJavaCollections(Object obj) {
Object result;
if (obj instanceof NSDictionary) {
Map map = new HashMap();
NSDictionary nsDict = (NSDictionary) obj;
Enumeration keysEnum = nsDict.allKeys().objectEnumerator();
while (keysEnum.hasMoreElements()) {
Object key = keysEnum.nextElement();
Object value = nsDict.objectForKey(key);
key = toJavaCollections(key);
value = toJavaCollections(value);
map.put(key, value);
}
result = map;
} else if (obj instanceof NSArray) {
List list = new LinkedList();
NSArray nsArray = (NSArray) obj;
Enumeration valuesEnum = nsArray.objectEnumerator();
while (valuesEnum.hasMoreElements()) {
Object value = valuesEnum.nextElement();
value = toJavaCollections(value);
list.add(value);
}
result = list;
} else if (obj instanceof NSSet) {
Set set = new HashSet();
NSSet nsSet = (NSSet) obj;
Enumeration valuesEnum = nsSet.objectEnumerator();
while (valuesEnum.hasMoreElements()) {
Object value = valuesEnum.nextElement();
value = toJavaCollections(value);
set.add(value);
}
result = set;
} else {
result = obj;
}
return result;
}
}