package sk.shanki.dbsuite.mapper;

import sk.shanki.dbsuite.mapper.db.Row;

import java.util.*;

public class BiMap{
    private Map<Row, Row> forwardMap;
    private Map<Row, Row> backwardMap;

    public BiMap(){
        this.forwardMap = new HashMap<>();
        this.backwardMap = new HashMap<>();

    }

    public Map<Row, Row> getBackwardMap() {
        return backwardMap;
    }

    public void put(Row key, Row value){
        if(key != null) {
            this.forwardMap.put(key, value);
        }
        if(value != null){
            this.backwardMap.put(value, key);
        }
    }

    public Row get(Row row1) {
        if(this.forwardMap.containsKey(row1)){
            return this.forwardMap.get(row1);
        }
        return this.backwardMap.get(row1);
    }

    public Collection<Row> values() {
        return this.forwardMap.values();
    }

    public boolean containsValue(Row o) {
        return this.forwardMap.containsValue(o);
    }

    public Set<Row> keySet() {
        return this.forwardMap.keySet();
    }

    public int size() {
        return this.forwardMap.size();
    }
}
