/*******************************************************************************
* Copyright (c) 2014 Open Door Logistics (www.opendoorlogistics.com)
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v3
* which accompanies this distribution, and is available at http://www.gnu.org/licenses/lgpl.txt
******************************************************************************/
package com.opendoorlogistics.core.api.impl;
import com.opendoorlogistics.api.StandardComponents;
import com.opendoorlogistics.api.components.ODLComponent;
import com.opendoorlogistics.api.standardcomponents.GanntChart;
import com.opendoorlogistics.api.standardcomponents.LineGraph;
import com.opendoorlogistics.api.standardcomponents.Maps;
import com.opendoorlogistics.api.standardcomponents.MatrixExporter;
import com.opendoorlogistics.api.standardcomponents.Reporter;
import com.opendoorlogistics.api.standardcomponents.ScheduleEditor;
import com.opendoorlogistics.api.standardcomponents.TableCreator;
import com.opendoorlogistics.api.standardcomponents.TableViewer;
import com.opendoorlogistics.core.components.ODLGlobalComponents;
public class StandardComponentsImpl implements StandardComponents{
@Override
public Maps map() {
return find(Maps.class);
}
@Override
public TableViewer tableViewer() {
return find(TableViewer.class);
}
@Override
public Reporter reporter() {
return find(Reporter.class);
}
@Override
public GanntChart ganttChart() {
return find(GanntChart.class);
}
private <T> T find(Class<T> cls){
for(ODLComponent component:ODLGlobalComponents.getProvider()){
if(cls.isInstance(component)){
return (T)component;
}
}
return null;
}
@Override
public TableCreator tableCreator() {
return find(TableCreator.class);
}
@Override
public ScheduleEditor scheduleEditor() {
return find(ScheduleEditor.class);
}
@Override
public LineGraph lineGraph() {
return find(LineGraph.class);
}
@Override
public MatrixExporter matrixExporter() {
return find(MatrixExporter.class);
}
}