All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.rwth.swc.coffee4j.model.manager.DelegatingModelBasedArgumentConverter Maven / Gradle / Ivy

package de.rwth.swc.coffee4j.model.manager;

import de.rwth.swc.coffee4j.engine.report.ArgumentConverter;
import de.rwth.swc.coffee4j.engine.util.Preconditions;
import de.rwth.swc.coffee4j.model.converter.ModelConverter;
import de.rwth.swc.coffee4j.model.report.ModelBasedArgumentConverter;

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

class DelegatingModelBasedArgumentConverter extends ModelBasedArgumentConverter {
    
    private final List argumentConverters;
    
    DelegatingModelBasedArgumentConverter(Collection argumentConverters) {
        Preconditions.notNull(argumentConverters);
        Preconditions.check(!argumentConverters.contains(null));
        
        this.argumentConverters = new ArrayList<>(argumentConverters);
    }
    
    @Override
    public void initialize(ModelConverter modelConverter) {
        for (ArgumentConverter argumentConverter : argumentConverters) {
            if (argumentConverter instanceof ModelBasedArgumentConverter) {
                ((ModelBasedArgumentConverter) argumentConverter).initialize(modelConverter);
            }
        }
    }
    
    @Override
    public boolean canConvert(Object argument) {
        for (ArgumentConverter argumentConverter : argumentConverters) {
            if (argumentConverter.canConvert(argument)) {
                return true;
            }
        }
        
        return false;
    }
    
    @Override
    public Object convert(Object argument) {
        for (ArgumentConverter argumentConverter : argumentConverters) {
            if (argumentConverter.canConvert(argument)) {
                return argumentConverter.convert(argument);
            }
        }
        
        throw new IllegalStateException("This method should not be called if canConcert returns false");
    }
    
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy