11package edu .suffolk .litlab .efsp .tyler ;
22
33import edu .suffolk .litlab .efsp .Jurisdiction ;
4+ import java .io .IOException ;
45import java .net .URL ;
6+ import java .util .EnumMap ;
57import java .util .Map ;
68import java .util .Optional ;
9+ import java .util .Properties ;
710import org .slf4j .Logger ;
811import org .slf4j .LoggerFactory ;
912import tyler .efm .EfmFirmService ;
1013import tyler .efm .EfmUserService ;
1114
1215public class TylerClients {
1316 private static final Logger log = LoggerFactory .getLogger (TylerClients .class );
14-
1517 private static final String USER_WSDL = "-EFMUserServiceSingle.svc.wsdl" ;
1618 private static final String FIRM_WSDL = "-EFMFirmServiceSingle.svc.wsdl" ;
19+ private static final String VERSION_KEY_PREFIX = "edu.suffolk.litlab.efsp.tyler.version." ;
1720
1821 private static final Map <Jurisdiction , TylerVersion > STAGE_VERSION_MAP =
19- Map .of (
20- Jurisdiction .CALIFORNIA , TylerVersion .v2024_6 ,
21- Jurisdiction .ILLINOIS , TylerVersion .v2024_6 ,
22- Jurisdiction .INDIANA , TylerVersion .v2024_6 ,
23- Jurisdiction .MASSACHUSETTS , TylerVersion .v2025_0 ,
24- Jurisdiction .TEXAS , TylerVersion .v2024_6 ,
25- Jurisdiction .VERMONT , TylerVersion .v2024_6 );
26-
22+ loadVersionMap (TylerEnv .STAGE );
2723 private static final Map <Jurisdiction , TylerVersion > PROD_VERSION_MAP =
28- Map .of (
29- Jurisdiction .ILLINOIS , TylerVersion .v2024_6 ,
30- Jurisdiction .MASSACHUSETTS , TylerVersion .v2022_1 );
24+ loadVersionMap (TylerEnv .PROD );
25+
26+ private static Map <Jurisdiction , TylerVersion > loadVersionMap (TylerEnv env ) {
27+ String propertiesFile = "application." + env .getName () + ".properties" ;
28+ var props = new Properties ();
29+ try (var is = TylerClients .class .getClassLoader ().getResourceAsStream (propertiesFile )) {
30+ if (is == null ) {
31+ throw new RuntimeException ("Could not find properties file: " + propertiesFile );
32+ }
33+ props .load (is );
34+ } catch (IOException e ) {
35+ throw new RuntimeException ("Failed to load properties file: " + propertiesFile , e );
36+ }
37+ var map = new EnumMap <Jurisdiction , TylerVersion >(Jurisdiction .class );
38+ for (Jurisdiction jurisdiction : Jurisdiction .values ()) {
39+ String key = VERSION_KEY_PREFIX + jurisdiction .getName ();
40+ String value = props .getProperty (key );
41+ if (value != null ) {
42+ try {
43+ map .put (jurisdiction , TylerVersion .valueOf (value .trim ()));
44+ } catch (IllegalArgumentException e ) {
45+ throw new RuntimeException (
46+ "Unknown TylerVersion value '" + value .trim () + "' for key '" + key + "'" );
47+ }
48+ }
49+ }
50+ return map ;
51+ }
3152
32- /**
33- * Gets the EfmUserService from the individual jursdiction and env arguments.
34- *
35- * @param domain e.g. Jurisdiction.ILLINOIS, TylerEnv.STAGE.
36- */
3753 public static Optional <TylerUserFactory > getEfmUserFactory (TylerDomain domain ) {
3854 var version = getVersion (domain );
3955 return version .flatMap (
@@ -52,14 +68,6 @@ public static Optional<TylerFirmFactory> getEfmFirmFactory(TylerDomain domain) {
5268 });
5369 }
5470
55- /**
56- * Gets Tyler server's root URL for a given jurisdiction / Tyler Env (i.e. california stage).
57- *
58- * <p>TODO(brycew): turn this into a URL type? Find where it's used.
59- *
60- * @param domain
61- * @return
62- */
6371 public static String getTylerServerRootUrl (TylerDomain domain ) {
6472 if (domain .jurisdiction () == Jurisdiction .CALIFORNIA ) {
6573 return "https://california-efm-" + domain .env ().getName () + ".tylertech.cloud/" ;
@@ -73,15 +81,10 @@ public static String getTylerServerRootUrl(TylerDomain domain) {
7381 public static Optional <TylerVersion > getVersion (TylerDomain domain ) {
7482 Map <Jurisdiction , TylerVersion > versionMap =
7583 switch (domain .env ()) {
76- case TylerEnv . STAGE -> STAGE_VERSION_MAP ;
77- case TylerEnv . PROD -> PROD_VERSION_MAP ;
84+ case STAGE -> STAGE_VERSION_MAP ;
85+ case PROD -> PROD_VERSION_MAP ;
7886 };
79-
80- if (!versionMap .containsKey (domain .jurisdiction ())) {
81- return Optional .empty ();
82- }
83-
84- return Optional .of (versionMap .get (domain .jurisdiction ()));
87+ return Optional .ofNullable (versionMap .get (domain .jurisdiction ()));
8588 }
8689
8790 private static Optional <URL > createLocalWsdlUrl (
0 commit comments