private void addLookups(String fieldName, boolean standardNames, Lookup lookup) { if (lookup == null) { LOG.warn("Ignoring null lookup for field: " + fieldName); return; } boolean generateDbValues; Map dbValues; if (fieldName.equals("ListingStatus") && standardNames) { dbValues = LISTING_STATUS_VALUES; generateDbValues = false; } else { dbValues = new ListOrderedMap(); generateDbValues = true; } Map lookupTypesMap = new ListOrderedMap(); Set lookupTypes = lookup.getLookupTypes(); Long saveId = new Long(-1); String saveLevel = null; for (Iterator iterator = lookupTypes.iterator(); iterator.hasNext(); ) { LookupType lookupType = (LookupType) iterator.next(); if (lookupType.getId() > saveId) saveId = lookupType.getId(); if (saveLevel == null) saveLevel = lookupType.getLevel(); String lookupValue = lookupType.getValue(); lookupTypesMap.put(lookupValue, lookupType); if (generateDbValues) { // Assume lookups are stored in the database using the // lookup value. dbValues.put(lookupValue, lookupValue); } } /* * Dummy up an entry to handle .ANY. */ LookupType lookupType = new LookupType(); lookupType.setId(saveId + 1); lookupType.setLevel(saveLevel); lookupType.setLongValue(".ANY."); lookupType.setMetadataEntryID(".ANY."); lookupType.setShortValue(".ANY."); lookupType.setValue(".ANY."); dbValues.put(".ANY.", ".ANY."); lookupTypesMap.put(".ANY.", lookupType); /* * Dummy up an entry to handle .EMPTY. */ lookupType.setId(saveId + 2); lookupType.setLevel(saveLevel); lookupType.setLongValue(".EMPTY."); lookupType.setMetadataEntryID(".EMPTY."); lookupType.setShortValue(".EMPTY."); lookupType.setValue(".EMPTY."); dbValues.put(".EMPTY.", ".EMPTY."); lookupTypesMap.put(".EMPTY.", lookupType); mLookupsDbMap.put(fieldName, dbValues); mLookupTypesMap.put(fieldName, lookupTypesMap); }