From 04dd3fc672e9c65ff791b3f818ce89ff346b8dd9 Mon Sep 17 00:00:00 2001 From: Brian Bolt Date: Thu, 2 Sep 2021 18:03:07 -0700 Subject: [PATCH] fixes mcneilco/acas#794 Remove license plate function and migration --- .../com/labsynch/labseer/domain/CorpName.java | 32 ++++++++--- ...__add_corp_name_license_plate_function.sql | 55 ------------------- 2 files changed, 24 insertions(+), 63 deletions(-) delete mode 100644 src/main/resources/db/migration/postgres/V2.0.6.2__add_corp_name_license_plate_function.sql diff --git a/src/main/java/com/labsynch/labseer/domain/CorpName.java b/src/main/java/com/labsynch/labseer/domain/CorpName.java index 45d46ed38..53e65bf15 100755 --- a/src/main/java/com/labsynch/labseer/domain/CorpName.java +++ b/src/main/java/com/labsynch/labseer/domain/CorpName.java @@ -334,18 +334,34 @@ public static List generateCustomParentSequence() { return q.getResultList(); } - public static List generateLicensePlate(int inputNumber) { - String sqlQuery = "SELECT licenseplate(:inputNumber) as license_plate"; - logger.debug(sqlQuery); - EntityManager em = Lot.entityManager(); - Query q = em.createNativeQuery(sqlQuery); - q.setParameter("inputNumber", inputNumber); - return q.getResultList(); + public static String generateLicensePlate(int inputNumber) { + inputNumber = inputNumber - 1; + int num; + if (inputNumber >= 1062600) { + // changed algorithm to skip '000' + inputNumber = inputNumber - 1063; + num= inputNumber % 999 + 1; + inputNumber=(int)(inputNumber/999); + + } else { + num=inputNumber%1000; + inputNumber=(int)(inputNumber/1000); + + }; + + String let=""; + + for (int i=0; i<3; i++) { + let = let+(char) (inputNumber%26 + 65); + inputNumber = (int)(inputNumber/26); + }; + let = new StringBuilder(let).reverse().toString(); + return String.format("%s%03d", let, num); } public static String generateCorpLicensePlate() { List seqList = CorpName.generateCustomParentSequence(); - String corpName = (String) CorpName.generateLicensePlate(Integer.parseInt(String.valueOf(seqList.get(0)))).get(0); + String corpName = CorpName.generateLicensePlate(Integer.parseInt(String.valueOf(seqList.get(0)))); return corpName; } diff --git a/src/main/resources/db/migration/postgres/V2.0.6.2__add_corp_name_license_plate_function.sql b/src/main/resources/db/migration/postgres/V2.0.6.2__add_corp_name_license_plate_function.sql deleted file mode 100644 index fb695dde5..000000000 --- a/src/main/resources/db/migration/postgres/V2.0.6.2__add_corp_name_license_plate_function.sql +++ /dev/null @@ -1,55 +0,0 @@ --- Name: convert input integer to license plate format --- dependencies -- install language plperl - ---Do this outside of Flyway (be careful with the cascade drop ---DROP EXTENSION IF EXISTS plperl CASCADE; ---CREATE EXTENSION plperl; - - -CREATE OR REPLACE FUNCTION licenseplate(integer) - -RETURNS text - -LANGUAGE plperl - -IMMUTABLE STRICT - -AS $function$ - - my ($int)=@_; $int--; - - my $num; - - if ($int >= 1062600) { - - ## changed algorithm to skip '000' - - $int -= 1063; - - $num=$int%999 + 1; - - $int=int($int/999); - - } else { - - $num=$int%1000; - - $int=int($int/1000); - - }; - - my $let=''; - - foreach (1..3) { - - $let.=chr(ord("A")+$int%26); - - $int= int ($int/26); - - }; - - die "overflow $_[0]" if $int>0; - - return sprintf "%s%03d", scalar reverse($let),$num; - -$function$ \ No newline at end of file