/*
* 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.repository.local;
import java.net.URI;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.jobs.ISchedulingRule;
import org.eclipsetrader.core.feed.IFeedIdentifier;
import org.eclipsetrader.core.feed.IHistory;
import org.eclipsetrader.core.instruments.ISecurity;
import org.eclipsetrader.core.repositories.IRepository;
import org.eclipsetrader.core.repositories.IRepositoryChangeListener;
import org.eclipsetrader.core.repositories.IRepositoryRunnable;
import org.eclipsetrader.core.repositories.IRepositoryService;
import org.eclipsetrader.core.repositories.IStoreObject;
import org.eclipsetrader.core.views.IHolding;
import org.eclipsetrader.core.views.IWatchList;
public class TestRepositoryService implements IRepositoryService {
private Map<String, IRepository> repositories = new HashMap<String, IRepository>();
private Map<String, IFeedIdentifier> identifiersMap = new HashMap<String, IFeedIdentifier>();
private Map<String, ISecurity> securities = new HashMap<String, ISecurity>();
private Map<URI, ISecurity> securitiesUriMap = new HashMap<URI, ISecurity>();
private Map<String, IWatchList> watchlists = new HashMap<String, IWatchList>();
private Map<URI, IWatchList> watchlistsUriMap = new HashMap<URI, IWatchList>();
private Map<URI, IStoreObject> uriMap = new HashMap<URI, IStoreObject>();
public TestRepositoryService() {
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IRepositoryService#deleteAdaptable(org.eclipse.core.runtime.IAdaptable[])
*/
@Override
public void deleteAdaptable(IAdaptable[] adaptables) {
for (IAdaptable a : adaptables) {
if (a instanceof ISecurity) {
securities.remove(((ISecurity) a).getName());
}
if (a instanceof IWatchList) {
watchlists.remove(((IWatchList) a).getName());
}
}
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IRepositoryService#moveAdaptable(org.eclipse.core.runtime.IAdaptable[], org.eclipsetrader.core.repositories.IRepository)
*/
@Override
public void moveAdaptable(IAdaptable[] adaptables, IRepository repository) {
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IRepositoryService#saveAdaptable(org.eclipse.core.runtime.IAdaptable[], org.eclipsetrader.core.repositories.IRepository)
*/
@Override
public void saveAdaptable(IAdaptable[] adaptables, IRepository defaultRepository) {
saveAdaptable(adaptables);
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IRepositoryService#saveAdaptable(org.eclipse.core.runtime.IAdaptable[])
*/
@Override
public void saveAdaptable(IAdaptable[] adaptables) {
for (IAdaptable a : adaptables) {
IStoreObject so = (IStoreObject) a.getAdapter(IStoreObject.class);
this.uriMap.put(so.getStore().toURI(), so);
if (a instanceof ISecurity) {
this.securities.put(((ISecurity) a).getName(), (ISecurity) a);
this.securitiesUriMap.put(so.getStore().toURI(), (ISecurity) a);
IFeedIdentifier i = (IFeedIdentifier) a.getAdapter(IFeedIdentifier.class);
if (i != null) {
this.identifiersMap.put(i.getSymbol(), i);
}
}
else if (a instanceof IWatchList) {
this.watchlists.put(((IWatchList) a).getName(), (IWatchList) a);
this.watchlistsUriMap.put(so.getStore().toURI(), (IWatchList) a);
}
}
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IRepositoryService#getFeedIdentifierFromSymbol(java.lang.String)
*/
@Override
public IFeedIdentifier getFeedIdentifierFromSymbol(String symbol) {
return identifiersMap.get(symbol);
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IRepositoryService#getFeedIdentifiers()
*/
@Override
public IFeedIdentifier[] getFeedIdentifiers() {
Collection<IFeedIdentifier> c = identifiersMap.values();
return c.toArray(new IFeedIdentifier[c.size()]);
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IRepositoryService#getRepositories()
*/
@Override
public IRepository[] getRepositories() {
Collection<IRepository> c = repositories.values();
return c.toArray(new IRepository[c.size()]);
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IRepositoryService#getRepository(java.lang.String)
*/
@Override
public IRepository getRepository(String scheme) {
return repositories.get(scheme);
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IRepositoryService#getSecurities()
*/
@Override
public ISecurity[] getSecurities() {
Collection<ISecurity> c = securities.values();
return c.toArray(new ISecurity[c.size()]);
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IRepositoryService#getSecurityFromName(java.lang.String)
*/
@Override
public ISecurity getSecurityFromName(String name) {
return securities.get(name);
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IRepositoryService#getSecurityFromURI(java.net.URI)
*/
@Override
public ISecurity getSecurityFromURI(URI uri) {
return securitiesUriMap.get(uri);
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IRepositoryService#getWatchListFromName(java.lang.String)
*/
@Override
public IWatchList getWatchListFromName(String name) {
return watchlists.get(name);
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IRepositoryService#getWatchListFromURI(java.net.URI)
*/
@Override
public IWatchList getWatchListFromURI(URI uri) {
return watchlistsUriMap.get(uri);
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IRepositoryService#getWatchLists()
*/
@Override
public IWatchList[] getWatchLists() {
Collection<IWatchList> c = watchlists.values();
return c.toArray(new IWatchList[c.size()]);
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IRepositoryService#getTrades()
*/
@Override
public IHolding[] getTrades() {
return new IHolding[0];
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IRepositoryService#runInService(org.eclipsetrader.core.repositories.IRepositoryRunnable, org.eclipse.core.runtime.IProgressMonitor)
*/
@Override
public IStatus runInService(IRepositoryRunnable runnable, IProgressMonitor monitor) {
try {
runnable.run(monitor);
} catch (Exception e) {
throw new RuntimeException(e);
}
return null;
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IRepositoryService#runInService(org.eclipsetrader.core.repositories.IRepositoryRunnable, org.eclipse.core.runtime.jobs.ISchedulingRule, org.eclipse.core.runtime.IProgressMonitor)
*/
@Override
public IStatus runInService(IRepositoryRunnable runnable, ISchedulingRule rule, IProgressMonitor monitor) {
try {
runnable.run(monitor);
} catch (Exception e) {
throw new RuntimeException(e);
}
return null;
}
public void saveFeedIdentifiers(IFeedIdentifier[] identifiers) {
for (IFeedIdentifier i : identifiers) {
this.identifiersMap.put(i.getSymbol(), i);
}
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IRepositoryService#addRepositoryResourceListener(org.eclipsetrader.core.repositories.IRepositoryChangeListener)
*/
@Override
public void addRepositoryResourceListener(IRepositoryChangeListener listener) {
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IRepositoryService#removeRepositoryResourceListener(org.eclipsetrader.core.repositories.IRepositoryChangeListener)
*/
@Override
public void removeRepositoryResourceListener(IRepositoryChangeListener listener) {
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IRepositoryService#getHistoryFor(org.eclipsetrader.core.instruments.ISecurity)
*/
@Override
public IHistory getHistoryFor(ISecurity security) {
return null;
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IRepositoryService#getObjectFromURI(java.net.URI)
*/
@Override
public IStoreObject getObjectFromURI(URI uri) {
return uriMap.get(uri);
}
/* (non-Javadoc)
* @see org.eclipsetrader.core.repositories.IRepositoryService#getAllObjects()
*/
@Override
public IStoreObject[] getAllObjects() {
return uriMap.values().toArray(new IStoreObject[uriMap.values().size()]);
}
}