parent
2c7407312b
commit
aca5fd93f5
@ -0,0 +1,236 @@
|
|||||||
|
package xyz.wbsite.dbtool.javafx.po;
|
||||||
|
|
||||||
|
import xyz.wbsite.dbtool.javafx.enums.DataBase;
|
||||||
|
import xyz.wbsite.dbtool.javafx.enums.FieldType;
|
||||||
|
|
||||||
|
public class SQLiteDBmapper extends AbstractDBmapper {
|
||||||
|
|
||||||
|
public SQLiteDBmapper(DataBase mDataBase) {
|
||||||
|
super(mDataBase);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getDataBaseType(FieldType type, int lenght) {
|
||||||
|
if (FieldType.Boolean.name().equals(type.name())) {
|
||||||
|
return "BIT";
|
||||||
|
} else if (FieldType.Byte.name().equals(type.name())) {
|
||||||
|
return "TINYINT";
|
||||||
|
} else if (FieldType.Short.name().equals(type.name())) {
|
||||||
|
return "SMALLINT";
|
||||||
|
} else if (FieldType.Integer.name().equals(type.name())) {
|
||||||
|
return "INTEGER";
|
||||||
|
} else if (FieldType.Long.name().equals(type.name())) {
|
||||||
|
return "NUMERIC";
|
||||||
|
} else if (FieldType.Float.name().equals(type.name())) {
|
||||||
|
return "REAL";
|
||||||
|
} else if (FieldType.Double.name().equals(type.name())) {
|
||||||
|
return "FLOAT";
|
||||||
|
} else if (FieldType.Character.name().equals(type.name())) {
|
||||||
|
return "VARCHAR";
|
||||||
|
} else if (FieldType.String_1.name().equals(type.name())) {
|
||||||
|
return "CAHR";
|
||||||
|
} else if (FieldType.String_10.name().equals(type.name())) {
|
||||||
|
return "CAHR";
|
||||||
|
} else if (FieldType.String_var.name().equals(type.name())) {
|
||||||
|
return "VARCHAR";
|
||||||
|
} else if (FieldType.String_var50.name().equals(type.name())) {
|
||||||
|
return "VARCHAR";
|
||||||
|
} else if (FieldType.String_var100.name().equals(type.name())) {
|
||||||
|
return "VARCHAR";
|
||||||
|
} else if (FieldType.String_var255.name().equals(type.name())) {
|
||||||
|
return "VARCHAR";
|
||||||
|
} else if (FieldType.String_var500.name().equals(type.name())) {
|
||||||
|
return "VARCHAR";
|
||||||
|
} else if (FieldType.String_var2500.name().equals(type.name())) {
|
||||||
|
return "VARCHAR";
|
||||||
|
} else if (FieldType.String_var4000.name().equals(type.name())) {
|
||||||
|
return "VARCHAR";
|
||||||
|
} else if (FieldType.Date.name().equals(type.name())) {
|
||||||
|
return "DATE";
|
||||||
|
} else if (FieldType.Bytes.name().equals(type.name())) {
|
||||||
|
return "BLOB";
|
||||||
|
} else {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getFieldSql(Field field) {
|
||||||
|
StringBuffer sb = new StringBuffer("");
|
||||||
|
sb.append("`").append(field.getFieldName()).append("` ");
|
||||||
|
|
||||||
|
FieldType type = field.getFieldType();
|
||||||
|
|
||||||
|
if (FieldType.Boolean.name().equals(type.name())) {
|
||||||
|
sb.append("TINYINT(1)");
|
||||||
|
} else if (FieldType.Dict.name().equals(type.name())) {
|
||||||
|
sb.append("VARCHAR(10)");
|
||||||
|
} else if (FieldType.Byte.name().equals(type.name())) {
|
||||||
|
sb.append("TINYINT(3)");
|
||||||
|
} else if (FieldType.Short.name().equals(type.name())) {
|
||||||
|
sb.append("SMALLINT(5)");
|
||||||
|
} else if (FieldType.Integer.name().equals(type.name())) {
|
||||||
|
sb.append("INTEGER(10)");
|
||||||
|
} else if (FieldType.Long.name().equals(type.name())) {
|
||||||
|
sb.append("BIGINT(20)");
|
||||||
|
} else if (FieldType.Float.name().equals(type.name())) {
|
||||||
|
sb.append("FLOAT");
|
||||||
|
} else if (FieldType.Double.name().equals(type.name())) {
|
||||||
|
sb.append("DOUBLE");
|
||||||
|
} else if (FieldType.Date.name().equals(type.name())) {
|
||||||
|
sb.append("DATETIME");
|
||||||
|
} else if (FieldType.Bytes.name().equals(type.name())) {
|
||||||
|
sb.append("BLOB");
|
||||||
|
} else if (FieldType.Character.name().equals(type.name())) {
|
||||||
|
sb.append("CHAR(1)");
|
||||||
|
} else if (FieldType.String_1.name().equals(type.name())) {
|
||||||
|
sb.append("CHAR(1)");
|
||||||
|
} else if (FieldType.String_10.name().equals(type.name())) {
|
||||||
|
sb.append("CHAR(10)");
|
||||||
|
} else if (FieldType.String_var.name().equals(type.name())) {
|
||||||
|
Integer fieldLength = field.getFieldLength();
|
||||||
|
sb.append("VARCHAR(" + fieldLength + ")");
|
||||||
|
} else if (FieldType.String_var50.name().equals(type.name())) {
|
||||||
|
sb.append("VARCHAR(50)");
|
||||||
|
} else if (FieldType.String_var100.name().equals(type.name())) {
|
||||||
|
sb.append("VARCHAR(100)");
|
||||||
|
} else if (FieldType.String_var255.name().equals(type.name())) {
|
||||||
|
sb.append("VARCHAR(250)");
|
||||||
|
} else if (FieldType.String_var500.name().equals(type.name())) {
|
||||||
|
sb.append("VARCHAR(500)");
|
||||||
|
} else if (FieldType.String_var2500.name().equals(type.name())) {
|
||||||
|
sb.append("VARCHAR(2500)");
|
||||||
|
} else if (FieldType.String_var4000.name().equals(type.name())) {
|
||||||
|
sb.append("VARCHAR(4000)");
|
||||||
|
} else if (FieldType.String_super.name().equals(type.name())) {
|
||||||
|
sb.append("TEXT");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!field.getIsSystem() && field.getIsMust() && (field.getDefaultValue() == null || field.getDefaultValue().toUpperCase().equals("NULL"))) {
|
||||||
|
sb.append(" NOT NULL");
|
||||||
|
} else if (!field.getIsSystem() && field.getIsMust() && field.getDefaultValue() != null && !field.getDefaultValue().toUpperCase().equals("NULL")) {
|
||||||
|
if (field.getFieldType().name().contains("String")) {//默认字符
|
||||||
|
sb.append(" NOT NULL").append(" DEFAULT '" + field.getDefaultValue() + "'");
|
||||||
|
} else {//不是字符就是数字,目前只考虑两张情况
|
||||||
|
sb.append(" NOT NULL").append(" DEFAULT " + field.getDefaultValue() + "");
|
||||||
|
}
|
||||||
|
} else if (field.getIsSystem() && field.getFieldName().equals("ID")) {
|
||||||
|
sb.append(" NOT NULL");
|
||||||
|
} else if (field.getIsSystem() && field.getFieldName().equals("ROW_VERSION")) {
|
||||||
|
sb.append(" NOT NULL").append(" DEFAULT 0");
|
||||||
|
} else if (field.getIsSystem() && field.getFieldName().equals("IS_DELETED")) {
|
||||||
|
sb.append(" NOT NULL").append(" DEFAULT 0");
|
||||||
|
} else if (field.getIsSystem() && field.getFieldName().equals("CREATE_BY")) {
|
||||||
|
sb.append(" NOT NULL");
|
||||||
|
} else if (field.getIsSystem() && field.getFieldName().equals("CREATE_TIME")) {
|
||||||
|
sb.append(" NOT NULL");
|
||||||
|
} else if (field.getIsSystem() && field.getFieldName().equals("LAST_UPDATE_BY")) {
|
||||||
|
sb.append(" DEFAULT NULL");
|
||||||
|
} else if (field.getIsSystem() && field.getFieldName().equals("LAST_UPDATE_TIME")) {
|
||||||
|
sb.append(" DEFAULT NULL");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (field.getFieldComment() != null) {
|
||||||
|
sb.append(" COMMENT '" + field.getFieldComment() + "'");
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
DataBase getDataBase() {
|
||||||
|
return super.getDataBase();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getDataBaseType(FieldType type) {
|
||||||
|
if (FieldType.Boolean.name().equals(type.name())) {
|
||||||
|
return "TINYINT";
|
||||||
|
} else if (FieldType.Byte.name().equals(type.name())) {
|
||||||
|
return "TINYINT";
|
||||||
|
} else if (FieldType.Short.name().equals(type.name())) {
|
||||||
|
return "SMALLINT";
|
||||||
|
} else if (FieldType.Integer.name().equals(type.name())) {
|
||||||
|
return "INTEGER";
|
||||||
|
} else if (FieldType.Long.name().equals(type.name())) {
|
||||||
|
return "NUMERIC";
|
||||||
|
} else if (FieldType.Float.name().equals(type.name())) {
|
||||||
|
return "REAL";
|
||||||
|
} else if (FieldType.Double.name().equals(type.name())) {
|
||||||
|
return "FLOAT";
|
||||||
|
} else if (FieldType.Character.name().equals(type.name())) {
|
||||||
|
return "VARCHAR";
|
||||||
|
} else if (FieldType.String_1.name().equals(type.name())) {
|
||||||
|
return "CHAR";
|
||||||
|
} else if (FieldType.String_10.name().equals(type.name())) {
|
||||||
|
return "CHAR";
|
||||||
|
} else if (FieldType.String_var.name().equals(type.name())) {
|
||||||
|
return "VARCHAR";
|
||||||
|
} else if (FieldType.String_var50.name().equals(type.name())) {
|
||||||
|
return "VARCHAR";
|
||||||
|
} else if (FieldType.String_var100.name().equals(type.name())) {
|
||||||
|
return "VARCHAR";
|
||||||
|
} else if (FieldType.String_var255.name().equals(type.name())) {
|
||||||
|
return "VARCHAR";
|
||||||
|
} else if (FieldType.String_var500.name().equals(type.name())) {
|
||||||
|
return "VARCHAR";
|
||||||
|
} else if (FieldType.String_var2500.name().equals(type.name())) {
|
||||||
|
return "VARCHAR";
|
||||||
|
} else if (FieldType.String_var4000.name().equals(type.name())) {
|
||||||
|
return "VARCHAR";
|
||||||
|
} else if (FieldType.Date.name().equals(type.name())) {
|
||||||
|
return "DATETIME";
|
||||||
|
} else if (FieldType.Bytes.name().equals(type.name())) {
|
||||||
|
return "BLOB";
|
||||||
|
} else {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FieldType getType(String type, int lenght, int precision, int scale) {
|
||||||
|
if ("bigint".equals(type)) {
|
||||||
|
return FieldType.Long;
|
||||||
|
} else if ("varchar".equals(type) && lenght == 50) {
|
||||||
|
return FieldType.String_var50;
|
||||||
|
} else if ("varchar".equals(type) && lenght == 100) {
|
||||||
|
return FieldType.String_var100;
|
||||||
|
} else if ("varchar".equals(type) && lenght == 255) {
|
||||||
|
return FieldType.String_var255;
|
||||||
|
} else if ("varchar".equals(type) && lenght == 500) {
|
||||||
|
return FieldType.String_var500;
|
||||||
|
} else if ("varchar".equals(type) && lenght == 2500) {
|
||||||
|
return FieldType.String_var2500;
|
||||||
|
} else if ("varchar".equals(type) && lenght == 4000) {
|
||||||
|
return FieldType.String_var4000;
|
||||||
|
} else if ("varchar".equals(type)) {
|
||||||
|
return FieldType.String_var;
|
||||||
|
} else if ("date".equals(type)) {
|
||||||
|
return FieldType.Date;
|
||||||
|
} else if ("datetime".equals(type)) {
|
||||||
|
return FieldType.Date;
|
||||||
|
} else if ("timestamp".equals(type)) {
|
||||||
|
return FieldType.Date;
|
||||||
|
} else if ("char".equals(type) && lenght == 1) {
|
||||||
|
return FieldType.String_1;
|
||||||
|
} else if ("char".equals(type) && lenght == 10) {
|
||||||
|
return FieldType.String_10;
|
||||||
|
} else if ("char".equals(type)) {
|
||||||
|
return FieldType.String_var;
|
||||||
|
} else if ("tinyint".equals(type)) {
|
||||||
|
return FieldType.Integer;
|
||||||
|
} else if ("smallint".equals(type)) {
|
||||||
|
return FieldType.Integer;
|
||||||
|
} else if ("mediumint".equals(type)) {
|
||||||
|
return FieldType.Integer;
|
||||||
|
} else if ("int".equals(type)) {
|
||||||
|
return FieldType.Integer;
|
||||||
|
} else if ("bigint".equals(type)) {
|
||||||
|
return FieldType.Long;
|
||||||
|
} else if ("float".equals(type)) {
|
||||||
|
return FieldType.Float;
|
||||||
|
} else if ("double".equals(type)) {
|
||||||
|
return FieldType.Double;
|
||||||
|
}
|
||||||
|
return FieldType.String_var50;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,114 @@
|
|||||||
|
package xyz.wbsite.dbtool.web.frame.utils;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ClassUtil
|
||||||
|
*
|
||||||
|
* @author wangbing
|
||||||
|
* @version 0.0.1
|
||||||
|
* @since 2017-01-01
|
||||||
|
*/
|
||||||
|
public class ClassUtil {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取模板类所有字段
|
||||||
|
*
|
||||||
|
* @param clazz 模板对象
|
||||||
|
* @param parentFirst 是否关注父类的字段
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static Field[] getFields(Class clazz, boolean parentFirst) {
|
||||||
|
Field[] fields = clazz.getDeclaredFields();
|
||||||
|
|
||||||
|
if (parentFirst) {
|
||||||
|
Field[] parentFields = getParentFields(clazz.getSuperclass());
|
||||||
|
return concat(fields, parentFields);
|
||||||
|
}
|
||||||
|
return fields;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断是不是集合的实现类
|
||||||
|
*
|
||||||
|
* @param clazz
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static boolean isCollection(Class<?> clazz) {
|
||||||
|
return Collection.class.isAssignableFrom(clazz);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取GET方法
|
||||||
|
*
|
||||||
|
* @param name 成员变量名
|
||||||
|
* @param pojoClass POJO对象
|
||||||
|
* @return 方法
|
||||||
|
*/
|
||||||
|
public static Method getMethod(String name, Class<?> pojoClass) throws RuntimeException {
|
||||||
|
String getMethodName = "get" + StringUtil.upperFirstWord(name);
|
||||||
|
try {
|
||||||
|
return pojoClass.getMethod(getMethodName);
|
||||||
|
} catch (Exception e) {
|
||||||
|
getMethodName = "is" + StringUtil.upperFirstWord(name);
|
||||||
|
try {
|
||||||
|
return pojoClass.getMethod(getMethodName);
|
||||||
|
} catch (NoSuchMethodException e1) {
|
||||||
|
throw new RuntimeException("can not find[" + name + "]method");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取SET方法
|
||||||
|
*
|
||||||
|
* @param name 成员变量名
|
||||||
|
* @param pojoClass POJO对象
|
||||||
|
* @return 方法
|
||||||
|
*/
|
||||||
|
public static Method setMethod(String name, Class<?> pojoClass, Class<?> type) {
|
||||||
|
String setMethodName = "set" + StringUtil.upperFirstWord(name);
|
||||||
|
try {
|
||||||
|
return pojoClass.getMethod(setMethodName, type);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isJavaClass(Field field) {
|
||||||
|
Class<?> fieldType = field.getType();
|
||||||
|
boolean isBaseClass = false;
|
||||||
|
if (fieldType.isArray()) {
|
||||||
|
isBaseClass = false;
|
||||||
|
} else if (fieldType.isPrimitive() || fieldType.getPackage() == null
|
||||||
|
|| fieldType.getPackage().getName().equals("java.lang")
|
||||||
|
|| fieldType.getPackage().getName().equals("java.math")
|
||||||
|
|| fieldType.getPackage().getName().equals("java.sql")
|
||||||
|
|| fieldType.getPackage().getName().equals("java.util")) {
|
||||||
|
isBaseClass = true;
|
||||||
|
}
|
||||||
|
return isBaseClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Field[] getFields(Class clazz) {
|
||||||
|
return getFields(clazz, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Field[] getParentFields(Class parentClazz) {
|
||||||
|
if (parentClazz != null) {
|
||||||
|
Field[] fields = parentClazz.getDeclaredFields();
|
||||||
|
Field[] parentFields = getParentFields(parentClazz.getSuperclass());
|
||||||
|
return concat(fields, parentFields);
|
||||||
|
}
|
||||||
|
return new Field[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Field[] concat(Field[] f1, Field[] f2) {
|
||||||
|
Field[] fields = new Field[f1.length + f2.length];
|
||||||
|
System.arraycopy(f1, 0, fields, 0, f1.length);
|
||||||
|
System.arraycopy(f2, 0, fields, f1.length, f2.length);
|
||||||
|
return fields;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,78 @@
|
|||||||
|
package xyz.wbsite.dbtool.web.frame.utils;
|
||||||
|
|
||||||
|
import org.springframework.boot.system.ApplicationHome;
|
||||||
|
import org.springframework.core.io.ClassPathResource;
|
||||||
|
import org.springframework.util.ResourceUtils;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
|
public class ResourceUtil extends ResourceUtils {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前运行jar文件
|
||||||
|
*
|
||||||
|
* @return jar路径
|
||||||
|
*/
|
||||||
|
public static File getApplicationHome() {
|
||||||
|
ApplicationHome home = new ApplicationHome(ResourceUtil.class);
|
||||||
|
return home.getSource();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取resource下文件
|
||||||
|
*
|
||||||
|
* @return 文件路径
|
||||||
|
*/
|
||||||
|
public static InputStream getResourceInput(String resource) {
|
||||||
|
try {
|
||||||
|
ClassPathResource classPathResource = new ClassPathResource(resource);
|
||||||
|
return classPathResource.getInputStream();
|
||||||
|
} catch (IOException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean copyResource2File(String resource, File file) {
|
||||||
|
InputStream resourceInput = getResourceInput(resource);
|
||||||
|
FileOutputStream fileOutputStream = null;
|
||||||
|
try {
|
||||||
|
if (!file.exists()) {
|
||||||
|
file.createNewFile();
|
||||||
|
}
|
||||||
|
fileOutputStream = new FileOutputStream(file);
|
||||||
|
FileUtil.copy(resourceInput, fileOutputStream);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return false;
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
if (fileOutputStream != null) fileOutputStream.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static byte[] getResourceBytes(String resource) {
|
||||||
|
InputStream is = null;
|
||||||
|
byte[] result = null;
|
||||||
|
try {
|
||||||
|
is = getResourceInput(resource);
|
||||||
|
result = new byte[is.available()];
|
||||||
|
is.read(result);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
if (is != null) is.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
package xyz.wbsite.dbtool.web.frame.utils;
|
||||||
|
|
||||||
|
import org.springframework.http.HttpHeaders;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base64Util
|
||||||
|
*
|
||||||
|
* @author wangbing
|
||||||
|
* @version 0.0.1
|
||||||
|
* @since 2017-01-01
|
||||||
|
*/
|
||||||
|
public class ResponseUtil {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 包装ResponseEntity
|
||||||
|
*
|
||||||
|
* @param bytes 字节数组
|
||||||
|
* @param fileName 文件名
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static ResponseEntity<byte[]> apply(byte[] bytes, String fileName) {
|
||||||
|
try {
|
||||||
|
HttpHeaders headers = new HttpHeaders();
|
||||||
|
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
|
||||||
|
headers.setContentDispositionFormData("attachment", URLEncoder.encode(fileName, "utf-8"));
|
||||||
|
return new ResponseEntity<>(bytes, headers, HttpStatus.OK);
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,87 @@
|
|||||||
|
package xyz.wbsite.dbtool.web.frame.utils;
|
||||||
|
|
||||||
|
public class StringUtil {
|
||||||
|
|
||||||
|
public static int getByteLength(String str) {
|
||||||
|
int length = str.replaceAll("[^\\x00-\\xff]", "**").length();
|
||||||
|
return length;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String upperFirstWord(String str) {
|
||||||
|
String temp = str.substring(0, 1);
|
||||||
|
return temp.toUpperCase() + str.substring(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isEmpty(String value) {
|
||||||
|
int strLen;
|
||||||
|
if (value == null || (strLen = value.length()) == 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < strLen; i++) {
|
||||||
|
if ((Character.isWhitespace(value.charAt(i)) == false)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static boolean isNotEmpty(String value) {
|
||||||
|
return !isEmpty(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查对象是否为数字型字符串,包含负数开头的。
|
||||||
|
*/
|
||||||
|
public static boolean isNumeric(Object obj) {
|
||||||
|
if (obj == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
char[] chars = obj.toString().toCharArray();
|
||||||
|
int length = chars.length;
|
||||||
|
if (length < 1)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
if (length > 1 && chars[0] == '-')
|
||||||
|
i = 1;
|
||||||
|
|
||||||
|
for (; i < length; i++) {
|
||||||
|
if (!Character.isDigit(chars[i])) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 把通用字符编码的字符串转化为汉字编码。
|
||||||
|
*/
|
||||||
|
public static String unicodeToChinese(String unicode) {
|
||||||
|
StringBuilder out = new StringBuilder();
|
||||||
|
if (!isEmpty(unicode)) {
|
||||||
|
for (int i = 0; i < unicode.length(); i++) {
|
||||||
|
out.append(unicode.charAt(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return out.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static String toUnderlineStyle(String name) {
|
||||||
|
StringBuilder newName = new StringBuilder();
|
||||||
|
for (int i = 0; i < name.length(); i++) {
|
||||||
|
char c = name.charAt(i);
|
||||||
|
if (Character.isUpperCase(c)) {
|
||||||
|
if (i > 0) {
|
||||||
|
newName.append("_");
|
||||||
|
}
|
||||||
|
newName.append(Character.toLowerCase(c));
|
||||||
|
} else {
|
||||||
|
newName.append(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newName.toString();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,95 @@
|
|||||||
|
package ${basePackage}.frame.utils;
|
||||||
|
|
||||||
|
import org.springframework.boot.system.ApplicationHome;
|
||||||
|
import org.springframework.core.io.ClassPathResource;
|
||||||
|
import org.springframework.util.ResourceUtils;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resource资源文件工具
|
||||||
|
*
|
||||||
|
* @author wangbing
|
||||||
|
* @version 0.0.1
|
||||||
|
* @since 2017-01-01
|
||||||
|
*/
|
||||||
|
public class ResourceUtil extends ResourceUtils {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前运行jar文件
|
||||||
|
*
|
||||||
|
* @return jar路径
|
||||||
|
*/
|
||||||
|
public static File getApplicationHome() {
|
||||||
|
ApplicationHome home = new ApplicationHome(ResourceUtil.class);
|
||||||
|
return home.getSource();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取resource下文件
|
||||||
|
*
|
||||||
|
* @return 文件路径
|
||||||
|
*/
|
||||||
|
public static InputStream getResourceInput(String resource) {
|
||||||
|
try {
|
||||||
|
ClassPathResource classPathResource = new ClassPathResource(resource);
|
||||||
|
return classPathResource.getInputStream();
|
||||||
|
} catch (IOException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 复制jar下的资源文件到指定文件
|
||||||
|
*
|
||||||
|
* @return 成功或失败情况
|
||||||
|
*/
|
||||||
|
public static boolean copyResource2File(String resource, File file) {
|
||||||
|
InputStream resourceInput = getResourceInput(resource);
|
||||||
|
FileOutputStream fileOutputStream = null;
|
||||||
|
try {
|
||||||
|
if (!file.exists()) {
|
||||||
|
file.createNewFile();
|
||||||
|
}
|
||||||
|
fileOutputStream = new FileOutputStream(file);
|
||||||
|
FileUtil.copy(resourceInput, fileOutputStream);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return false;
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
if (fileOutputStream != null) fileOutputStream.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取资源的的字节数组
|
||||||
|
*
|
||||||
|
* @return 字节数组
|
||||||
|
*/
|
||||||
|
public static byte[] getResourceBytes(String resource) {
|
||||||
|
InputStream is = null;
|
||||||
|
byte[] result = null;
|
||||||
|
try {
|
||||||
|
is = getResourceInput(resource);
|
||||||
|
result = new byte[is.available()];
|
||||||
|
is.read(result);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
if (is != null) is.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue