/*
*
* Copyright 2005 AgileTec s.r.l. (http://www.agiletec.it) All rights reserved.
*
* This file is part of jAPS software.
* jAPS is a free software;
* you can redistribute it and/or modify it
* under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation; version 2.
*
* See the file License for the specific language governing permissions
* and limitations under the License
*
*
*
* Copyright 2005 AgileTec s.r.l. (http://www.agiletec.it) All rights reserved.
*
*/
package com.agiletec.plugins.jacms.aps.system.services.content;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import com.agiletec.aps.system.common.entity.IEntityManager;
import com.agiletec.aps.system.common.entity.model.EntitySearchFilter;
import com.agiletec.aps.system.exception.ApsSystemException;
import com.agiletec.plugins.jacms.aps.system.services.content.model.Content;
import com.agiletec.plugins.jacms.aps.system.services.content.model.ContentRecordVO;
import com.agiletec.plugins.jacms.aps.system.services.content.model.SmallContentType;
/**
* Interfaccia base per i Manager dei contenuti.
* @author M.Diana - E.Santoboni
*/
public interface IContentManager extends IEntityManager {
/**
* Crea una nuova istanza di un contenuto del tipo richiesto. Il nuovo contenuto
* è istanziato mediante clonazione del prototipo corrispondente.
* @param typeCode Il codice del tipo di contenuto richiesto, come definito in configurazione.
* @return Il contenuto istanziato (vuoto).
*/
public Content createContentType(String typeCode);
/**
* Restituisce una Lista dei tipi di Contenuti in forma Small.
* @return La lista dei tipi di contenuto (in ContentTypeSmall).
*/
public List<SmallContentType> getSmallContentTypes();
/**
* Restituisce la mappa dei prototipi dei tipi di contenuti
* il oggetti SmallContentType, indicizzati in base al codice del tipo.
* @return La mappa dei prototipi dei tipi di contenuti
* il oggetti SmallContentType.
*/
public Map<String, SmallContentType> getSmallContentTypesMap();
/**
* Restituisce il codice della pagina di default per la visualizzazione
* di un contenuto. La pagina di default è definita a livello di tipo di
* contenuto; il tipo è desunto dal codice in base alla convenzione
* di codifica.
* @param contentId L'identificaore di un contenuto
* @return Il codice della pagina.
*/
public String getViewPage(String contentId);
/**
* Restituisce il codice del modello di default per un contenuto.
* @param contentId Il codice del contenuto
* @return Il codice del modello.
*/
public String getDefaultModel(String contentId);
/**
* Restituisce il codice del modello da usare nelle liste per un contenuto.
* @param contentId Il codice del contenuto
* @return Il codice del modello.
*/
public String getListModel(String contentId);
/**
* Restituisce un contenuto completo in base al suo indice id ed in base a che si desideri quello
* nell'area di lavoro o quello onLine. Include come ritorno anche i dati contenuti sotto forma di xml.
* @param id L'dentificativo del contenuto da restituire.
* @param onLine Specifica quale contenuto deve caricare, true carica il contenuto online,
* false carica il contenuto libero.
* @return Il contenuto OnLine.
* @throws ApsSystemException in caso di errore nell'accesso al db.
*/
public Content loadContent(String id, boolean onLine) throws ApsSystemException;
/**
* Restituisce un VO contenente le informazioni del record su db
* corrispondente al contenuto di cui all'id inserito.
* @param id L'identificativo del contenuto.
* @return L'oggetto VO corrispondente al contenuto cercato.
* @throws ApsSystemException In caso di errore in accesso al db.
*/
public ContentRecordVO loadContentVO(String id) throws ApsSystemException;
/**
* Salva un contenuto sul DB.
* Il metodo viene utilizzato sia nel caso di salvataggio di un
* nuovo contenuto (in tal caso l'id del contenuto nuovo sarà nullo)
* o di aggiornamento di contenuto già esistente (id non nullo).
* @param content Il contenuto da aggiungere o modificare.
* @throws ApsSystemException in caso di errore nell'accesso al db.
*/
public void saveContent(Content content) throws ApsSystemException;
/**
* Inserisce il contenuto OnLine.
* @param content Il contenuto da rendere visibile online.
* @throws ApsSystemException in caso di errore nell'accesso al db.
*/
public void insertOnLineContent(Content content) throws ApsSystemException;
/**
* Rimuove un contenuto OnLine. L'operazione non cancella il contenuto ma ne
* rimuove la possibilita' di visualizzazione nel portale.
* Il contenuto ancora presente verrà messo in stato cancellato.
* @param content Il contenuto da rimuovere.
* @throws ApsSystemException in caso di errore nell'accesso al db.
*/
public void removeOnLineContent(Content content) throws ApsSystemException;
/**
* Cancella un contenuto dal db.
* @param content Il contenuto da cancellare.
* @throws ApsSystemException in caso di errore nell'accesso al db.
*/
public void deleteContent(Content content) throws ApsSystemException;
/**
* Carica una lista di identificativi di contenuti publici in base ai parametri immessi.
* @param contentType Il codice dei tipi di contenuto da cercare.
* @param categories La categorie dei contenuti da cercare.
* @param filters L'insieme dei filtri sugli attibuti, su cui la ricerca deve essere effettuata.
* @param userGroupCodes I codici dei gruppi utenti dell'utente richiedente la lista.
* Se la collezione è vuota o nulla, gli identificativi di contenuto erogati saranno
* relativi al gruppo definito "ad accesso libero". Nel caso nella collezione sia presente
* il codice del gruppo degli amministratori, non sarà applicato alcun il filtro sul gruppo.
* @return La lista degli id dei contenuti cercati.
* @throws ApsSystemException in caso di errore nell'accesso al db.
*/
public List<String> loadPublicContentsId(String contentType, String[] categories, EntitySearchFilter[] filters,
Collection<String> userGroupCodes) throws ApsSystemException;
/**
* Carica una lista di identificativi di contenuti publici in base ai parametri immessi.
* @param categories La categorie dei contenuti da cercare.
* @param filters L'insieme dei filtri sugli attibuti, su cui la ricerca deve essere effettuata.
* @param userGroupCodes I codici dei gruppi utenti dell'utente richiedente la lista.
* Se la collezione è vuota o nulla, gli identificativi di contenuto erogati saranno
* relativi al gruppo definito "ad accesso libero". Nel caso nella collezione sia presente
* il codice del gruppo degli amministratori, non sarà applicato alcun il filtro sul gruppo.
* @return La lista degli id dei contenuti cercati.
* @throws ApsSystemException in caso di errore nell'accesso al db.
*/
public List<String> loadPublicContentsId(String[] categories, EntitySearchFilter[] filters,
Collection<String> userGroupCodes) throws ApsSystemException;
/**
* Carica una lista di identificativi di contenuti in base ai parametri immessi.
* @param categories La categorie dei contenuti da cercare.
* @param filters L'insieme dei filtri sugli attibuti, su cui la ricerca deve essere effettuata.
* @param userGroupCodes I codici dei gruppi utenti dell'utente richiedente la lista.
* Se la collezione è vuota o nulla, gli identificativi di contenuto erogati saranno
* relativi al gruppo definito "ad accesso libero". Nel caso nella collezione sia presente
* il codice del gruppo degli amministratori, non sarà applicato alcun filtro sul gruppo.
* @param onlyOwner Implica se il filtro sulla ricerca và applicato
* anche sui gruppi extra dei contenuti e non esclusivamente sul gruppo proprietario.
* @return La lista degli id dei contenuti cercati.
* @throws ApsSystemException in caso di errore nell'accesso al db.
* @deprecated From jAPS 2.0 version 2.0.9. Use {@link loadWorkContentsId} or {@link loadPublicContentsId}
*/
public List<String> loadContentsId(String[] categories, EntitySearchFilter[] filters,
Collection<String> userGroupCodes, boolean onlyOwner) throws ApsSystemException;
public List<String> loadWorkContentsId(EntitySearchFilter[] filters, Collection<String> userGroupCodes) throws ApsSystemException;
public List<String> loadWorkContentsId(String[] categories, EntitySearchFilter[] filters, Collection<String> userGroupCodes) throws ApsSystemException;
/**
* Restituisce la lista di tutti identificativi dei contenuti.
* @return La lista di tutti identificativi dei contenuti.
* @throws ApsSystemException In caso di errore
* @deprecated From jAPS 2.0 version 2.0.9, use searchId(EntitySearchFilter[]) method
*/
public List<String> getAllContentsId() throws ApsSystemException;
/**
* Restituisce lo stato del servizio.
* @return Lo stato del servizio.
* @deprecated From jAPS 2.0 version 2.0.9, use getStatus
*/
public int getState();
/**
* Identificativo stato servizio: stato pronto.
* @deprecated From jAPS 2.0 version 2.0.9, use {@link IEntityManager} constants
*/
public static final int ID_STATE_READY = STATUS_READY;
/**
* Identificativo stato servizio: stato ricaricamento referenze in progress.
* @deprecated From jAPS 2.0 version 2.0.9, use {@link IEntityManager} constants
*/
public static final int ID_RELOAD_REFERENCES_IN_PROGRESS = STATUS_RELOADING_REFERENCES_IN_PROGRESS;
public static final String CONTENT_DESCR_FILTER_KEY = "descr";
public static final String CONTENT_STATUS_FILTER_KEY = "status";
public static final String CONTENT_CREATION_DATE_FILTER_KEY = "created";
public static final String CONTENT_MODIFY_DATE_FILTER_KEY = "modified";
public static final String CONTENT_ONLINE_FILTER_KEY = "online";
public static final String CONTENT_MAIN_GROUP_FILTER_KEY = "maingroup";
public static final String CONTENT_CURRENT_VERSION_FILTER_KEY = "currentversion";
public static final String CONTENT_LAST_EDITOR_FILTER_KEY = "lasteditor";
}