/*
* Copyright 2015-Present Entando Inc. (http://www.entando.com) All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.agiletec.plugins.jacms.aps.system.services.contentmodel;
import java.util.List;
import java.util.Map;
import com.agiletec.aps.system.exception.ApsSystemException;
import com.agiletec.aps.system.services.page.IPage;
import com.agiletec.plugins.jacms.aps.system.services.content.model.SmallContentType;
/**
* Interfaccia base per i Manager dei modelli di contenuto.
* @author E.Santoboni
*/
public interface IContentModelManager {
/**
* Aggiunge un modello di contenuto nel sistema.
* @param model Il modello da aggiungere.
* @throws ApsSystemException In caso di errori in accesso al db.
*/
public void addContentModel(ContentModel model) throws ApsSystemException;
/**
* Rimuove un modello di contenuto dal sistema.
* @param model Il modello di contenuto da rimuovere.
* @throws ApsSystemException In caso di errori in accesso al db.
*/
public void removeContentModel(ContentModel model) throws ApsSystemException;
/**
* Aggiorna un modello di contenuto.
* @param model Il modello di contenuto da aggiornare.
* @throws ApsSystemException In caso di errori in accesso al db.
*/
public void updateContentModel(ContentModel model) throws ApsSystemException;
/**
* Restituisce il modello relativo all'identificativo immesso.
* @param contentModelId L'identificativo del modello da estrarre.
* @return Il modello cercato.
*/
public ContentModel getContentModel(long contentModelId);
/**
* Restituisce la lista dei modelli di contenuto presenti nel sistema.
* @return La lista dei modelli di contenuto presenti nel sistema.
*/
public List<ContentModel> getContentModels();
/**
* Restituisce la lista di modelli compatibili con il tipo di contenuto specificato.
* @param contentType Il codice del tipo di contenuto.
* @return La lista di modelli compatibili con il tipo di contenuto specificato.
*/
public List<ContentModel> getModelsForContentType(String contentType);
/**
* Restituisce la mappa delle pagine referenziate dal modello di contenuto specificato.
* La mappa è indicizzata in base ai codici dei contenuti pubblicati tramite il modello specificato,
* ed il valore è rappresentato dalla lista di pagine nel quale è pubblicato esplicitamente il contenuto
* (traite il modello specificato).
* @param modelId Identificativo del modello di contenuto
* @return La Mappa delle pagine referenziate.
*/
public Map<String, List<IPage>> getReferencingPages(long modelId);
public SmallContentType getDefaultUtilizer(long modelId);
}