-package org.apache.lucene.benchmark.byTask.feeds;
-
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.lucene.benchmark.byTask.utils.Config;
-
-/**
- * Adds fields appropriate for sorting: country, random_string and sort_field
- * (int). Supports the following parameters:
- * <ul>
- * <li><b>sort.rng</b> - defines the range for sort-by-int field (default
- * <b>20000</b>).
- * <li><b>rand.seed</b> - defines the seed to initialize Random with (default
- * <b>13</b>).
- * </ul>
- */
-public class SortableSingleDocSource extends SingleDocSource {
-
- private static String[] COUNTRIES = new String[] {
- "European Union", "United States", "Japan", "Germany", "China (PRC)",
- "United Kingdom", "France", "Italy", "Spain", "Canada", "Brazil", "Russia",
- "India", "South Korea", "Australia", "Mexico", "Netherlands", "Turkey",
- "Sweden", "Belgium", "Indonesia", "Switzerland", "Poland", "Norway",
- "Republic of China", "Saudi Arabia", "Austria", "Greece", "Denmark", "Iran",
- "South Africa", "Argentina", "Ireland", "Thailand", "Finland", "Venezuela",
- "Portugal", "Hong Kong", "United Arab Emirates", "Malaysia",
- "Czech Republic", "Colombia", "Nigeria", "Romania", "Chile", "Israel",
- "Singapore", "Philippines", "Pakistan", "Ukraine", "Hungary", "Algeria",
- "New Zealand", "Egypt", "Kuwait", "Peru", "Kazakhstan", "Slovakia",
- "Morocco", "Bangladesh", "Vietnam", "Qatar", "Angola", "Libya", "Iraq",
- "Croatia", "Luxembourg", "Sudan", "Slovenia", "Cuba", "Belarus", "Ecuador",
- "Serbia", "Oman", "Bulgaria", "Lithuania", "Syria", "Dominican Republic",
- "Tunisia", "Guatemala", "Azerbaijan", "Sri Lanka", "Kenya", "Latvia",
- "Turkmenistan", "Costa Rica", "Lebanon", "Uruguay", "Uzbekistan", "Yemen",
- "Cyprus", "Estonia", "Trinidad and Tobago", "Cameroon", "El Salvador",
- "Iceland", "Panama", "Bahrain", "Ivory Coast", "Ethiopia", "Tanzania",
- "Jordan", "Ghana", "Bosnia and Herzegovina", "Macau", "Burma", "Bolivia",
- "Brunei", "Botswana", "Honduras", "Gabon", "Uganda", "Jamaica", "Zambia",
- "Senegal", "Paraguay", "Albania", "Equatorial Guinea", "Georgia",
- "Democratic Republic of the Congo", "Nepal", "Afghanistan", "Cambodia",
- "Armenia", "Republic of the Congo", "Mozambique", "Republic of Macedonia",
- "Malta", "Namibia", "Madagascar", "Chad", "Burkina Faso", "Mauritius",
- "Mali", "The Bahamas", "Papua New Guinea", "Nicaragua", "Haiti", "Benin",
- "alestinian flag West Bank and Gaza", "Jersey", "Fiji", "Guinea", "Moldova",
- "Niger", "Laos", "Mongolia", "French Polynesia", "Kyrgyzstan", "Barbados",
- "Tajikistan", "Malawi", "Liechtenstein", "New Caledonia", "Kosovo",
- "Rwanda", "Montenegro", "Swaziland", "Guam", "Mauritania", "Guernsey",
- "Isle of Man", "Togo", "Somalia", "Suriname", "Aruba", "North Korea",
- "Zimbabwe", "Central African Republic", "Faroe Islands", "Greenland",
- "Sierra Leone", "Lesotho", "Cape Verde", "Eritrea", "Bhutan", "Belize",
- "Antigua and Barbuda", "Gibraltar", "Maldives", "San Marino", "Guyana",
- "Burundi", "Saint Lucia", "Djibouti", "British Virgin Islands", "Liberia",
- "Seychelles", "The Gambia", "Northern Mariana Islands", "Grenada",
- "Saint Vincent and the Grenadines", "Saint Kitts and Nevis", "East Timor",
- "Vanuatu", "Comoros", "Samoa", "Solomon Islands", "Guinea-Bissau",
- "American Samoa", "Dominica", "Micronesia", "Tonga", "Cook Islands",
- "Palau", "Marshall Islands", "S�o Tom� and Pr�ncipe", "Anguilla",
- "Kiribati", "Tuvalu", "Niue" };
-
- private int sortRange;
- private Random r;
-
- @Override
- public DocData getNextDocData(DocData docData) throws NoMoreDataException {
- docData = super.getNextDocData(docData);
- Properties props = new Properties();
-
- // random int
- props.put("sort_field", Integer.toString(r.nextInt(sortRange)));
-
- // random string
- int len = nextInt(2, 20);
- char[] buffer = new char[len];
- for (int i = 0; i < len; i++) {
- buffer[i] = (char) r.nextInt(0x80);
- }
- props.put("random_string", new String(buffer));
-
- // random country
- props.put("country", COUNTRIES[r.nextInt(COUNTRIES.length)]);
- docData.setProps(props);
- return docData;
- }
-
- private int nextInt(int start, int end) {
- return start + r.nextInt(end - start);
- }
-
- @Override
- public void setConfig(Config config) {
- super.setConfig(config);
- sortRange = config.get("sort.rng", 20000);
- r = new Random(config.get("rand.seed", 13));
- }
-
-}