/* Index ECM Engine - A system for managing the capture (when created
* or received), classification (cataloguing), storage, retrieval,
* revision, sharing, reuse and disposition of documents.
*
* Copyright (C) 2008 Regione Piemonte
* Copyright (C) 2008 Provincia di Torino
* Copyright (C) 2008 Comune di Torino
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2,
* or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
*/
package it.doqui.index.ecmengine.business.publishing.backoffice;
import it.doqui.index.ecmengine.dto.AclRecord;
import it.doqui.index.ecmengine.dto.Node;
import it.doqui.index.ecmengine.dto.OperationContext;
import it.doqui.index.ecmengine.dto.backoffice.AclListParams;
import it.doqui.index.ecmengine.dto.backoffice.DataArchive;
import it.doqui.index.ecmengine.dto.backoffice.ExportedContent;
import it.doqui.index.ecmengine.dto.backoffice.Group;
import it.doqui.index.ecmengine.dto.backoffice.IntegrityReport;
import it.doqui.index.ecmengine.dto.backoffice.Repository;
import it.doqui.index.ecmengine.dto.backoffice.SystemProperty;
import it.doqui.index.ecmengine.dto.backoffice.Tenant;
import it.doqui.index.ecmengine.dto.backoffice.User;
import it.doqui.index.ecmengine.dto.backoffice.model.CustomModel;
import it.doqui.index.ecmengine.dto.backoffice.model.ModelDescriptor;
import it.doqui.index.ecmengine.dto.backoffice.model.ModelMetadata;
import it.doqui.index.ecmengine.dto.backoffice.model.TypeMetadata;
import it.doqui.index.ecmengine.exception.EcmEngineException;
import it.doqui.index.ecmengine.exception.InvalidParameterException;
import it.doqui.index.ecmengine.exception.publishing.EcmEngineTransactionException;
import it.doqui.index.ecmengine.exception.publishing.InvalidCredentialsException;
import it.doqui.index.ecmengine.exception.publishing.NoDataExtractedException;
import it.doqui.index.ecmengine.exception.publishing.NoSuchNodeException;
import it.doqui.index.ecmengine.exception.publishing.PermissionDeniedException;
import it.doqui.index.ecmengine.exception.publishing.backoffice.AclEditException;
import it.doqui.index.ecmengine.exception.publishing.backoffice.GroupAlreadyExistsException;
import it.doqui.index.ecmengine.exception.publishing.backoffice.GroupCreateException;
import it.doqui.index.ecmengine.exception.publishing.backoffice.GroupDeleteException;
import it.doqui.index.ecmengine.exception.publishing.backoffice.GroupEditException;
import it.doqui.index.ecmengine.exception.publishing.backoffice.NoSuchGroupException;
import it.doqui.index.ecmengine.exception.publishing.backoffice.NoSuchUserException;
import it.doqui.index.ecmengine.exception.publishing.backoffice.TooManyNodesException;
import it.doqui.index.ecmengine.exception.publishing.backoffice.UserAlreadyExistsException;
import it.doqui.index.ecmengine.exception.publishing.backoffice.UserCreateException;
import it.doqui.index.ecmengine.exception.publishing.backoffice.UserDeleteException;
import it.doqui.index.ecmengine.exception.publishing.backoffice.UserUpdateException;
import java.rmi.RemoteException;
/**
* <p>Interfaccia di business che raccoglie i servizi pubblici
* orchestrati che vengono esportati dall'ECMENGINE per le funzionalità
* di backoffice.</p>
*
* @author Doqui
*/
public interface EcmEngineBackofficeBusinessInterface {
/**
* Crea un nuovo utente sul repository.
*
* <p>
* Questo metodo esegue la creazione di un nuovo utente applicativo sul
* repository dell'ECMENGINE in accordo con i valori contenuti nell'istanza
* di {@link User} passata in input. Poiché non possono esistere sul
* repository più utenti con lo stesso username questo metodo
* potrebbe sollevare un'eccezione di tipo
* {@link it.doqui.index.ecmengine.exception.publishing.backoffice.UserAlreadyExistsException}.
* </p>
*
* <p>
* Se l'oggetto {@link User} contiene anche una password, questo metodo crea
* le infomazioni di autenticazione per l'utente applicativo.
* </p>
*
* <p>
* Il repository destinazione per la creazione dell'utente viene letto dal
* DTO {@link OperationContext}. Se il valore non è specificato la
* creazione è effettuata sul repository configurato come default.
* </p>
*
* <p>
* Nel DTO {@code User} può essere specificato un <i>home folder</i>
* per l'utente sotto forma di path. Il path specificato puo` rappresentare
* una delle seguenti:
* <ul>
* <li>la posizione in cui creare il folder, per esempio,
* "/app:company_home/app:user_homes" (tale path deve essere
* già presente nel repository)</li>
* <li>il nome del folder da creare nel formato
* {@code <path>/sys:<username>}, per esempio
* "/app:company_home/cm:doqui/cm:users/app:doquiuser" ({@code <path>}
* deve essere già presente nel repository)</li>
* </ul>
* </p>
*
* <p>
* <strong>NB:</strong> questo metodo crea un nuovo <i>home folder</i> per
* l'utente in una posizione predefinita non configurabile. Questo
* comportamento è voluto poiché tale folder non sarà
* mai accessibile direttamente all'utente applicativo.
* </p>
*
* @param nuovoUtente
* L'oggetto {@link User} contenente i dati del nuovo utente da
* creare.
* @param context
* L'oggetto {@link OperationContext} contenente i dati di
* autenticazione dell'amministratore che esegue la creazione del
* nuovo utente.
*
* @return Lo username univoco del nuovo utente creato.
*
* @throws InvalidParameterException
* Se uno o più parametri specificati sono inconsistenti.
* @throws InvalidCredentialsException
* Se vengono fornite credenziali di autenticazione errate.
* @throws UserCreateException
* Se si verifica un errore durante la creazione dell'utente (e
* la causa dell'errore non è la presenza di un utente
* con lo stesso username).
* @throws UserAlreadyExistsException
* Se l'utente di cui è stata richiesta la creazione
* esiste già.
* @throws PermissionDeniedException
* Se l'utente non ha permessi sufficienti per compiere
* l'operazione richiesta.
* @throws EcmEngineTransactionException
* Se si verifica un errore durante l'esecuzione della
* transazione.
* @throws RemoteException
* Se si verifica un errore durante la comunicazione.
*/
String createUser(User nuovoUtente, OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, UserCreateException, UserAlreadyExistsException,
EcmEngineTransactionException, PermissionDeniedException, RemoteException;
/**
* Aggiorna i metadati dell'utente specificato.
*
* @param utente L'oggetto {@link User} contenente i dati dell' utente da aggiornare.
* @param context L'oggetto {@link OperationContext} contenente i dati di autenticazione
* dell'amministratore che esegue la modifica dei metadati dell' utente.
*
* @throws InvalidParameterException Se uno o più parametri specificati sono inconsistenti.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws NoSuchUserException Se l'utente specificato non esiste.
* @throws UserUpdateException Se si verifica un errore durante la modifica dei metadati dell'utente (e
* la causa dell'errore non è l'assenza dell'utente).
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore durante la comunicazione.
*/
void updateUserMetadata(User utente,OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, UserUpdateException, NoSuchUserException,
EcmEngineTransactionException, PermissionDeniedException, RemoteException;
/**
* Restituisce la lista degli utenti sull'ECMENGINE.
*
* <p>Questo metodo esegue una ricerca degli utenti sull'ECMENGINE restituendo i risultati
* sotto forma di array di DTO {@link User}. Il parametro {@link User} passato in input
* permette di specificare il repository su cui effettuare la ricerca e i filtri da
* impostare sullo username dell'utente. </p>
*
* <p><strong>NB:</strong> l'unico campo utilizzato del DTO {@link User} utilizzato come filtro
* è il campo {@code userName} e permette di specificare il carattere '*' come
* wildcard. Se non viene specificato uno {@code userName} vengono cercati tutti gli utenti.</p>
*
* @param filter L'oggetto {@link User} da utilizzare come filtro.
* @param context L'oggetto {@link OperationContext} contenente i dati di autenticazione
* dell'amministratore che esegue la ricerca degli utenti.
*
* @return Un array di risultati sotto forma di oggetti {@link User}.
*
* @throws InvalidParameterException Se uno o più parametri specificati sono inconsistenti.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws EcmEngineException Se si verifica un errore durante l'esecuzione della ricerca.
* @throws NoDataExtractedException Se non viene trovato nessun risultato che corrisponde
* al filtro specificato.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore durante la comunicazione.
*/
User [] listAllUsers(User filter, OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, NoDataExtractedException, EcmEngineException,
EcmEngineTransactionException, RemoteException;
/**
* Ritorna i metadati dell'utente specificato.
*
* <p>Il parametro {@link User} passato in input permette di specificare il repository
* su cui effettuare la ricerca e il filtro da impostare sullo username dell'utente.
* Il campo del DTO {@link User} utilizzato come filtro è il campo {@code nomeUtente}.</p>
*
* @param filter L'oggetto {@link User} contenente il filtro utilizzato per la ricerca.
* @param context L'oggetto {@link OperationContext} contenente i dati di autenticazione
* dell'amministratore che esegue la ricerca dell'utente.
*
* @return Un oggetto {@link User}.
*
* @throws InvalidParameterException Se uno o più parametri specificati sono inconsistenti.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws NoDataExtractedException Se non viene trovato nessun risultato che corrisponde
* al filtro specificato.
* @throws EcmEngineException Se si verifica un errore durante la ricerca dei metadati
* dell'utente (e la causa dell'errore non è l'assenza dell'utente).
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore durante la comunicazione.
*/
User retrieveUserMetadata(User filter, OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, NoDataExtractedException, EcmEngineException,
EcmEngineTransactionException, PermissionDeniedException, RemoteException;
/**
* Crea un nuovo gruppo sul repository.
*
* <p>Questo metodo esegue la creazione di un nuovo gruppo applicativo sul repository dell'ECMENGINE
* utilizzando il nome specificato in input. Poiché non possono esistere
* sul repository più gruppi con lo stesso nome questo metodo potrebbe sollevare
* un'eccezione di tipo
* {@link it.doqui.index.ecmengine.exception.publishing.backoffice.GroupAlreadyExistsException}.
* </p>
*
* <p>Il repository destinazione per la creazione del gruppo viene letto dal DTO
* {@link Group}. Se il valore non è specificato la creazione è effettuata
* sul repository configurato come default.</p>
*
* @param nuovoGruppo L'oggetto {@link Group} corrispondente al nuovo gruppo da creare.
* @param gruppoPadre L'oggetto {@link Group} corrispondente al gruppo padre, oppure
* {@code null} se il nuovo gruppo deve essere un <i>gruppo root</i>.
* @param context L'oggetto {@link OperationContext} contenente i dati di autenticazione
* dell'amministratore che esegue la creazione del nuovo gruppo.
*
* @return Il nome del nuovo gruppo utente creato.
*
* @throws InvalidParameterException Se uno o più parametri specificati sono inconsistenti.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws GroupCreateException Se si verifica un errore durante la creazione del gruppo (e la
* causa dell'errore non è la presenza di un gruppo con lo stesso nome).
* @throws GroupAlreadyExistsException Se il gruppo di cui è stata richiesta la creazione
* esiste già.
* @throws NoSuchGroupException Se il gruppo padre specificato non esiste.
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore durante la comunicazione.
*/
String createGroup(Group nuovoGruppo, Group gruppoPadre, OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, GroupCreateException, GroupAlreadyExistsException,
EcmEngineTransactionException, NoSuchGroupException, PermissionDeniedException, RemoteException;
/**
* Aggiunge l'utente identificato dallo username univoco fornito in input al gruppo
* specificato.
*
* <p>Questo metodo associa un utente del repository ECMENGINE ad un gruppo specificato. Sia l'utente
* che il gruppo devono esistere già sul repository. Se uno dei due non è presente
* questo metodo può sollevare le eccezioni
* {@link it.doqui.index.ecmengine.exception.publishing.backoffice.NoSuchUserException} oppure
* {@link it.doqui.index.ecmengine.exception.publishing.backoffice.NoSuchGroupException}, a seconda dei casi.
* </p>
*
* @param utente L'oggetto {@link User} corrispondente all'utente.
* @param gruppo L'oggetto {@link Group} corrispondente al gruppo a cui aggiungere l'utente.
* @param context L'oggetto {@link OperationContext} contenente i dati di
* autenticazione dell'amministratore che esegue l'aggiunta al gruppo.
*
* @throws InvalidParameterException Se uno o più parametri specificati sono inconsistenti.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws GroupEditException Se si verifica un errore durante l'associazione dell'utente al gruppo
* (e la causa dell'errore non è l'assenza di uno dei due).
* @throws NoSuchUserException Se l'utente specificato non esiste.
* @throws NoSuchGroupException Se il gruppo specificato non esiste.
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore durante la comunicazione.
*/
void addUserToGroup(User utente, Group gruppo, OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, GroupEditException, NoSuchUserException, EcmEngineTransactionException,
NoSuchGroupException, PermissionDeniedException, RemoteException;
/**
* Rimuove l'utente identificato dallo username univoco fornito in input dal gruppo
* specificato.
*
* <p>Questo metodo rimuove un utente del repository ECMENGINE da un gruppo specificato. Sia l'utente
* che il gruppo devono esistere già sul repository. Se uno dei due non è presente
* questo metodo può sollevare le eccezioni
* {@link it.doqui.index.ecmengine.exception.publishing.backoffice.NoSuchUserException} oppure
* {@link it.doqui.index.ecmengine.exception.publishing.backoffice.NoSuchGroupException}, a seconda dei casi.
* </p>
*
* @param utente L'oggetto {@link User} corrispondente all'utente.
* @param gruppo L'oggetto {@link Group} corrispondente al gruppo da cui rimuovere l'utente.
* @param context L'oggetto {@link OperationContext} contenente i dati di
* autenticazione dell'amministratore che esegue la rimozione dal gruppo.
*
* @throws InvalidParameterException Se uno o più parametri specificati sono inconsistenti.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws GroupEditException Se si verifica un errore durante la rimozione dell'utente dal gruppo
* (e la causa dell'errore non è l'assenza di uno dei due).
* @throws NoSuchUserException Se l'utente specificato non esiste.
* @throws NoSuchGroupException Se il gruppo specificato non esiste.
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore durante la comunicazione.
*/
void removeUserFromGroup(User utente, Group gruppo, OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, GroupEditException, NoSuchUserException, EcmEngineTransactionException,
NoSuchGroupException, PermissionDeniedException, RemoteException;
/**
* Restituisce i dati degli utenti appartenenti al gruppo specificato.
*
* <p>Questo metodo restituisce una lista degli utenti che appartengono al gruppo specificato
* sul repository dell'ECMENGINE. Se il gruppo non esiste questo metodo può sollevare un'eccezione
* di tipo
* {@link it.doqui.index.ecmengine.exception.publishing.backoffice.NoSuchGroupException}.</p>
*
* <p><strong>NB:</strong> gli oggetti restituiti non contengono le password.</p>
*
* @param gruppo L'oggetto {@link Group} corrispondente al gruppo di cui si chiede
* la lista degli utenti.
* @param context L'oggetto {@link OperationContext} contenente i dati di
* autenticazione dell'amministratore che esegue la lettura.
*
* @return Un array di oggetti {@link User} contenente i dati degli utenti trovati nel gruppo
* specificato.
*
* @throws InvalidParameterException Se uno o più parametri specificati sono inconsistenti.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws EcmEngineException Se si verifica un errore durante la lettura della lista degli utenti (e
* la causa dell'errore non è l'assenza del gruppo).
* @throws NoSuchGroupException Se il gruppo specificato non esiste.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore durante la comunicazione.
*/
User [] listUsers(Group gruppo, OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, NoSuchGroupException, EcmEngineException, EcmEngineTransactionException,
RemoteException;
/**
* Permette di modificare la password dell'utente specificato.
* Il DTO utente{@link User} passato in input deve contenere la nuova password.
*
* @param utente L'oggetto {@link User} corrispondente all'utente.
* @param context L'oggetto {@link OperationContext} contenente i dati di
* autenticazione dell'amministratore che esegue la modifica della password.
*
* @throws InvalidParameterException Se uno o più parametri specificati sono inconsistenti.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws NoSuchUserException Se l'utente specificato non esiste.
* @throws UserUpdateException Se si verifica un errore durante la modifica della password dell'utente (e
* la causa dell'errore non è l'assenza dell'utente).
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore durante la comunicazione.
*/
void updateUserPassword(User utente, OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, UserUpdateException, NoSuchUserException, EcmEngineTransactionException,
PermissionDeniedException, RemoteException;
/**
* Elimina l'utente specificato.
*
* <p>Il repository destinazione per la creazione dell'utente viene letto dal DTO
* {@link User}. Se il valore non è specificato la creazione è effettuata
* sul repository configurato come default.</p>
*
* @param utente L'oggetto {@link User} corrispondente all'utente da eliminare.
* @param context L'oggetto {@link OperationContext} contenente i dati di
* autenticazione dell'amministratore che esegue l'eliminazione dell'utente.
*
* @throws InvalidParameterException Se uno o più parametri specificati sono inconsistenti.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws NoSuchUserException Se l'utente specificato non esiste.
* @throws UserDeleteException Se si verifica un errore durante l'eliminazione dell'utente (e
* la causa dell'errore non è l'assenza dell'utente).
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore durante la comunicazione.
*/
void deleteUser(User utente,OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, UserDeleteException, NoSuchUserException, EcmEngineTransactionException,
PermissionDeniedException, RemoteException;
/**
* Elimina il gruppo specificato.
*
* @param gruppo L'oggetto {@link Group} corrispondente al gruppo che si vuole eliminare.
* @param context L'oggetto {@link OperationContext} contenente i dati di
* autenticazione dell'amministratore che esegue l'eliminazione del gruppo.
*
* @throws InvalidParameterException Se uno o più parametri specificati sono inconsistenti.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws NoSuchGroupException Se il gruppo specificato non esiste.
* @throws GroupDeleteException Se si verifica un errore durante la modifica del gruppo (e
* la causa dell'errore non è l'assenza del gruppo).
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore durante la comunicazione.
*/
void deleteGroup(Group gruppo, OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, GroupDeleteException, NoSuchGroupException, EcmEngineTransactionException,
PermissionDeniedException, RemoteException;
/**
* Aggiunge i record di ACL specificati al nodo passato in input.
*
* <p>Questo metodo associa dei record di ACL ad un nodo specificato. Il nodo deve esistere
* sul repository e nel caso in cui non esista questo metodo può sollevare
* l'eccezione
* {@link it.doqui.index.ecmengine.exception.publishing.NoSuchNodeException}.
* </p>
*
* <p><strong>NB:</strong> solo gli amministratori sono abilitati alla gestione delle ACL.</p>
*
* @param node Un'istanza del DTO {@link Node} che contiene l'ID univoco del nodo a cui
* associare i record di ACL.
* @param acls Un array di {@link AclRecord} che contiene le definizioni dei record di ACL.
* @param context L'oggetto {@link OperationContext} contenente le informazioni per
* l'autenticazione e l'esecuzione della chiamata al servizio.
*
* @throws InvalidParameterException Se uno o più parametri specificati sono inconsistenti.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws AclEditException Se si verifica un errore durante l'associazione delle ACL al nodo
* (e la causa non è l'assenza del nodo).
* @throws NoSuchNodeException Se il nodo specificato non esiste.
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore durante la comunicazione.
*/
void addAcl(Node node, AclRecord [] acls, OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, AclEditException, NoSuchNodeException, EcmEngineTransactionException,
PermissionDeniedException, RemoteException;
/**
* Rimuove i record di ACL specificati dal nodo passato in input.
*
* <p>Questo metodo rimuove dei record di ACL da un nodo specificato. Il nodo deve esistere
* sul repository e nel caso in cui non esista questo metodo può sollevare
* l'eccezione
* {@link it.doqui.index.ecmengine.exception.publishing.NoSuchNodeException}.
* </p>
*
* <p><strong>NB:</strong> solo gli amministratori sono abilitati alla gestione delle ACL.</p>
*
* @param node Un'istanza del DTO {@link Node} che contiene l'ID univoco del nodo da cui
* rimuovere i record di ACL.
* @param acls Un array di {@link AclRecord} che contiene le definizioni dei record di ACL.
* @param context L'oggetto {@link OperationContext} contenente le informazioni per
* l'autenticazione e l'esecuzione della chiamata al servizio.
*
* @throws InvalidParameterException Se uno o più parametri specificati sono inconsistenti.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws AclEditException Se si verifica un errore durante la rimozione delle ACL al nodo
* (e la causa non è l'assenza del nodo).
* @throws NoSuchNodeException Se il nodo specificato non esiste.
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore durante la comunicazione.
*/
void removeAcl(Node node, AclRecord [] acls, OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, AclEditException, NoSuchNodeException, EcmEngineTransactionException,
PermissionDeniedException, RemoteException;
/**
* Sostituisce i record di ACL specificati per il nodo passato in input.
*
* <p>Questo metodo associa dei record di ACL ad un nodo specificato, eliminando
* i record esistenti. Il nodo deve esistere sul repository e nel caso in cui non
* esista questo metodo può sollevare l'eccezione
* {@link it.doqui.index.ecmengine.exception.publishing.NoSuchNodeException}.
* </p>
*
* <p><strong>NB:</strong> solo gli amministratori sono abilitati alla gestione delle ACL.</p>
*
* @param node Un'istanza del DTO {@link Node} che contiene l'ID univoco del nodo a cui
* associare i record di ACL.
* @param acls Un array di {@link AclRecord} che contiene le definizioni dei record di ACL.
* @param context L'oggetto {@link OperationContext} contenente le informazioni per
* l'autenticazione e l'esecuzione della chiamata al servizio.
*
* @throws InvalidParameterException Se uno o più parametri specificati sono inconsistenti.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws AclEditException Se si verifica un errore durante l'associazione delle ACL al nodo
* (e la causa non è l'assenza del nodo).
* @throws NoSuchNodeException Se il nodo specificato non esiste.
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore durante la comunicazione.
*/
void updateAcl(Node node, AclRecord [] acls, OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, AclEditException, NoSuchNodeException, EcmEngineTransactionException,
PermissionDeniedException, RemoteException;
/**
* Restituisce la lista dei record di Access Control List associati al nodo specificato.
*
* <p>Questo metodo legge la ACL del nodo specificato e la restituisce sotto forma di
* array di oggetti {@link AclRecord}. Se il nodo non viene trovato il metodo solleva
* un'eccezione di tipo
* {@link it.doqui.index.ecmengine.exception.publishing.NoSuchNodeException}.</p>
*
* @param node Un'istanza del DTO {@link Node} che contiene l'ID univoco del nodo di cui
* si vuole leggere l'ACL.
* @param params Un'istanza del DTO {@link AclListParams} che specifica il comportamento
* del servizio.
* @param context L'oggetto {@link OperationContext} corrispondente all'amministratore
* che esegue la lettura della ACL.
*
* @return L'ACL del nodo specificato come array di {@link AclRecord}.
*
* @throws InvalidParameterException Se uno o più parametri specificati sono inconsistenti.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws AclEditException Se si verifica un errore in accesso ai dati sulle ACL.
* @throws NoSuchNodeException Se il nodo specificato non esiste.
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore durante la comunicazione.
*/
AclRecord [] listAcl(Node node, AclListParams params, OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, AclEditException, NoSuchNodeException, EcmEngineTransactionException,
PermissionDeniedException, RemoteException;
/**
* Imposta l'ereditarietà delle ACL sul nodo specificato.
*
* <p>Questo imposta il valore del flag di ereditarietà delle ACL sul nodo specificato.
* Se il nodo non viene trovato il metodo solleva un'eccezione di tipo
* {@link it.doqui.index.ecmengine.exception.publishing.NoSuchNodeException}.</p>
*
* <p><strong>NB:</strong> solo gli amministratori sono abilitati alla gestione delle ACL.</p>
*
* @param node Un'istanza del DTO {@link Node} che contiene l'ID univoco del nodo di cui
* si vuole impostare il flag.
* @param inherits Il valore ({@code true} o {@code false}) da impostare.
* @param context L'oggetto {@link OperationContext} corrispondente all'amministratore
* che esegue la lettura della ACL.
*
* @throws InvalidParameterException Se uno o più parametri specificati sono inconsistenti.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws AclEditException Se si verifica un errore durante l'impostazione del flag.
* @throws NoSuchNodeException Se il nodo specificato non esiste.
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore durante la comunicazione.
*/
void setInheritsAcl(Node node, boolean inherits, OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, AclEditException, NoSuchNodeException, EcmEngineTransactionException,
PermissionDeniedException, RemoteException;
/**
* Restituisce l'ereditarietà delle ACL sul nodo specificato.
*
* <p>Questo restituisce il valore del flag di ereditarietà delle ACL sul nodo specificato.
* Se il nodo non viene trovato il metodo solleva un'eccezione di tipo
* {@link it.doqui.index.ecmengine.exception.publishing.NoSuchNodeException}.</p>
*
* <p><strong>NB:</strong> solo gli amministratori sono abilitati alla gestione delle ACL.</p>
*
* @param node Un'istanza del DTO {@link Node} che contiene l'ID univoco del nodo di cui
* si vuole leggere il flag.
* @param context L'oggetto {@link OperationContext} corrispondente all'amministratore
* che esegue la lettura della ACL.
*
* @return Il valore ({@code true} o {@code false}) del flag di ereditarietà
*
* @throws InvalidParameterException Se uno o più parametri specificati sono inconsistenti.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws AclEditException Se si verifica un errore in accesso ai dati sulle ACL.
* @throws NoSuchNodeException Se il nodo specificato non esiste.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore durante la comunicazione.
*/
boolean isInheritsAcl(Node node, OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, AclEditException, NoSuchNodeException, EcmEngineTransactionException,
RemoteException;
/**
* Permette di eliminare le ACL definite su un nodo per l'authority
* specificata in input come filtro.
*
* <p>Il DTO filter{@link AclRecord} passato in input deve contenere nell'attributo
* {@code authority} l'utente o il gruppo di cui si vogliono eliminare le ACL. Se invece
* il valore di tale DTO filter e' {@code null} allora le ACL vengono eliminate per tutte
* le authority.</p>
*
* <p><strong>NB:</strong> solo gli amministratori sono abilitati alla gestione delle ACL.</p>
*
* @param node Un'istanza del DTO {@link Node} che contiene l'ID univoco del nodo di cui
* si vuole modificare le ACL.
* @param filter Un'istanza del DTO {@link AclRecord} che contiene l'authority utilizzata come filtro
* per la cancellazione delle ACL.
* @param context L'oggetto {@link OperationContext} corrispondente all'amministratore
* che esegue la modifica delle ACL.
*
* @throws InvalidParameterException Se uno o più parametri specificati sono inconsistenti.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws AclEditException Se si verifica un errore in accesso ai dati sulle ACL.
* @throws NoSuchNodeException Se il nodo specificato non esiste.
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore durante la comunicazione.
*/
void resetAcl(Node node, AclRecord filter ,OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, AclEditException, NoSuchNodeException,
EcmEngineTransactionException, PermissionDeniedException, RemoteException;
/**
* Verifica l'integrita' del repository a partire dal nodo specificato. Il controllo
* verifica che il contenuto degli indici sia conforme al contenuto del db.
* Nel caso in cui il repository non sia integro, il metodo restituisce
* un array di {@link IntegrityReport} contenente tutti gli errori riscontrati e i nodi coinvolti.
*
* @param node Un'istanza del DTO {@link Node} che indica il nodo da cui partire per svolgere il
* controllo di integrità.
* @param context L'oggetto {@link OperationContext} corrispondente all'amministratore
* che esegue la verifica del repository.
*
* @return Un array di risultati sotto forma di oggetti {@link IntegrityReport}.
*
* @throws InvalidParameterException Se uno o più parametri specificati sono inconsistenti.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws NoSuchNodeException Se il nodo specificato non esiste.
* @throws TooManyNodesException Se la ricerca dei nodi da verificare restituisce troppi risultati.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore durante la comunicazione.
*/
IntegrityReport [] checkRepositoryIntegrity(Node node, OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, NoSuchNodeException, TooManyNodesException,
EcmEngineTransactionException, RemoteException;
/**
* Importa un archivio con i contenuti da creare sul sistema.
*
* @param data Il {@link DataArchive} con i contenuti da importare.
* @param parent Un'istanza del DTO {@link Node} che contiene l'informazione sul nodo
* sotto il quale importare i contenuti.
* @param context L'{@link OperationContext} contenente i dati di autenticazione e le
* altre infomazioni di contesto per la chiamata.
*
* @throws InvalidParameterException Se uno dei parametri in input non è valido.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws NoSuchNodeException Se il nodo specificato non esiste.
* @throws EcmEngineException Se si verifica un errore inatteso durante l'importazione
* dell'archivio.
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore di comunicazione durante l'operazione.
*/
void importDataArchive(DataArchive data, Node parent, OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, NoSuchNodeException,
EcmEngineTransactionException, EcmEngineException,
PermissionDeniedException, RemoteException;
/**
* Metodo che restituisce le system property della piattaforma.
*
* @param context L'{@link OperationContext} contenente i dati di autenticazione e le
* altre infomazioni di contesto per la chiamata.
*
* @return Un array di oggetti {@link SystemProperty}.
*
* @throws InvalidParameterException Se uno dei parametri in input non è valido.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws EcmEngineException Se si verifica un errore inatteso durante l'esecuzione.
* @throws RemoteException Se si verifica un errore di comunicazione durante l'operazione.
*/
SystemProperty [] getSystemProperties(OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, EcmEngineException, RemoteException;
/**
* Restituisce i metadati del content model specificato in input.
*
* @param modelDescriptor L'oggetto {@link ModelDescriptor} corrispondente al modello richiesto.
* @param context L'{@link OperationContext} contenente i dati di autenticazione e le
* altre infomazioni di contesto per la chiamata.
*
* @return Un oggetto {@code ModelMetadata} contenente i metadati del content model.
*
* @throws InvalidParameterException Se uno dei parametri in input non è valido.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws NoDataExtractedException Se non esiste alcun modello corrispondente al descrittore specificato.
* @throws EcmEngineException Se si verifica un errore inatteso durante l'esecuzione.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore di comunicazione durante l'operazione.
*/
ModelMetadata getModelDefinition(ModelDescriptor modelDescriptor, OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, NoDataExtractedException, EcmEngineTransactionException,
EcmEngineException, RemoteException;
/**
* Restituisce i metadati del tipo specificato in input.
*
* @param typeDescriptor L'oggetto {@link ModelDescriptor} corrispondente al tipo richiesto.
* @param context L'{@link OperationContext} contenente i dati di autenticazione e le
* altre infomazioni di contesto per la chiamata.
*
* @return Un oggetto {@code TypeMetadata} contenente i metadati del tipo.
*
* @throws InvalidParameterException Se uno dei parametri in input non è valido.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws NoDataExtractedException Se non esiste alcun tipo corrispondente al descrittore specificato.
* @throws EcmEngineException Se si verifica un errore inatteso durante l'esecuzione.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore di comunicazione durante l'operazione.
*/
TypeMetadata getTypeDefinition(ModelDescriptor typeDescriptor, OperationContext context)
throws InvalidParameterException, NoDataExtractedException, EcmEngineException, EcmEngineTransactionException,
InvalidCredentialsException, RemoteException;
/**
* Restituisce i nomi di tutti i content model definiti completi di prefisso.
*
* @param context L'{@link OperationContext} contenente i dati di autenticazione e le
* altre infomazioni di contesto per la chiamata.
*
* @return Un array di {@link ModelDescriptor} contenente i descrittori dei modelli definiti nel content model
*
* @throws InvalidParameterException e uno dei parametri in input non è valido.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws EcmEngineException Se si verifica un errore inatteso durante l'esecuzione.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore di comunicazione durante l'operazione.
*/
ModelDescriptor [] getAllModelDescriptors(OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, EcmEngineTransactionException, EcmEngineException, RemoteException;
/**
* Restituisce la lista dei repository configurati sull'istanza di ECMENGINE.
*
* @param context L'{@link OperationContext} contenente i dati di autenticazione e le
* altre infomazioni di contesto per la chiamata.
*
* @return Un array di oggetti {@link Repository}.
*
* @throws InvalidParameterException Se uno dei parametri in input non è valido.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws EcmEngineException Se si verifica un errore inatteso durante l'esecuzione.
* @throws RemoteException Se si verifica un errore di comunicazione durante l'operazione.
*/
Repository [] getRepositories(OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, EcmEngineException, RemoteException;
/**
* Restituisce tutti i gruppi contenuti nel gruppo specificato.
*
* @param parentGroup L'oggetto {@link Group} che rappresenta il gruppo padre.
* @param context L'{@link OperationContext} contenente i dati di autenticazione e le
* altre infomazioni di contesto per la chiamata.
*
* @return Un array di oggetti {@link Group}.
*
* @throws InvalidParameterException Se uno dei parametri in input non è valido.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws NoSuchGroupException Se il gruppo specificato non esiste.
* @throws EcmEngineException Se si verifica un errore inatteso durante l'esecuzione.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore di comunicazione durante l'operazione.
*/
Group [] listGroups(Group parentGroup, OperationContext context)
throws InvalidParameterException, InvalidCredentialsException, NoSuchGroupException, EcmEngineTransactionException,
EcmEngineException, RemoteException;
/**
* Restituisce tutti i gruppi che corrispondo al filtro specificato.
*
* @param filter L'oggetto {@link Group} contenente il filtro di ricerca (specificato nell'attributo {@code name}).
* @param context L'{@link OperationContext} contenente i dati di autenticazione e le
* altre infomazioni di contesto per la chiamata.
*
* @return Un array di oggetti {@link Group}.
*
* @throws InvalidParameterException Se uno dei parametri in input non è valido.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws EcmEngineException Se si verifica un errore inatteso durante l'esecuzione.
* @throws NoDataExtractedException Se non viene trovato nessun risultato che corrisponde
* al filtro specificato.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws RemoteException Se si verifica un errore di comunicazione durante l'operazione.
*/
Group [] listAllGroups(Group filter, OperationContext context)
throws InvalidParameterException, EcmEngineTransactionException, InvalidCredentialsException, EcmEngineException,
NoDataExtractedException, RemoteException;
/**
* Crea un tenant (repository logico) con i dati specificati.
*
* @param tenant Un oggetto {@code Tenant} contenente i metadati del tenant.
* @param context L'{@link OperationContext} contenente i dati di autenticazione e le
* altre infomazioni di contesto per la chiamata.
*
* @throws InvalidParameterException Se uno dei parametri in input non è valido.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineException Se si verifica un errore inatteso durante l'esecuzione.
* @throws RemoteException Se si verifica un errore di comunicazione durante l'operazione.
*/
void createTenant(Tenant tenant, OperationContext context)
throws InvalidParameterException, EcmEngineTransactionException, InvalidCredentialsException, PermissionDeniedException, EcmEngineException, RemoteException;
/**
* Abilita l'accesso ad un tenant precedentemente disabilitato.
*
* <p><strong>NB:</strong>Il parametro enabled del DTO Tenant non viene considerato</p>
*
* @param tenant Un oggetto {@code Tenant} contenente i metadati del tenant.
* @param context L'{@link OperationContext} contenente i dati di autenticazione e le
* altre infomazioni di contesto per la chiamata.
*
* @throws InvalidParameterException Se uno dei parametri in input non è valido.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineException Se si verifica un errore inatteso durante l'esecuzione.
* @throws RemoteException Se si verifica un errore di comunicazione durante l'operazione.
*/
void enableTenant(Tenant tenant, OperationContext context)
throws InvalidParameterException, EcmEngineTransactionException, InvalidCredentialsException, PermissionDeniedException, EcmEngineException, RemoteException;
/**
* Disabilita l'accesso ad un tenant.
*
* <p><strong>NB:</strong>Il parametro enabled del DTO Tenant non viene considerato</p>
*
* @param tenant Un oggetto {@code Tenant} contenente i metadati del tenant.
* @param context L'{@link OperationContext} contenente i dati di autenticazione e le
* altre infomazioni di contesto per la chiamata.
*
* @throws InvalidParameterException Se uno dei parametri in input non è valido.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineException Se si verifica un errore inatteso durante l'esecuzione.
* @throws RemoteException Se si verifica un errore di comunicazione durante l'operazione.
*/
void disableTenant(Tenant tenant, OperationContext context)
throws InvalidParameterException, EcmEngineTransactionException, InvalidCredentialsException, PermissionDeniedException, EcmEngineException, RemoteException;
/**
* @param context L'{@link OperationContext} contenente i dati di autenticazione e le
* altre infomazioni di contesto per la chiamata.
*
* @return Un array di risultati sotto forma di oggetti {@link Tenant}.
*
* @throws InvalidParameterException Se uno dei parametri in input non è valido.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws NoDataExtractedException Se non viene trovato nessun risultato che corrisponde
* al filtro specificato.
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineException Se si verifica un errore inatteso durante l'esecuzione.
* @throws RemoteException Se si verifica un errore di comunicazione durante l'operazione.
*/
Tenant[] getAllTenants(OperationContext context)
throws InvalidParameterException, EcmEngineTransactionException, InvalidCredentialsException, NoDataExtractedException, PermissionDeniedException, EcmEngineException, RemoteException;
/**
* Restituisce i metadati realtivi al tenant specificato.
*
* @param tenant Un oggetto {@code Tenant} contenente il nome del tenant.
* @param context L'{@link OperationContext} contenente i dati di autenticazione e le
* altre infomazioni di contesto per la chiamata.
*
* @return Un oggetto di tipo {@link Tenant}.
*
* @throws InvalidParameterException Se uno dei parametri in input non è valido.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws NoDataExtractedException Se non viene trovato nessun risultato che corrisponde
* al filtro specificato.
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineException Se si verifica un errore inatteso durante l'esecuzione.
* @throws RemoteException Se si verifica un errore di comunicazione durante l'operazione.
*/
Tenant getTenant(Tenant tenant, OperationContext context)
throws InvalidParameterException, EcmEngineTransactionException, InvalidCredentialsException, NoDataExtractedException, PermissionDeniedException, EcmEngineException, RemoteException;
/**
* Verifica l'esistenza del tenant specificato.
*
* @param tenant Un oggetto {@code Tenant} contenente i metadati del tenant.
* @param context L'{@link OperationContext} contenente i dati di autenticazione e le
* altre infomazioni di contesto per la chiamata.
*
* @return {@code true} se il tenant esiste; {@code false} altrimenti.
*
* @throws InvalidParameterException Se uno dei parametri in input non è valido.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineException Se si verifica un errore inatteso durante l'esecuzione.
* @throws RemoteException Se si verifica un errore di comunicazione durante l'operazione.
*/
boolean tenantExists(Tenant tenant, OperationContext context)
throws InvalidParameterException, EcmEngineTransactionException, InvalidCredentialsException, PermissionDeniedException, EcmEngineException, RemoteException;
/**
* Cancella un tenant specificato.
*
* @param tenant Un oggetto {@code Tenant} contenente i metadati del tenant.
* @param context L'{@link OperationContext} contenente i dati di autenticazione e le
* altre infomazioni di contesto per la chiamata.
*
* @throws InvalidParameterException Se uno dei parametri in input non è valido.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineException Se si verifica un errore inatteso durante l'esecuzione.
* @throws RemoteException Se si verifica un errore di comunicazione durante l'operazione.
*/
void tenantDelete(Tenant tenant, OperationContext context)
throws InvalidParameterException, EcmEngineTransactionException, InvalidCredentialsException, PermissionDeniedException, EcmEngineException, RemoteException;
/**
* Restituisce l'elenco dei custom model esistenti.
*
* @param context L'{@link OperationContext} contenente i dati di autenticazione e le
* altre infomazioni di contesto per la chiamata.
*
* @return Un array di risultati sotto forma di oggetti {@link CustomModel}.
*
* @throws InvalidParameterException Se uno dei parametri in input non è valido.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws NoDataExtractedException Se non viene trovato nessun risultato che corrisponde
* al filtro specificato.
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineException Se si verifica un errore inatteso durante l'esecuzione.
* @throws RemoteException Se si verifica un errore di comunicazione durante l'operazione.
*/
CustomModel[] getAllCustomModels(OperationContext context)
throws InvalidParameterException, EcmEngineTransactionException, InvalidCredentialsException, NoDataExtractedException, PermissionDeniedException, EcmEngineException, RemoteException;
/**
* Predispone l'utilizzo del custom model specificato sul repository.
*
* @param model Un oggetto {@code CustomModel} contenente i metadati del custom model.
* @param context L'{@link OperationContext} contenente i dati di autenticazione e le
* altre infomazioni di contesto per la chiamata.
*
* @throws InvalidParameterException Se uno dei parametri in input non è valido.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineException Se si verifica un errore inatteso durante l'esecuzione.
* @throws RemoteException Se si verifica un errore di comunicazione durante l'operazione.
*/
void deployCustomModel(CustomModel model, OperationContext context)
throws InvalidParameterException, EcmEngineTransactionException, InvalidCredentialsException, PermissionDeniedException, EcmEngineException, RemoteException;
/**
* Elimina il custom model specificato dal repository rendendolo non più
* utilizzabile.
*
* @param model Un oggetto {@code CustomModel} contenente i metadati del custom model.
* @param context L'{@link OperationContext} contenente i dati di autenticazione e le
* altre infomazioni di contesto per la chiamata.
*
* @throws InvalidParameterException Se uno dei parametri in input non è valido.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineException Se si verifica un errore inatteso durante l'esecuzione.
* @throws RemoteException Se si verifica un errore di comunicazione durante l'operazione.
*/
void undeployCustomModel(CustomModel model, OperationContext context)
throws InvalidParameterException, EcmEngineTransactionException, InvalidCredentialsException, PermissionDeniedException, EcmEngineException, RemoteException;
/**
* Abilita l'utilizzo di un custom model precedentemente disabilitato.
*
* @param model Un oggetto {@code CustomModel} contenente i metadati del custom model.
* @param context L'{@link OperationContext} contenente i dati di autenticazione e le
* altre infomazioni di contesto per la chiamata.
*
* @throws InvalidParameterException Se uno dei parametri in input non è valido.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineException Se si verifica un errore inatteso durante l'esecuzione.
* @throws RemoteException Se si verifica un errore di comunicazione durante l'operazione.
*/
void activateCustomModel(CustomModel model, OperationContext context)
throws InvalidParameterException, EcmEngineTransactionException, InvalidCredentialsException, PermissionDeniedException, EcmEngineException, RemoteException;
/**
* Disabilita l'utilizzo del custom model specificato.
*
* @param model Un oggetto {@code CustomModel} contenente i metadati del custom model.
* @param context L'{@link OperationContext} contenente i dati di autenticazione e le
* altre infomazioni di contesto per la chiamata.
*
* @throws InvalidParameterException Se uno dei parametri in input non è valido.
* @throws EcmEngineTransactionException Se si verifica un errore durante l'esecuzione della transazione.
* @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate.
* @throws PermissionDeniedException Se l'utente non ha permessi sufficienti per compiere l'operazione richiesta.
* @throws EcmEngineException Se si verifica un errore inatteso durante l'esecuzione.
* @throws RemoteException Se si verifica un errore di comunicazione durante l'operazione.
*/
void deactivateCustomModel(CustomModel model, OperationContext context)
throws InvalidParameterException, EcmEngineTransactionException, InvalidCredentialsException, PermissionDeniedException, EcmEngineException, RemoteException;
/**
* Metodo di test per CSI Framework.
*
* @return {@code true} se le risorse sono disponibili, {@code false} altrimenti.
*
* @throws EcmEngineException Se si verifica un'eccezione durante il controllo.
* @throws RemoteException Se si verifica un errore di comunicazione durante l'operazione.
*/
ExportedContent exportTenant(Tenant t, OperationContext context)
throws InvalidParameterException, EcmEngineTransactionException, InvalidCredentialsException, PermissionDeniedException, EcmEngineException, RemoteException;
void importTenant(ExportedContent content,Tenant dest,OperationContext context)
throws InvalidParameterException, EcmEngineTransactionException, InvalidCredentialsException, PermissionDeniedException, EcmEngineException, RemoteException;
public boolean testResources()
throws EcmEngineException, RemoteException;
}