es.caib.seycon.ng.servei.ConfiguracioServiceImpl.java Source code

Java tutorial

Introduction

Here is the source code for es.caib.seycon.ng.servei.ConfiguracioServiceImpl.java

Source

// license-header java merge-point
/**
 * This is only generated once! It will never be overwritten.
 * You can (and have to!) safely modify it by hand.
 */
package es.caib.seycon.ng.servei;

import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.soffid.iam.doc.exception.NASException;
import com.soffid.iam.doc.nas.NASManager;

import es.caib.seycon.ng.comu.Configuracio;
import es.caib.seycon.ng.config.Config;
import es.caib.seycon.ng.model.BlobConfigurationEntity;
import es.caib.seycon.ng.model.BlobConfigurationEntityDao;
import es.caib.seycon.ng.model.ConfiguracioEntity;
import es.caib.seycon.ng.model.ConfiguracioEntityDao;
import es.caib.seycon.ng.model.TipusDadaEntityDao;
import es.caib.seycon.ng.model.Parameter;

/**
 * @see es.caib.seycon.ng.servei.ConfiguracioService
 */
public class ConfiguracioServiceImpl extends es.caib.seycon.ng.servei.ConfiguracioServiceBase {

    protected Collection<Configuracio> handleGetParametres() throws Exception {
        List<ConfiguracioEntity> col = this.getConfiguracioEntityDao().loadAll();
        return getConfiguracioEntityDao().toConfiguracioList(col);
    }

    /**
     * Method that implements the functionality to reconfigure NAS.
     * @param configuracio
     * @throws InstantiationException
     * @throws IllegalAccessException
     * @throws ClassNotFoundException
     * @throws NASException
     */
    private void reconfigureNAS(Configuracio configuracio)
            throws InstantiationException, IllegalAccessException, ClassNotFoundException, NASException {
        try {
            if (checkAllConfigurationSet(configuracio)) {
                NASManager.getInstance();
                NASManager.loadConfiguration();
            }
        }

        catch (NASException ex) {
            Log log = LogFactory.getLog(getClass());
            log.warn(String.format("Document manager: parameter not defined: %1$s", //$NON-NLS-1$
                    configuracio.getCodi()));
        }
    }

    /**
     * Method that implements the functionality to check if all NAS configuration
     * parameters are defined.
     * @param configuracio
     * @return <code>TRUE</code> if all configuration parameters are set.
     * <code>FALSE</code> otherwise.
     */
    private boolean checkAllConfigurationSet(Configuracio configuracio) {
        boolean configSet = false;
        String docStrategy = System.getProperty("soffid.ui.docStrategy"); //$NON-NLS-1$
        String tempPath = System.getProperty("soffid.ui.docTempPath"); //$NON-NLS-1$

        if ((docStrategy != null) && (tempPath != null)) {
            if (docStrategy.equals("es.caib.bpm.nas.comm.LocalFileSystemStrategy") && //$NON-NLS-1$
                    configuracio.getCodi().equals("soffid.ui.docPath")) //$NON-NLS-1$
            {
                return true;
            }

            if ((docStrategy.equals("es.caib.bpm.nas.comm.FTPStrategy") || //$NON-NLS-1$
                    docStrategy.equals("es.caib.bpm.nas.comm.CIFSStrategy")) && //$NON-NLS-1$
                    (System.getProperty("soffid.ui.docUsername") != null) && //$NON-NLS-1$
                    (System.getProperty("soffid.ui.docUserPassword") != null) && //$NON-NLS-1$
                    (System.getProperty("soffid.ui.docServer") != null)) //$NON-NLS-1$
            {
                return true;
            }

            if (docStrategy.equals("es.caib.bpm.nas.comm.HTTPStrategy") && //$NON-NLS-1$
                    (System.getProperty("soffid.ui.docServer") != null)) //$NON-NLS-1$
            {
                return true;
            }
        }

        return configSet;
    }

