private static void exportFieldToKeywords( SpecialField e, String newValue, BibtexEntry be, NamedCompound ce) { if (!SpecialFieldsUtils.keywordSyncEnabled()) { return; } ArrayList<String> keywordList = Util.getSeparatedKeywords(be); List<String> values = e.getKeyWords(); int foundPos = -1; // cleanup keywords for (Object value : values) { int pos = keywordList.indexOf(value); if (pos >= 0) { foundPos = pos; keywordList.remove(pos); } } if (newValue != null) { if (foundPos == -1) { keywordList.add(newValue); } else { keywordList.add(foundPos, newValue); } } Util.putKeywords(be, keywordList, ce); }
/** * updates field values according to keywords * * @param ce indicates the undo named compound. May be null */ public static void syncSpecialFieldsFromKeywords(BibtexEntry be, NamedCompound ce) { if (be.getField("keywords") == null) { return; } ArrayList<String> keywordList = Util.getSeparatedKeywords(be.getField("keywords")); SpecialFieldsUtils.importKeywordsForField(keywordList, Priority.getInstance(), be, ce); SpecialFieldsUtils.importKeywordsForField(keywordList, Rank.getInstance(), be, ce); SpecialFieldsUtils.importKeywordsForField(keywordList, Quality.getInstance(), be, ce); SpecialFieldsUtils.importKeywordsForField(keywordList, Relevance.getInstance(), be, ce); SpecialFieldsUtils.importKeywordsForField(keywordList, ReadStatus.getInstance(), be, ce); SpecialFieldsUtils.importKeywordsForField(keywordList, Printed.getInstance(), be, ce); }