001/*
002 *  Copyright 2010 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 */
016
017package org.ametys.web.live;
018
019import java.util.List;
020
021import javax.jcr.Session;
022
023import org.slf4j.Logger;
024
025import org.ametys.core.schedule.progression.ContainerProgressionTracker;
026import org.ametys.core.schedule.progression.ProgressionTrackerFactory;
027import org.ametys.runtime.i18n.I18nizableText;
028
029/**
030 * Component called on each rebuild of the live workspace.
031 */
032public interface LivePopulator
033{
034    /**
035     * Return a logger for the progression tracker
036     * @return The logger
037     */
038    public Logger getProgressionTrackerLogger();
039
040    /**
041     * A readable label of the populator
042     * @return A non null value
043     */
044    public I18nizableText getLabel();
045    
046    /**
047     * Populates the live workspace.
048     * @param session the session on the default workspace.
049     * @param liveSession the session on the live workspace.
050     * @return A list of error technical messages. A message can use \n for carriage return.
051     * @throws Exception if an error occurs.
052     */
053    public default List<String> populate(Session session, Session liveSession) throws Exception 
054    {
055        return populate(session, liveSession, ProgressionTrackerFactory.createContainerProgressionTracker("Populate", getProgressionTrackerLogger()));
056    }
057    
058    /**
059     * Populates the live workspace.
060     * @param session the session on the default workspace.
061     * @param liveSession the session on the live workspace.
062     * @param progressionTracker The static progression tracker
063     * @return A list of error technical messages. A message can use \n for carriage return.
064     * @throws Exception if an error occurs.
065     */
066    public List<String> populate(Session session, Session liveSession, ContainerProgressionTracker progressionTracker) throws Exception;
067}