    protected Configuracio handleCreate(Configuracio configuracio) throws Exception {
        ConfiguracioEntity configuracioEntity = getConfiguracioEntityDao().configuracioToEntity(configuracio);

        // Check configuration parameter
        System.setProperty(configuracio.getCodi(), configuracio.getValor()); //$NON-NLS-1$

        reconfigureNAS(configuracio);

        getConfiguracioEntityDao().create(configuracioEntity);
        configuracio.setId(new Long(configuracioEntity.getId().longValue()));

        if (configuracio.getCodiXarxa() == null) {
            System.setProperty(configuracio.getCodi(), configuracio.getValor());
        }

        return getConfiguracioEntityDao().toConfiguracio(configuracioEntity);
    }

    protected void handleDelete(Configuracio configuracio) throws Exception {
        ConfiguracioEntity configuracioEntity = getConfiguracioEntityDao().configuracioToEntity(configuracio);
        boolean toRemove = configuracioEntity.getXarxa() == null;
        String codi = configuracioEntity.getCodi();
        getConfiguracioEntityDao().remove(configuracioEntity);
        if (toRemove) {
            System.getProperties().remove(codi);
        }
    }

    protected Configuracio handleUpdate(Configuracio configuracio) throws Exception {
        ConfiguracioEntity configuracioEntity = getConfiguracioEntityDao().configuracioToEntity(configuracio);

        System.setProperty(configuracio.getCodi(), configuracio.getValor()); //$NON-NLS-1$
        reconfigureNAS(configuracio);

        getConfiguracioEntityDao().update(configuracioEntity);
        configuracio = getConfiguracioEntityDao().toConfiguracio(configuracioEntity);

        if (configuracio.getCodiXarxa() == null) {
            System.setProperty(configuracio.getCodi(), configuracio.getValor());
        }
        return configuracio;
    }

    private Collection<ConfiguracioEntity> localFindConfiguracioByFiltre(String codi, String valor,
            String descripcio, String codiXarxa) {
        String query = "select configuracio " + //$NON-NLS-1$
                "from " + //$NON-NLS-1$
                "es.caib.seycon.ng.model.ConfiguracioEntity configuracio " + //$NON-NLS-1$
                "left join configuracio.xarxa xarxa " + //$NON-NLS-1$
                "where " + //$NON-NLS-1$
                "(:codi is null or configuracio.codi like :codi) and " + //$NON-NLS-1$
                "(:codiXarxa is null or xarxa.codi like :codiXarxa) and " + //$NON-NLS-1$
                "(:valor is null or configuracio.valor like :valor) and " + //$NON-NLS-1$
                "(:descripcio is null or configuracio.descripcio like :descripcio)"; //$NON-NLS-1$
        Parameter codiParameter = new Parameter("codi", codi); //$NON-NLS-1$
        Parameter codiXarxaParameter = new Parameter("codiXarxa", codiXarxa); //$NON-NLS-1$
        Parameter valorParameter = new Parameter("valor", valor); //$NON-NLS-1$
        Parameter descripcioParameter = new Parameter("descripcio", descripcio); //$NON-NLS-1$
        Parameter[] parameters = { codiParameter, codiXarxaParameter, valorParameter, descripcioParameter };
        return getConfiguracioEntityDao().query(query, parameters);
    }

