Changeset 5036


Ignore:
Timestamp:
04/24/14 09:59:32 (10 years ago)
Author:
yana.panchenko@uni-tuebingen.de
Message:

change language selection effect

If a language is selected, only those top corpora are shown that have this language specified as the only language of the corpus. Before, the top corpora that have this language and any other languages could be shown. This change will help to avoid the situation when a mixture of languages appear in the search result even if the user selected a particular language.

Location:
SRUAggregator/trunk/src/main/java/eu/clarin/sru/fcs/aggregator
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • SRUAggregator/trunk/src/main/java/eu/clarin/sru/fcs/aggregator/app/SearchOptions.java

    r5035 r5036  
    101101    }
    102102
     103//    @Listen("onSelect = #languageSelect")
     104//    public void onSelectLanguage(Event ev) {
     105//        Combobox cbox = (Combobox) ev.getTarget();
     106//        String selectedLang = cbox.getSelectedItem().getValue();
     107//        for (Component comp : tree.getTreechildren().getChildren()) {
     108//            Treeitem treeitem = (Treeitem) comp;
     109//            DefaultTreeNode<Corpus> node = (DefaultTreeNode<Corpus>) treeitem.getValue();
     110//            Corpus corpus = node.getData();
     111//            if (corpus.getLanguages().contains(selectedLang) || selectedLang.equals(Languages.ANY_LANGUAGE_NAME)) {
     112//                treeitem.setVisible(true);
     113//            } else {
     114//                corpusRenderer.updateItem(treeitem, false);
     115//                treeitem.setVisible(false);
     116//            }
     117//        }
     118//    }
     119   
     120   
    103121    @Listen("onSelect = #languageSelect")
    104122    public void onSelectLanguage(Event ev) {
     
    109127            DefaultTreeNode<Corpus> node = (DefaultTreeNode<Corpus>) treeitem.getValue();
    110128            Corpus corpus = node.getData();
    111             if (corpus.getLanguages().contains(selectedLang) || selectedLang.equals(Languages.ANY_LANGUAGE_NAME)) {
     129            if ((corpus.getLanguages().contains(selectedLang) && corpus.getLanguages().size() == 1)
     130                    || selectedLang.equals(Languages.ANY_LANGUAGE_NAME)) {
    112131                treeitem.setVisible(true);
    113132            } else {
  • SRUAggregator/trunk/src/main/java/eu/clarin/sru/fcs/aggregator/app/WebAppListener.java

    r5035 r5036  
    5252    private static final TimeUnit CACHE_UPDATE_INTERVAL_UNIT = TimeUnit.HOURS;
    5353    private static final int CACHE_UPDATE_INTERVAL = 5;
    54     private static final int CACHE_MAX_DEPTH = 3;
     54    private static final int CACHE_MAX_DEPTH = 2;
    5555    private static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
    5656    public static final String CORPUS_CRAWLER = "CORPUS_CRAWLER";
     
    113113        EndpointUrlFilter filter = new EndpointUrlFilter();
    114114        //filter.urlShouldContainAnyOf("leipzig", ".mpi.nl");
    115         //filter.urlShouldContainAnyOf("uni-tuebingen.de", ".mpi.nl");
    116         filter.urlShouldContainAnyOf("dspin.dwds.de", "lindat.");
     115        filter.urlShouldContainAnyOf("uni-tuebingen.de", ".mpi.nl");
     116        //filter.urlShouldContainAnyOf("dspin.dwds.de", "lindat.");
    117117        ScanCrawler scanCrawler = new ScanCrawler(centerRegistry, sruScanClient, filter, CACHE_MAX_DEPTH);
    118118        //ScanCrawler scanCrawler = new ScanCrawler(centerRegistry, sruScanClient, null, CACHE_MAX_DEPTH);
  • SRUAggregator/trunk/src/main/java/eu/clarin/sru/fcs/aggregator/cache/SimpleInMemScanCache.java

    r5035 r5036  
    77import java.util.HashSet;
    88import java.util.LinkedHashMap;
     9import java.util.LinkedHashSet;
    910import java.util.List;
    1011import java.util.Map;
     
    5758    public void addCorpus(Corpus c, Corpus parentCorpus) {
    5859
    59         // index top corpora with unique language as for their languages
    60         //if (c.getLanguages().size() == 1 &&
    61         //        (root || this.))
     60       
    6261
    6362        handleToCorpus.put(c.getHandle(), c);
     
    8382            corpusToChildren.get(parentCorpus.getHandle()).add(c);
    8483            //childToParent.put(c.getHandle(), parentCorpus.getHandle());
     84        }
     85       
     86        // index top corpora with unique language as for their languages
     87        if (c.getLanguages().size() == 1 &&
     88                (parentCorpus == null || parentCorpus.getLanguages().size() > 0)) {
     89            String lang = getElementOfStringUnitset(c.getLanguages());
     90            if (!langToTopUniqueCorpora.containsKey(lang)) {
     91                langToTopUniqueCorpora.put(lang, new LinkedHashSet<Corpus>());
     92            }
     93            langToTopUniqueCorpora.get(lang).add(c);
    8594        }
    8695    }
     
    146155    @Override
    147156    public Map<String, Set<Corpus>> getTopUniqueLangToCorpora() {
    148         throw new UnsupportedOperationException("Not supported yet.");
     157        return this.langToTopUniqueCorpora;
    149158    }
    150159
    151160    @Override
    152161    public List<Corpus> getTopUniqueLanguageCorpora(String lang) {
    153         throw new UnsupportedOperationException("Not supported yet.");
     162        ArrayList<Corpus> corpora = new ArrayList<Corpus>(langToTopUniqueCorpora.get(lang).size());
     163        corpora.addAll(langToTopUniqueCorpora.get(lang));
     164        return corpora;
    154165    }
    155166
     
    158169        return this.handleToCorpus.get(handle);
    159170    }
     171
     172    private String getElementOfStringUnitset(Set<String> stringUnitSet) {
     173        return stringUnitSet.iterator().next();
     174    }
    160175}
Note: See TracChangeset for help on using the changeset viewer.