JIRA 4.2.4数据导入到Mantis测试用例(初步):
package com.capitalbio.soft.test.bug;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
public class JiraToMantisTest {
private static String driverName = "com.mysql.jdbc.Driver";
private static String url_jira = "jdbc:mysql://192.168.6.250:3306/jira?useUnicode=true&characterEncoding=utf-8";
private static String url_mantis = "jdbc:mysql://192.168.6.250:3306/mantis_jira?useUnicode=true&characterEncoding=utf-8";
private static String user = "root";
private static String password = "root";
/*
static {
try {
Class.forName(driverName);
} catch (Exception e) {
e.printStackTrace();
}
}
*/
public static BasicDataSource getDataSource(String url) {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(driverName);
dataSource.setUrl(url);
dataSource.setUsername(user);
dataSource.setPassword(password);
return dataSource;
}
@Test public void testJiraToMantis() {
final JdbcTemplate jiraJdbcTemplate = new JdbcTemplate(getDataSource(url_jira));
final JdbcTemplate mantisJdbcTemplate = new JdbcTemplate(getDataSource(url_mantis));
String sql = "select * from jiraissue ";
final String insert_mantis_bug_table_sql = "INSERT INTO mantis_bug_table ( project_id, reporter_id, handler_id, duplicate_id, priority, severity, reproducibility, STATUS, resolution, projection, eta, bug_text_id, os, os_build, platform, VERSION, fixed_in_version, build, profile_id, view_state, summary, sponsorship_total, sticky, target_version, category_id, date_submitted, due_date, last_updated ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);";
final String insert_mantis_bug_text_table_sql = "INSERT INTO mantis_bug_text_table (description, steps_to_reproduce, additional_information) VALUES (?, '', '')";
final AtomicInteger total = new AtomicInteger(0);
jiraJdbcTemplate.query(sql, new RowMapper<Object>(){
@Override public Object mapRow(ResultSet rs, int idx) throws SQLException {
final String description = null!=rs.getString("description") ? rs.getString("description") : "";
KeyHolder keyHolder = new GeneratedKeyHolder();
mantisJdbcTemplate.update(new PreparedStatementCreator() {
@Override public PreparedStatement createPreparedStatement(Connection conn) throws SQLException {
PreparedStatement ps = conn.prepareStatement(insert_mantis_bug_text_table_sql, Statement.RETURN_GENERATED_KEYS);
ps.setString(1, description);
return ps;
}
},keyHolder);
Integer bug_text_id = keyHolder.getKey().intValue();
/*.execute(String.format(insert_mantis_bug_text_table_sql,description), new PreparedStatementCallback<Integer>() {
@Override public Integer doInPreparedStatement(PreparedStatement ps) throws SQLException, DataAccessException {
ps.executeupdate
ResultSet rs = ps.getGeneratedKeys();
if(rs.next()) return rs.getInt(1);
return null;
}
});*/
BigDecimal proj_id = rs.getBigDecimal("PROJECT");
int project_id = (10000==proj_id.intValue()) ? 1:2;
Integer reporter_id = StringUtils.isNotBlank(rs.getString("reporter")) ? mantisJdbcTemplate.queryForInt("SELECT id FROM mantis_user_table WHERE username=?", rs.getString("reporter")) : null;
Integer handler_id = StringUtils.isNotBlank(rs.getString("assignee")) ? mantisJdbcTemplate.queryForInt("SELECT id FROM mantis_user_table WHERE username=?", rs.getString("assignee")) : null;
int duplicate_id = 0;
int priority = 30;
int severity = 50;
int reproducibility = 10;
int status = 90;
int resolution = 20;
int projection = 10;
int eta = 10;
// bug_text_id;
String os = "";
String os_build = "";
String platform = "";
String version = "";
String fixed_in_version = "";
String build = "";
int profile_id = 0;
int view_state = 10;
String summary = rs.getString("summary");
int sponsorship_total = 0;
int sticky = 0;
String target_version = "";
int category_id = 1;
String dateSubmitted = Long.toString(rs.getDate("CREATED").getTime());
int date_submitted = Integer.parseInt(dateSubmitted.substring(0, dateSubmitted.length()-3)); //1379820334;
int due_date = 1;
String lastUpdated = Long.toString(rs.getDate("UPDATED").getTime());
int last_updated = Integer.parseInt(lastUpdated.substring(0, lastUpdated.length()-3));//1379820334;
total.addAndGet(mantisJdbcTemplate.update(insert_mantis_bug_table_sql, project_id, reporter_id, handler_id, duplicate_id, priority, severity, reproducibility, status, resolution, projection, eta, bug_text_id, os, os_build, platform, version, fixed_in_version, build, profile_id, view_state, summary, sponsorship_total, sticky, target_version, category_id, date_submitted, due_date, last_updated));
return null;
}
});
System.out.println("----------------" + total.get());
}
@Test public void testDate() {
// 1384926801922 // 1384926882
String ret = Long.toString(new Date().getTime());
System.out.println(ret.substring(0, ret.length()-3));
}
}