/** * */ package net.frontlinesms.camel.smslib; import java.util.Map; import org.smslib.CService; import org.smslib.service.MessageClass; class CServiceFactory { private static final int DEFAULT_BAUD = 57600; public CService create(String uri, String remaining, Map<String, Object> params) { CService cService = new CService(remaining, getBaud(params), getString(params, "manufacturer"), getString(params, "model"), getString(params, "handler"), true); String pin = getPin(params); if(pin!=null) cService.setSimPin(pin); String smscNumber = getSmscNumber(params); if(smscNumber!=null) cService.setSmscNumber(smscNumber); cService.setAsyncRecvClass(getBoolean(params, "allMessages")? MessageClass.ALL: MessageClass.UNREAD); return cService; } private boolean getBoolean(Map<String, Object> params, String key) { return Boolean.parseBoolean(getString(params, key)); } private String getString(Map<String, Object> params, String key) { String m = (String) params.get(key); return m == null ? "" : m; } private String getPin(Map<String, Object> params) { String pin = getString(params, "pin"); return pin.length() > 0? pin: null; } private String getSmscNumber(Map<String, Object> params) { String smsc = getString(params, "smscNumber"); return smsc.length() > 0? smsc: null; } private int getBaud(Map<String, Object> parameters) { String baud = (String) parameters.get("baud"); try { return Integer.parseInt(baud); } catch(Exception e) { return DEFAULT_BAUD; } } }