package com.mossle.plm.web; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("plm") public class PlmExportController { private JdbcTemplate jdbcTemplate; @RequestMapping("export") public String export(Model model) { StringBuilder buff = new StringBuilder(); buff.append(this.exportTable("PLM_CATEGORY", "ID", "NAME", "PRIORITY", "STATUS", "CREATE_TIME", "USER_ID")); buff.append(this.exportTable("PLM_PROJECT", "ID", "CODE", "NAME", "LOGO", "SUMMARY", "WIKI_URL", "SOURCE_URL", "URL", "LEADER_ID", "PRIORITY", "STATUS", "CREATE_TIME", "USER_ID", "CATEGORY_ID")); buff.append(this.exportTable("PLM_VERSION", "ID", "NAME", "STATUS", "CREATE_TIME", "USER_ID", "PRIORITY", "PROJECT_ID")); buff.append(this.exportTable("PLM_CONFIG", "ID", "CODE", "NAME")); buff.append(this.exportTable("PLM_STEP", "ID", "CODE", "NAME", "PRIORITY", "ACTION", "CONFIG_ID")); buff.append(this.exportTable("PLM_SPRINT", "ID", "CODE", "NAME", "PRIORITY", "START_TIME", "END_TIME", "STATUS", "CONFIG_ID", "PROJECT_ID")); buff.append(this.exportTable("PLM_ISSUE", "ID", "TYPE", "NAME", "CONTENT", "SEVERITY", "CREATE_TIME", "START_TIME", "COMPLETE_TIME", "REPORTER_ID", "ASSIGNEE_ID", "STATUS", "STEP", "PROJECT_ID", "SPRINT_ID")); buff.append(this.exportTable("PLM_LOG", "ID", "TYPE", "USER_ID", "LOG_TIME", "CONTENT", "ISSUE_ID")); model.addAttribute("sql", buff.toString()); return "plm/export"; } String exportTable(String tableName, String... columnNames) { StringBuilder selectBuffer = new StringBuilder(); selectBuffer.append("SELECT "); StringBuilder columnBuffer = new StringBuilder(); int index = 0; for (String columnName : columnNames) { columnBuffer.append(columnName); if (index < (columnNames.length - 1)) { columnBuffer.append(","); } index++; } selectBuffer.append(columnBuffer).append(" FROM ").append(tableName); List<Map<String, Object>> list = jdbcTemplate.queryForList(selectBuffer .toString()); StringBuilder buff = new StringBuilder(); for (Map<String, Object> map : list) { buff.append("INSERT INTO ").append(tableName).append("(") .append(columnBuffer).append(") VALUES("); index = 0; for (String columnName : columnNames) { String value = (map.get(columnName) == null) ? "NULL" : ("'" + map.get(columnName).toString() .replace("'", "''") + "'"); buff.append(value); if (index < (columnNames.length - 1)) { buff.append(","); } index++; } buff.append(");\n"); } return buff.toString(); } @Resource public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } }