/* 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.massive; import java.rmi.RemoteException; import it.doqui.index.ecmengine.dto.Node; import it.doqui.index.ecmengine.dto.OperationContext; import it.doqui.index.ecmengine.dto.engine.management.Content; import it.doqui.index.ecmengine.dto.engine.search.ResultContent; import it.doqui.index.ecmengine.dto.engine.search.ResultContentData; 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.NoSuchNodeException; import it.doqui.index.ecmengine.exception.publishing.PermissionDeniedException; import it.doqui.index.ecmengine.exception.publishing.engine.management.DeleteException; import it.doqui.index.ecmengine.exception.publishing.engine.management.InsertException; import it.doqui.index.ecmengine.exception.publishing.engine.management.UpdateException; import it.doqui.index.ecmengine.exception.publishing.engine.management.ReadException; /** * <p>Interfaccia di business che raccoglie i servizi pubblici * orchestrati che vengono esportati dall'ECMENGINE per le operazioni massive * del repository.</p> * * @author Doqui */ public interface EcmEngineMassiveBusinessInterface { /** * Inserisce un insieme di contenuti generici come figli dei nodi specificati. * * @param parents Array di {@link Node} che rappresenta i padri dei nuovi contenuti che si vogliono creare. * @param contents Array di {@link Content} che descrive i nuovi contenuti da inserire. * @param context L'{@link OperationContext} contenente i dati di autenticazione e le * altre informazioni di contesto per la chiamata. * * @return Il {@link Node} che punta al nuovo contenuto creato. * * @throws InvalidParameterException Se uno dei parametri in input non è valido. * @throws InsertException Se si verifica un errore durante l'inserimento. * @throws NoSuchNodeException Se uno o pi� nodi padre specificati non esistono. * @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate. * @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'inserimento. */ public Node[] massiveCreateContent(Node[] parents, Content[] contents, OperationContext context) throws InvalidParameterException, InsertException, NoSuchNodeException, InvalidCredentialsException, PermissionDeniedException, EcmEngineTransactionException, RemoteException; /** * Aggiorna i metadati associati ad un insieme di contenuti sul repository dell'ECMENGINE. * * <p>Il DTO contenente i nuovi metadati deve specificare i nuovi valori in questo modo:</p> * <ul> * <li>Le property da rimuovere devono avere valore {@code null}.</li> * <li>Le property da aggiornare devono contenere i nuovi valori che saranno sovrascritti.</li> * <li>Le property da lasciare inalterate <strong>non</strong> devono essere specificate.</li> * <li>Gli aspect da aggiungere devono specificare le eventuali property da impostare.</li> * <li>Gli aspect da lasciare inalterati devono essere specificati senza nessuna property.</li> * <li>Gli aspect da rimuovere <strong>non</strong> devono essere specificati.</li> * </ul> * * @param nodes Array di {@link Node} che punta ai contenuti da modificare. * @param newContents Array di {@link Content} che definisce i nuovi dati da modificare. * @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 UpdateException Se si verifica un errore durante l'aggiornamento dei dati. * @throws NoSuchNodeException Se il nodo specificato in input non esiste. * @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate. * @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 la modifica. */ public void massiveUpdateMetadata(Node[] nodes, Content[] newContents, OperationContext context) throws InvalidParameterException, UpdateException, NoSuchNodeException, InvalidCredentialsException, PermissionDeniedException, EcmEngineTransactionException, RemoteException; /** * Restituisce i dati binari dei contenuti di un insieme di nodi. * @param nodes Array di DTO che rappresenta i nodi dei quali si vogliono ricevere i dati binari dei contenuti. * @param contents Array di DTO che che descrive i contenuti di cui si richiedono i dati binari. * @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 NoSuchNodeException Se il nodo specificato in input non esiste. * @throws ReadException Se si verifica un errore durante la lettura del contenuto. * @throws InvalidCredentialsException * @throws InvalidCredentialsException Se vengono fornite credenziali di autenticazione errate. * @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 la modifica. */ public ResultContentData[] massiveRetrieveContentData(Node[] nodes, Content[] contents, OperationContext context) throws InvalidParameterException, NoSuchNodeException, ReadException, InvalidCredentialsException, PermissionDeniedException, EcmEngineTransactionException, RemoteException; /** * Reperisce i metadati di un insieme di contenuti tramite gli UID. * * @param nodes L'array di {@link Node} che identifica i contenuti. * @param context L'{@link OperationContext} contenente i dati di autenticazione e le * altre infomazioni di contesto per la chiamata. * * @return Un array di DTO che rappresenta i metadati. * * @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 ReadException Se si verifica un problema durante la lettura dei metadati. * @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. */ public ResultContent[] massiveGetContentMetadata(Node[] nodes, OperationContext context) throws InvalidParameterException, NoSuchNodeException, ReadException, InvalidCredentialsException, PermissionDeniedException, EcmEngineTransactionException, RemoteException; public void massiveDeleteContent(Node[] nodes, OperationContext context)throws InvalidParameterException, NoSuchNodeException, DeleteException, InvalidCredentialsException, PermissionDeniedException,RemoteException, EcmEngineTransactionException; public boolean testResources() throws EcmEngineException, RemoteException; }