001/*
002 *  Copyright 2021 Anyware Services
003 *
004 *  Licensed under the Apache License, Version 2.0 (the "License");
005 *  you may not use this file except in compliance with the License.
006 *  You may obtain a copy of the License at
007 *
008 *      http://www.apache.org/licenses/LICENSE-2.0
009 *
010 *  Unless required by applicable law or agreed to in writing, software
011 *  distributed under the License is distributed on an "AS IS" BASIS,
012 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 *  See the License for the specific language governing permissions and
014 *  limitations under the License.
015 */
016package org.ametys.plugins.odfpilotage.enumerators;
017
018import java.util.Collections;
019import java.util.Map;
020import java.util.stream.Collectors;
021
022import org.apache.avalon.framework.service.ServiceException;
023import org.apache.avalon.framework.service.ServiceManager;
024import org.apache.avalon.framework.service.Serviceable;
025
026import org.ametys.plugins.odfpilotage.cost.eqtd.EqTDComputationMode;
027import org.ametys.plugins.odfpilotage.cost.eqtd.EqTDComputationModeExtensionPoint;
028import org.ametys.runtime.i18n.I18nizableText;
029import org.ametys.runtime.model.Enumerator;
030
031/**
032 * {@link Enumerator} for the TD equivalent computation mode
033 */
034public class EqTDComputationModeEnumerator implements Enumerator<String>, Serviceable, org.ametys.runtime.parameter.Enumerator
035{
036    /** The TD equivalent computation mode extension point */
037    protected EqTDComputationModeExtensionPoint _eqTDComputationModeEP;
038    
039    @Override
040    public void service(ServiceManager smanager) throws ServiceException
041    {
042        _eqTDComputationModeEP = (EqTDComputationModeExtensionPoint) smanager.lookup(EqTDComputationModeExtensionPoint.ROLE);
043    }
044
045    @Override
046    public I18nizableText getEntry(String value) throws Exception
047    {
048        EqTDComputationMode analysis = _eqTDComputationModeEP.getExtension(value);
049        return analysis.getLabel();
050    }
051
052    @Override
053    public Map<String, I18nizableText> getTypedEntries() throws Exception
054    {
055        Map<String, I18nizableText> entries = _eqTDComputationModeEP.getExtensionsIds()
056            .stream()
057            .map(_eqTDComputationModeEP::getExtension)
058            .collect(Collectors.toMap(EqTDComputationMode::getId, EqTDComputationMode::getLabel));
059        
060        return entries;
061    }
062
063    @SuppressWarnings("unchecked")
064    @Override
065    public Map<Object, I18nizableText> getEntries() throws Exception
066    {
067        return (Map<Object, I18nizableText>) (Object) getTypedEntries();
068    }
069
070    @Override
071    // TODO NEWATTRIBUTEAPI: remove this method when org.ametys.runtime.parameter.Enumerator will be removed
072    public Map<String, Object> getConfiguration()
073    {
074        return Collections.EMPTY_MAP;
075    }
076}