jaghaimo/stellics

View on GitHub
src/main/java/stellics/filter/FilterFactory.java

Summary

Maintainability
A
0 mins
Test Coverage
package stellics.filter;

import java.util.ArrayList;
import java.util.List;

import stellics.button.Button;
import stellics.button.ButtonManager;

public class FilterFactory {

    private ButtonManager buttonManager;

    public FilterFactory(ButtonManager buttonManager) {
        this.buttonManager = buttonManager;
    }

    public List<CargoStackFilter> getCargoStackFilters() {
        List<CargoStackFilter> filters = new ArrayList<>();
        List<Object> objects = extractFilters(buttonManager.getAllCargoButtons());
        filters.addAll(convertToCargoStackFilters(objects));
        return filters;
    }

    public List<FleetMemberFilter> getFleetMemberFilters() {
        List<FleetMemberFilter> filters = new ArrayList<>();
        List<Object> objects = extractFilters(buttonManager.getAllShipButtons());
        filters.addAll(convertToFleetMemberFilters(objects));
        return filters;
    }

    private List<CargoStackFilter> convertToCargoStackFilters(List<Object> objects) {
        List<CargoStackFilter> filters = new ArrayList<>();
        for (Object object : objects) {
            filters.add((CargoStackFilter) object);
        }
        return filters;
    }

    private List<FleetMemberFilter> convertToFleetMemberFilters(List<Object> objects) {
        List<FleetMemberFilter> filters = new ArrayList<>();
        for (Object object : objects) {
            filters.add((FleetMemberFilter) object);
        }
        return filters;
    }

    private List<Object> extractFilters(List<Button> buttons) {
        List<Object> filters = new ArrayList<>();
        for (Button button : buttons) {
            Object filter = button.getFilter();
            if (filter == null) {
                continue;
            }
            filters.add(filter);
        }
        return filters;
    }
}