Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.github.ddth.commons.utils.README.md Maven / Gradle / Ivy
# com.github.ddth.commons.utils
## Included in `ddth-commons-core`
***Maven***
```xml
com.github.ddth
ddth-commons-core
${ddth_commons_version}
```
### AESUtils
AES encryption utility class.
- Default: 128-bit encryption key
- Default: `AES/ECB/PKCS5PADDING` transformation
- Support custom transformation and IV
### DateFormatUtils
Utility to format a `java.util.Date` to string, and parse a string to `java.util.Date`.
- Use a pool of `java.text.DateFormat`s for multi-threading environment.
***New since v0.6.1***
- New constant `DF_ISO8601`: ISO8601 datetime format
### DateTimeUtils
Helper class to work with `java.util.Date` and `java.util.Calendar`.
- Calculate the start-of-second/minute/hour/day/week/month/year point of a supplied `Calendar`.
### DPathUtils
Utility to access data from a hierarchy structure.
DPath notation:
- `.` (dot character): path separator.
- `name`: access a map's attribute specified by `name`.
- `[i]`: access i'th element of a list/map (0-based).
(example: `employees.[1].first_name`).
Sample usage: assuming you have the following data structure:
```java
Map company = new HashMap();
company.put("name", "Monster Corp.");
company.put("year", 2003);
List> employees = new ArrayList>();
company.put("employees", employees);
Map employee1 = new HashMap();
employee1.put("first_name", "Mike");
employee1.put("last_name", "Wazowski");
employee1.put("email", "[email protected] ");
employee1.put("age", 29);
employees.add(employee1);
Map employee2 = new HashMap();
employee2.put("first_name", "Sulley");
employee2.put("last_name", "Sullivan");
employee2.put("email", "[email protected] ");
employee2.put("age", 30);
employees.add(employee2);
```
You can access company's attributes:
```java
String companyName = DPathUtils.getValue(company, "name", String.class);
//got string "Monster Corp."
Integer companyYear = DPathUtils.getValue(company, "year", Integer.class);
//got integer 2003
```
You can access the two employees:
```java
Object user1 = DPathUtils.getValue(company, "employees.[0]");
//got map {first_name=Mike, [email protected] , age=29, last_name=Wazowski}
Map user2 = DPathUtils.getValue(company, "employees.[1]", Map.class);
//got map {first_name=Sulley, [email protected] , age=30, last_name=Sullivan}
```
Or, employee's attributes:
```java
String firstName1 = DPathUtils.getValue(company, "employees.[0].first_name", String.class);
Object email2 = DPathUtils.getValue(company, "employees.[1].email");
//got string "[email protected] "
Long age2 = DPathUtils.getValue(company, "employees.[1].age", Long.class);
//got a Long value of 30
```
***New since v0.1.2***
- `DPathUtils.getValue(Object target, String dPath, Class clazz)` now tries its best to convert returned value to the specified type. For example, the value extracted by `dPath` is a string `"12345"` and the clazz is of type `Integer`, the method will parse the string `"12345"` to the integer `12345`.
***New since v0.6.2***
- `DPathUtils` now supports reading/writing values from/to Jackson's JSON tree (need `ddth-commons-serialization`).
### HashUtils
Helper class to calculate hash values.
- Fash hashing function.
- Linear hashing maps an object to a bucket (object -> [0, numBuckets)).
- Consistent hashing map an object to a bucket (object -> [0, numBuckets)).
- CRC32, MD5, SHA1, SHA256, SHA512 hashing functions.
***New since v0.6.3***
- New methods `long checksumXXX(...)`: calculate checksum of an object.
- New methods `String murmur3(String)` and `String murmur3(byte[])`.
- Change `murmur3`, `crc32`, `md5`, `sha1`, `sha256`, `sha512` and `UTF8` to `public final static`.
- New attribute `fashHashFunc`: alias of `murmur3`.
### IdGenerator
A Java implementation of Twitter Snowflake algorithm to generate IDs.
Sample usage:
```java
IdGenerator idGen = IdGenerator.getInstance(IdGenerator.getMacAddr());
long id64 = idGen.generateId64();
String id128Hex = idGen.generateId128Hex();
...
```
### Ipv4Utils
IPV4 utility class.
- Convert IP number to long (e.g. 10.0.0.1 -> 167772161) and vice versa.
- Check if an IP (e.g. 10.0.0.5) matches a subnet (e.g. 10.0.0.0/24).
### MapUtils
***New since v0.6.1***
Helper class to work with `java.util.Map`.
- Extract typed-value from map.
- Construct a map from flat array of objects.
- Calculate map's checksum.
***New since v0.6.3***
- Remove method `long checksum(Map,?>)`, use `HashUtils.checksumXXX(...)` instead.
### ReflectionUtils
***New sintce v0.5.0***
Reflection utility class.
### RSAUtils
RSA encryption utility class.
- Default: 512, 1024, 2048 bit encryption key
- Default: `RSA/ECB/PKCS1Padding` transformation (11-byte padding size)
- Support custom transformation and padding size
### UnsignedUtils
Utility to work with unsigned `long`s and `int`s, radix up to `62` (`0-9`, `A-Z` and `a-z`).
- `parseInt(s, radix)`: parse a unsigned int with the given radix, up to `62`.
- `parseLong(s, radix)`: parse a unsigned long with the given radix, up to `62`.
- `toString(intValue, radix)`: convert a unsigned int to string for the given radix, up to `62`.
- `toString(longValue, radix)`: convert a unsigned long to string for the given radix, up to `62`.
### ValueUtils
***New since v0.6.1***
Common utility class used by `MapUtils`, `DPathUtils` and `JacksonUtils` (need `ddth-commons-serialization`).
### VersionUtils
Utility to compare two version strings.
```java
/* "0.1.2" < "0.1.10", returns a negative number */
VersionUtils.compareVersions("0.1.2", "0.1.10");
/* "0.2.0" > "0.1.19", returns a positive number */
VersionUtils.compareVersions("0.2.0", "0.1.19");
```
## Included in `ddth-commons-serialization`
***Maven***
```xml
com.github.ddth
ddth-commons-serialization
${ddth_commons_version}
```
### SerializationUtils
***New since v0.2.0***
- Serialize/De-serialize object to/from JSON string (use FasterXML's Jackson library).
- Serialize/De-serialize objecct to/from `byte[]` (use Jboss Serialization libary).
***New since v0.6.2***
- Serialize/De-serialize object to/from Jackson's `JsonNode`.
## JacksonUtils
***New since v0.6.2***
Helper class to work with Jackson's `JsonNode`.
- Serialize object to `JsonNode`.
- Deserialize `JsonNode` to object.
- Load JSON tree from source.
- Access data from JSON tree using DPath expression.
***New since v0.6.2.1***
- New method `long checksum(JsonNode)`: calculate checksum of a `JsonNode`
***New since v0.6.3***
- Improve `JsonNode`'s checksum calculation.
## Included in `ddth-commons-spring`
***Maven***
```xml
com.github.ddth
ddth-commons-spring
${ddth_commons_version}
```
### SpringUtils
Helper class to obtain Spring's beans from an `ApplicationContext`.
- Get a bean/beans, return `null` or empty collection on `NoSuchBeanDefinitionException`
## Included in `ddth-commons-thrift`
***Maven***
```xml
com.github.ddth
ddth-commons-thrift
${ddth_commons_version}
```
### ThriftUtils
***New since v0.4.0***
Helper class to work with Apache Thrift.
- Serialize/De-serialize a thrift `TBase` object to/from `byte[]`.
- Helper methods to create various thrift servers.
## Included in `ddth-commons-typesafeconfig`
***Maven***
```xml
com.github.ddth
ddth-commons-typesafeconfig
${ddth_commons_version}
```
### TypesafeConfigUtils
***New since v0.9.1***
Helper class to work with application's config file:
- Support various formats: HOCON, JSON, Properties, etc (see https://github.com/lightbend/config)
- Load, Parse & Resolve config files
- Helper methods to retrieve config value(s) as Java object(s)
- Return `null` in case of `ConfigException.Missing`, `ConfigException.WrongType` or `ConfigException.BadValue`