com.viadeo.kasper.core.id.ConverterRegistry.java Source code

Java tutorial

Introduction

Here is the source code for com.viadeo.kasper.core.id.ConverterRegistry.java

Source

// ----------------------------------------------------------------------------
//  This file is part of the Kasper framework.
//
//  The Kasper framework is free software: you can redistribute it and/or 
//  modify it under the terms of the GNU Lesser General Public License as 
//  published by the Free Software Foundation, either version 3 of the 
//  License, or (at your option) any later version.
//
//  Kasper framework is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU Lesser General Public License for more details.
//
//  You should have received a copy of the GNU Lesser General Public License
//  along with the framework Kasper.  
//  If not, see <http://www.gnu.org/licenses/>.
// --
//  Ce fichier fait partie du framework logiciel Kasper
//
//  Ce programme est un logiciel libre ; vous pouvez le redistribuer ou le 
//  modifier suivant les termes de la GNU Lesser General Public License telle 
//  que publie par la Free Software Foundation ; soit la version 3 de la 
//  licence, soit ( votre gr) toute version ultrieure.
//
//  Ce programme est distribu dans l'espoir qu'il sera utile, mais SANS 
//  AUCUNE GARANTIE ; sans mme la garantie tacite de QUALIT MARCHANDE ou 
//  d'ADQUATION  UN BUT PARTICULIER. Consultez la GNU Lesser General Public 
//  License pour plus de dtails.
//
//  Vous devez avoir reu une copie de la GNU Lesser General Public License en 
//  mme temps que ce programme ; si ce n'est pas le cas, consultez 
//  <http://www.gnu.org/licenses>
// ----------------------------------------------------------------------------
package com.viadeo.kasper.core.id;

import com.google.common.base.Objects;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Maps;
import com.google.common.collect.Multimap;
import com.viadeo.kasper.api.id.Format;

import java.util.Collection;
import java.util.Map;

import static com.google.common.base.Preconditions.checkNotNull;

public class ConverterRegistry {

    private Map<String, Multimap<Format, Converter>> currentConvertersByFormatsByVendors = Maps.newHashMap();

    public void register(Converter converter) {
        checkNotNull(converter);

        Multimap<Format, Converter> currentConvertersByFormats = currentConvertersByFormatsByVendors
                .get(converter.getVendor());

        if (currentConvertersByFormats == null) {
            currentConvertersByFormats = ArrayListMultimap.create();
            currentConvertersByFormatsByVendors.put(converter.getVendor(), currentConvertersByFormats);
        }

        currentConvertersByFormats.put(converter.getTarget(), converter);
    }

    public Multimap<Format, Converter> getConvertersByFormats(String vendor) {
        return Objects.firstNonNull(currentConvertersByFormatsByVendors.get(vendor),
                ArrayListMultimap.<Format, Converter>create());
    }

    public Collection<Converter> getConverters(String vendor, Format format) {
        return getConvertersByFormats(vendor).get(format);
    }
}