001/* 002 * Copyright (c) 2009 The openGion Project. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 013 * either express or implied. See the License for the specific language 014 * governing permissions and limitations under the License. 015 */ 016package org.opengion.plugin.column; 017 018import java.util.StringTokenizer; 019 020import org.opengion.fukurou.util.StringUtil; 021// import org.opengion.fukurou.db.DBUtil; 022 023/** 024 * plugin.column パッケージ内ã§ä½¿ç”¨ã™ã‚‹ã€ï¾•ï½°ï¾ƒï½¨ï¾˜ï¾ƒï½¨ï½°ï¾’ソッドを集ã‚ãŸï½¸ï¾—ï½½ã§ã™ã€‚ 025 * 026 * 特ã«é–¢é€£ã™ã‚‹æ©Ÿèƒ½ã‚’集ã‚ãŸã®ã§ã¯ãªãã€å˜ã«å…±æœ‰ã§ããã†ãªå‡¦ç†ã‚’集ã‚ã¾ã—ãŸã€‚ 027 * 028 * @og.rev 8.5.6.1 (2024/03/29) クラスåã‚’ RowSizeUtil → ColumnUtil ã«å¤‰æ›´ã—ã¾ã™ã€‚ 029 * @og.group ãã®ä»– 030 * 031 * @version 8.5 032 * @author Kazuhiko Hasegawa 033 * @since JDK21.0, 034 */ 035// /* default */ final class RowSizeUtil { 036/* default */ final class ColumnUtil { 037 /** ã“ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã®VERSIONæ–‡å—列をè¨å®šã—ã¾ã™ã€‚ {@value} */ 038 private static final String VERSION = "8.5.6.1 (2024/03/29)" ; 039 040 private static final String CODE = "Windows-31J"; 041 042 /** 043 * デフォルトコï¾ï½½ï¾„ラクターをprivateã«ã—ã¦ã€ 044 * オブジェクトã®ç”Ÿæˆã‚’ã•ã›ãªã„よã†ã«ã™ã‚‹ã€‚ 045 * 046 * @og.rev 8.5.5.1 (2024/02/29) spotbugs CT_CONSTRUCTOR_THROW(コï¾ï½½ï¾„ラクタã§ã€Excweptionを出ã•ãªã„) 047 */ 048// private RowSizeUtil() { super(); } // ã“れもã€è‡ªå‹•çš„ã«å‘¼ã°ã‚Œã‚‹ãŒã€ç©ºã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’作æˆã™ã‚‹ã¨è¦å‘Šã•ã‚Œã‚‹ã®ã§ã€æ˜Žç¤ºçš„ã«ã—ã¦ãŠãã¾ã™ã€‚ 049 private ColumnUtil() { super(); } // ã“れもã€è‡ªå‹•çš„ã«å‘¼ã°ã‚Œã‚‹ãŒã€ç©ºã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’作æˆã™ã‚‹ã¨è¦å‘Šã•ã‚Œã‚‹ã®ã§ã€æ˜Žç¤ºçš„ã«ã—ã¦ãŠãã¾ã™ã€‚ 050 051// /** 052// * フィールドサイズを求ã‚る簡易メソッド。 053// * 054// * コï¾ï½½ï¾„ラクターã§ã€Exception を出ã•ãªã„ãŸã‚ã®å‡¦ç†ã€‚ 055// * 056// * @og.rev 8.5.5.1 (2024/02/29) spotbugs CT_CONSTRUCTOR_THROW(コï¾ï½½ï¾„ラクタã§ã€Excweptionを出ã•ãªã„) 057// * @og.rev 8.5.6.1 (2024/03/29) 未使用ãªã®ã§å»ƒæ¢ 058// * 059// * @param tsize TotalSize 060// * @param fsize フィールドサイズ 061// * @return トータルサイズ/フィールドサイズ + 1 062// */ 063// public static int getRowSizeInt( final int tsize , final String fsize ) { 064// int rtnSize = 5; 065// try { 066// final int r1 = tsize / Integer.parseInt( fsize ) + 1; 067// if( r1 <= 5 ) { 068// rtnSize = r1; 069// } 070// } 071// catch( final Throwable th ) { 072// final String errMsg = "フィールドサイズãŒæ•°å€¤å¤‰æ›ã§ãã¾ã›ã‚“。fsize=[" + fsize + "]" ; 073// System.err.println( errMsg ); 074// } 075// return rtnSize; 076// } 077 078 /** 079 * フィールドサイズを求ã‚る簡易メソッド。 080 * 081 * コï¾ï½½ï¾„ラクターã§ã€Exception を出ã•ãªã„ãŸã‚ã®å‡¦ç†ã€‚ 082 * 083 * @og.rev 8.5.5.1 (2024/02/29) spotbugs CT_CONSTRUCTOR_THROW(コï¾ï½½ï¾„ラクタã§ã€Excweptionを出ã•ãªã„) 084 * 085 * @param tsize TotalSize 086 * @param fsize フィールドサイズ 087 * @return トータルサイズ/フィールドサイズ + 1 088 */ 089 public static String getRowSize( final int tsize , final String fsize ) { 090 String rtnSize = "5"; 091 try { 092 final int r1 = tsize / Integer.parseInt( fsize ) + 1; 093 if( r1 <= 5 ) { 094 rtnSize = String.valueOf( r1 ); 095 } 096 } 097 catch( final Throwable th ) { 098 final String errMsg = "フィールドサイズãŒæ•°å€¤å¤‰æ›ã§ãã¾ã›ã‚“。fsize=[" + fsize + "]" ; 099 System.err.println( errMsg ); 100 } 101 return rtnSize; 102 } 103 104 /** 105 * 自動表示ã™ã‚‹è¡Œåˆ—ã®æ•°ã‚’求ã‚ã¾ã™ã€‚ 106 * 行数ã¯ã€å¼•æ•°ã®æ–‡å—列ä¸ã«å«ã¾ã‚Œã‚‹ 改行コードã®å€‹æ•°ã‚’求ã‚ã¾ã™ã€‚ 107 * 列数ã¯ã€å„行数ã®ãªã‹ã®æœ€å¤§æ¡æ•°ã‚ˆã‚Šæ±‚ã‚ã¾ã™ã€‚ã“ã‚Œã«ã¯åŠè§’ã€å…¨è§’ãŒå«ã¾ã‚Œã‚‹ç‚ºã€ 108 * åŠè§’æ›ç®—ã§ã®æ–‡å—æ•°ã¨ã„ã†ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ 109 * 行数ã¨åˆ—æ•°ãŒã€åˆæœŸè¨å®šã®è¡Œæ•°ã¨åˆ—数よりå°ã•ã„å ´åˆã¯ã€åˆæœŸè¨å®šå€¤ãŒä½¿ç”¨ã•ã‚Œã¾ã™ã€‚ 110 * 111 * @og.rev 8.5.6.1 (2024/03/29) Editor_AUTOAREA ã®ï¾’ソッドをstatic化ã—ã¦ColumnUtilã«ç§»å‹•ã—ã¾ã™ã€‚ 112 * 113 * @param value 表示文å—列 114 * @param cols 最å°ã‚«ãƒ©ãƒ æ•° 115 * @param rows 最å°è¡Œæ•° 116 * @param maxColSize 最大カラム数 117 * @param maxRowSize 最大行数 118 * 119 * @return 自動計算ã—ãŸè¡Œåˆ—ã®é…列 120 * @og.rtnNotNull 121 */ 122// private int[] getRowsCols( final String value, final int cols, final int rows ) { 123 public static String[] getRowsCols( final String value, final String cols, final String rows 124 ,final int maxColSize, final int maxRowSize ) { 125 if( value == null ) { 126// return new int[] { cols,rows }; // 6.3.9.1 (2015/11/27) 逆ã ã£ãŸãŒã€ä»Šã¾ã§å¤§ä¸ˆå¤«ã ã£ãŸï¼Ÿ 127 return new String[] { cols, rows }; 128 } 129 130 final StringTokenizer token = new StringTokenizer( value, "\n", true ); 131 132 int cntRow = 1; 133 int maxCol = 0; 134 while( token.hasMoreTokens() ) { 135 final String val = token.nextToken(); 136 if( "\n".equals( val ) ) { cntRow++; } 137 else { 138 final byte[] byteValue = StringUtil.makeByte( val,CODE ); // 3.5.5.3 (2004/04/09) 139 final int byteSize = byteValue.length; 140 if( maxColSize > 0 && byteSize > maxColSize ) { // 最大列数 141 cntRow += byteSize / maxColSize; 142 maxCol = maxColSize ; 143 } 144 else if( byteSize > maxCol ) { maxCol = byteSize; } 145 } 146 if( maxRowSize > 0 && cntRow >= maxRowSize ) { // 最大行数 147 cntRow = maxRowSize; 148 break; 149 } 150 } 151 152 maxCol += 2; // マージン。フォントや画é¢ã‚µã‚¤ã‚ºã«å½±éŸ¿ã™ã‚‹ç‚ºã€æ¯”率ã®ã»ã†ãŒã‚ˆã„? 153 154 // 6.3.9.1 (2015/11/27) Found 'DD'-anomaly for variable(PMD) 155 maxCol = Math.max( Integer.parseInt( cols ),maxCol ); // COL 156 cntRow = Math.max( Integer.parseInt( rows ),cntRow ); // ROW 157 158 // COL ROW 159 return new String[] { String.valueOf( maxCol ), String.valueOf( cntRow ) }; 160 161// // COL ROW 162// return new int[] { Math.max( cols,maxCol ) , Math.max( rows,cntRow ) } ; // 6.3.9.1 (2015/11/27) 163 } 164}