package com.energy.manage.common.util;

import org.springframework.util.StringUtils;

import java.util.UUID;

public class UUIDTools {

  /**
   * 获取32位 uuid
   *
   * @return
   */
  public static String getUUID() {
    String uuid = UUID.randomUUID().toString();
    if (!StringUtils.isEmpty(uuid)) {
      uuid = uuid.replaceAll("-", "");
    }
    return uuid;
  }

  /**
   * 获取32位大写 uuid
   *
   * @return
   */
  public static String getUUIDUpperCase() {
    String uuid = UUID.randomUUID().toString();
    if (!StringUtils.isEmpty(uuid)) {
      uuid = uuid.replaceAll("-", "");
    }
    return uuid.toUpperCase();
  }

  /**
   * 获取32位小写 uuid
   *
   * @return
   */
  public static String getUUIDLowCase() {
    String uuid = UUID.randomUUID().toString();
    if (!StringUtils.isEmpty(uuid)) {
      uuid = uuid.replaceAll("-", "");
    }
    return uuid.toLowerCase();
  }


  private static String[] chars = new String[]{"a", "b", "c", "d", "e", "f",
          "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",
          "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5",
          "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I",
          "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
          "W", "X", "Y", "Z"};


  /**
   * 生成8位UUID
   *
   * @return
   */
  public static String getShortUUID() {
    StringBuffer shortBuffer = new StringBuffer();
    String uuid = getUUID();
    for (int i = 0; i < 8; i++) {
      String str = uuid.substring(i * 4, i * 4 + 4);
      int x = Integer.parseInt(str, 16);
      shortBuffer.append(chars[x % 0x3E]);
    }
    return shortBuffer.toString();
  }

  /**
   * 生成8位大写UUID
   *
   * @return
   */
  public static String getShortUUIDUpperCase() {
    StringBuffer shortBuffer = new StringBuffer();
    String uuid = getUUID();
    for (int i = 0; i < 8; i++) {
      String str = uuid.substring(i * 4, i * 4 + 4);
      int x = Integer.parseInt(str, 16);
      shortBuffer.append(chars[x % 0x3E]);
    }
    return shortBuffer.toString().toUpperCase();
  }

  /**
   * 生成8位小写UUID
   *
   * @return
   */
  public static String getShortUUIDLowCase() {
    StringBuffer shortBuffer = new StringBuffer();
    String uuid = getUUID();
    for (int i = 0; i < 8; i++) {
      String str = uuid.substring(i * 4, i * 4 + 4);
      int x = Integer.parseInt(str, 16);
      shortBuffer.append(chars[x % 0x3E]);
    }
    return shortBuffer.toString().toLowerCase();
  }
}
