private void findAliases(Term primeTerm, String target, String prefix) { Morpher morpher = null; try { morpher = new Morpher(target); if (morpher.getData()) { Set<String> aliases = new HashSet<String>(); for (Morpher.Morph morph : morpher.getAllMorph()) { if (morph == null) { return; } String alias = prefix + morph.text; if (morph != null && !alias.isEmpty() && !alias.equals(primeTerm.getName())) { if (!aliases.contains(alias)) { TermMorph termMorph = commonDao.get(TermMorph.class, alias); if (termMorph == null) { commonDao.save(new TermMorph(alias, primeTerm.getUri())); log.info("Alias added: " + alias); } aliases.add(alias); } } } /* for (Map.Entry<String, Term> entry : aliases.entrySet()) { if (primeTerm.getUri().equals(entry.getValue().generateUri())) continue; commonDao.save(new Link(primeTerm, entry.getValue(), Link.ALIAS, Link.MORPHEME_WEIGHT)); }*/ } } catch (Exception e) { log.throwing(getClass().getName(), "findAliases", e); throw new RuntimeException(e); } }
public Term add(String name, String shortDescription, String description) { name = name.replace("\"", "").replace("«", "").replace("»", "").trim(); name = WordUtils.capitalize( name, new char[] { '@' }); // Делаем первую букву большой, @ - знак который не появляеться в названии, чтобы // поднялась только первая буква всей фразы Term term = termDao.getByName(name); if (term == null) { term = termDao.save(new Term(name, shortDescription, description)); if (shortDescription != null) term.setTaggedShortDescription(termsMarker.mark(shortDescription)); if (description != null) term.setTaggedDescription(termsMarker.mark(description)); String termName = term.getName(); log.info("Added: " + termName); if (TermUtils.isComposite(termName)) { String target = TermUtils.getNonCosmicCodePart(termName); if (target != null) { findAliases(term, target, termName.replace(target, "")); } } else if (!TermUtils.isCosmicCode(termName)) { findAliases(term, termName, ""); } publisher.publishEvent(new NewTermEvent(term)); } else { String oldShortDescription = null; if (shortDescription != null && !shortDescription.isEmpty()) { oldShortDescription = term.getShortDescription(); term.setShortDescription(shortDescription); term.setTaggedShortDescription(termsMarker.mark(shortDescription)); } String oldDescription = null; if (description != null && !description.isEmpty()) { oldDescription = term.getDescription(); term.setDescription(description); term.setTaggedDescription(termsMarker.mark(description)); } termDao.save(term); publisher.publishEvent(new TermUpdatedEvent(term, oldShortDescription, oldDescription)); } new Thread( new Runnable() { @Override public void run() { termsMap.reload(); } }) .start(); return term; }