1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 |
/* * @(#)Common.java 1.x 01/xx/xx * * Copyright (c) 2016 CONFRAGE All rights reserved. * * Java1.7 */ package jp.confrage; import java.io.File; import java.math.BigDecimal; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Types; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.List; import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.lang.time.DateUtils; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.DateUtil; public class Common{ /** * プライベートコンストラクタ.<br> * 不可視にします.<br> */ private Common() { } /** * 文字列型の日付をDate型に変換します.<br> * エラーの場合はParseExceptionをthrowします.<br> * @author CONFRAGE * @since 2016/04/01 * @param date 年月日(yyyyMMdd型) * @return 変換結果 * @throws ParseException 例外 */ public static Date parseStringToDate(String date) throws ParseException { DateFormat df = new SimpleDateFormat("yyyyMMdd"); df.setLenient(false); return df.parse(date); } /** * 日数を算出します.<br> * 引数で渡された文字列型の日付(from)と日付(to)を元に、fromからtoまでの日数を算出します。(fromとtoの日数を含む).<br> * @author CONFRAGE * @since 2016/04/01 * @param from 8桁の日付(yyyyMMdd型) * @param to 8桁の日付(yyyyMMdd型) * @return 計算された日数 */ public static int calcDays(String from, String to) { try { Date fromDate = parseStringToDate(from); Date toDate = parseStringToDate(to); // 日数算出 long day = ((toDate.getTime() - fromDate.getTime()) + (DateUtils.MILLIS_PER_DAY)) / (DateUtils.MILLIS_PER_DAY); return (int)day; } catch (Exception e) { throw new RuntimeException("エラー"); } } /** * 引数で渡された年(yyyy)、月(MM)を元に、その月の1か月間の日数を算出します.<br> * @author CONFRAGE * @since 2016/04/01 * @param year 4桁の日付(yyyy型) * @param month 2桁の日付(MM型) * @return 1か月の日数 */ public static int getActualMaximum(String year, String month) { int intYear = Integer.parseInt(year); int intMonth = Integer.parseInt(month); Calendar cal = Calendar.getInstance(); cal.clear(); cal.set(intYear, intMonth - 1,1); return cal.getActualMaximum(Calendar.DATE); } /** * SQLにバインド変数を設定します.<br> * @author CONFRAGE * @since 2016/04/01 * @param ps プリペアドステートメント * @param paramList パラメータリスト * @throws SQLException SQL例外 */ public static void setQueryParams (PreparedStatement ps, List<Object> paramList) throws SQLException{ if (ps != null && paramList != null) { for (int i = 0; i < paramList.size(); i++) { if (paramList.get(i) == null) { ps.setNull(i++, Types.NULL); } else if (paramList.get(i) instanceof String) { ps.setString(i++, (String)paramList.get(i)); } else if (paramList.get(i) instanceof BigDecimal) { ps.setBigDecimal(i++, (BigDecimal)paramList.get(i)); } else if (paramList.get(i) instanceof Integer) { ps.setInt(i++, (int)paramList.get(i)); } else if (paramList.get(i) instanceof Long) { ps.setLong(i++, (long)paramList.get(i)); } else if (paramList.get(i) instanceof Float) { ps.setFloat(i++, (float)paramList.get(i)); } else if (paramList.get(i) instanceof Double) { ps.setDouble(i++, (double)paramList.get(i)); } } } } /** * SQL文にパラメータを設定します.<br> * @author CONFRAGE * @since 2016/04/01 * @param conn コネクション * @param sql SQL * paramerList パラメータリストのリスト */ public static void executeBatch(Connection conn, String sql, List<List<Object>> paramLists) { try (PreparedStatement ps = conn.prepareStatement(sql)) { int i = 0; for (List<Object> paramList : paramLists) { i++; if((i % 5000) == 0) { ps.executeBatch(); } setQueryParams(ps, paramList); ps.addBatch(); } ps.executeBatch(); } catch (BatchUpdateException be) { } catch (SQLException e) { throw new RuntimeException(""); } } /** * ディレクトリとファイルを再帰的に全削除する * @param file 削除対象ディレクトリ */ public static final void deleteAll(File file) { if (file == null || !file.exists()) return; if (file.isFile()) { // ファイル削除 file.delete(); } else { // ディレクトリの場合、再帰 File[] obj = file.listFiles(); for (int i = 0; i < obj.length; i++) { deleteAll(obj[i]); } file.delete(); } } /** * BigDecimalの数値を###,###,###区切りにします.<br> * 1000000を1,000,000にします.<br> * @author CONFRAGE * @since 2017/03/24 * @param num 数値 * @return カンマつき数値 */ public static String addComma(BigDecimal num) { return NumberFormat.getInstance().format(num); } /** * Apache POIでエクセルのセルを表示する. * @author CONFRAGE * @since 2017/05/01 * @param cell Apache POIのセル * @param dateType セルの日付形式(yyyy/MM/ddなど) */ public static Object getCellValue(Cell cell,String dateType) { switch (cell.getCellType()) { case Cell.CELL_TYPE_STRING: return cell.getRichStringCellValue().getString(); case Cell.CELL_TYPE_NUMERIC: if (DateUtil.isCellDateFormatted(cell)) { Date dateValue = cell.getDateCellValue(); DateFormat dateFormat = new SimpleDateFormat(dateType); return dateFormat.format(dateValue); } else { return cell.getNumericCellValue(); } case Cell.CELL_TYPE_BOOLEAN: return cell.getBooleanCellValue(); case Cell.CELL_TYPE_FORMULA: return cell.getCellFormula(); default: return null; } } } |
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^