[Castore-commits] ExtractionMDAction.java NONE 1.1

mathieu grimault grimault-m at adullact1.hosting.cri74.org
Mar 5 Déc 12:30:07 CET 2006


Update of /cvsroot/castore/castore-struts/src/java/fr/emn/castor/struts/actions/documents
In directory adullact1:/tmp/cvs-serv25748/src/java/fr/emn/castor/struts/actions/documents

Added Files:
	ExtractionMDAction.java 
Log Message:
Intégration de l'import UNIMARC

--- NEW FILE: ExtractionMDAction.java ---
/*
 * $$Id$$
 *
 * Plateforme CASTORE
 * CeCILL Copyright (C) 2005-2006 by EMN
 * Made by Grimault Mathieu
 * Web site = http://www.emn.fr/castore
 * Contact = Cédric Dumas, e-mail = Cedric.Dumas at emn.fr
 *
 * Version 1.0 (1er mars 2005)
 *
 * Ce logiciel est un programme informatique servant à créer une plateforme
 * open-source de bibliothèque numérique XML pour Conserver, Valoriser et
 * Diffuser le patrimoine documentaire de votre institut.
 *
 * Ce logiciel est régi par la licence CeCILL soumise au droit français et
 * respectant les principes de diffusion des logiciels libres. Vous pouvez
 * utiliser, modifier et/ou redistribuer ce programme sous les conditions de la
 * licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA sur le site
 * "http://www.cecill.info". En contrepartie de l'accessibilité au code source
 * et des droits de copie, de modification et de redistribution accordés par
 * cette licence, il n'est offert aux utilisateurs qu'une garantie limitée. Pour
 * les mêmes raisons, seule une responsabilité restreinte pèse sur l'auteur du
 * programme, le titulaire des droits patrimoniaux et les concédants successifs.
 * A cet égard l'attention de l'utilisateur est attirée sur les risques associés
 * au chargement, à l'utilisation, à la modification et/ou au développement et à
 * la reproduction du logiciel par l'utilisateur étant donné sa spécificité de
 * logiciel libre, qui peut le rendre complexe à manipuler et qui le réserve
 * donc à des développeurs et des professionnels avertis possédant des
 * connaissances informatiques approfondies. Les utilisateurs sont donc invités
 * à charger et tester l'adéquation du logiciel à leurs besoins dans des
 * conditions permettant d'assurer la sécurité de leurs systèmes et ou de leurs
 * données et, plus généralement, à l'utiliser et l'exploiter dans les mêmes
 * conditions de sécurité. Le fait que vous puissiez accéder à cet en-tête
 * signifie que vous avez pris connaissance de la licence CeCILL, et que vous en
 * avez accepté les termes.
 *
 */

package fr.emn.castor.struts.actions.documents;

import java.util.Enumeration;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

import fr.emn.castor.documents.metier.unimarc.ExtractionUnimarc;
import fr.emn.castor.documents.metier.unimarc.UnimarcException;
import fr.emn.castor.struts.common.session.StrutsConstants;
import fr.emn.castor.struts.forms.documents.ExtractionMDForm;

/**
 * Extraction des métadonnées d'un motice UNIMARC vers une notice Castore.
 * Le mapping est réalisé via le fichier de description XML dans CASTORE_HOME/typeDoc
 * correspondant au document en cours de soumission.
 *
 * @author $Author$
 * @version $Revision$
 *
 */
public class ExtractionMDAction extends Action {
	
    /** le logger. */
    private static Log log = LogFactory.getLog(ExtractionMDAction.class);

    /**
     * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
     */
    public final ActionForward execute(
            final ActionMapping mapping, final ActionForm form,
            final HttpServletRequest request,
            final HttpServletResponse response) throws Exception {
    	// Récupération du formulaire
    	ExtractionMDForm extractionMDForm = (ExtractionMDForm)form;
    	ActionMessages errors = null;
    	
        // Récupération de l'id du document
        String idDoc = 
        	(String)request.getSession().getAttribute(
        			StrutsConstants.SESSION_SOUMISSION_INFOS_ID_DOC);

        if ("unimarc".equals(extractionMDForm.getImportation())) {
	        // Extraction des infos Unimarc -> Dublin Core        
	        try {
				ExtractionUnimarc eu = 
					new ExtractionUnimarc(
						idDoc, 
						extractionMDForm.getFormFile().getInputStream()
					);
				eu.extraire();
			} catch (UnimarcException e) {
				if (log.isDebugEnabled()) {
					log.debug(
						"Echec de la récupération des métadonnées " +
						"pour le document " + idDoc
					);
				}
				errors = new ActionErrors();
				errors.add(
					ActionMessages.GLOBAL_MESSAGE, 
					new ActionMessage(
						"Impossible de récupérer les métadonnées, " +
						"une erreur est survenue !"
					)
				);
				saveErrors(request, errors);
			} catch (Exception e) {
				log.error(
					"Une Exception a été levée : \n"+e, e
				);
				errors.add(
					ActionMessages.GLOBAL_MESSAGE, 
					new ActionMessage(
						"Impossible de récupérer les métadonnées, " +
						"une erreur est survenue !"
					)
				);
				saveErrors(request, errors);
			}
        } else {
        	// On a pas retrouvé le paramètre désignant l'extraction à réaliser
        	log.error(
        		"Impossible de retrouver le type d'extraction à effectuer"
        	);
        	errors.add(
				ActionMessages.GLOBAL_MESSAGE, 
				new ActionMessage(
					"Impossible de récupérer les métadonnées, " +
					"il existe un problème de paramétrage !"
				)
			);
			saveErrors(request, errors);
        }
        
        // libération des ressources
        if (extractionMDForm.getFormFile() != null) {
        	extractionMDForm.getFormFile().destroy();
        }
        
        return mapping.findForward("succes");
    }
}




Plus d'informations sur la liste de diffusion Castore-commits