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 }