private YAncestor getFirstNotVisitedAncestor(YStructure structure, Set<String> visitedElements) { final List<YAncestor> ancestors = structure.getAncestors(); for (int ancestorIndex = ancestors.size() - 1; ancestorIndex >= 0; ancestorIndex--) { final YAncestor currentAncestor = ancestors.get(ancestorIndex); if (!visitedElements.contains(currentAncestor.getIdentity())) { return currentAncestor; } } return null; }
if (HierarchyWithLevelIds.EXT_LEVEL_JOURNAL_VOLUME.equals(yAncestor.getLevel())) { if (firstVolume == null) { firstVolume = yAncestor; if (!secVolume.getDates().isEmpty()) { System.out.println("In element "+element.getId()+". Second is number!"); if (changeElementLevel(repository, secVolume.getIdentity())) { secVolume.setLevel(HierarchyWithLevelIds.EXT_LEVEL_JOURNAL_ISSUE); saveDocumentWithElement(repository, document, element);
public static void copyDataToAncestor(YElement ele, YAncestor anc) { anc.getNames().addAll(ele.getNames()); anc.getIds().addAll(ele.getIds()); anc.getDates().addAll(ele.getDates()); anc.setIdentity(ele.getId()); }
private Map<String, YDate> extractDatesFromHierarchy(final List<YStructure> structures) { Map<String, YDate> dates = new HashMap<>(); for (final YStructure structure : structures) { for (final YAncestor ancestor : structure.getAncestors()) { dates.putAll(processYDates(ancestor.getDates())); if (HierarchyWithLevelIds.EXT_LEVEL_JOURNAL_YEAR.equals(ancestor.getLevel())) { dates.put("hierarchy", getDateFromYear(ancestor)); } } } return dates; }
YAncestor journalAncestor = new YAncestor(); journalAncestor.setLevel(HierarchyWithLevelIds.EXT_LEVEL_JOURNAL_JOURNAL); journalAncestor.setIdentity(journal.getId()); journalAncestor.addName(journal.getDefaultName()); structure.addAncestor(journalAncestor); parentId=journal.getId(); YAncestor yearAncestor = new YAncestor(); yearAncestor.setLevel(HierarchyWithLevelIds.EXT_LEVEL_JOURNAL_YEAR); yearAncestor.setIdentity(year.getId()); yearAncestor.addName(year.getDefaultName()); structure.addAncestor(yearAncestor); parentId=year.getId(); YAncestor volumeAncestor = new YAncestor(); volumeAncestor.setLevel(HierarchyWithLevelIds.EXT_LEVEL_JOURNAL_VOLUME); volumeAncestor.setIdentity(volume.getId()); volumeAncestor.addName(volume.getDefaultName()); structure.addAncestor(volumeAncestor); parentId=volume.getId();
private void updateIssue(ZentralBlattSoFieldParser.SoFieldData soData) { if (soData.issue != null && soData.issue.length() > 0) { YAncestor ancestor = new YAncestor(YConstants.EXT_LEVEL_JOURNAL_ISSUE); // TODO // UID? YName issueName = new YName(soData.issue); yIssue.addName(issueName); ancestor.setIdentity(yIssue.getId()); ancestor.addName(issueName); yArticle.getStructure(YConstants.EXT_HIERARCHY_JOURNAL).addAncestor(ancestor); } }
private Map<String, AncestorData> extractHierarchy(YElement yElement) { Map<String, AncestorData> result = new HashMap<String, AncestorData>(); for (final String hierarhyId : YModelUtils.ALLOWED_HIERARCHY_ID) { YStructure yStructure = yElement.getStructure(hierarhyId); if (yStructure != null) { for (YAncestor ancestor : yStructure.getAncestors()) { if (ResourceDataConstants.MAP_ANCESTOR_TYPE_TO_LEVEL.containsValue(ancestor.getLevel())) { final YName ancestorName = ancestor.getOneName(); if (ancestorName != null) { result.put(ResourceDataConstants.MAP_ANCESTOR_TYPE_TO_LEVEL.inverse().get(ancestor.getLevel()), new AncestorData().setId(ancestor.getIdentity()).setName(ancestorName.getText())); } } } YCurrent current = yStructure.getCurrent(); if(current!=null && StringUtils.isNotBlank(current.getPosition())){ result.put(ResourceDataConstants.ANCESTOR_LEVEL_NAME_PAGES, new AncestorData().setName(current.getPosition())); } } } return result; }
@Override public boolean modify(YElement element) { if (element != null) { YStructure structure = element.getStructure(HierarchyWithLevelIds.EXT_HIERARCHY_JOURNAL); if (structure != null) { YAncestor journal = structure.getAncestor(HierarchyWithLevelIds.EXT_LEVEL_JOURNAL_JOURNAL); if (journal != null && StringUtils.isBlank(journal.getIdentity()) && journal.getOneName() != null ) { final String name = journal.getOneName().getText(); final String journalId = resolveJournalId(name); if (journalId != null) { journal.setIdentity(journalId); Map<String,String> parameters = buildParameters(structure); Map<String,String> structureIds = indexSearchUtil.resolveStructureIds(journalId, parameters); if (MapUtils.isNotEmpty(structureIds)) { for (Map.Entry<String, String> entry : structureIds.entrySet()) { structure.getAncestor(entry.getKey()).setIdentity(entry.getValue()); } } return true; } } } } return false; }
if (levelToFix.equals(yAncestor.getLevel())) { YElement ancElement = fetchElement(repository, yAncestor.getIdentity()); YStructure structure = ancElement.getStructure(HierarchyWithLevelIds.EXT_HIERARCHY_JOURNAL); String ancLevel = structure.getCurrent().getLevel(); if (!ancLevel.equals(levelToFix)) { yAncestor.setLevel(ancLevel); System.out.println("Ancestor in "+element.getId() + " has level "+levelToFix+" but should have "+ancLevel); fixed = true;
private YAncestor setNonIssueAncestorsAndGetExisitingIssue(String issueId, YStructure journal) { YAncestor existingIssue = null; List<YAncestor> nonIssueAncestors = new ArrayList<>(); for(YAncestor ancestor : journal.getAncestors()) { boolean isNotIssue = !ancestor.getLevel().equals(YConstants.EXT_LEVEL_JOURNAL_ISSUE); boolean isCurrentIssue = ancestor.getIdentity().equals(issueId); if(isNotIssue) { nonIssueAncestors.add(ancestor); } else if(isCurrentIssue) { existingIssue = ancestor; } else { // ignore/remove non current issues } } journal.setAncestors(nonIssueAncestors); return existingIssue; }
/** * Creates an element in the hierarchy. * * @param level hierarchy for the element * @param level level for the element in the hierarchy * @param name name to use as the canonical name of the element * @param parent parent for the element in the hierarchy * @param id eudml id * @return the created element */ public YElement element(String hierarchy, String level, YName name, YElement parent, String id) { YStructure ps = parent==null ? null : parent.getStructure(hierarchy); YStructure struct = new YStructure(hierarchy).setCurrent(new YCurrent(level)); List<String> issns = parent==null ? null : parent.getIds(IdSchemaIds.EXT_SCHEME_ISSN); String issn = (issns==null || issns.isEmpty()) ? null : issns.get(0); if (ps != null) { YAncestor ancestor = new YAncestor(ps.getCurrent().getLevel(), parent.getId()).addName(parent.getDefaultName()); if (StringUtils.isNotEmpty(issn)) { ancestor.addId(new YId(IdSchemaIds.EXT_SCHEME_ISSN, issn)); } struct.setAncestors(ps.getAncestors()).addAncestor(ancestor); } return new YElement(id).addName(name).addStructure(struct); }
private void updateJournal(ZentralBlattSoFieldParser.SoFieldData soData, ZentralBlattSeFieldParser.SeFieldData seData) { YAncestor ancestor = new YAncestor(YConstants.EXT_LEVEL_JOURNAL_JOURNAL); boolean updated = false; // is there any meaningful information in the yJournal.addName(title); ancestor.addName(title); updated = true; ancestor.addAttribute(attribute); updated = true; ancestor.setIdentity(yJournal.getId()); yYear.getStructure(YConstants.EXT_HIERARCHY_JOURNAL).addAncestor(ancestor); yVolume.getStructure(YConstants.EXT_HIERARCHY_JOURNAL).addAncestor(ancestor);
protected YStructure buildStructureFromParent(YElement parent, String hierarchy, String currentLevel) { YStructure structure = new YStructure(hierarchy); YCurrent current = new YCurrent(currentLevel); structure.setCurrent(current); if (parent != null) { YStructure parentStructure = parent.getStructure(hierarchy); structure.getAncestors().addAll(parentStructure.getAncestors()); YAncestor ancestor = new YAncestor(parentStructure.getCurrent().getLevel(), parent.getId()); ancestor.getNames().addAll(parent.getNames()); ancestor.getIds().addAll(parent.getIds()); structure.addAncestor(ancestor); } return structure; }
private String highlightedName(YElement element, ElementInfo elementInfo, InfoEntry entry) { String hlName = null; // try to get highlighted name YStructure struct = element.getStructure(elementInfo.getHierarchyId()); if (struct != null) { YAncestor ancestor = struct.getAncestor(entry.getLevel()); if (ancestor != null) { YName name = ancestor.getOneName(HighlightUtils.Y_TYPE_HIGHLIGHTED); if (!ancestor.getIdentity().equals(entry.getExtId())) { log.warn( "Different ancestor in YElement ({}) and infoService ({}). Highlight not performed.", ancestor.getIdentity(), entry.getExtId()); } else if (name != null) { hlName = name.getText(); } } } return hlName; }
private static void replaceJournalNameField(final YElement yElement, final String[] values) { if (values != null && values.length > 0) { } final YStructure structure = yElement.getStructure(YConstants.EXT_HIERARCHY_JOURNAL); if (structure != null) { for (final YAncestor ancestor : structure.getAncestors()) { final String level = ancestor.getLevel(); if (YConstants.EXT_LEVEL_JOURNAL_JOURNAL.equals(level)) { final String firstJournalName = values[0]; ancestor.addName(new YName(null, firstJournalName, Y_TYPE_HIGHLIGHTED)); } } } }
private void updateCommonFromAncestor(PublicationDownload download, YAncestor ancestor) { download.setDoi(getId(ancestor, IdSchemaIds.EXT_SCHEME_DOI)); download.setIssn(getId(ancestor, IdSchemaIds.EXT_SCHEME_ISSN)); download.setEissn(getId(ancestor, IdSchemaIds.EXT_SCHEME_EISSN)); download.setBwmetaId(ancestor.getIdentity()); download.setName(ancestor.getDefaultName().getText()); }
String level = actAnc.getLevel(); actAncMap.put(level, actAnc); String level = expAnc.getLevel(); if (actAncMap.containsKey(level)) { List<String> actNames = new ArrayList<String>(); for (YName yname : expAnc.getNames()) { expNames.add(yname.getText()); for (YName yname : actAncMap.get(level).getNames()) { actNames.add(yname.getText()); result.append(level, ResultStatus.FAILED, expAnc.getNames().size()); String level = yanc.getLevel(); result.append(level, ResultStatus.FAILED, 1); String level = yanc.getLevel(); result.append(level, ResultStatus.REDUNDANT, 1);
private void appendAncestorName(YStructure structure, Map<String, String> output, String level) { YAncestor ancestor = structure.getAncestor(level); if (ancestor != null && ancestor.getOneName()!=null ) { final String name = ancestor.getOneName().getText(); if (StringUtils.isNotBlank(name)) { output.put(level, name); } } }