All Downloads are FREE. Search and download functionalities are using the official Maven repository.

templates.repository.DAOImpl.ftl Maven / Gradle / Ivy

Go to download

Maven plugin to generate Java classes from StoredProcedure and Functions in Database

There is a newer version: 1.8.20
Show newest version
<#if header>
/*
 * Copyright (C) 2019 Yadickson Soto
 *
 * 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 3 of the License, 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, see .
 */

package ${javaPackage}.repository;

<#list proc.parameters as parameter>
<#if parameter.object || parameter.array>
<#assign importConnectionUtils = 1>


<#list proc.outputParameters as parameter>
<#if parameter.date>
<#assign importDate = 1>
<#elseif parameter.clob>
<#assign importClobUtil = 1>
<#elseif parameter.blob>
<#assign importBlobUtil = 1>


<#list proc.arrayImports as parameter>
import ${javaPackage}.array.${parameter.javaTypeName}Builder;

<#list proc.parameters as parameter>
<#if parameter.resultSet || parameter.returnResultSet>
import ${javaPackage}.domain.${parameter.javaTypeName};


<#if proc.hasInput>
import ${javaPackage}.domain.${proc.className}IN;

<#if proc.hasOutput>
import ${javaPackage}.domain.${proc.className}OUT;

<#if !proc.functionInline>
import ${javaPackage}.repository.sp.${proc.className}SP;
<#else>
import ${javaPackage}.repository.sp.${proc.className}SqlQuery;

<#if importArrayUtil??>
import ${javaPackage}.util.ArrayUtil;

<#if importBlobUtil??>
import ${javaPackage}.util.BlobUtil;

<#if proc.checkResult>
import ${javaPackage}.util.CheckResult;

<#if importClobUtil??>
import ${javaPackage}.util.ClobUtil;

<#if importConnectionUtils??>
import ${javaPackage}.util.ConnectionUtil;

<#if importObjectUtil??>
import ${javaPackage}.util.ObjectUtil;

<#list proc.objectImports as parameter>
import ${javaPackage}.object.${parameter.javaTypeName}Builder;


<#if importConnectionUtils??>
import java.sql.Connection;

import java.sql.SQLException;

<#if importDate??>
import java.util.Date;

import java.util.HashMap;
<#if proc.hasResultSet>
import java.util.List;

import java.util.Map;

import javax.annotation.Resource;

<#if logger>
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


<#if importBlobUtil?? || proc.checkResult || importClobUtil?? || importConnectionUtils?? || importArrayUtil?? || importObjectUtil??>
import org.springframework.beans.factory.annotation.Autowired;


import org.springframework.stereotype.Repository;

/**
 * DAO implementation for <#if proc.function>function<#else>stored procedure.
 *
 * ${proc.fullName}
 *
 * @author @GENERATOR.NAME@
 * @version @GENERATOR.VERSION@
 */
@Repository
@SuppressWarnings({"unchecked"})
public final class ${proc.className}DAOImpl
        implements ${proc.className}DAO {

<#if logger>
    /**
     * Logger.
     */
    private static final Logger LOGGER
            = LoggerFactory.getLogger(${proc.className}DAOImpl.class);


<#list proc.arrayImports as parameter>
    /**
     * ${parameter.javaTypeName} builder utility.
     */
    @Autowired
    private ${parameter.javaTypeName}Builder ${parameter.javaTypeFieldName}Builder;


<#list proc.objectImports as parameter>
    /**
     * ${parameter.javaTypeName} builder utility.
     */
    @Autowired
    private ${parameter.javaTypeName}Builder ${parameter.javaTypeFieldName}Builder;


<#if importArrayUtil??>
    /**
     * Array utility.
     */
    @Autowired
    private ArrayUtil arrayUtil;


<#if importBlobUtil??>
    /**
     * Blob utility.
     */
    @Autowired
    private BlobUtil blobUtil;


<#if proc.checkResult>
    /**
     * Check result utility.
     */
    @Autowired
    private CheckResult checkResult;


<#if importClobUtil??>
    /**
     * Clob utility.
     */
    @Autowired
    private ClobUtil clobUtil;


<#if importConnectionUtils??>
    /**
     * The connection util.
     */
    @Autowired
    private ConnectionUtil connectionUtil;


<#if importObjectUtil??>
    /**
     * Object utility.
     */
    @Autowired
    private ObjectUtil objectUtil;


    /**
     * <#if proc.function>Function<#else>Stored procedure.
     *
     * ${proc.fullName}
     *
     */
    @Resource(name = "${proc.className}<#if !proc.functionInline>SP<#else>SqlQuery")
    private ${proc.className}<#if !proc.functionInline>SP<#else>SqlQuery <#if proc.function>function<#else>procedure;

    /**
     * Execute <#if proc.function>function<#else>stored procedure.
     *
     * ${proc.fullName}
     *
<#if proc.hasInput>
     * @param params input parameters

<#if proc.hasOutput>
     * @return output parameters

     * @throws SQLException if error.
     */
    @Override
    public <#if proc.hasOutput>${proc.className}OUT<#else>void execute(<#if proc.hasInput>
            final ${proc.className}IN params
    ) throws SQLException {

        Map in = new HashMap<<#if !diamond>String, Object>();
<#if proc.hasOutput>
        Map out;

<#if importConnectionUtils??>

        Connection connection = null;


        try {
<#if importConnectionUtils??>

            connection = connectionUtil.process();

<#list proc.inputParameters as parameter>
<#if parameter.array || parameter.object>
            Object ${parameter.fieldName};


<#list proc.inputParameters as parameter>
<#if parameter.object || parameter.array>

            ${parameter.fieldName} = ${parameter.javaTypeFieldName}Builder.process(
                    connection,
                    params.get${parameter.propertyName}()
            );




<#list proc.inputParameters as parameter>
<#if parameter.array || parameter.object>
            in.put("${parameter.prefix}${parameter.name}", ${parameter.fieldName});
<#else>
            in.put("${parameter.prefix}${parameter.name}", params.get${parameter.propertyName}());


<#if proc.hasInput>


            <#if proc.hasOutput>out = <#if proc.function>function<#else>procedure.execute(in);

        } catch (Exception ex) {
<#if logger>
            LOGGER.error(ex.getMessage(), ex);

            throw new SQLException(ex.getMessage(), "${successCode}", ex);
<#if importConnectionUtils??> 
        } finally {
            connectionUtil.release(connection);
        }
<#else>
        }

<#if proc.hasOutput>
<#if proc.checkResult>

        checkResult.check(out);


        ${proc.className}OUT result;
        result = new ${proc.className}OUT();

<#list proc.outputParameters as parameter>
<#if parameter.resultSet || parameter.returnResultSet>
        List<${parameter.javaTypeName}> ${parameter.fieldName};
<#else>
        ${parameter.javaTypeName} ${parameter.fieldName};



<#list proc.outputParameters as parameter>
<#if parameter.resultSet || parameter.returnResultSet>
        ${parameter.fieldName} = (List) out.get("${parameter.prefix}${parameter.name}");
<#elseif parameter.clob>
        ${parameter.fieldName} = clobUtil.process(out.get("${parameter.prefix}${parameter.name}"));
<#elseif parameter.blob>
        ${parameter.fieldName} = blobUtil.process(out.get("${parameter.prefix}${parameter.name}"));
<#else>
        ${parameter.fieldName} = (${parameter.javaTypeName}) out.get("${parameter.prefix}${parameter.name}");



<#list proc.outputParameters as parameter>
        result.set${parameter.propertyName}(${parameter.fieldName});


        return result;

    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy