package com.ese.utils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.*;
public enum Utils {
;
public final static boolean TRUE = true;
public static List getEmptyList(){
return Collections.EMPTY_LIST;
}
public static boolean isNull(final Object object){
return object == null;
}
public static boolean isEmpty(final String string){
return StringUtils.isEmpty(string);
}
public static boolean isZero(final String string){
return 0 == string.length();
}
public static boolean equals(final String string, final String string2){
return StringUtils.equals(string, string2);
}
public static<T> List<T> safetyList(final List<T> list) {
return !isNull(list) && list.size() > 0 ? list : (List<T>) Collections.EMPTY_LIST;
}
public static<T> boolean isSafetyList(final List<T> list){
return !isNull(list) && !isZero(list.size());
}
public static<T> boolean isCollection(final Collection collection){
return !isNull(collection) && !isZero(collection.size());
}
public static boolean isZero(int id){
try {
return id == 0;
} catch (NullPointerException e) {
return false;
}
}
public static boolean isZero(BigDecimal id){
try {
return id == BigDecimal.ZERO;
} catch (NullPointerException e) {
return false;
}
}
public static BigDecimal divide(BigDecimal value, BigDecimal divisor) {
if (value == null || divisor == null)
return null;
if (BigDecimal.ZERO.compareTo(divisor) == 0) {
return BigDecimal.ZERO;
}
try {
return value.divide(divisor, 4, RoundingMode.HALF_UP);
} catch (Exception e) {
return BigDecimal.ZERO;
}
}
public static BigDecimal divide(BigDecimal value, BigDecimal divisor, int round) {
if (value == null || divisor == null)
return null;
if (BigDecimal.ZERO.compareTo(divisor) == 0) {
return BigDecimal.ZERO;
}
try {
return value.divide(divisor, round, RoundingMode.HALF_UP);
} catch (Exception e) {
return BigDecimal.ZERO;
}
}
public static BigDecimal divide(BigDecimal value, int divisor) {
if (value == null)
return null;
if (divisor == 0) {
return BigDecimal.ZERO;
}
try {
return value.divide(BigDecimal.valueOf(divisor), 4, RoundingMode.HALF_UP);
} catch (Exception e) {
return BigDecimal.ZERO;
}
}
private static Calendar getCalendar(){
return Calendar.getInstance();
}
public static Date currentDate(){
return getCalendar().getTime();
}
public static String getBatchNo(){
return new SimpleDateFormat("yyyy-ww", Locale.ENGLISH).format(currentDate());
}
public static String getBatchNo(Date date){
return new SimpleDateFormat("yyyy-ww", Locale.ENGLISH).format(date);
}
public static String getDocumentIn(){
return "IN"+new SimpleDateFormat("yyyyMMddHHmmssSSS", Locale.ENGLISH).format(currentDate());
}
public static String getDocumentIou(){
return "OU"+new SimpleDateFormat("yyyyMMddHHmmssSSS", Locale.ENGLISH).format(currentDate());
}
public static String getDocumentQr(){
return "QR"+new SimpleDateFormat("yyyyMMddHHmmssSSS", Locale.ENGLISH).format(currentDate());
}
public static String getDocumentDomesticLoad(){
return "LOD-"+new SimpleDateFormat("yyyyMMddHHmmssSSS", Locale.ENGLISH).format(currentDate());
}
public static String getDocumentOverSeaLoad(){
return "LOO-"+new SimpleDateFormat("yyyyMMddHHmmssSSS", Locale.ENGLISH).format(currentDate());
}
public static String getDocumentOverseasLoad(){
return "LOO-"+new SimpleDateFormat("yyyyMMddHHmmssSSS", Locale.ENGLISH).format(currentDate());
}
public static String getDocumentOverSeaOrder(){
return "PKO-" + new SimpleDateFormat("yyyyMMddHHmmss", Locale.ENGLISH).format(currentDate());
}
public static String getDocumentDomesticOrder(){
return "PKD-" + new SimpleDateFormat("yyyyMMddHHmmss", Locale.ENGLISH).format(currentDate());
}
public static String getDocumentNo(){
return "TR" + new SimpleDateFormat("ddMMyyyyHHmmssSSS", Locale.ENGLISH).format(currentDate());
}
public static boolean isTrue(int value) {
return value == 1;
}
public static int isTrue(boolean value) {
return value == true ? 1 : 0 ;
}
public static int parseInt(Object input, int defaultValue){
if(input == null)
return defaultValue;
else if (input instanceof Integer)
return (Integer) input;
else {
String inputStr = input.toString();
if(isEmpty(inputStr))
return defaultValue;
try{
return Integer.parseInt(inputStr);
} catch (ClassCastException e){
return defaultValue;
} catch (NumberFormatException e){
return NumberUtils.createInteger(NumberUtils.createDouble(inputStr).intValue() + "");
}
}
}
public static int parseInt(Object input){
return parseInt(input, 0);
}
public static int multiply(int value, int multiplier){
if (value == 0 || multiplier == 0){
return 0;
}
try{
return value * multiplier;
} catch (Exception e){
return 0;
}
}
public static BigDecimal multiply(BigDecimal value, int multiplier){
if(value == null)
return null;
try {
return value.multiply(BigDecimal.valueOf(multiplier));
} catch (Exception e){
return null;
}
}
public static BigDecimal multiply(BigDecimal value, BigDecimal multiplier){
if(value == null || multiplier == null)
return null;
try {
return value.multiply(multiplier);
} catch (Exception e){
return null;
}
}
public static BigDecimal parseBigDecimal(Object input, BigDecimal defaultValue){
if(input == null)
return defaultValue;
else if (input instanceof BigDecimal)
return (BigDecimal) input;
else {
String inputStr = input.toString();
if(isEmpty(inputStr))
return defaultValue;
try{
return BigDecimal.valueOf(parseLong(inputStr, 0));
}catch (ClassCastException e){
return defaultValue;
}
}
}
public static BigDecimal parseBigDecimal(Object input){
return parseBigDecimal(input, BigDecimal.ZERO);
}
public static long parseLong(Object input,long defaultValue) {
if (input == null)
return defaultValue;
else if (input instanceof Long)
return (Long) input;
else {
String inputStr = input.toString();
if (isEmpty(inputStr))
return defaultValue;
try {
return Long.parseLong(inputStr);
} catch (NumberFormatException e) {
return defaultValue;
}
}
}
public static String parseString(Object input, String defaultValue){
if(input == null)
return defaultValue;
else if (input instanceof String)
return (String) input;
else {
try{
if(isEmpty(input.toString())){
return defaultValue;
} else {
return input.toString();
}
} catch (ClassCastException e){
return defaultValue;
}
}
}
public static String parseString(Object input){
return parseString(input, "");
}
public static Date parseDate(Object input, Date defaultValue){
if(input == null)
return defaultValue;
else if (input instanceof Date)
return (Date) input;
else {
try{
if(isNull(input)){
return defaultValue;
} else {
return null;
}
} catch (ClassCastException e){
return defaultValue;
}
}
}
public static boolean parseBoolean(Object input, boolean defaultValue){
if(input == null)
return defaultValue;
else if (input instanceof Boolean)
return (Boolean) input;
else {
try{
if(isNull(input)){
return defaultValue;
} else {
return false;
}
} catch (ClassCastException e){
return defaultValue;
}
}
}
public static String convertCurrentDateToStringDDMMYYYY(){
return convertToStringDDMMYYYY(currentDate());
}
public static String convertToStringDDMMYYYY(Date date){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss", Locale.ENGLISH);
if (Utils.isNull(date)){
return "";
} else {
String dateString = simpleDateFormat.format(date);
return dateString;
}
}
public static String genDateReportStringDDMMYYYY(Date date){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy-HH-mm-ss", Locale.ENGLISH);
if (Utils.isNull(date)){
return "";
} else {
String dateString = simpleDateFormat.format(date);
return dateString;
}
}
public static String genReportName(String fileName){
return genDateReportStringDDMMYYYY(currentDate())+ fileName;
}
public static String convertToStringYYYYMMDDHHmmss(Date date){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
if (Utils.isNull(date)){
return "";
} else {
String dateString = simpleDateFormat.format(date);
return dateString;
}
}
public static String convertToStringYYYYMMDDHHmm(Date date){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH);
if (Utils.isNull(date)){
return "";
} else {
String dateString = simpleDateFormat.format(date);
return dateString;
}
}
public static String convertDateToString(Date date){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);
if (Utils.isNull(date)){
return "";
} else {
String dateString = simpleDateFormat.format(date);
return dateString;
}
}
public static Date convertStringToDate(String stringDate) throws Exception{
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);
Date date = null;
if (!Utils.isNull(stringDate.trim()) && !Utils.isZero(stringDate.length())){
date = format.parse(stringDate);
}
return date;
}
public static String EmptyString(String field) {
return isNull(field) ? "" : field;
}
public static String EmptyInteget(int field){
return isZero(field) ? "0" : new StringBuffer().append(field).toString();
}
public static Date minDateTime(){
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY,0);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND,0);
return calendar.getTime();
}
public static Date maxDateTime(){
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY,23);
calendar.set(Calendar.MINUTE,59);
calendar.set(Calendar.SECOND,59);
calendar.set(Calendar.MILLISECOND,0);
return calendar.getTime();
}
public static Date minDateTime(Date date){
Calendar calendar = Calendar.getInstance();
String strDate = convertDateToStringDDMYYYY(date);
String[] sp = strDate.split("/");
calendar.set(Calendar.DATE, Integer.parseInt(sp[0]));
calendar.set(Calendar.MONTH,Integer.parseInt(sp[1])-1);
calendar.set(Calendar.YEAR,Integer.parseInt(sp[2]));
calendar.set(Calendar.HOUR_OF_DAY,0);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND,0);
// System.out.println("form "+calendar.getTime());
return calendar.getTime();
}
public static Date maxDateTime(Date date){
Calendar calendar = Calendar.getInstance();
String strDate = convertDateToStringDDMYYYY(date);
String[] sp = strDate.split("/");
calendar.set(Calendar.DATE, Integer.parseInt(sp[0]));
calendar.set(Calendar.MONTH,Integer.parseInt(sp[1])-1);
calendar.set(Calendar.YEAR,Integer.parseInt(sp[2]));
calendar.set(Calendar.HOUR_OF_DAY,23);
calendar.set(Calendar.MINUTE,59);
calendar.set(Calendar.SECOND,59);
calendar.set(Calendar.MILLISECOND,0);
// System.out.println("to "+calendar.getTime());
return calendar.getTime();
}
public static String convertDateToStringDDMYYYY(Date date){
// System.out.println(date);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/M/yyyy", Locale.ENGLISH);
if (Utils.isNull(date)){
return "";
} else {
String dateString = simpleDateFormat.format(date);
return dateString;
}
}
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
String strDate = convertDateToStringDDMYYYY(new Date());
String[] sp = strDate.split("/");
calendar.set(Calendar.DATE, Integer.parseInt(sp[0]));
calendar.set(Calendar.MONTH,Integer.parseInt(sp[1])-1);
calendar.set(Calendar.YEAR,Integer.parseInt(sp[2]));
calendar.set(Calendar.HOUR_OF_DAY,23);
calendar.set(Calendar.MINUTE,59);
calendar.set(Calendar.SECOND,59);
calendar.set(Calendar.MILLISECOND,0);
System.out.println(calendar.getTime());
}
}