// Copyright 2015 Ivan Popivanov // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package net.tradelib.core; import java.time.Duration; import java.util.HashMap; public class BarHierarchy { private HashMap<String, HashMap<Duration, BarHistory>> historiesMap; public BarHierarchy() { historiesMap = new HashMap<String, HashMap<Duration,BarHistory>>(); } public BarHistory getHistory(String symbol, Duration duration) { HashMap<Duration,BarHistory> symbolHistories = historiesMap.get(symbol); if(symbolHistories == null) { return null; } BarHistory barHistory = symbolHistories.get(duration); if(barHistory == null) { barHistory = new BarHistory(); symbolHistories.put(duration, barHistory); } return barHistory; } public void addSymbol(String symbol) { HashMap<Duration,BarHistory> symbolHistories = historiesMap.get(symbol); if(symbolHistories == null) { symbolHistories = new HashMap<Duration, BarHistory>(); historiesMap.put(symbol, symbolHistories); } } public BarHistory getHistory(Bar bar) { return getHistory(bar.getSymbol(), bar.getDuration()); } }