Rev 5106 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.util;import in.shop2020.metamodel.core.Entity;import in.shop2020.metamodel.core.EntityState;import in.shop2020.metamodel.core.EntityStatus;import in.shop2020.metamodel.core.Slide;import in.shop2020.metamodel.definitions.Catalog;import in.shop2020.metamodel.definitions.Category;import in.shop2020.metamodel.definitions.DefinitionsContainer;import in.shop2020.metamodel.util.CreationUtils;import in.shop2020.metamodel.util.ExpandedBullet;import in.shop2020.metamodel.util.ExpandedEntity;import in.shop2020.metamodel.util.ExpandedFeature;import in.shop2020.metamodel.util.ExpandedSlide;import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Set;import org.apache.commons.lang.StringUtils;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;public class AccessoriesFinder {DefinitionsContainer defContainer = Catalog.getInstance().getDefinitionsContainer();Set<Long> entityIds;private static Log log = LogFactory.getLog(ContentGenerationUtility.class);public static void main(String[] args) throws Exception {Map<Long,Entity> map = CreationUtils.getEntities();Map<Long,Entity> map1 = new HashMap<Long, Entity>();for (Map.Entry<Long, Entity> entry : map.entrySet()){EntityState es = CreationUtils.getEntityState(entry.getKey());if(es.getStatus().equals(EntityStatus.READY)){map1.put(entry.getKey(), entry.getValue());}}AccessoriesFinder af = new AccessoriesFinder(map1.keySet());Map<Long, Map<Long, List<Long>>> relatedAccessories = af.findAccessories();for(Map.Entry<Long, Map<Long, List<Long>>> entry : relatedAccessories.entrySet()){for(Map.Entry<Long, List<Long>> entry1 : entry.getValue().entrySet()){if(entry1.getValue().size()<1){log.error("Could not find accessories for :" + entry.getKey());}}}CreationUtils.storeRelatedAccessories(relatedAccessories);}public AccessoriesFinder(Set<Long> entityIds){this.entityIds = entityIds;}public Map<Long, Map<Long, List<Long>>> findAccessories() throws Exception {Map<Long, Map<Long, List<Long>>> entityAccessories = new HashMap<Long, Map<Long, List<Long>>>();//List<Long> categoryIDs = catm.getCategory(Utils.MOBILE_ACCESSORIES_CATEGORY).getChildren_category_ids();Map<Long, Map<Long, Object>> categoryParameterMap = new HashMap<Long, Map<Long,Object>>();// for(Long categoryID: categoryIDs){// categoryParameterMap.put(categoryID, populateParameters(categoryID));// }populateParameters(categoryParameterMap);for(Long entityID: entityIds){try{Entity entity = CreationUtils.getEntity(entityID);Map<Long, Object> entityCategoryParameters = getEntityCategoryParameters(entity);Category cat = defContainer.getCategory(entity.getCategoryID()).getParentCategory();if(cat.isHasAccessories()){entityAccessories.put(entity.getID(), getRelatedAccessories(entityCategoryParameters, categoryParameterMap));}}catch (Exception e) {log.error("Error for entity " + entityID);}}return entityAccessories;}private Map<Long, Object> getEntityCategoryParameters(Entity entity) throws Exception {Map<Long, Object> entityCategoryParameters = new HashMap<Long, Object>();List<Category> categories = defContainer.getCategory(Utils.MOBILE_ACCESSORIES_CATEGORY).getChildrenCategory();for(Category category : categories){Object obj = populateEntityParameters(category.getID(), entity);if(obj != null){entityCategoryParameters.put(category.getID(), obj);}}return entityCategoryParameters;}private Object populateEntityParameters(Long categoryID, Entity entity) throws Exception {ExpandedEntity expEntity = new ExpandedEntity(entity);ExpandedSlide batterySlide = expEntity.getExpandedSlide(130043);Map<String, String> params = new HashMap<String, String>();Long entityId = entity.getID();switch (categoryID.intValue()) {//Batterycase (int) Utils.BATTERY:if(expEntity.getBrand() == null)return null;//All brand of batteries are now permissible./*if(expEntity.getBrand().trim().compareToIgnoreCase("nokia")!=0){return null;}*/if(batterySlide == null)return null;List<ExpandedFeature> expFeatures = batterySlide.getExpandedFeatures();for(ExpandedFeature expFeature: expFeatures){if(expFeature.getFeatureDefinitionID() == 120072){this.getBulletDisplayText(expFeature.getExpandedBullets());String type = this.getBulletDisplayText(expFeature.getExpandedBullets());if(StringUtils.isEmpty(type)){continue;}//Li-Ion 1020 mAh battery BL-5C;String[] parts = type.split("battery");if(parts.length >= 2){params.put("BATTERY_MODEL", parts[1]);} else {log.info("Could not find Battery Model for : " + entityId);return null;}String last = "";parts = type.split(" ");for(String part: parts){if(part.contains("mAh")){params.put("BATTERY_CAPACITY", last);} else {log.info("Could not find Battery Capacity for : " + entityId);return null;}last = part;}return params;}}break;//Carrying Casecase (int) Utils.CARRYING_CASE://Screen Guardcase (int) Utils.SCREEN_GUARD:if(expEntity.getBrand() == null){return null;}else{params.put("BRAND", expEntity.getBrand().trim());params.put("MODEL_NUMBER", expEntity.getModelNumber().trim());return params;}//Memory Cardcase (int) Utils.MEMORY_CARD:if(expEntity.getBrand() == null)return null;ExpandedSlide memorySlide = expEntity.getExpandedSlide(130011);if(memorySlide == null)return null;List<ExpandedFeature> memoryExpandedFeatures = memorySlide.getExpandedFeatures();for(ExpandedFeature expFeature: memoryExpandedFeatures){if(expFeature.getFeatureDefinitionID() == 120032){ExpandedBullet bull = getBullet(expFeature.getExpandedBullets());if(bull !=null) {params.put("MEMORY_TYPE", bull.getValue().split(" ")[0]);} else {log.info("Could not find memory type for entity : " + entityId);return null;}}if(expFeature.getFeatureDefinitionID() == 120033){ExpandedBullet expBullet = getBullet(expFeature.getExpandedBullets());if(expBullet != null){long memory = Long.parseLong(expBullet.getValue());long unitId = expBullet.getUnitID();if(unitId == 50008){memory = 1024 * memory;}params.put("MEMORY", memory+"");} else {log.info("Could not find memory size for entity : " + entityId);return null;}}return params;}break;//Bluetooth headsetcase (int) Utils.BLUETOOTH_HEADSET:if(expEntity.getBrand() == null){return null;}ExpandedSlide dataConnectivitySlide = expEntity.getExpandedSlide(130007);if(dataConnectivitySlide == null)return null;List<ExpandedFeature> dataConnectivityFeatures = dataConnectivitySlide.getExpandedFeatures();for(ExpandedFeature expFeature: dataConnectivityFeatures){if(expFeature.getFeatureDefinitionID() == 120018){return "TRUE";}}break;//Headsetcase (int) Utils.HEADSET:if(expEntity.getBrand() == null){return null;}ExpandedSlide musicSlide = expEntity.getExpandedSlide(130029);if(musicSlide == null)return null;List<ExpandedFeature> musicFeatures = musicSlide.getExpandedFeatures();for(ExpandedFeature expFeature: musicFeatures){if(expFeature.getFeatureDefinitionID() == 120023){List<ExpandedBullet> bullets = expFeature.getExpandedBullets();if(bullets!=null){ExpandedBullet expBullet = getBullet(bullets);if(expBullet != null){return expBullet.getValue();}log.info("Could not fild Headphones pin size for entity : " + entityId);return null;}}}break;//Chargercase (int) Utils.CHARGER:if(expEntity.getBrand() == null)return null;if(batterySlide == null)return null;Map<String, String> chargerparams = new HashMap<String, String>();List<ExpandedFeature> batteryFeatures = batterySlide.getExpandedFeatures();for(ExpandedFeature expFeature: batteryFeatures){if(expFeature.getFeatureDefinitionID() == 120073){ExpandedBullet expBullet = getBullet(expFeature.getExpandedBullets());if(expBullet != null){chargerparams.put("POWER_ADAPTOR", expBullet.getValue());chargerparams.put("BRAND", expEntity.getBrand().trim());return chargerparams;} else {log.info("Could not find adaptor detail for entity: " + entityId);return null;}}}return null;default:break;}return null;}@SuppressWarnings("unchecked")private Map<Long, List<Long>> getRelatedAccessories(Map<Long, Object> entityCategoryParameters, Map<Long, Map<Long, Object>> categoryParameterMap){Map<Long, List<Long>> relatedAccessories = new HashMap<Long, List<Long>>();for(Entry<Long, Map<Long, Object>> entry: categoryParameterMap.entrySet()){Map<Long, Object> entityParameterMap = entry.getValue();long categoryID = entry.getKey().intValue();switch ((int)categoryID) {//Batterycase (int) Utils.BATTERY:for(Entry<Long, Object> entry1 : entityParameterMap.entrySet()){long entityID = entry1.getKey();Map<String, String> accessoryParameter = (Map<String, String>) entry1.getValue();Map<String, String> mobileParameter = (Map<String, String>)entityCategoryParameters.get(entry.getKey());if(accessoryParameter == null || mobileParameter == null){continue;}String batteryCapacity = accessoryParameter.get("BATTERY_CAPACITY").trim();String batteryModel = accessoryParameter.get("BATTERY_MODEL").trim();String mobileBatteryCapacity = mobileParameter.get("BATTERY_CAPACITY").trim();String mobileBatteryModel = mobileParameter.get("BATTERY_MODEL").trim();if(batteryCapacity.equalsIgnoreCase(mobileBatteryCapacity) && batteryModel.equalsIgnoreCase(mobileBatteryModel)){List<Long> accessories = relatedAccessories.get(categoryID);if(accessories == null){accessories = new ArrayList<Long>();relatedAccessories.put(categoryID, accessories);}accessories.add(entityID);}}break;//Carrying Casecase (int) Utils.CARRYING_CASE:for(Entry<Long, Object> entry1 : entityParameterMap.entrySet()){long entityID = entry1.getKey();String accessoryParameter = (String) entry1.getValue();Map<String, String> mobileParameter = (Map<String, String>)entityCategoryParameters.get(entry.getKey());if(accessoryParameter != null){accessoryParameter = accessoryParameter.trim();}if(mobileParameter.isEmpty()){break;}String mobileBrand = mobileParameter.get("BRAND");String mobileModel = mobileParameter.get("MODEL_NUMBER");String[] lines = accessoryParameter.split("\n");for(String line: lines){boolean isRelated = false;if(line.contains(mobileBrand)){String[] parts = line.split(" ");List<String> partsList = Arrays.asList(parts);if(partsList.contains(mobileModel)){isRelated = true;}}if(isRelated){List<Long> accessories = relatedAccessories.get(categoryID);if(accessories == null){accessories = new ArrayList<Long>();relatedAccessories.put(categoryID, accessories);}accessories.add(entityID);}}}break;//Screen Guardcase (int) Utils.SCREEN_GUARD:StringBuffer sb1 = new StringBuffer();for(Entry<Long, Object> entry1 : entityParameterMap.entrySet()){long entityID = entry1.getKey();String accessoryParameter = (String) entry1.getValue();Map<String, String> mobileParameter = (Map<String, String>)entityCategoryParameters.get(entry.getKey());if(accessoryParameter != null){accessoryParameter = accessoryParameter.trim();}if(mobileParameter.isEmpty()){break;}sb1.append(accessoryParameter + " = "+ mobileParameter + "\t");String mobileBrand = mobileParameter.get("BRAND");String mobileModel = mobileParameter.get("MODEL_NUMBER");boolean isRelated = false;if(accessoryParameter.contains(mobileBrand)){String[] parts = accessoryParameter.split(" ");List<String> partsList = Arrays.asList(parts);if(partsList.contains(mobileModel)){isRelated = true;}}if(isRelated){List<Long> accessories = relatedAccessories.get(categoryID);if(accessories == null){accessories = new ArrayList<Long>();relatedAccessories.put(categoryID, accessories);}accessories.add(entityID);}}break;//Memory Cardcase (int) Utils.MEMORY_CARD:default:for(Entry<Long, Object> entry1 : entityParameterMap.entrySet()){long entityID = entry1.getKey();String accessoryParameter = (String) entry1.getValue();if(entityCategoryParameters.get(entry.getKey()) == null){continue;}if(entityCategoryParameters.get(entry.getKey()) == null){continue;}Map<String, String> mobileParameter = (Map<String, String>)entityCategoryParameters.get(entry.getKey());if(accessoryParameter != null){accessoryParameter = accessoryParameter.trim();}if(mobileParameter==null){continue;}String parts[] = accessoryParameter.split(" |-");try{long cardMemory = 1024*Long.parseLong(parts[parts.length - 1].replaceAll("GB", "").replaceAll("MB", ""));String memoryCapacity = mobileParameter.get("MEMORY");String memoryType = mobileParameter.get("MEMORY_TYPE");if(memoryCapacity == null || memoryType == null ){continue;}if(Long.parseLong(memoryCapacity.trim()) < cardMemory){continue;}if(StringUtils.containsIgnoreCase(accessoryParameter, memoryType)){List<Long> accessories = relatedAccessories.get(categoryID);if(accessories == null){accessories = new ArrayList<Long>();relatedAccessories.put(categoryID, accessories);}accessories.add(entityID);}}catch (NumberFormatException e) {log.error("Could not parse to Long \n + " + e.getMessage());} catch (Exception e){log.error(e.getMessage());}}break;//Bluetooth Headsetcase (int) Utils.BLUETOOTH_HEADSET:for(Entry<Long, Object> entry1 : entityParameterMap.entrySet()){long entityID = entry1.getKey();String mobileParameter = (String)entityCategoryParameters.get(entry.getKey());if(mobileParameter == null){break;}if(mobileParameter.equals("TRUE")){List<Long> accessories = relatedAccessories.get(categoryID);if(accessories == null){accessories = new ArrayList<Long>();relatedAccessories.put(categoryID, accessories);}accessories.add(entityID);}}break;//Headsetcase (int) Utils.HEADSET:for(Entry<Long, Object> entry1 : entityParameterMap.entrySet()){long entityID = entry1.getKey();String mobileParameter = (String)entityCategoryParameters.get(entry.getKey());String accessoryParameter = (String) entry1.getValue();if(mobileParameter!=null && accessoryParameter != null){mobileParameter = mobileParameter.trim();accessoryParameter = accessoryParameter.trim();if(StringUtils.containsIgnoreCase(mobileParameter, accessoryParameter)){List<Long> accessories = relatedAccessories.get(categoryID);if(accessories == null){accessories = new ArrayList<Long>();relatedAccessories.put(categoryID, accessories);}accessories.add(entityID);}}}break;//Chargercase (int) Utils.CHARGER:for(Entry<Long, Object> entry1 : entityParameterMap.entrySet()){long entityID = entry1.getKey();Map<String, String> accessoryParameter = (Map<String, String>) entry1.getValue();if(entityCategoryParameters.get(entry.getKey()) == null){continue;}Map<String, String> mobileParameter = (Map<String, String>)entityCategoryParameters.get(entry.getKey());if(accessoryParameter == null || mobileParameter==null){continue;}String accBrand = accessoryParameter.get("BRAND");String mobileBrand = mobileParameter.get("BRAND");String accConnectorPin = accessoryParameter.get("CONNECTOR_PIN");String mobilePowerAdaptor = mobileParameter.get("POWER_ADAPTOR");String accModel = accessoryParameter.get("MODEL");if(accBrand.trim().equalsIgnoreCase(mobileBrand.trim())){if(StringUtils.containsIgnoreCase(mobilePowerAdaptor, accConnectorPin)){if(StringUtils.containsIgnoreCase(mobilePowerAdaptor, accModel)){List<Long> accessories = relatedAccessories.get(categoryID);if(accessories == null){accessories = new ArrayList<Long>();relatedAccessories.put(categoryID, accessories);}accessories.add(entityID);}}}}break;}}return relatedAccessories;}private void populateParameters(Map<Long, Map<Long, Object>> categoryParameterMap) throws Exception {for(Long entityID: entityIds){Entity entity = CreationUtils.getEntity(entityID);if(entity == null){log.info("Entity is null: " + entityID);continue;}ExpandedEntity expEntity = new ExpandedEntity(entity);Long categoryID = entity.getCategoryID();switch (categoryID.intValue()) {//Batterycase (int) Utils.BATTERY:ExpandedSlide expCompatibilitySlide = expEntity.getExpandedSlide(130066);if(expCompatibilitySlide != null){List<ExpandedFeature> compatibilityFeatures = expCompatibilitySlide.getExpandedFeatures();for(ExpandedFeature feature: compatibilityFeatures){if(feature.getFeatureDefinitionID() == 120104){ExpandedBullet bullet = feature.getExpandedBullets().get(0);Map<String, String> params = new HashMap<String, String>();String capacity = bullet.getValue();capacity = capacity.split(" ")[0];params.put("BATTERY_CAPACITY", capacity);params.put("BATTERY_MODEL", entity.getModelNumber().trim());putParameterIntoMap(categoryID, entityID, params, categoryParameterMap);}}}break;//Screen Guardcase (int) Utils.SCREEN_GUARD:Slide compatibilitySlide = entity.getSlide(130073);if(compatibilitySlide != null){String fft = compatibilitySlide.getFreeformContent().getFreeformText();if(fft != null && !fft.trim().isEmpty()){putParameterIntoMap(categoryID, entityID, fft, categoryParameterMap);}}break;//Carrying Casecase (int) Utils.CARRYING_CASE:Slide ccCompatibilitySlide = entity.getSlide(130073);if(ccCompatibilitySlide != null){String fft = ccCompatibilitySlide.getFreeformContent().getFreeformText();if(fft != null && !fft.trim().isEmpty()){putParameterIntoMap(categoryID, entityID, fft, categoryParameterMap);}}break;//Memory Cardcase (int) Utils.MEMORY_CARD:putParameterIntoMap(categoryID, entityID, entity.getBrand() + " " + entity.getModelName() + " " + entity.getModelNumber(), categoryParameterMap);/*ExpandedEntity expEntity = new ExpandedEntity(entity);ExpandedSlide compatibilitySlide = expEntity.getExpandedSlide(130065);List<ExpandedFeature> compatibilityExpandedFeatures = compatibilitySlide.getExpandedFeatures();for(ExpandedFeature expFeature: compatibilityExpandedFeatures){if(expFeature.getFeatureDefinitionID() == 120099){ExpandedBullet expBullet = expFeature.getExpandedBullets().get(0);if(expBullet.displayText() == null || expBullet.displayText().trim().equals("")){continue;}long memory = Long.parseLong(expBullet.getValue());long unitId = expBullet.getUnitID();if(unitId == 50008){memory = 1024 * memory;}entityParameterMap.put(entity.getID(), memory+"");}}*/break;//Bluetooth Headsetcase (int) Utils.BLUETOOTH_HEADSET:putParameterIntoMap(categoryID, entityID, entity.getModelNumber().trim(), categoryParameterMap);break;//Headsetcase (int) Utils.HEADSET:ExpandedSlide headsetCompatibilitySlide = expEntity.getExpandedSlide(130068);if(headsetCompatibilitySlide != null){List<ExpandedFeature> compatibilityFeatures = headsetCompatibilitySlide.getExpandedFeatures();for(ExpandedFeature feature: compatibilityFeatures){if(feature.getFeatureDefinitionID() == 120105){ExpandedBullet bullet = feature.getExpandedBullets().get(0);putParameterIntoMap(categoryID, entityID, bullet.getValue(), categoryParameterMap);}}}break;//Chargercase (int) Utils.CHARGER:ExpandedSlide chargerCompatibilitySlide = expEntity.getExpandedSlide(130069);if(chargerCompatibilitySlide != null){List<ExpandedFeature> compatibilityFeatures = chargerCompatibilitySlide.getExpandedFeatures();for(ExpandedFeature feature: compatibilityFeatures){if(feature.getFeatureDefinitionID() == 120107){ExpandedBullet bullet = feature.getExpandedBullets().get(0);Map<String, String> params = new HashMap<String, String>();String model = entity.getModelName() + " " + entity.getModelNumber();model = model.replaceAll("Charger", "").trim();params.put("BRAND", entity.getBrand());params.put("CONNECTOR_PIN", bullet.getValue());params.put("MODEL", model);putParameterIntoMap(categoryID, entityID, params, categoryParameterMap);}}}break;default:break;}}}void putParameterIntoMap(Long categoryID, Long entityID, Object params, Map<Long, Map<Long, Object>> categoryParameterMap){Map<Long, Object> entityParameterMap = categoryParameterMap.get(categoryID);if(entityParameterMap == null){entityParameterMap = new HashMap<Long, Object>();categoryParameterMap.put(categoryID, entityParameterMap);}entityParameterMap.put(entityID, params);}private Map<Long, Object> populateParameters(long categoryID) throws Exception {Map<Long, Object> entityParameterMap = new HashMap<Long, Object>();Collection<Entity> entities = CreationUtils.getEntities(categoryID);switch ((int)categoryID) {//Batterycase (int) Utils.BATTERY:for(Entity entity: entities){ExpandedEntity expEntity = new ExpandedEntity(entity);ExpandedSlide compatibilitySlide = expEntity.getExpandedSlide(130066);if(compatibilitySlide != null){List<ExpandedFeature> compatibilityFeatures = compatibilitySlide.getExpandedFeatures();for(ExpandedFeature feature: compatibilityFeatures){if(feature.getFeatureDefinitionID() == 120104){ExpandedBullet bullet = feature.getExpandedBullets().get(0);Map<String, String> params = new HashMap<String, String>();String capacity = bullet.getValue();capacity = capacity.split(" ")[0];params.put("BATTERY_CAPACITY", capacity);params.put("BATTERY_MODEL", entity.getModelNumber().trim());entityParameterMap.put(entity.getID(), params);}}}}break;//Screen Guardcase (int) Utils.SCREEN_GUARD:for(Entity entity: entities){Slide compatibilitySlide = entity.getSlide(130073);if(compatibilitySlide != null){String fft = compatibilitySlide.getFreeformContent().getFreeformText();if(fft != null && !fft.trim().isEmpty()){entityParameterMap.put(entity.getID(), fft);}}}break;//Carrying Casecase (int) Utils.CARRYING_CASE:for(Entity entity: entities){Slide compatibilitySlide = entity.getSlide(130073);if(compatibilitySlide != null){String fft = compatibilitySlide.getFreeformContent().getFreeformText();if(fft != null && !fft.trim().isEmpty()){entityParameterMap.put(entity.getID(), fft);}}}break;//Memory Cardcase (int) Utils.MEMORY_CARD:for(Entity entity: entities){entityParameterMap.put(entity.getID(), entity.getBrand() + " " + entity.getModelName() + " " + entity.getModelNumber());/*ExpandedEntity expEntity = new ExpandedEntity(entity);ExpandedSlide compatibilitySlide = expEntity.getExpandedSlide(130065);List<ExpandedFeature> compatibilityExpandedFeatures = compatibilitySlide.getExpandedFeatures();for(ExpandedFeature expFeature: compatibilityExpandedFeatures){if(expFeature.getFeatureDefinitionID() == 120099){ExpandedBullet expBullet = expFeature.getExpandedBullets().get(0);if(expBullet.displayText() == null || expBullet.displayText().trim().equals("")){continue;}long memory = Long.parseLong(expBullet.getValue());long unitId = expBullet.getUnitID();if(unitId == 50008){memory = 1024 * memory;}entityParameterMap.put(entity.getID(), memory+"");}}*/}break;//Bluetooth Headsetcase (int) Utils.BLUETOOTH_HEADSET:for(Entity entity: entities){entityParameterMap.put(entity.getID(), entity.getModelNumber().trim());}break;//Headsetcase (int) Utils.HEADSET:for(Entity entity: entities){ExpandedEntity expEntity = new ExpandedEntity(entity);ExpandedSlide compatibilitySlide = expEntity.getExpandedSlide(130068);if(compatibilitySlide != null){List<ExpandedFeature> compatibilityFeatures = compatibilitySlide.getExpandedFeatures();for(ExpandedFeature feature: compatibilityFeatures){if(feature.getFeatureDefinitionID() == 120105){ExpandedBullet bullet = feature.getExpandedBullets().get(0);entityParameterMap.put(entity.getID(), bullet.getValue());}}}}break;//Chargercase (int) Utils.CHARGER:for(Entity entity: entities){ExpandedEntity expEntity = new ExpandedEntity(entity);ExpandedSlide compatibilitySlide = expEntity.getExpandedSlide(130069);if(compatibilitySlide != null){List<ExpandedFeature> compatibilityFeatures = compatibilitySlide.getExpandedFeatures();for(ExpandedFeature feature: compatibilityFeatures){if(feature.getFeatureDefinitionID() == 120107){ExpandedBullet bullet = feature.getExpandedBullets().get(0);Map<String, String> params = new HashMap<String, String>();String model = entity.getModelName() + " " + entity.getModelNumber();model = model.replaceAll("Charger", "").trim();params.put("BRAND", entity.getBrand());params.put("CONNECTOR_PIN", bullet.getValue());params.put("MODEL", model);entityParameterMap.put(entity.getID(), params);}}}}break;default:break;}return entityParameterMap;}private ExpandedBullet getBullet(List<ExpandedBullet> expBullets){for(ExpandedBullet expBullet : expBullets){String type = expBullet.getValue();if(StringUtils.isEmpty(type)){continue;} else {return expBullet;}}return null;}private String getBulletDisplayText(List<ExpandedBullet> expBullets){for(ExpandedBullet expBullet : expBullets){String type = expBullet.displayText();if(StringUtils.isEmpty(type)){continue;} else {return type;}}return "";}}