/*
* Copyright (c) 2004-2011 Marco Maccaferri and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Marco Maccaferri - initial API and implementation
*/
package org.eclipsetrader.core.internal.ats.repository;
import java.net.URI;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.XmlRootElement;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipsetrader.core.internal.ats.TradingSystemProperties;
import org.eclipsetrader.core.repositories.IStoreObject;
@XmlRootElement(name = "list")
public class SettingsCollection {
@XmlElementRef
private List<Settings> systems = new ArrayList<Settings>();
public SettingsCollection() {
}
public void add(Settings settings) {
systems.add(settings);
}
public TradingSystemProperties getSettingsFor(IAdaptable strategy) {
IStoreObject storeObject = (IStoreObject) strategy.getAdapter(IStoreObject.class);
if (storeObject == null) {
return null;
}
URI uri = storeObject.getStore().toURI();
for (Settings settings : systems) {
if (settings.getUri().equals(uri)) {
return settings.getProperties();
}
}
return null;
}
public void setSettingsFor(IAdaptable strategy, TradingSystemProperties properties) {
IStoreObject storeObject = (IStoreObject) strategy.getAdapter(IStoreObject.class);
if (storeObject == null) {
return;
}
URI uri = storeObject.getStore().toURI();
for (Iterator<Settings> iter = systems.iterator(); iter.hasNext();) {
Settings settings = iter.next();
if (settings.getUri().equals(uri)) {
iter.remove();
break;
}
}
systems.add(new Settings(uri, properties));
}
}