private void prepareRootCategories(List<YCategoryRef> yCategoryRefs, Map<String, String> rootCategories) { for (YCategoryRef yCategoryRef : yCategoryRefs) { String[] categoriesParts = yCategoryRef.getCode().split("\\."); rootCategories.put(categoriesParts[0], ""); } }
private void addRootCategories(YCategoryRef yCategoryRef, Map<String, String> rootCategories) { String[] categoriesParts = yCategoryRef.getCode().split("\\."); rootCategories.put(categoriesParts[0], ""); } }
protected static boolean isChanged(YCategoryRef ref, List<YCategoryRef> refs) { if (refs.size() != 1) return true; /* We don't want to warn if the only difference is * a text before/after the code, since this is too common * (warnings should be rare, or they will be ignored). * In fact, we only want to warn if we have missed a code. * Let's assume optimistically that every code contains * at least one digit. In such a case, a quick and dirty * check is: extract the digits in "before" and "after" * and check if they match. */ String before = ref.getCode().replaceAll("\\D", ""); String after = refs.get(0).getCode().replaceAll("\\D", ""); return !before.equals(after); }
/** * @param refs all the category names. * @return categories of Msc classification. */ private List<String> extractMscRefs(List<YCategoryRef> refs) { List<String> mscRefs = new ArrayList<String>(); for (YCategoryRef ref : refs) { if (ref.getClassification().equals(YConstants.EXT_CLASSIFICATION_MSC)) { mscRefs.add(ref.getCode()); } } return mscRefs; }
/** * @param refsa * all the category references. * @return category references of Msc classification. */ private List<String> extractMscRefs(List<YCategoryRef> refs) { List<String> mscRefs = new ArrayList<String>(); for (YCategoryRef ref : refs) { if (ref.getClassification().equals(YConstants.EXT_CLASSIFICATION_MSC)) { mscRefs.add(ref.getCode()); } } return mscRefs; }
/** * Selects most apropriate (English if available) description. * * @param descriptions * list of available descriptions * @return best found description or null if list is empty */ protected static String selectContributors(List<YCategoryRef> categories) { if (categories == null || categories.size() == 0) { return null; } StringBuilder text = new StringBuilder(); for (YCategoryRef category : categories) { text.append(category.getClassification()+":"+category.getCode().toString()+YElementToZentralBlattConverter.SUGGESTED_MULTIVALUE_FIELD_SEPARATOR); } return text.toString(); }
@Override public List<String> fetchDisciplineIds(YElement yElement) { List<String> disciplinesIds = new ArrayList<String>(); for (YCategoryRef category : yElement.getCategoryRefs()) { if (category != null && DISCIPLINES.equals(category.getClassification())) { disciplinesIds.add(category.getCode()); } } return disciplinesIds; }
/** * accomplished */ private void proceedCategoryRefs() { if(!in_item.getCategoryRefs().isEmpty()){ for(YCategoryRef ycr : in_item.getCategoryRefs()){ if(YConstants.EXT_CLASSIFICATION_CEJSH.equals(ycr.getClassification())) paos_doc.add(new PredicateAndObject(RelConstants.RL_CATEGORY_CEJSH, ycr.getCode().toString())); else if(YConstants.EXT_CLASSIFICATION_CLC.equals(ycr.getClassification())) paos_doc.add(new PredicateAndObject(RelConstants.RL_CATEGORY_CLC, ycr.getCode().toString())); else if(YConstants.EXT_CLASSIFICATION_JEL.equals(ycr.getClassification())) paos_doc.add(new PredicateAndObject(RelConstants.RL_CATEGORY_JEL, ycr.getCode().toString())); else if(YConstants.EXT_CLASSIFICATION_MSC.equals(ycr.getClassification())) paos_doc.add(new PredicateAndObject(RelConstants.RL_CATEGORY_MSC, ycr.getCode().toString())); else if(YConstants.EXT_CLASSIFICATION_PACS.equals(ycr.getClassification())) paos_doc.add(new PredicateAndObject(RelConstants.RL_CATEGORY_PACS, ycr.getCode().toString())); else if(YConstants.EXT_CLASSIFICATION_QICS.equals(ycr.getClassification())) paos_doc.add(new PredicateAndObject(RelConstants.RL_CATEGORY_QICS, ycr.getCode().toString())); else if(YConstants.EXT_CLASSIFICATION_ZDM.equals(ycr.getClassification())) paos_doc.add(new PredicateAndObject(RelConstants.RL_CATEGORY_ZDM, ycr.getCode().toString())); } } }
/** * accomplished */ private void proceedCategoryRefs() { if(!in_item.getCategoryRefs().isEmpty()){ for(YCategoryRef ycr : in_item.getCategoryRefs()){ if(YConstants.EXT_CLASSIFICATION_CEJSH.equals(ycr.getClassification())) paos_doc.add(new PredicateAndObject(RelConstants.RL_CATEGORY_CEJSH, ycr.getCode().toString())); else if(YConstants.EXT_CLASSIFICATION_CLC.equals(ycr.getClassification())) paos_doc.add(new PredicateAndObject(RelConstants.RL_CATEGORY_CLC, ycr.getCode().toString())); else if(YConstants.EXT_CLASSIFICATION_JEL.equals(ycr.getClassification())) paos_doc.add(new PredicateAndObject(RelConstants.RL_CATEGORY_JEL, ycr.getCode().toString())); else if(YConstants.EXT_CLASSIFICATION_MSC.equals(ycr.getClassification())) paos_doc.add(new PredicateAndObject(RelConstants.RL_CATEGORY_MSC, ycr.getCode().toString())); else if(YConstants.EXT_CLASSIFICATION_PACS.equals(ycr.getClassification())) paos_doc.add(new PredicateAndObject(RelConstants.RL_CATEGORY_PACS, ycr.getCode().toString())); else if(YConstants.EXT_CLASSIFICATION_QICS.equals(ycr.getClassification())) paos_doc.add(new PredicateAndObject(RelConstants.RL_CATEGORY_QICS, ycr.getCode().toString())); else if(YConstants.EXT_CLASSIFICATION_ZDM.equals(ycr.getClassification())) paos_doc.add(new PredicateAndObject(RelConstants.RL_CATEGORY_ZDM, ycr.getCode().toString())); } } }
public List<String> getDisciplinesCodesFor(AbstractElementInfo<?> elementInfo){ List<String> disciplineCodes = new LinkedList<>(); List<YCategoryRef> categoryRefs = elementInfo.getCategoryRefs(); for(YCategoryRef ref: categoryRefs){ String discCode = categoriesViewMapper.createKey(ref.getClassification(),ref.getCode()); disciplineCodes.add(discCode); } return disciplineCodes; } }
@Override public String constructFieldValue(List<YElement> yelements) { List<YElement> articles = YElementsParsingToolbox .filterYElementsOfStructureLevel(yelements, YConstants.EXT_LEVEL_JOURNAL_ARTICLE); if (articles.size() == 0) { return null; } if (articles.size() > 1) { log.error("More than one article found in package of yelements!"); } YElement article = articles.get(0); //System.out.println("[MscCategoriesFieldConstructor] article.getCategoryRefs().size() = "+article.getCategoryRefs().size()); List<YCategoryRef> mscRefs = filterMscCatRefs(article.getCategoryRefs()); StringBuilder cc = new StringBuilder(); for (YCategoryRef ref: mscRefs) { cc.append(ref.getCode()); cc.append(YElementToZentralBlattConverter.SUGGESTED_MULTIVALUE_FIELD_SEPARATOR); } return cc.toString(); }
private void updateStats(YElement yelement) { List<YCategoryRef> mscRefs = extractMscRefs(yelement.getCategoryRefs()); if (mscRefs.size() == 0) { return; } log.info("analyzing next yelement = [{}]", yelement); for (int i = 0; i < mscRefs.size(); ++i) { for (int j = i; j < mscRefs.size(); ++j) { String msc1 = mscRefs.get(i).getCode(); String msc2 = mscRefs.get(j).getCode(); Integer previousValue = cooccurrence.get(msc1, msc2, 0); // System.out.println("Incrementing ["+msc1+", "+msc2+"] from "+previousValue+" to "+(previousValue+1)); cooccurrence.set(msc1, msc2, (previousValue + 1)); } } /* * for (YCategoryRef msc1 : mscRefs) { for (YCategoryRef msc2 : mscRefs) * { Integer previousValue = cooccurrence.get(msc1.getCode(), * msc2.getCode(), 0); cooccurrence.set(msc1.getCode(), msc2.getCode(), * previousValue + 1); } } */ }
protected static List<YCategoryRef> sanitizeCategoryRef(YCategoryRef ref) { Pattern pattern = null; if (ClassificationIds.EXT_CLASSIFICATION_CLC.equals(ref.getClassification())) pattern = CLC_REF_PATTERN; else if (ClassificationIds.EXT_CLASSIFICATION_JEL.equals(ref.getClassification())) pattern = JEL_REF_PATTERN; else if (ClassificationIds.EXT_CLASSIFICATION_MSC.equals(ref.getClassification())) pattern = MSC_REF_PATTERN; else if (ClassificationIds.EXT_CLASSIFICATION_PACS.equals(ref.getClassification())) pattern = PACS_REF_PATTERN; else if (ClassificationIds.EXT_CLASSIFICATION_QICS.equals(ref.getClassification())) pattern = QICS_REF_PATTERN; else if (ClassificationIds.EXT_CLASSIFICATION_ZDM.equals(ref.getClassification())) pattern = ZDM_REF_PATTERN; else return Collections.singletonList(ref); String code = ref.getCode(); List<YCategoryRef> foundCodes = new ArrayList<YCategoryRef>(); Matcher matcher = pattern.matcher(code); while (true) { if (!matcher.find()) break; YCategoryRef found = new YCategoryRef(ref.getClassification(), matcher.group(1).replaceAll("\\p{Pd}", "-")); foundCodes.add(found); } return foundCodes; } }
public static boolean sanitizeCategoryRefs(YElement article) { if (article == null || article.getCategoryRefs().isEmpty()) return false; boolean warning = false; List<YCategoryRef> cleanRefs = new ArrayList<YCategoryRef>(); for (YCategoryRef ref : article.getCategoryRefs()) { if (ref == null || ref.getCode() == null || ref.getCode().trim().isEmpty()) continue; ref.setCode(ref.getCode().trim()); List<YCategoryRef> refs = sanitizeCategoryRef(ref); warning = warning || isChanged(ref, refs); cleanRefs.addAll(refs); } article.setCategoryRefs(cleanRefs); if (!warning) return false; YAttribute attr = article.getOneAttribute(Warnings.WARNINGS); if (attr == null) { attr = new YAttribute(Warnings.WARNINGS, (String) null); article.addAttribute(attr); } if (attr.getOneAttribute(Warnings.WARNINGS_CHECK_CATEGORY_REFS) == null) attr.addAttribute(Warnings.WARNINGS_CHECK_CATEGORY_REFS, ""); return true; }
String co = ref.getCode(); try {
private void chengeCategoryRef(YElement element, final String to, final Map<String, String> rootCategories , final YCategoryRef yCategoryRefWithCode) { YCategoryRef yCategoryRefToModify = new YCategoryRef(); yCategoryRefToModify.setClassification(to); yCategoryRefToModify.setCode(yCategoryRefWithCode.getCode()); element.addCategoryRef(yCategoryRefToModify); addRootCategories(yCategoryRefToModify, rootCategories); }
public static void updateYRelationWithZblClassificationCodes(YRelation relye, YElement zblye) { YAttribute ya; ya = new YAttribute(YConstants.TG_CATEGORY, ""); for (YCategoryRef r : zblye.getCategoryRefs()) { ya.addAttribute(new YAttribute(r.getClassification(), r.getCode())); } relye.addAttribute(ya); }
for (YCategoryRef category : yElement.getCategoryRefs()) { if (category != null && DisciplineOfScience.CATEGORY_CLASSIFICATION.equals(category.getClassification())) { disciplines.add(category.getCode());
ya = new YAttribute(YConstants.TG_CATEGORY,""); for(YCategoryRef r : zblye.getCategoryRefs()){ ya.addAttribute(new YAttribute(r.getClassification(), r.getCode()));
ya = new YAttribute(YConstants.TG_CATEGORY,""); for(YCategoryRef r : zblye.getCategoryRefs()){ ya.addAttribute(new YAttribute(r.getClassification(), r.getCode()));