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 */
016 package org.opengion.hayabusa.resource;
017
018 import static org.opengion.fukurou.util.StringUtil.nval2;
019
020 /**
021 * systemId に対応したカラãƒ?ƒ‡ータを作æ?しますã?
022 *
023 * カラãƒ?ƒ‡ータはã€??目(CLM)に対して、各種カラãƒ?ƒ…報を持ってã�?�¾すã?
024 * エンジンå†?ƒ¨で使用してã�?‚‹ DBColumn オブジェクトã?、RENDERER ã‚?EDITOR など
025 * 実際にはオブジェクトで管ç�?�—てã�?�¾すが、この ColumnData では、それらのキーとなã‚?
026 * æ–?—å?を持ってã�?�¾すã?実際に DBColumn オブジェクトã?構築時に、各属æ?オブジェクトを
027 * 生æ?(またã?、キャãƒ?‚·ュから取り出ã�?ますã?
028 *
029 * カラãƒ?ƒ‡ータを作æ?する場合ã?、同ä¸?‚«ラãƒ?�§、作æ?区åˆ?KBSAKU)違いの場合ã?ã€?
030 * æœ?‚‚大きな作æ?区åˆ?‚’持つコードを使用しますã?
031 * 作æ?区åˆ?KBSAKU)はã€?:シスãƒ?ƒ 予ç´??1:アプリ設定ã?2:ユーザー設å®?とã�?�†具合に
032 * カスタマイズの度合いに応じて大きな数字を割り当てることで、キーæƒ??を上書き修正
033 * することが可能になりますã?(削除することは出来ませんã€?
034 *
035 * @og.rev 4.0.0.0 (2004/12/31) 新規作æ?
036 * @og.group リソース管ç�?
037 *
038 * @version 4.0
039 * @author Kazuhiko Hasegawa
040 * @since JDK5.0,
041 */
042 public final class ColumnData {
043
044 /** å†?ƒ¨ãƒ??タのカラãƒ?•ª号 {@value} */
045 public static final int CLM = 0 ;
046 /** å†?ƒ¨ãƒ??タのカラãƒ?•ª号 {@value} */
047 public static final int CLS_NAME = 1 ;
048 /** å†?ƒ¨ãƒ??タのカラãƒ?•ª号 {@value} */
049 public static final int USE_LENGTH = 2 ;
050 /** å†?ƒ¨ãƒ??タのカラãƒ?•ª号 {@value} */
051 public static final int VIEW_LENGTH = 3 ;
052 /** å†?ƒ¨ãƒ??タのカラãƒ?•ª号 {@value} */
053 public static final int RENDERER = 4 ;
054 /** å†?ƒ¨ãƒ??タのカラãƒ?•ª号 {@value} */
055 public static final int EDITOR = 5 ;
056 /** å†?ƒ¨ãƒ??タのカラãƒ?•ª号 {@value} */
057 public static final int DBTYPE = 6 ;
058 /** å†?ƒ¨ãƒ??タのカラãƒ?•ª号 {@value} */
059 public static final int DATA_DEFAULT = 7 ;
060 /** å†?ƒ¨ãƒ??タのカラãƒ?•ª号 {@value} */
061 public static final int LABEL_CLM = 8 ;
062 /** å†?ƒ¨ãƒ??タのカラãƒ?•ª号 {@value} */
063 public static final int CODE_CLM = 9 ;
064 /** å†?ƒ¨ãƒ??タのカラãƒ?•ª号 {@value} */
065 public static final int CLM_PARAM = 10 ;
066 /** å†?ƒ¨ãƒ??タのカラãƒ?•ª号 {@value} */
067 public static final int RENDERER_PARAM = 11 ;
068 /** å†?ƒ¨ãƒ??タのカラãƒ?•ª号 {@value} */
069 public static final int EDITOR_PARAM = 12 ;
070 /** å†?ƒ¨ãƒ??タのカラãƒ?•ª号 {@value} */
071 public static final int TYPE_PARAM = 13 ;
072 /** å†?ƒ¨ãƒ??タのカラãƒ?•ª号 {@value} */
073 public static final int ROLES = 14 ;
074 /** å†?ƒ¨ãƒ??タのカラãƒ?•° {@value} */
075 public static final int DATA_SIZE = 15 ;
076 /** リソース読み込みのためにä¸?™‚利用 4.3.5.7 (2009/03/22) */
077 public static final int FG_LOAD = 15 ;
078
079 private final String name ; // カラãƒ?��
080 private final String className ; // ãƒ??タの属æ?
081 private final String maxlength ; // 使用桁数
082 private final String viewLength ; // 表示桁数
083 private final String renderer ; // 表示種別
084 private final String editor ; // 編é›?¨®別
085 private final String dbType ; // æ–?—種別
086 private final String dataDef ; // ãƒ??タのãƒ?ƒ•ォルトå?
087 private final String labelClm ; // ラベルカラãƒ?
088 private final String codeClm ; // コードカラãƒ?
089 private final String columnPrm ; // カラãƒ?ƒ‘ラメータ
090 private final String rendererPrm ; // 表示パラメータ
091 private final String editorPrm ; // 編é›?ƒ‘ラメータ
092 private final String dbTypePrm ; // æ–?—パラメータ
093 private final String roles ; // カラãƒ?ƒール
094 private final RoleMode roleMode ; // 4.3.0.0 (2008/07/04) ロールズとモードを管ç�?�™るオブジェクãƒ?
095
096 private final int totalSize ; // 総桁数(小数点も含ã‚?
097 private final int sizeX ; // カラãƒ??æ–?—桁数(整数部)
098 private final int sizeY ; // カラãƒ??æ–?—桁数(少数部)
099 private final boolean official ; // リソース?¤?¢から作æ?されたかどã�?�‹
100
101 /**
102 * 配å?æ–?—å?のãƒ??タをå?に、ColumnDataオブジェクトを構築しますã?
103 * こã?コンストラクタは、他ã?パッケージから呼び出せなã�?‚ˆã�?�«ã€?
104 * パッケージプライベã?トにしておきますã?
105 * こã?コンストラクタはã€?¼¤?¢リソースファイルを想定してã�?�¾すã?
106 *
107 * @og.rev 4.3.0.0 (2008/07/04) ロールモードã?ルチ対å¿?
108 * @og.rev 5.1.6.0 (2010/05/01) DBTypeの初期値ã‚?"XK" としますã?
109 * @og.rev 5.2.2.0 (2010/11/01) パラメーターもVer3互換のためNVAL2で処ç�?�—ますã?
110 * @og.rev 5.5.8.5 (2012/11/27) 編é›?ƒ‘ラメータでã€?=" と記述されてã�?‚‹場合ã?、表示パラメータを利用するã€?
111 *
112 * @param data CLM,CLS_NAME,USE_LENGTH,VIEW_LENGTH,
113 * RENDERER,EDITOR,DBTYPE,DATA_DEFAULT,LABEL_CLM,CODE_CLM,
114 * CLM_PARAM,RENDERER_PARAM,EDITOR_PARAM,TYPE_PARAM,ROLES
115 *
116 */
117 public ColumnData( final String[] data ) {
118 name = data[CLM].intern() ; // カラãƒ?��
119 className = data[CLS_NAME].intern() ; // ãƒ??タの属æ?
120 // maxlength = StringUtil.toNumber( data[USE_LENGTH] ).intern() ; // 使用桁数
121 maxlength = data[USE_LENGTH].replace( '.',',' ).intern(); // 使用桁数
122 viewLength = nval2( data[VIEW_LENGTH], null ) ; // 表示桁数
123 renderer = nval2( data[RENDERER], null ) ; // 表示種別
124 editor = nval2( data[EDITOR], null ) ; // 編é›?¨®別
125 // dbType = nval2( data[DBTYPE], null ) ; // æ–?—種別
126 dbType = nval2( data[DBTYPE], "XK" ) ; // æ–?—種別 5.1.6.0 (2010/05/01)
127 dataDef = nval2( data[DATA_DEFAULT] , "" ) ; // ãƒ??タのãƒ?ƒ•ォルトå?
128 labelClm = nval2( data[LABEL_CLM] , name ) ; // ラベルカラãƒ?
129 codeClm = nval2( data[CODE_CLM] , name ) ; // コードカラãƒ?
130 // columnPrm = data[CLM_PARAM] ; // カラãƒ?ƒ‘ラメータ
131 // rendererPrm = data[RENDERER_PARAM] ; // 表示パラメータ
132 // editorPrm = data[EDITOR_PARAM] ; // 編é›?ƒ‘ラメータ
133 // dbTypePrm = data[TYPE_PARAM] ; // æ–?—パラメータ
134 columnPrm = nval2( data[CLM_PARAM], null ); // カラãƒ?ƒ‘ラメータ
135 rendererPrm = nval2( data[RENDERER_PARAM], null ) ; // 表示パラメータ
136 // editorPrm = nval2( data[EDITOR_PARAM], null ) ; // 編é›?ƒ‘ラメータ 5.5.8.5 (2012/11/27)
137 dbTypePrm = nval2( data[TYPE_PARAM], null ) ; // æ–?—パラメータ
138 roles = nval2( data[ROLES] , null ) ; // カラãƒ?ƒール
139 official = true; // リソース?¤?¢から作æ?されたかどã�?�‹
140
141 // 5.5.8.5 (2012/11/27) 編é›?ƒ‘ラメータでã€?=" と記述されてã�?‚‹場合ã?、表示パラメータを利用するã€?
142 String tempEditPrm = nval2( data[EDITOR_PARAM], null ) ;
143 if( "=".equals( tempEditPrm ) ) {
144 editorPrm = rendererPrm ;
145 }
146 else {
147 editorPrm = tempEditPrm ;
148 }
149
150 roleMode = RoleMode.newInstance( roles ); // ロールモーãƒ?
151
152 // x,y 形式ã?場合ã?x + 2 桁で表されますã?(マイナス記号と小数点記号)
153 // 7,3 はã€?xxxx,yyy のフォーマットで、データ長はã€? になりますã?
154 int ch = maxlength.indexOf( ',' ) ;
155 if( ch > 0 ) {
156 sizeY = Integer.parseInt( maxlength.substring( ch+1 ) );
157 sizeX = Integer.parseInt( maxlength.substring( 0,ch ) ) - sizeY;
158 totalSize = sizeX + sizeY+ 2;
159 }
160 else {
161 sizeY = 0;
162 sizeX = Integer.parseInt( maxlength );
163 if( "S9".equals( dbType ) ) {
164 totalSize = sizeX + 1; // 数字型の場合ã?、ã?イナス記号åˆ?‚’åŠ?�ˆるã?
165 }
166 else {
167 totalSize = sizeX ;
168 }
169 }
170 }
171
172 /**
173 * カラãƒ?��を返しますã?
174 *
175 * @return カラãƒ?��
176 */
177 public String getName() { return name; }
178
179 /**
180 * カラãƒ??ãƒ??タの属æ?を返しますã?
181 *
182 * @return カラãƒ??ãƒ??タの属æ?
183 */
184 public String getClassName() { return className; }
185
186 /**
187 * フィールドã?使用桁数を返しますã?
188 * 少数æŒ?®šã?場合ã?ã€?7,3" のようなカンマで整数部、小数部を区åˆ?�£た書式になりますã?
189 * 7,3 はã€?xxxx,yyy のフォーマットで、整数部?”桁ã?小数部?“桁を意味しますã?
190 *
191 * @return 使用桁数
192 */
193 public String getMaxlength() { return maxlength; }
194
195 /**
196 * フィールドã?ãƒ??タ長を返しますã?
197 * 通常は、整数型ã?æ–?—å?とãƒ??タ長は同じですが,小数点を表すデータ長は
198 * x.y 形式ã?場合ã?x + 1 桁で表されますã?
199 * 6.2 はã€?xxxx.yy のフォーマットですã?
200 *
201 * @return ãƒ??タ長定義æ–?—å?
202 */
203 public int getTotalSize() { return totalSize; }
204
205 /**
206 * フィールドã?整数部のãƒ??タ長を返しますã?
207 *
208 * @return ãƒ??タ長定義æ–?—å?
209 */
210 public int getSizeX() { return sizeX ; }
211
212 /**
213 * フィールドã?小数部のãƒ??タ長を返しますã?
214 *
215 * @return ãƒ??タ長定義æ–?—å?
216 */
217 public int getSizeY() { return sizeY ; }
218
219 /**
220 * フィールドã?表示桁数を返しますã?
221 *
222 * @return 表示桁数
223 */
224 public String getViewLength() { return viewLength; }
225
226 /**
227 * 表示種別を返しますã?
228 *
229 * @return 表示種別のæ–?—å?
230 */
231 public String getRenderer() { return renderer; }
232
233 /**
234 * 編é›?¨®別を返しますã?
235 *
236 * @return 編é›?¨®別
237 */
238 public String getEditor() { return editor; }
239
240 /**
241 * æ–?—種別を返しますã?
242 *
243 * @return æ–?—種別
244 */
245 public String getDbType() { return dbType; }
246
247 /**
248 * ラベルカラãƒ?‚’返しますã?
249 *
250 * @return ラベルカラãƒ?
251 */
252 public String getLabelColumn() { return labelClm; }
253
254 /**
255 * コードカラãƒ?‚’返しますã?
256 *
257 * @return コードカラãƒ?
258 */
259 public String getCodeColumn() { return codeClm; }
260
261 /**
262 * ãƒ??タのãƒ?ƒ•ォルトå?を返しますã?
263 *
264 * @return ãƒ??タのãƒ?ƒ•ォルトå?
265 */
266 public String getDefault() { return dataDef; }
267
268 /**
269 * カラãƒ??パラメータを取得しますã?
270 *
271 * @return カラãƒ?ƒ‘ラメータ
272 */
273 public String getColumnParam() { return columnPrm; }
274
275 /**
276 * 表示用レンãƒ?ƒ©ーのパラメータを取得しますã?
277 *
278 * @return 表示パラメータ
279 */
280 public String getRendererParam() { return rendererPrm; }
281
282 /**
283 * 編é›?”¨エãƒ?‚£ターのパラメータを取得しますã?
284 *
285 * @return 編é›?ƒ‘ラメータ
286 */
287 public String getEditorParam() { return editorPrm; }
288
289 /**
290 * ãƒ??タタイプã?パラメータを取得しますã?
291 *
292 * @return ãƒ??タタイプã?パラメータ
293 */
294 public String getDbTypeParam() { return dbTypePrm; }
295
296 /**
297 * カラãƒ?ƒールを取得しますã?
298 *
299 * @return カラãƒ?ƒール
300 */
301 public String getRoles() { return roles; }
302
303 /**
304 * カラãƒ?‚ªブジェクトã?ロールモードを返しますã?
305 *
306 * @og.rev 4.3.0.0 (2008/07/04) ロールモードã?ルチ対å¿?
307 *
308 * @return カラãƒ?‚ªブジェクトã?ロールモーãƒ?
309 */
310 public RoleMode getRoleMode() { return roleMode; }
311
312 /**
313 * リソース?¤?¢から作æ?されたかどã�?�‹を返しますã?
314 * 正式な場合ã?、true / リソースになくã?独自に作æ?されたå?合ã?、false になりますã?
315 *
316 * @return リソース?¤?¢から作æ?されたかどã�?�‹
317 *
318 */
319 public boolean isOfficial() { return official; }
320
321 /**
322 * å†?ƒ¨ãƒ??タのæ–?—å?配å?を返しますã?
323 *
324 * @return å†?ƒ¨ãƒ??タのæ–?—å?配å?
325 */
326 public String[] getColumnData() {
327 String[] data = new String[DATA_SIZE];
328
329 data[CLM ] = name ;
330 data[CLS_NAME ] = className ;
331 data[USE_LENGTH ] = maxlength ;
332 data[VIEW_LENGTH ] = viewLength ;
333 data[RENDERER ] = renderer ;
334 data[EDITOR ] = editor ;
335 data[DBTYPE ] = dbType ;
336 data[DATA_DEFAULT ] = dataDef ;
337 data[LABEL_CLM ] = labelClm ;
338 data[CODE_CLM ] = codeClm ;
339 data[CLM_PARAM ] = columnPrm ;
340 data[RENDERER_PARAM ] = rendererPrm ;
341 data[EDITOR_PARAM ] = editorPrm ;
342 data[TYPE_PARAM ] = dbTypePrm ;
343 data[ROLES ] = roles ;
344
345 return data ;
346 }
347 }