Advertisement
Guest User

Untitled

a guest
Oct 21st, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.54 KB | None | 0 0
  1. import com.fasterxml.jackson.core.JsonProcessingException;
  2. import org.apache.poi.hssf.usermodel.HSSFSheet;
  3. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  4. import org.apache.poi.ss.usermodel.Row;
  5. import java.io.*;
  6. import java.nio.charset.StandardCharsets;
  7. import java.sql.*;
  8. import java.text.ParseException;
  9. import java.text.SimpleDateFormat;
  10. import java.util.*;
  11. import com.mashape.unirest.http.HttpResponse;
  12. import com.mashape.unirest.http.Unirest;
  13. import com.mashape.unirest.http.ObjectMapper;
  14. import com.mashape.unirest.http.exceptions.UnirestException;
  15. import static java.lang.Integer.parseInt;
  16.  
  17. public class Excel {
  18.  
  19. private static final String url = "jdbc:mysql://localhost:3306/userdb?verifyServerCertificate=false&useSSL=false&requireSSL=false&useLegacyDatetimeCode=false&amp&serverTimezone=UTC";
  20. private static final String user = "root";
  21. private static final String password = "root";
  22. private static String[] List = {"Имя", "Фамилия", "Отчество", "Возраст", "Пол", "Дата Рождения", "ИНН", "Почтовый индекс", "Страна", "Область", "Город", "Улица", "Дом", "Квартира"};
  23.  
  24. public static void main(String[] args) {
  25. HSSFWorkbook workbook = new HSSFWorkbook();
  26. HSSFSheet sheet = workbook.createSheet("Новый лист");
  27. int rowNum = 0;
  28. Row row = sheet.createRow(rowNum);
  29. for (int i = 0; i != List.length; ++i) {
  30. row.createCell(i).setCellValue(List[i]);
  31. }
  32. int size = 1 + (int) (Math.random()*30);
  33. List<Data> dataList = fillData(size);
  34. for (Data data : dataList) {
  35. createSheetHeader(sheet, ++rowNum, data);
  36. }
  37. File file = new File("Data.xls");
  38. try {
  39. System.setErr(new PrintStream(new File("log.txt")));
  40. FileOutputStream out = new FileOutputStream(file);
  41. workbook.write(out);
  42. } catch (Exception e) {
  43. e.printStackTrace();
  44. }
  45. System.err.println("Файл создан:" + file.getAbsolutePath());
  46. }
  47.  
  48. private static int randBetween(int start, int end){
  49. return start + (int) Math.round(Math.random()*(end - start));
  50. }
  51.  
  52. private static String read_file(String path, int line_number) {
  53. String fileContent = "";
  54. try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path), StandardCharsets.UTF_8))) {
  55. String sub;
  56. int i = 1;
  57. while ((sub = br.readLine()) != null) {
  58. if(i == line_number) {
  59. fileContent = sub;
  60. break;
  61. }
  62. ++i;
  63. }
  64. } catch (IOException e) {
  65. e.printStackTrace();
  66. }
  67. return fileContent;
  68. }
  69.  
  70. private static void write_name(Data data) {
  71. int number = randBetween(1, 30);
  72. if (randBetween(0, 1) == 1) {
  73. String name = read_file("src/main/resources/MaleName.txt", number);
  74. data.set_name(name);
  75. data.set_sex("М");
  76. } else {
  77. String name = read_file("src/main/resources/FemaleName.txt", number);
  78. data.set_name(name);
  79. data.set_sex("Ж");
  80. }
  81. }
  82.  
  83. private static void write_surname(Data data) {
  84. int number = randBetween(1, 30);
  85. if (data.get_sex().equals("М")) {
  86. String surname = read_file("src/main/resources/MaleSurname.txt", number);
  87. data.set_surname(surname);
  88. } else {
  89. String surname = read_file("src/main/resources/FemaleSurname.txt", number);
  90. data.set_surname(surname);
  91. }
  92. }
  93.  
  94. private static void write_patronymic(Data data){
  95. int number = randBetween(1, 30);
  96. if (data.get_sex().equals("М")) {
  97. String patronymic = read_file("src/main/resources/MalePatronymic.txt", number);
  98. data.set_patronymic(patronymic);
  99. } else {
  100. String patronymic = read_file("src/main/resources/FemalePatronymic.txt", number);
  101. data.set_patronymic(patronymic);
  102. }
  103. }
  104.  
  105. private static void write_country(Data data) {
  106. int number = randBetween(1, 30);
  107. String country = read_file("src/main/resources/Countries.txt", number);
  108. data.set_country(country);
  109. }
  110. private static void write_city(Data data) {
  111. int number = randBetween(1, 30);
  112. String city = read_file("src/main/resources/Cities.txt", number);
  113. data.set_city(city);
  114. }
  115.  
  116. private static void write_street(Data data) {
  117. int number = randBetween(1, 30);
  118. String street = read_file("src/main/resources/Streets.txt", number);
  119. data.set_street(street);
  120. }
  121.  
  122. private static void write_region(Data data) {
  123. int number = randBetween(1, 30);
  124. String region = read_file("src/main/resources/Regions.txt", number);
  125. data.set_region(region);
  126. }
  127.  
  128. private static void write_dob(Data data) {
  129. GregorianCalendar gc = new GregorianCalendar();
  130. int year = randBetween(1920, 2000);
  131. gc.set(Calendar.YEAR, year);
  132. int dayOfYear = randBetween(1, gc.getActualMaximum(Calendar.DAY_OF_YEAR));
  133. gc.set(Calendar.DAY_OF_MONTH, dayOfYear);
  134. data.set_dob(gc);
  135. }
  136.  
  137. //вычисление возраста
  138. private static void write_age(Data data) {
  139. Calendar calendar = Calendar.getInstance();
  140. int age = calendar.get(Calendar.YEAR) - data.get_dob().get(data.get_dob().YEAR);
  141. if (((data.get_dob().get(data.get_dob().MONTH)) - calendar.get(Calendar.MONTH) > 0) | (((data.get_dob().get(data.get_dob().MONTH)) - calendar.get(Calendar.MONTH) > 0) & ((data.get_dob().get(data.get_dob().DAY_OF_MONTH)) - calendar.get(Calendar.DAY_OF_MONTH) >= 0))) {
  142. data.set_age(age - 1);
  143. } else data.set_age(age);
  144. }
  145.  
  146. private static void write_postcode(Data data) {
  147. int number = randBetween(1000000, 10000000-1);
  148. data.set_postcode(number);
  149. }
  150.  
  151. private static void write_apartment(Data data) {
  152. int number = randBetween(1, 1000);
  153. data.set_apartment(number);
  154. }
  155.  
  156. private static void write_house(Data data) {
  157. int number = randBetween(1, 100);
  158. data.set_house(number);
  159. }
  160.  
  161. //генерация ИНН
  162. private static void write_itn(Data data) {
  163. int branch_number = randBetween(10, 51);
  164. long itn = 770000000000L + branch_number*100000000L;
  165. int k = 100;
  166. for (int i = 1; i <= 6; ++i) {
  167. int n = randBetween(0, 9);
  168. itn += n*k;
  169. k *= 10;
  170. }
  171. int[] array = new int[10];
  172. k = 1;
  173. for (int i = 0; i != 10; ++i) {
  174. array[i] = (int)(itn/100) % (10*k);
  175. k *= 10;
  176. }
  177. // коэфиценты для второго контрольного числа
  178. int [] coefficients2 = {7, 2, 4, 10, 3, 5, 9, 4, 6, 8};
  179. int sum2 = 0;
  180. for (int i = 0; i != 10; ++i) {
  181. sum2 += coefficients2[i] * array[i];
  182. }
  183. int num_kontrol2 = sum2 % 11;
  184. itn += num_kontrol2*10;
  185. // коэфиценты для первого контрольного числа
  186. int [] coefficients1 = {3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8};
  187. int sum1 = 0;
  188. for (int i = 0; i != 10; ++i) {
  189. sum1 += coefficients1[i] * array[i];
  190. }
  191. sum1 = coefficients1[10] * num_kontrol2;
  192. int num_kontrol1 = sum1 % 11;
  193. itn += num_kontrol1;
  194. data.set_itn(itn);
  195. }
  196.  
  197. private static List<Data> fillData(int size) {
  198. List<Data> data = new ArrayList<>();
  199. try {
  200. getObject(data, size);
  201. put_in_db(data);
  202. return data;
  203. } catch (UnirestException e) {
  204. e.printStackTrace();
  205. System.out.println("No connection");
  206. get_from_db(data);
  207. if (data.size() != 0)
  208. return data;
  209. for (int i = 0; i != size; ++i) {
  210. data.add(new Data());
  211. write_name(data.get(i));
  212. write_surname(data.get(i));
  213. write_patronymic(data.get(i));
  214. write_country(data.get(i));
  215. write_region(data.get(i));
  216. write_city(data.get(i));
  217. write_street(data.get(i));
  218. write_dob(data.get(i));
  219. write_age(data.get(i));
  220. write_postcode(data.get(i));
  221. write_apartment(data.get(i));
  222. write_house(data.get(i));
  223. write_itn(data.get(i));
  224. }
  225. return data;
  226. }
  227. }
  228. private static void createSheetHeader(HSSFSheet sheet, int rowNum, Data data) {
  229. Row row = sheet.createRow(rowNum);
  230. row.createCell(0).setCellValue(data.get_name());
  231. row.createCell(1).setCellValue(data.get_surname());
  232. row.createCell(2).setCellValue(data.get_patronymic());
  233. row.createCell(3).setCellValue(data.get_age());
  234. row.createCell(4).setCellValue(data.get_sex());
  235. row.createCell(5).setCellValue(data.get_dob().get(Calendar.DAY_OF_MONTH) + "-" + (data.get_dob().get(Calendar.MONTH) + 1) + "-" + data.get_dob().get(Calendar.YEAR));
  236. row.createCell(6).setCellValue(String.valueOf(data.get_itn()));
  237. row.createCell(7).setCellValue(data.get_postcode());
  238. row.createCell(8).setCellValue(data.get_country());
  239. row.createCell(9).setCellValue(data.get_region());
  240. row.createCell(10).setCellValue(data.get_city());
  241. row.createCell(11).setCellValue(data.get_street());
  242. row.createCell(12).setCellValue(data.get_house());
  243. row.createCell(13).setCellValue(data.get_apartment());
  244. }
  245. private static void getObject(List<Data> data, int size) throws UnirestException {
  246. Unirest.setObjectMapper(new ObjectMapper() {
  247. private com.fasterxml.jackson.databind.ObjectMapper jacksonObjectMapper
  248. = new com.fasterxml.jackson.databind.ObjectMapper();
  249.  
  250. public <T> T readValue(String value, Class<T> valueType) {
  251. try {
  252. return jacksonObjectMapper.readValue(value, valueType);
  253. } catch (IOException e) {
  254. throw new RuntimeException(e);
  255. }
  256. }
  257.  
  258. public String writeValue(Object value) {
  259. try {
  260. return jacksonObjectMapper.writeValueAsString(value);
  261. } catch (JsonProcessingException e) {
  262. throw new RuntimeException(e);
  263. }
  264. }
  265. });
  266. for (int i = 0; i < size; ++i) {
  267. HttpResponse<JData> response =
  268. Unirest.get("https://randus.org/api.php").asObject(JData.class);
  269. JData jdata = response.getBody();
  270. data.add(new Data());
  271. data.get(i).set_name(jdata.lname);
  272. data.get(i).set_surname(jdata.fname);
  273. data.get(i).set_patronymic(jdata.patronymic);
  274. data.get(i).set_sex(jdata.gender);
  275. data.get(i).set_postcode(parseInt(jdata.postcode));
  276. data.get(i).set_city(jdata.city);
  277. data.get(i).set_street(jdata.street);
  278. data.get(i).set_house(jdata.house);
  279. data.get(i).set_apartment(jdata.apartment);
  280. write_country(data.get(i));
  281. write_region(data.get(i));
  282. write_itn(data.get(i));
  283. write_dob(data.get(i));
  284. write_age(data.get(i));
  285. }
  286. }
  287. private static void put_in_db(List<Data> data){
  288. Connection connection;
  289. try {
  290. connection = DriverManager.getConnection(url, user, password);
  291. Statement stmt = connection.createStatement();
  292. for (int i = 0; i < data.size(); ++i) {
  293. String query = "INSERT INTO users_table(name, surname, patronymic, age, sex, dob, itn, postcode, country, city, street, house, apartment, region) VALUES('" + data.get(i).get_name() + "','" + data.get(i).get_surname() + "','" + data.get(i).get_patronymic()+ "','" + String.valueOf(data.get(i).get_age()) + "','"+ data.get(i).get_sex()+"','" + data.get(i).get_dob().get(Calendar.YEAR) + "-" + (data.get(i).get_dob().get(Calendar.MONTH) + 1) + "-" + data.get(i).get_dob().get(Calendar.DAY_OF_MONTH) + "','" + String.valueOf(data.get(i).get_itn()) + "','"+ String.valueOf(data.get(i).get_postcode()) + "','" + data.get(i).get_country() + "','" + data.get(i).get_city() + "','" + data.get(i).get_street() + "','" + String.valueOf(data.get(i).get_house()) + "','" + String.valueOf(data.get(i).get_apartment()) + "','" + data.get(i).get_region()+ "');";
  294. stmt.execute(query);
  295. }
  296. connection.close();
  297. } catch (SQLException e) {
  298. e.printStackTrace();
  299. }
  300.  
  301. }
  302. private static void get_from_db(List<Data> data){
  303. Connection connection;
  304. String query = "SELECT * FROM users_table";
  305. try {
  306. connection = DriverManager.getConnection(url, user, password);
  307. Statement stmt = connection.createStatement();
  308. ResultSet rs = stmt.executeQuery(query);
  309.  
  310. for (int i = 0; rs.next(); ++i) {
  311. data.add(new Data());
  312. data.get(i).set_name(rs.getString("name"));
  313. data.get(i).set_surname(rs.getString("surname"));
  314. data.get(i).set_patronymic(rs.getString("patronymic"));
  315. data.get(i).set_sex(rs.getString("sex"));
  316. data.get(i).set_postcode(rs.getInt("postcode"));
  317. data.get(i).set_city(rs.getString("city"));
  318. data.get(i).set_street(rs.getString("street"));
  319. data.get(i).set_house(rs.getInt("house"));
  320. data.get(i).set_apartment(rs.getInt("apartment"));
  321. data.get(i).set_country(rs.getString("country"));
  322. data.get(i).set_region(rs.getString("region"));
  323. data.get(i).set_itn(Long.parseLong(rs.getString("itn")));
  324. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  325. Calendar cal = Calendar.getInstance();
  326. cal.setTime(sdf.parse(rs.getString("dob")));
  327. data.get(i).set_dob(cal);
  328. data.get(i).set_age(rs.getInt("age"));
  329. }
  330. } catch (SQLException | ParseException e) {
  331. e.printStackTrace();
  332. }
  333.  
  334. }
  335. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement