com.baifendian.swordfish.dao.mapper.AdHocMapperProvider.java Source code

Java tutorial

Introduction

Here is the source code for com.baifendian.swordfish.dao.mapper.AdHocMapperProvider.java

Source

/*
 * Copyright (C) 2017 Baifendian Corporation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *          http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.baifendian.swordfish.dao.mapper;

import com.baifendian.swordfish.dao.enums.FlowStatus;
import com.baifendian.swordfish.dao.enums.SqlEngineType;
import com.baifendian.swordfish.dao.mapper.utils.EnumFieldUtil;
import java.util.Map;
import org.apache.ibatis.jdbc.SQL;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class AdHocMapperProvider {

    private static Logger logger = LoggerFactory.getLogger(AdHocMapperProvider.class.getName());

    private static final String TABLE_NAME = "ad_hocs";
    private static final String RESULT_TABLE_NAME = "ad_hoc_results";

    /**
     * ???
     *
     * @return sql?
     */
    public String insert(Map<String, Object> parameter) {
        return new SQL() {
            {
                INSERT_INTO(TABLE_NAME);
                VALUES("`name`", "#{adHoc.name}");
                VALUES("`project_id`", "#{adHoc.projectId}");
                VALUES("`owner`", "#{adHoc.owner}");
                VALUES("`parameter`", "#{adHoc.parameter}");
                VALUES("`proxy_user`", "#{adHoc.proxyUser}");
                VALUES("`type`", EnumFieldUtil.genFieldStr("adHoc.type", SqlEngineType.class));
                VALUES("`queue`", "#{adHoc.queue}");
                VALUES("`status`", EnumFieldUtil.genFieldStr("adHoc.status", FlowStatus.class));
                VALUES("`job_id`", "#{adHoc.jobId}");
                VALUES("`timeout`", "#{adHoc.timeout}");
                VALUES("`create_time`", "#{adHoc.createTime}");
                VALUES("`start_time`", "#{adHoc.startTime}");
                VALUES("`end_time`", "#{adHoc.endTime}");

            }
        }.toString();
    }

    /**
     * ??
     *
     * @param parameter
     * @return
     */
    public String selectProjectByExecId(Map<String, Object> parameter) {
        String sql = new SQL() {
            {
                SELECT("p.*");

                FROM(TABLE_NAME + " as a");

                JOIN("project p on a.project_id = p.id");

                WHERE("a.id = #{execId}");
            }
        }.toString();

        return sql;
    }

    /**
     * ?? <p>
     *
     * @return sql?
     */
    public String update(Map<String, Object> parameter) {
        return new SQL() {
            {
                UPDATE(TABLE_NAME);

                SET("`start_time` = #{adHoc.startTime}");
                SET("`end_time` = #{adHoc.endTime}");
                SET("`job_id` = #{adHoc.jobId}");
                SET("`status` = " + EnumFieldUtil.genFieldStr("adHoc.status", FlowStatus.class));

                WHERE("`id` = #{adHoc.id}");
            }
        }.toString();
    }

    /**
     * @param parameter
     * @return
     */
    public String updateStatus(Map<String, Object> parameter) {
        return new SQL() {
            {
                UPDATE(TABLE_NAME);

                SET("`status` = " + EnumFieldUtil.genFieldStr("adHoc.status", FlowStatus.class));

                WHERE("`id` = #{adHoc.id}");
            }
        }.toString();
    }

    /**
     * , ? id 
     *
     * @param parameter
     * @return
     */
    public String selectById(Map<String, Object> parameter) {
        return new SQL() {
            {
                SELECT("*");

                FROM(TABLE_NAME);

                WHERE("`id` = #{id}");
            }
        }.toString();
    }

    /**
     *  sql
     *
     * @param parameter
     * @return
     */
    public String selectResultById(Map<String, Object> parameter) {
        return new SQL() {
            {
                SELECT("*");

                FROM(RESULT_TABLE_NAME);

                WHERE("`exec_id` = #{execId}");
            }
        }.toString();
    }

    /**
     * query result by exec id and index
     *
     * @param parameter
     * @return
     */
    public String selectResultByIdAndIndex(Map<String, Object> parameter) {
        return new SQL() {
            {
                SELECT("ahr.*");
                SELECT("ah.name as name");

                FROM(RESULT_TABLE_NAME + " as ahr");
                JOIN(TABLE_NAME + " as ah on ahr.exec_id = ah.id");

                WHERE("ahr.exec_id = #{execId}");
                WHERE("ahr.index = #{index}");
            }
        }.toString();
    }

    /**
     * adhoc, ? name 
     *
     * @param parameter
     * @return
     */
    public String selectAdhocByName(Map<String, Object> parameter) {
        return new SQL() {
            {
                SELECT("*");

                FROM(TABLE_NAME);
                WHERE("`project_id` = #{projectId}");
                WHERE("`name` = #{name}");
                ORDER_BY("`create_time` desc");
            }
        }.toString();
    }

    /**
     * ?name?
     *
     * @param parameter
     * @return
     */
    public String deleteAdHocByName(Map<String, Object> parameter) {
        return new SQL() {
            {
                DELETE_FROM(TABLE_NAME);
                WHERE("`project_id` = #{projectId}");
                WHERE("`name` = #{name}");
            }
        }.toString();
    }
}