001/*
002 *  Copyright 2024 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.cms.properties.section.technical;
017
018import java.util.Map;
019
020import org.ametys.core.cocoon.ActionResultGenerator;
021import org.ametys.plugins.repository.AmetysObject;
022import org.ametys.runtime.plugin.component.Prioritizable;
023import org.ametys.runtime.plugin.component.Supporter;
024
025/**
026 * Section item for the ametys object technical section of the properties tool.
027 */
028public interface TechnicalItem extends Prioritizable, Supporter<AmetysObject>
029{
030    /**
031     * Get the identifier of the technical item
032     * @return the identifier
033     */
034    public String getId();
035    
036    /**
037     * Build the data sent into the request attribute {@link ActionResultGenerator#MAP_REQUEST_ATTR}, it will be convert from JSON to XML.
038     * @param ametysObject The Ametys object
039     * @return the data
040     */
041    public Map<String, Object> buildData(AmetysObject ametysObject);
042
043    /**
044     * Path to the XSL to render the section item.
045     * It is recommended to use the 'view' protocol, with a plugin, like view:myplugin://stylesheets/properties/filename.xsl
046     * @return The XSL path
047     */
048    public String getXSLT();
049}