blob: 4fccffbf2db829e731ee9ba8cf1d0c674d0c29a3 [file] [log] [blame]
/*
* Copyright 2014 The Apache Software Foundation.
*
* Licensed 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.
*/
package opennlp.addons.geoentitylinker;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class AdminBoundaryContext {
private final Map<String, Set<Integer>> countryMentions;
private final Map<String, Set<Integer>> provMentions;
private final Map<String, Set<Integer>> countyMentions;
private final Set<String> countryHits;
private final Set<String> provHits;
private final Set<String> countyHits;
private final Map<String, String> countryRefMap;
private final Map<String, String> countryRegexMap;
private final Map<String, String> countyRegexMap;
private final Map<String, String> provinceRegexMap;
private final Map<String, Map<String, String>> provRefMap;
private final Map<String, Map<String, String>> countyRefMap;
private final Set<String> whereClauses;
private final Map<String, Set<String>> nameCodesMap;
public AdminBoundaryContext(Map<String, Set<Integer>> countryMentions,
Map<String, Set<Integer>> provMentions,
Map<String, Set<Integer>> countyMentions,
Set<String> countryHits,
Set<String> provHits,
Set<String> countyHits,
Map<String, String> countryRefMap,
Map<String, Map<String, String>> provRefMap,
Map<String, Map<String, String>> countyRefMap, Map<String, Set<String>> nameCodesMap, Map<String, String> countryRegexMap, Map<String, String> provinceRegexMap,
Map<String, String> countyRegexMap) {
this.countryMentions = countryMentions;
this.provMentions = provMentions;
this.countyMentions = countyMentions;
this.countryHits = countryHits;
this.provHits = provHits;
this.countyHits = countyHits;
this.countryRefMap = countryRefMap;
this.provRefMap = provRefMap;
this.countyRefMap = countyRefMap;
this.whereClauses = setWhereClauses();
this.nameCodesMap = nameCodesMap;
this.countryRegexMap = countryRegexMap;
this.provinceRegexMap = provinceRegexMap;
this.countyRegexMap = countyRegexMap;
}
public Map<String, Set<String>> getNameCodesMap() {
return nameCodesMap;
}
public Map<String, Set<Integer>> getCountryMentions() {
return countryMentions;
}
public Map<String, Set<Integer>> getProvMentions() {
return provMentions;
}
public Map<String, Set<Integer>> getCountyMentions() {
return countyMentions;
}
public Set<String> getCountryHits() {
return countryHits;
}
public Set<String> getProvHits() {
return provHits;
}
public Set<String> getCountyHits() {
return countyHits;
}
public Map<String, String> getCountryRefMap() {
return countryRefMap;
}
public Map<String, Map<String, String>> getProvRefMap() {
return provRefMap;
}
public Map<String, Map<String, String>> getCountyRefMap() {
return countyRefMap;
}
public Set<String> getWhereClauses() {
return whereClauses;
}
private Set<String> setWhereClauses() {
Set<String> clauses = new HashSet<>();
for (String countryCode : this.getCountryHits()) {
String gazType = countryCode.toLowerCase().equals("us") ? " AND gazsource:usgs" : " AND gazsource:geonames";
if (countryCode.toLowerCase().matches(".*rg[0-9].*")) {
gazType = " AND gazsource:region";
}
Map<String, String> provsForCountry = this.getProvRefMap().get(countryCode);
if (provsForCountry == null) {
provsForCountry = new HashMap<>();
}
Map<String, String> provs = new HashMap<>();
// if (!provsForCountry.isEmpty()) {
// for (String pcode : provsForCountry.keySet()) {
// if (this.getProvHits().contains(pcode)) {
// provs.put(pcode, provsForCountry.get(pcode));
//
// clauses.add(" countrycode:" + countryCode + " AND admincode:" + pcode + gazType);
//
// }
// }
// }
if (provs.isEmpty()) {
//got a country with no mentioned provs
clauses.add(" countrycode:" + countryCode + gazType);
}
}
return clauses;
}
public Map<String, String> getCountryRegexMap() {
return countryRegexMap;
}
public Map<String, String> getCountyRegexMap() {
return countyRegexMap;
}
public Map<String, String> getProvinceRegexMap() {
return provinceRegexMap;
}
}