/*
 *  Copyright 2024 Anyware Services
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

Ext.define('Ametys.plugins.extraction.rights.ExtractionTargetToContextConvertor', {
    extend: 'Ametys.plugins.coreui.rights.AbstractTargetToContextConvertor',
    
    statics:
    {
        /**
         * @readonly
         * @property {Object} EXTRACTION_ROOT_CONTEXT The root context for extraction definition.
         */
        EXTRACTION_ROOT_CONTEXT: '/extraction-dir',
    },

    isSupportedTarget: function(target)
    {
        return target != null
        && (target.getId() == Ametys.message.MessageTarget.EXTRACTION_DEFINITION_FILE
            || target.getId() == Ametys.message.MessageTarget.EXTRACTION_DEFINITION_ROOT
            || target.getId() == Ametys.message.MessageTarget.EXTRACTION_DEFINITION_FOLDER);
    },
    
    areSameTargets: function(target1, target2)
    {
        return target1.getParameters().path == target2.getParameters().path;
    },
    
    convert: function(target)
    {
        return Ametys.plugins.extraction.rights.ExtractionTargetToContextConvertor.EXTRACTION_ROOT_CONTEXT
         + (target.getParameters().path ? ("/" + target.getParameters().path) : "");
    },
    
    getContextInfo:function(target)
    {
        switch (target.getId())
        {
            case Ametys.message.MessageTarget.EXTRACTION_DEFINITION_ROOT:
                return {label: `{{i18n PLUGINS_EXTRACTION_TARGET_CONVERTOR_ROOT_LABEL}}`, type: `{{i18n PLUGINS_EXTRACTION_TARGET_CONVERTOR_FOLDER_TYPE_LABEL}}`}
            case Ametys.message.MessageTarget.EXTRACTION_DEFINITION_FOLDER:
                return {label: target.getParameters().name, type: `{{i18n PLUGINS_EXTRACTION_TARGET_CONVERTOR_FOLDER_TYPE_LABEL}}`}
            case Ametys.message.MessageTarget.EXTRACTION_DEFINITION_FILE:
            default:
                return {label: target.getParameters().name, type: `{{i18n PLUGINS_EXTRACTION_TARGET_CONVERTOR_FILE_TYPE_LABEL}}`}
                
        }
    }
});