public class TrackingCodeBuilder
extends java.lang.Object
Provides a unique random tracking code builder. The build method will ensure the
tracking number is globally unique across both transaction and transaction
history tables. If an existing tracking code is found, the build method will
continue to generate a new tracking codes until it has created a globally unique
value. If a unique value has not been generated after 100 attempts a
IllegalArgumentException
will be thrown. Examples Please find the
tracking code builder examples below.
Create Transaction Tracking Code
The example below is creating an unique transaction tracking code and prefixing
it with the form code and postfixing it with a test environment indicator.
class FluentTrackingNumberService {
String invoke(SvcDef svcDef, Form form, HttpServletRequest request, User user) {
return new TrackingCodeBuilder()
.setPrefix(form.formCode + "-")
.setPostfix("-TEST")
.build()
}
}
- Since:
- 5.0.0
Constructor Summary
Constructors
Constructor |
Description |
TrackingCodeBuilder() |
|
Method Summary
All Methods Instance Methods Concrete Methods
Modifier and Type |
Method |
Description |
java.lang.String |
build() |
Return a new random transaction tracking code (tracking number) for the
specified properties.
|
TrackingCodeBuilder |
setPostfix(java.lang.String postfix) |
Set the tracking code value to postfix random component.
|
TrackingCodeBuilder |
setPrefix(java.lang.String prefix) |
Set the tracking code value to prefix random component.
|
TrackingCodeBuilder |
setRandomChars(java.lang.String randomChars) |
Set the character values to be used in the random component.
|
TrackingCodeBuilder |
setRandomLength(int randomLength) |
Set the random component character length.
|
boolean |
trackingCodeExists(java.lang.String trackingCode) |
Return true if the specified tracking code is already used.
|
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString,
wait, wait, wait
Constructor Detail
TrackingCodeBuilder
public TrackingCodeBuilder()
Method Detail
setPrefix
public TrackingCodeBuilder setPrefix(java.lang.String prefix)
Set the tracking code value to prefix random component.
- Parameters:
prefix
- the tracking code prefix
- Returns:
- the tracking code builder
setPostfix
public TrackingCodeBuilder setPostfix(java.lang.String postfix)
Set the tracking code value to postfix random component.
- Parameters:
postfix
- the tracking code post
- Returns:
- the tracking code builder
setRandomLength
public TrackingCodeBuilder setRandomLength(int randomLength)
Set the random component character length. The default length is 7.
- Parameters:
randomLength
- the random component character length
- Returns:
- the tracking code builder
setRandomChars
public TrackingCodeBuilder setRandomChars(java.lang.String randomChars)
Set the character values to be used in the random component. The default values
include: BCDFGHJKLMNPQRSTVWXYZ23456789
- Parameters:
-
randomChars
- the character values to be used in the random
component.
- Returns:
- the tracking code builder
trackingCodeExists
public boolean trackingCodeExists(java.lang.String trackingCode)
Return true if the specified tracking code is already used.
- Parameters:
-
trackingCode
- the tracking code value to check (must not be
null or an empty string)
- Returns:
-
true if the tracking code value is already in use or there was an error
during lookup
build
public java.lang.String build()
Return a new random transaction tracking code (tracking number) for the
specified properties. This method will ensure the tracking number is globally
unique across both transaction and transaction history tables. If an existing
tracking code is found, this method will continue to generate a new tracking
codes until a globally unique value is found. If this method cannot generate a
unique value after 10 attempts it will throw an
IllegalArgumentException
If a unique tracking code is found, the code is also stored in the
tracking_number table that records all unique codes.
- Returns:
-
new random transaction tracking code (tracking number) for the specified
properties.