com.glaf.base.modules.sys.springmvc.SendBaseDataController.java Source code

Java tutorial

Introduction

Here is the source code for com.glaf.base.modules.sys.springmvc.SendBaseDataController.java

Source

/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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.glaf.base.modules.sys.springmvc;

import java.util.Date;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.glaf.base.modules.sys.model.SysUser;
import com.glaf.base.utils.RequestUtil;
import com.glaf.core.context.ContextFactory;
import com.glaf.core.domain.ColumnDefinition;
import com.glaf.core.domain.SystemParam;
import com.glaf.core.query.TablePageQuery;
import com.glaf.core.service.ISystemParamService;
import com.glaf.core.service.ITableDataService;
import com.glaf.core.service.ITableDefinitionService;
import com.glaf.core.service.ITablePageService;
import com.glaf.core.service.SysDataService;
import com.glaf.core.util.DBUtils;
import com.glaf.core.util.DateUtils;
import com.glaf.core.util.FileUtils;
import com.glaf.core.util.QueryUtils;
import com.glaf.core.util.StringTools;
import com.glaf.mail.MailMessage;
import com.glaf.mail.MailSender;

@Controller("/sys/sendMail")
public class SendBaseDataController {

    protected SysDataService sysDataService;

    protected ITableDataService tableDataService;

    protected ITableDefinitionService tableDefinitionService;

    protected ITablePageService tablePageService;

    protected ISystemParamService systemParamService;

    @javax.annotation.Resource
    public void setSysDataService(SysDataService sysDataService) {
        this.sysDataService = sysDataService;
    }

    @javax.annotation.Resource
    public void setTableDataService(ITableDataService tableDataService) {
        this.tableDataService = tableDataService;
    }

    @javax.annotation.Resource
    public void setTableDefinitionService(ITableDefinitionService tableDefinitionService) {
        this.tableDefinitionService = tableDefinitionService;
    }

    @javax.annotation.Resource
    public void setTablePageService(ITablePageService tablePageService) {
        this.tablePageService = tablePageService;
    }

    @javax.annotation.Resource
    public void setSystemParamService(ISystemParamService systemParamService) {
        this.systemParamService = systemParamService;
    }

    @RequestMapping
    public void sendMail(HttpServletRequest request) {
        SysUser login = RequestUtil.getLoginUser(request);
        if (login.isSystemAdmin()) {
            StringBuffer sb = new StringBuffer();
            JSONArray result = null;
            SystemParam param = systemParamService.getSystemParam("sys_table");
            if (param != null && StringUtils.isNotEmpty(param.getTextVal())) {
                result = JSON.parseArray(param.getTextVal());
            }
            String dbType = request.getParameter("dbType");
            if (StringUtils.isNotEmpty(dbType) && result != null) {
                for (int index = 0, len = result.size(); index < len; index++) {
                    JSONObject json = result.getJSONObject(index);
                    String tablename = json.getString("tablename");
                    if (StringUtils.isNotEmpty(tablename)) {
                        List<ColumnDefinition> columns = DBUtils.getColumnDefinitions(tablename);
                        TablePageQuery query = new TablePageQuery();
                        query.tableName(tablename);
                        query.firstResult(0);
                        query.maxResults(5000);
                        int count = tablePageService.getTableCount(query);
                        if (count <= 5000) {
                            List<Map<String, Object>> rows = tablePageService.getTableData(query);
                            if (rows != null && !rows.isEmpty()) {
                                for (Map<String, Object> dataMap : rows) {
                                    Map<String, Object> lowerMap = QueryUtils.lowerKeyMap(dataMap);
                                    sb.append(" insert into ").append(tablename).append(" (");
                                    for (int i = 0, len2 = columns.size(); i < len2; i++) {
                                        ColumnDefinition column = columns.get(i);
                                        sb.append(column.getColumnName().toLowerCase());
                                        if (i < columns.size() - 1) {
                                            sb.append(", ");
                                        }
                                    }
                                    sb.append(" ) values (");
                                    for (int i = 0, len2 = columns.size(); i < len2; i++) {
                                        ColumnDefinition column = columns.get(i);
                                        Object value = lowerMap.get(column.getColumnName().toLowerCase());
                                        if (value != null) {
                                            if (value instanceof Short) {
                                                sb.append(value);
                                            } else if (value instanceof Integer) {
                                                sb.append(value);
                                            } else if (value instanceof Long) {
                                                sb.append(value);
                                            } else if (value instanceof Double) {
                                                sb.append(value);
                                            } else if (value instanceof String) {
                                                String str = (String) value;
                                                str = StringTools.replace(str, "'", "''");
                                                sb.append("'").append(str).append("'");
                                            } else if (value instanceof Date) {
                                                Date date = (Date) value;
                                                if (StringUtils.equalsIgnoreCase(dbType, "oracle")) {
                                                    sb.append(" to_date('").append(DateUtils.getDateTime(date))
                                                            .append("', 'yyyy-mm-dd hh24:mi:ss')");
                                                } else if (StringUtils.equalsIgnoreCase(dbType, "db2")) {
                                                    sb.append(" TO_DATE('").append(DateUtils.getDateTime(date))
                                                            .append("', ''YYY-MM-DD HH24:MI:SS')");
                                                } else {
                                                    sb.append("'").append(DateUtils.getDateTime(date)).append("'");
                                                }
                                            } else {
                                                String str = value.toString();
                                                str = StringTools.replace(str, "'", "''");
                                                sb.append("'").append(str).append("'");
                                            }
                                        } else {
                                            sb.append("null");
                                        }
                                        if (i < columns.size() - 1) {
                                            sb.append(", ");
                                        }
                                    }
                                    sb.append(");");
                                    sb.append(FileUtils.newline);
                                }
                            }
                        }
                        sb.append(FileUtils.newline);
                        sb.append(FileUtils.newline);
                    }
                }
            }
            if (sb.length() > 1000) {
                String mailTo = request.getParameter("mailTo");
                if (StringUtils.isNotEmpty(mailTo)) {
                    MailMessage mailMessage = new MailMessage();
                    mailMessage.setTo("mailTo");
                    mailMessage.setSubject("sys_data");
                    mailMessage.setContent(sb.toString());
                    mailMessage.setSupportExpression(false);
                    mailMessage.setSaveMessage(false);
                    MailSender mailSender = ContextFactory.getBean("mailSender");
                    try {
                        mailSender.send(mailMessage);
                    } catch (Exception ex) {
                    }
                }
            }
        }
    }

}