cron-expression-descriptor
cron-expression-descriptor copied to clipboard
A Java library that converts cron expressions into human readable descriptions
Cron Expression Descriptor
A Java library that converts cron expressions into human readable descriptions. Adapted from original work by Brady Holt (https://github.com/bradymholt/cron-expression-descriptor)
License
Licensed under the MIT license
Features
- Supports all cron expression special characters including * / , - ? L W, #
- Supports 5, 6 (w/ seconds or year), or 7 (w/ seconds and year) part cron expressions
- Supports Quartz Enterprise Scheduler cron expressions
- Localization with support for 22 languages
Add it to your project!
Maven
Add the following dependency to your pom.xml:
<dependency>
<groupId>it.burning</groupId>
<artifactId>cron-expression-descriptor</artifactId>
<version>1.2.10</version>
</dependency>
Gradle
Add the repositories and dependency to your gradle.build script:
repositories {
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
maven { url "https://oss.sonatype.org/content/repositories/releases/" }
}
dependencies {
implementation "it.burning:cron-expression-descriptor:1.2.10"
}
Options
A ExpressionDescriptor.Options object can be passed to getDescription(). The following options are available:
- boolean throwExceptionOnParseError - If exception occurs when trying to parse expression and generate description, whether to throw or catch and output the Exception message as the description. (Default: true)
- boolean verbose - Whether to use a verbose description (Default: false)
- boolean use24HourTimeFormat - If true, descriptions will use a 24-hour clock (Default: true)
- boolean useJavaEeScheduleExpression - If true, expressions with 5, 6 and 7 parts will all consider 0 and 7
as
SUNDAYfor the Day Of Week - string locale - The locale to use (Default: current system locale)
Example usage with default options:
ExpressionDescriptor.getDescription("0 0 12 * * ?");
> "At 12:00, every day"
Example usage with custom options:
ExpressionDescriptor.getDescription("0 0 12 * * ?",new Options(){{
setLocale("it");
setUse24HourTimeFormat(false);
}});
>"Alle 12:00 PM, ogni giorno"
Example usage for JEE Timer expressions [ Available Since Version 1.2.6+ ] (https://docs.oracle.com/javaee/7/tutorial/ejb-basicexamples004.htm):
ExpressionDescriptor.getDescription("0 0 13 * * 0",new Options(){{
setUseJavaEeScheduleExpression(true);
}});
>"At 13:00, only on Sunday"
ExpressionDescriptor.getDescription("0 0 13 * * 7",new Options(){{
setUseJavaEeScheduleExpression(true);
}});
>"At 13:00, only on Sunday"
ExpressionDescriptor.getDescription("0 0 13 * * 1",new Options(){{
setUseJavaEeScheduleExpression(true);
}});
>"At 13:00, only on Monday"
Please Note: Default options are cached internally, but if you want to use a custom Options set it is advisable to instantiate it only once and reuse it on every subsequent call to avoid useless allocation.
i18n
The following language translations are available.
- English -
en(Brady Holt) - Bulgarian -
bg(Angel Gospodinov) - Chinese Simplified - zh-Hans
zh-CN(Star Peng) - Chinese Traditional - zh-Hant
zh-TW(Ricky Chiang) - Danish -
da(Rasmus Melchior Jacobsen) - Dutch -
nl(TotalMace) - Finnish -
fi(Mikael Rosenberg) - French -
fr(Arnaud TAMAILLON) - German -
de(Michael Schuler) - Italian -
it(Luca Vignaroli) - Japanese -
ja(Alin Sarivan) - Korean -
ko(Ion Mincu) - Norwegian -
nb(Siarhei Khalipski) - Polish -
pl(foka) - Portuguese
pt(Miguel Guimarães) - Portuguese - Brazil
pt-BR(Renato Lima) - Romanian -
ro(Illegitimis) - Russian -
ru(LbISS) - Slovenian -
sl-SI(Jani Bevk) - Spanish -
es(Ivan Santos) - Spanish -Mexico
es-MX(Ion Mincu) - Swedish -
sv(roobin) - Turkish -
tr(Mustafa SADEDİL) - Ukrainian -
uk(Taras) - Vietnamese -
vi(Duong Van Minh)
If you want to manually set a default Locale for the descripion, to be used for all subsequent calls to " getDescription()" you can use the static method "setDefaultLocale()" by passing it the language identifier:
ExpressionDescriptor.setDefaultLocale("it");
ExpressionDescriptor.getDescription("0-10 11 * * *");
> "Alle 12:00, ogni giorno"
And you can revert at any time to the default Locale:
For Version 1.2.3+
ExpressionDescriptor.setDefaultLocale();
ExpressionDescriptor.getDescription("0-10 11 * * *");
> "At 12:00, every day"
Up until Version 1.2.2
ExpressionDescriptor.setDefaultLocale(null);
ExpressionDescriptor.getDescription("0-10 11 * * *");
> "At 12:00, every day"