/** * @version $Id: CreateClaimTableValidator.java 1839 2014-04-16 02:33:51Z yukihiro-kinjyo $ * * 2011/09/21 10:23:01 * @author yukihiro-kinjo * * Copyright 2011-2014 TIDAコンソーシアム All Rights Reserved. */ package com.tida_okinawa.corona.webentry.util; import java.util.HashMap; import java.util.List; import java.util.Map; import org.eclipse.jface.dialogs.IInputValidator; import com.tida_okinawa.corona.io.IoActivator; import com.tida_okinawa.corona.io.model.IClaimData; import com.tida_okinawa.corona.io.model.table.TableType; import com.tida_okinawa.corona.io.util.CoronaIoUtils; import com.tida_okinawa.corona.webentry.Messages; /** * データベースに登録するテーブルをチェックするクラス * * @author yukihiro-kinjo */ public class CreateClaimTableValidator implements IInputValidator { private Map<String, IClaimData> tableNameMap; private static final int TABLE_NAME_LIMIT = 30; /** * コンストラクター */ public CreateClaimTableValidator() { tableNameMap = new HashMap<String, IClaimData>(); List<IClaimData> registeredClaims = IoActivator.getService().getClaimDatas(); for (IClaimData claim : registeredClaims) { tableNameMap.put(claim.getTableName().toUpperCase(), claim); } } @Override public String isValid(String testTableName) { if (testTableName != null) { if (!blankCheck(testTableName)) { if (limitCheck(testTableName)) { if (stringCheck(testTableName)) { return null; } return Messages.CreateClaimTableValidator_DataNameCharacterError; } return Messages.CreateClaimTableValidator_DataName + TABLE_NAME_LIMIT + Messages.CreateClaimTableValidator_Characters; } return Messages.CreateClaimTableValidator_PleaseInputDataName; } return null; } private static boolean blankCheck(String check) { /* 入力文字が空文字だったらtrue */ return (check.equals("")); //$NON-NLS-1$ } private static boolean limitCheck(String check) { /* テーブル長は64バイト。prefixを考慮して30文字まで */ return (check.length() <= TABLE_NAME_LIMIT); } private static boolean stringCheck(String check) { /* 入力文字に、「かな,カナ,英数字,漢字,_ 」が入るとtrue */ return (check.matches("[[ぁ-ゖ][ァ-ヺ][a-zA-Z][一-龻][0-90-9][a-zA-Z][_ー]]*")); //$NON-NLS-1$ } /** * 指定したテーブル名がデーターベースに存在するか確認する * * @param tableName * 確認するテーブル名 * @return 存在している場合false */ public boolean exists(String tableName) { if (tableNameMap.get(CoronaIoUtils.createWorkTableName(tableName, TableType.CLAIM_DATA, 0).toUpperCase()) != null) { return true; } return false; } }