package quickfix.spring; import java.util.Map; import java.util.HashMap; import quickfix.SessionID; import org.springframework.beans.factory.InitializingBean; import org.marketcetera.core.Messages; public class SessionDescriptor implements InitializingBean { private static final String TARGET_COMP_ID_KEY = "TargetCompID"; //$NON-NLS-1$ private static final String SENDER_COMP_ID_KEY = "SenderCompID"; //$NON-NLS-1$ private static final String BEGIN_STRING_KEY = "BeginString"; //$NON-NLS-1$ private SessionID cachedSessionID; private String senderCompID; private String targetCompID; private String beginString; private Map<String, String> settings = new HashMap<String, String>(); public String getBeginString() { return beginString; } public void setBeginString(String beginString) { this.beginString = beginString; } public String getSenderCompID() { return senderCompID; } public void setSenderCompID(String senderCompID) { this.senderCompID = senderCompID; } public String getTargetCompID() { return targetCompID; } public void setTargetCompID(String targetCompID) { this.targetCompID = targetCompID; } public void setSessionID(SessionID id){ cachedSessionID = id; } public SessionID getSessionID(){ return cachedSessionID; } public void setSettings(Map<String, String> settings){ this.settings = settings; } private void updateSessionIDFields() { if (!settings.containsKey(BEGIN_STRING_KEY)){ settings.put(BEGIN_STRING_KEY, cachedSessionID.getBeginString()); } if (!settings.containsKey(SENDER_COMP_ID_KEY)){ settings.put(SENDER_COMP_ID_KEY, cachedSessionID.getSenderCompID()); } if (!settings.containsKey(TARGET_COMP_ID_KEY)){ settings.put(TARGET_COMP_ID_KEY, cachedSessionID.getTargetCompID()); } } public Map<String,String> getSettings() { return settings; } public void afterPropertiesSet() throws Exception { if((cachedSessionID != null) && ((beginString != null ) || (senderCompID != null) || (targetCompID != null))) { throw new IllegalStateException(Messages.ERROR_CONFIG_SESSIONID_INDIVIDUAL_PROPS_SET.getText()); } if(cachedSessionID == null) { cachedSessionID = new SessionID(beginString, senderCompID, targetCompID); } updateSessionIDFields(); } }