Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

4917 refactor nicknaming hapi with version bump #4955

Merged
merged 25 commits into from
Jun 6, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
more review changes
  • Loading branch information
leif stawnyczy committed Jun 1, 2023
commit 1b68ff9667318920ec2806ff7e96cf4b41051522
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
import java.util.List;
import java.util.Map;

class NicknameMap {
public class NicknameMap {
private final Map<String, List<String>> myFormalToNick = new HashMap<>();
private final Map<String, List<String>> myNicknameToFormal = new HashMap<>();

Expand All @@ -45,31 +45,35 @@ void load(Reader theReader) throws IOException {
}
}

void clear() {
public void clear() {
myFormalToNick.clear();
myNicknameToFormal.clear();
}

void add(String theKey, List<String> theValues) {
public void add(String theKey, List<String> theValues) {
myFormalToNick.put(theKey, theValues);
for (String value : theValues) {
myNicknameToFormal.putIfAbsent(value, new ArrayList<>());
myNicknameToFormal.get(value).add(theKey);
}
}

int size() {
public int size() {
return myFormalToNick.size();
}

public boolean isEmpty() {
return size() > 0;
}

@Nonnull
List<String> getNicknamesFromFormalName(String theName) {
public List<String> getNicknamesFromFormalName(String theName) {
List<String> result = myFormalToNick.get(theName);
return result == null ? new ArrayList<>() : result;
}

@Nonnull
List<String> getFormalNamesFromNickname(String theNickname) {
public List<String> getFormalNamesFromNickname(String theNickname) {
List<String> result = myNicknameToFormal.get(theNickname);
return result == null ? new ArrayList<>() : result;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,6 @@
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;

/**
* A factory used to create NicknameSvc objects.
Expand All @@ -28,9 +25,7 @@ public class NicknameServiceFactory {

private NicknameSvc myNicknameSvc;

private final NicknameMap myNicknameMap = new NicknameMap();

private Map<String, Collection<String>> myNameToNickname;
private NicknameMap myNicknameMap;

/**
* Returns this factory's NicknameSvc
Expand All @@ -47,14 +42,13 @@ public synchronized NicknameSvc getNicknameSvc() {
*
* This map (if populated) will be used instead of the defaults.
*/
public void setNicknameMap(Map<String, Collection<String>> theNameToNicknameListMap) {
myNameToNickname = theNameToNicknameListMap;
public void setNicknameMap(NicknameMap theNameToNicknameListMap) {
myNicknameMap = theNameToNicknameListMap;

// we ideally never see this
// but in case someone wants to redefine the map after construction, we'll allow it
if (myNicknameSvc != null) {
ourLog.warn("Resetting Nickname map. Future calls to nickname service will use this new map");
myNicknameMap.clear();
populateNicknameMap();
myNicknameSvc.setNicknameMap(myNicknameMap);
}
Expand All @@ -68,7 +62,8 @@ private void createNicknameSvc() {
}

private void populateNicknameMap() {
if (myNameToNickname == null || myNameToNickname.isEmpty()) {
if (myNicknameMap == null) {
myNicknameMap = new NicknameMap();
// default
try {
Resource nicknameCsvResource = new ClassPathResource("/nickname/names.csv");
Expand All @@ -80,10 +75,6 @@ private void populateNicknameMap() {
} catch (IOException e) {
throw new ConfigurationException(Msg.code(2234) + "Unable to load nicknames", e);
}
} else {
for (Map.Entry<String, Collection<String>> entry : myNameToNickname.entrySet()) {
myNicknameMap.add(entry.getKey(), new ArrayList<>(entry.getValue()));
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,9 @@
*/
package ca.uhn.fhir.mdm.api;

import ca.uhn.fhir.jpa.nickname.NicknameMap;
import ca.uhn.fhir.mdm.rules.json.MdmRulesJson;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;

public interface IMdmSettings {
Expand Down Expand Up @@ -68,7 +66,7 @@ default String getSupportedMdmTypes() {
/**
* Returns a map of names -> list of related names
*/
default Map<String, Collection<String>> getNicknameMap() {
return new HashMap<>();
default NicknameMap getNicknameMap() {
return new NicknameMap();
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
*/
package ca.uhn.fhir.mdm.rules.config;

import ca.uhn.fhir.jpa.nickname.NicknameMap;
import ca.uhn.fhir.mdm.api.IMdmRuleValidator;
import ca.uhn.fhir.mdm.api.IMdmSettings;
import ca.uhn.fhir.mdm.rules.json.MdmRulesJson;
Expand All @@ -27,11 +28,6 @@
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

@Component
public class MdmSettings implements IMdmSettings {
Expand All @@ -50,7 +46,7 @@ public class MdmSettings implements IMdmSettings {
/**
* Map of name -> set of related nicknames
*/
private Map<String, Collection<String>> myNickNameMap = new HashMap<>();
private final NicknameMap myNickNameMap = new NicknameMap();

/**
* If disabled, the underlying MDM system will operate under the following assumptions:
Expand Down Expand Up @@ -170,7 +166,7 @@ public void setSearchAllPartitionForMatch(boolean theSearchAllPartitionForMatch)
}

@Override
public Map<String, Collection<String>> getNicknameMap() {
public NicknameMap getNicknameMap() {
return myNickNameMap;
}
}
Loading