001    package org.mycore.frontend.indexbrowser.lucene;
002    
003    import java.util.ArrayList;
004    import java.util.List;
005    import java.util.StringTokenizer;
006    
007    import org.mycore.common.MCRConfiguration;
008    
009    /**
010     * Contains all data of a specified index. The configuration data will be
011     * read from the mycore properties file. Each index has to define the
012     * parameters in the form: MCR.IndexBrowser.{index-id}.{property}
013     *
014     * @author Matthias Eichner
015     */
016    public class MCRIndexBrowserConfig {
017    
018        private String index;
019    
020        private String browseField;
021    
022        private List<String> outputFields;
023    
024        private List<String> sortFields;
025    
026        private String order;
027    
028        private int maxPerPage;
029    
030        public MCRIndexBrowserConfig(String searchclass) {
031            set(searchclass);
032        }
033    
034        public void set(String searchclass) {
035            MCRConfiguration config = MCRConfiguration.instance();
036            String prefix = "MCR.IndexBrowser." + searchclass + ".";
037            index = config.getString(prefix + "Table");
038            browseField = config.getString(prefix + "Searchfield");
039            maxPerPage = config.getInt(prefix + "MaxPerPage");
040            String fields = config.getString(prefix + "ExtraOutputFields", null);
041            String fieldToSort = config.getString(prefix + "FieldsToSort", null);
042            order = config.getString(prefix + "Order", "ascending");
043            outputFields = buildFieldList(fields);
044            sortFields = buildFieldList(fieldToSort);
045        }
046    
047        private List<String> buildFieldList(String myfields) {
048            ArrayList<String> list = new ArrayList<String>();
049            if (myfields != null) {
050                StringTokenizer st = new StringTokenizer(myfields, ",");
051                while(st.hasMoreTokens())
052                    list.add(st.nextToken());
053            }
054            return list;
055        }
056    
057        public String getIndex() {
058            return index;
059        }
060    
061        public String getBrowseField() {
062            return browseField;
063        }
064    
065        public List<String> getOutputList() {
066            return outputFields;
067        }
068    
069        public List<String> getSortFields() {
070            return sortFields;
071        }
072    
073        public String getOrder() {
074            return order;
075        }
076    
077        public int getMaxPerPage() {
078            return maxPerPage;
079        }
080    
081    }