| /* |
| * 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.equalsIgnoreCase("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; |
| } |
| |
| } |