/** * Filters tag's tuning parameters form functional block's tuning parameters string. * * @throws FileNotFoundException * @throws IOException * @param tagRecord Yokogawa tag record instance * @param blockTunningParameters Tag's parent block tuning parameters string * @return Tag's tuning parameters hash */ private HashMap<String, String> _readTagTuningParameters( YgTagRecord tagRecord, String blockTunningParameters) { HashMap<String, String> result = new HashMap(); int tagParamsStartPos = blockTunningParameters.indexOf(tagRecord.getTagName().trim() + ":"); int tagParamsEndPos = blockTunningParameters.indexOf(";", tagParamsStartPos); if (tagParamsStartPos > -1) { String tagTunnigParams = blockTunningParameters.substring(tagParamsStartPos, tagParamsEndPos); String[] paramsAndValues = tagTunnigParams.split(","); String[] tempParamAndValuePair; for (String tempParamAndValue : paramsAndValues) { tempParamAndValuePair = tempParamAndValue.split("="); if (tempParamAndValuePair.length > 1) result.put(tempParamAndValuePair[0], tempParamAndValuePair[1]); } // for } // if return result; } // _readTagTuningParameters
/** * Creates from Yokogawa backup data and adds system tag to current data source. * * @throws Exception * @param tagRecord Yokogawa tag record instance * @param units Engineering units list * @param tagTunningParams Tag's tuning parameters hash * @param blockTuningParams Tag's block tuning parameters string */ private void _createSystemTagInstance( YgTagRecord tagRecord, List<String> units, HashMap<String, String> tagTunningParams, String blockTuningParams) throws Exception { Tag tag = addTag(tagRecord.getTagName().trim()); TagSetting setting; Double tempDouble; String existingAlarms; int hhllParamStartIndex = blockTuningParams.indexOf("HHLL:"); int hhllParamEndIndex; int inhlParamStartIndex = blockTuningParams.indexOf("INHL:"); int inhlParamEndIndex; // If tag's settngs contain "trip" setpoints: if (hhllParamStartIndex > -1) { hhllParamEndIndex = blockTuningParams.indexOf(";", hhllParamStartIndex); existingAlarms = blockTuningParams.substring(hhllParamStartIndex + 5, hhllParamEndIndex); // If tag's settngs contain both low and high "trip" settings: if (existingAlarms.equals("HHLL")) { if (tagTunningParams.containsKey("LL")) { setting = new TagSetting(); setting.setTypeId(SettingsTypes.ALARM_LL_SETTING.ID); setting.setValue(new Double(tagTunningParams.get("LL")).toString()); addTagSetting(tag, setting); } // if if (tagTunningParams.containsKey("HH")) { setting = new TagSetting(); setting.setTypeId(SettingsTypes.ALARM_HH_SETTING.ID); setting.setValue(new Double(tagTunningParams.get("HH")).toString()); addTagSetting(tag, setting); } // if } // if // If tag's settngs contain only high "trip" setting: else if (existingAlarms.equals("HH")) { if (tagTunningParams.containsKey("HH")) { setting = new TagSetting(); setting.setTypeId(SettingsTypes.ALARM_HH_SETTING.ID); setting.setValue(new Double(tagTunningParams.get("HH")).toString()); addTagSetting(tag, setting); } // if } // if // If tag's settngs contain only low "trip" setting: else if (existingAlarms.equals("LL")) { if (tagTunningParams.containsKey("LL")) { setting = new TagSetting(); setting.setTypeId(SettingsTypes.ALARM_LL_SETTING.ID); setting.setValue(new Double(tagTunningParams.get("LL")).toString()); addTagSetting(tag, setting); } // if } // if } // if // If tag's setting contain alarm setpoints: if (inhlParamStartIndex > -1) { inhlParamEndIndex = blockTuningParams.indexOf(";", inhlParamStartIndex); existingAlarms = blockTuningParams.substring(inhlParamStartIndex + 5, inhlParamEndIndex); // If tag's settings contain both alarm low and alarm high setpoints: if (existingAlarms.equals("HL")) { if (tagTunningParams.containsKey("PL")) { setting = new TagSetting(); setting.setTypeId(SettingsTypes.ALARM_L_SETTING.ID); setting.setValue(new Double(tagTunningParams.get("PL")).toString()); addTagSetting(tag, setting); } // if if (tagTunningParams.containsKey("PH")) { setting = new TagSetting(); setting.setTypeId(SettingsTypes.ALARM_H_SETTING.ID); setting.setValue(new Double(tagTunningParams.get("PH")).toString()); addTagSetting(tag, setting); } // if } // if // If tag's settings contain alarm high setpoint: else if (existingAlarms.equals("H")) { if (tagTunningParams.containsKey("PH")) { setting = new TagSetting(); setting.setTypeId(SettingsTypes.ALARM_H_SETTING.ID); setting.setValue(new Double(tagTunningParams.get("PH")).toString()); addTagSetting(tag, setting); } // if } // if // If tag's settings contain alarm low setpoint: else if (existingAlarms.equals("L")) { if (tagTunningParams.containsKey("PL")) { setting = new TagSetting(); setting.setTypeId(SettingsTypes.ALARM_L_SETTING.ID); setting.setValue(new Double(tagTunningParams.get("PL")).toString()); addTagSetting(tag, setting); } // if } // if } // if // Add range min settng: tempDouble = tagRecord.getSl() / Math.pow(10, tagRecord.getDp()); setting = new TagSetting(); setting.setTypeId(SettingsTypes.RANGE_MIN_SETTING.ID); setting.setValue(tempDouble.toString()); addTagSetting(tag, setting); // Add range max settng: tempDouble = tagRecord.getSh() / Math.pow(10, tagRecord.getDp()); setting = new TagSetting(); setting.setTypeId(SettingsTypes.RANGE_MAX_SETTING.ID); setting.setValue(tempDouble.toString()); addTagSetting(tag, setting); // Add engineering units setting: if (tagRecord.getEngUnitsIndex() < units.size()) { setting = new TagSetting(); setting.setTypeId(SettingsTypes.UNITS_SETTING.ID); setting.setValue(units.get(tagRecord.getEngUnitsIndex())); addTagSetting(tag, setting); } // if } // _createSystemTagInstance