    protected Collection<Configuracio> handleFindConfiguracioByFiltre(String codi, String valor, String descripcio,
            String codiXarxa) throws Exception {
        int limitResults = 0; // Limit of rows to obtain

        // Check limit defined
        if (System.getProperty("soffid.ui.maxrows") != null) //$NON-NLS-1$
        {
            limitResults = Integer.parseInt(System.getProperty("soffid.ui.maxrows")); //$NON-NLS-1$
        }

        if (codi != null && (codi.trim().compareTo("") == 0 || codi.trim().compareTo("%") == 0)) { //$NON-NLS-1$ //$NON-NLS-2$
            codi = null;
        }
        if (valor != null && (valor.trim().compareTo("") == 0 || valor.trim().compareTo("%") == 0)) { //$NON-NLS-1$ //$NON-NLS-2$
            valor = null;
        }
        if (descripcio != null && (descripcio.trim().compareTo("") == 0 || descripcio.trim().compareTo("%") == 0)) { //$NON-NLS-1$ //$NON-NLS-2$
            descripcio = null;
        }
        if (codiXarxa != null && (codiXarxa.trim().compareTo("") == 0 || codiXarxa.trim().compareTo("%") == 0)) { //$NON-NLS-1$ //$NON-NLS-2$
            codiXarxa = null;
        }

        Collection<ConfiguracioEntity> configuracions = localFindConfiguracioByFiltre(codi, valor, descripcio,
                codiXarxa);
        if (configuracions != null) {
            if ((limitResults != 0) && (configuracions.size() > limitResults)) {
                return getConfiguracioEntityDao().toConfiguracioList(configuracions).subList(0, limitResults);
            }

            return getConfiguracioEntityDao().toConfiguracioList(configuracions);
        }

        return new Vector();
    }

    protected Configuracio handleFindParametreByCodiAndCodiXarxa(String codiParametre, String codiXarxa)
            throws Exception {
        ConfiguracioEntity configuracioEntity = getConfiguracioEntityDao().findByCodiAndCodiXarxa(codiParametre,
                codiXarxa);
        if (configuracioEntity != null) {
            Configuracio configuracio = getConfiguracioEntityDao().toConfiguracio(configuracioEntity);
            return configuracio;
        }
        return null;
    }

    @SuppressWarnings("rawtypes")
    @Override
    protected byte[] handleGetBlob(String name) throws Exception {
        BlobConfigurationEntityDao dao = getBlobConfigurationEntityDao();
        Collection result = dao.findByName(name);
        if (result.isEmpty()) {
            return null;
        } else {
            BlobConfigurationEntity entry = (BlobConfigurationEntity) result.iterator().next();
            return entry.getValue();
        }
    }

    @SuppressWarnings("rawtypes")
    @Override
    protected void handleUpdateBlob(String name, byte[] data) throws Exception {
        BlobConfigurationEntityDao dao = getBlobConfigurationEntityDao();
        Collection result = dao.findByName(name);
        if (result.isEmpty()) {
            BlobConfigurationEntity entity = dao.newBlobConfigurationEntity();
            entity.setName(name);
            entity.setValue(data);
            entity.setVersio("<unknown>"); //$NON-NLS-1$
            dao.create(entity);
        } else {
            BlobConfigurationEntity entry = (BlobConfigurationEntity) result.iterator().next();
            entry.setValue(data);
            dao.update(entry);
        }
    }

    @SuppressWarnings("rawtypes")
    @Override
    protected void handleDeleteBlob(String name) throws Exception {
        BlobConfigurationEntityDao dao = getBlobConfigurationEntityDao();
        Collection result = dao.findByName(name);
        for (Iterator it = result.iterator(); it.hasNext();) {
            BlobConfigurationEntity entry = (BlobConfigurationEntity) it.next();
            dao.remove(entry);
        }
    }

    @Override
    protected void handleUpdateBlob(String name, byte[] data, String version) throws Exception {
        BlobConfigurationEntityDao dao = getBlobConfigurationEntityDao();
        Collection result = dao.findByName(name);
        if (result.isEmpty()) {
            BlobConfigurationEntity entity = dao.newBlobConfigurationEntity();
            entity.setName(name);
            entity.setValue(data);
            entity.setVersio(version); //$NON-NLS-1$
            dao.create(entity);
        } else {
            BlobConfigurationEntity entry = (BlobConfigurationEntity) result.iterator().next();
            entry.setValue(data);
            entry.setVersio(version);
            dao.update(entry);
        }
    }

    @Override
    protected String handleGetBlobVersion(String name) throws Exception {
        BlobConfigurationEntityDao dao = getBlobConfigurationEntityDao();
        Collection result = dao.findByName(name);
        if (result.isEmpty()) {
            return null;
        } else {
            BlobConfigurationEntity entity = (BlobConfigurationEntity) result.iterator().next();
            return entity.getVersio();
        }
    }

}