/** * ルールセット定義を取得する。<br> * 指定されたルールセットIDに対応する設定ファイルが見つからない場合は、<br> * デフォルトのルールセット定義を取得する。 * * @param id ルールセットID * @return ルールセット定義 * @throws RuleCreateException ルールセット定義ファイル読み込みに失敗した場合 */ public RuleSetDef getRuleSetDef(final String id) throws RuleCreateException { RuleSetDef def = this.ruleSetMap_.get(id); if (def != null) { return def; } if (id.equals(DEFAULT_RULESET_ID)) { def = this.accessor_.findRuleSet(DEFAULT_RULESET_FILE); def.setName(this.ruleSetConfigMap_.get(id).getName()); } else if (id.equals(DEFAULT_HP_UX_RULESET_ID)) { def = this.accessor_.findRuleSet(DEFAULT_HP_UX_RULESET_FILE); def.setName(this.ruleSetConfigMap_.get(id).getName()); } else if (id.equals(DEFAULT_JAVA_RULESET_ID)) { def = this.accessor_.findRuleSet(DEFAULT_JAVA_RULESET_FILE); def.setName(this.ruleSetConfigMap_.get(id).getName()); } else if (id.equals(DEFAULT_DB_RULESET_ID)) { def = this.accessor_.findRuleSet(DEFAULT_DB_RULESET_FILE); def.setName(this.ruleSetConfigMap_.get(id).getName()); } else { RuleSetConfig config = this.ruleSetConfigMap_.get(id); if (config == null) { throw new RuleCreateException("InvalidRuleSetDef", new Object[] {id}); } String fileName = config.getFileName(); def = this.accessor_.findRuleSet(fileName); } this.ruleSetMap_.put(id, def); return def; }
/** * プリファレンスストアからルールセット定義(RuleSetConfigインスタンス)を取得する。 * * @param ruleSetId ルールセットID * @return ルールセット定義。定義が見つからない場合でも、ルールセット定義を返す。 */ public static RuleSetConfig loadRuleSet(final String ruleSetId) { String name = preferenceMap__.get(CONFIG_RULESET_NAME_PREFIX + ruleSetId); String fileName = preferenceMap__.get(CONFIG_RULESET_FILE_PREFIX + ruleSetId); RuleSetConfig config = new RuleSetConfig(); config.setId(ruleSetId); config.setName(name); config.setFileName(fileName); return config; }
/** ルールセット定義などをプリファレンスストア、xmlファイルに保存する。 */ @SuppressWarnings("deprecation") public synchronized void commit() { // アクティブなルールセットIDの保存。 RulePreferenceUtil.saveActiveRuleSetId(this.activeRuleSetId_); // ルールセット詳細一覧の保存。 List<String> ruleSetIdList = new ArrayList<String>(); Collection<RuleSetConfig> ruleSetConfigs = this.ruleSetConfigMap_.values(); for (RuleSetConfig config : ruleSetConfigs) { String id = config.getId(); if (isDefaultRuleSet(id)) { continue; } RulePreferenceUtil.saveRuleSet(config); // ruleSetIdList.add(id); } // ルールセットID一覧の保存。 String[] ruleSetIds = ruleSetIdList.toArray(new String[ruleSetIdList.size()]); RulePreferenceUtil.saveRuleSetIds(ruleSetIds); // ルールセットの保存。 // 変更があったルールセットのみ保存する。 for (String ruleId : this.dirtyRuleSetIds_) { if (isDefaultRuleSet(ruleId)) { continue; } RuleSetConfig config = this.ruleSetConfigMap_.get(ruleId); if (config == null) { continue; } RuleSetDef def = this.ruleSetMap_.get(ruleId); this.accessor_.updateRuleSet(def, config.getFileName()); } // ルールセットの保存。 // ファイルが存在しないルールセットについて、 // デフォルトのルールを元にファイルを作成する。 for (RuleSetConfig config : ruleSetConfigs) { String id = config.getId(); if (isDefaultRuleSet(id)) { continue; } File file = new File(config.getFileName()); if (file.exists() && file.isFile()) { continue; } File parentFile = file.getParentFile(); if (parentFile != null && parentFile.exists() == false) { try { parentFile.mkdirs(); } catch (SecurityException ex) { LOGGER.error(ex.getMessage(), ex); } } // デフォルトのルールをコピーして保存する try { RuleSetDef defaultRuleSetClone = new RuleSetDef(getRuleSetDef(DEFAULT_RULESET_ID)); defaultRuleSetClone.setName(config.getName()); this.accessor_.updateRuleSet(defaultRuleSetClone, config.getFileName()); } catch (RuleCreateException ex) { LOGGER.error(ex.getMessage(), ex); } } // ルールファイルを削除する。 for (RuleSetConfig config : this.removeList_) { File file = new File(config.getFileName()); if (file.exists()) { try { file.delete(); } catch (SecurityException ex) { LOGGER.error(ex.getMessage(), ex); } } } this.removeList_ = Collections.synchronizedList(new ArrayList<RuleSetConfig>()); }
/** * アクティブなルールセットを設定する。 * * @param ruleSetConfig ルールセット定義 */ public void setActiveRuleSetConfig(final RuleSetConfig ruleSetConfig) { this.activeRuleSetId_ = ruleSetConfig.getId(); }
/** * ルールセット定義(RuleSetConfigインスタンス)を利用可能なルールセットに追加する。 * * @param config ルールセット定義 */ public void addRuleSetConfig(final RuleSetConfig config) { this.ruleSetConfigMap_.put(config.getId(), config); }
/** * 初期ルールセット定義マップを作成する。 * * @return ルールセット定義マップ(デフォルト定義のみ) */ private HashMap<String, RuleSetConfig> createDefaultConfigMap() { HashMap<String, RuleSetConfig> map = new LinkedHashMap<String, RuleSetConfig>(); RuleSetConfig config = new RuleSetConfig(); RuleSetConfig hpUxRuleSetConfig = new RuleSetConfig(); RuleSetConfig javaRuleSetConfig = new RuleSetConfig(); RuleSetConfig dbRuleSetConfig = new RuleSetConfig(); // デフォルトのルールセットを定義する。 config.setId(DEFAULT_RULESET_ID); config.setName(DEFAULT_RULESET_NAME); config.setFileName(DEFAULT_RULESET_FILE); map.put(DEFAULT_RULESET_ID, config); // HP_UX用のルールセットを定義する。 hpUxRuleSetConfig.setId(DEFAULT_HP_UX_RULESET_ID); hpUxRuleSetConfig.setName(DEFAULT_HP_UX_RULESET_NAME); hpUxRuleSetConfig.setFileName(DEFAULT_HP_UX_RULESET_FILE); map.put(DEFAULT_HP_UX_RULESET_ID, hpUxRuleSetConfig); // java用のルールセットを定義する。 javaRuleSetConfig.setId(DEFAULT_JAVA_RULESET_ID); javaRuleSetConfig.setName(DEFAULT_JAVA_RULESET_NAME); javaRuleSetConfig.setFileName(DEFAULT_JAVA_RULESET_FILE); map.put(DEFAULT_JAVA_RULESET_ID, javaRuleSetConfig); // DB用のルールセットを定義する。 dbRuleSetConfig.setId(DEFAULT_DB_RULESET_ID); dbRuleSetConfig.setName(DEFAULT_DB_RULESET_NAME); dbRuleSetConfig.setFileName(DEFAULT_DB_RULESET_FILE); map.put(DEFAULT_DB_RULESET_ID, dbRuleSetConfig); return map; }
/** * プリファレンスストアにルールセット定義を保存する。 * * @param config ルールセット定義 */ public static void saveRuleSet(final RuleSetConfig config) { String id = config.getId(); preferenceMap__.put(CONFIG_RULESET_NAME_PREFIX + id, config.getName()); preferenceMap__.put(CONFIG_RULESET_FILE_PREFIX + id, config.getFileName()); }