init: 导入项目
This commit is contained in:
224
Webplatform/src/main/java/com/wb/common/Resource.java
Normal file
224
Webplatform/src/main/java/com/wb/common/Resource.java
Normal file
@@ -0,0 +1,224 @@
|
||||
package com.wb.common;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.InputStream;
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.util.UUID;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
|
||||
import com.wb.util.WebUtil;
|
||||
import org.apache.logging.log4j.core.util.UuidUtil;
|
||||
|
||||
/**
|
||||
* 存储和维护较大的文本或二进制数据至数据库。
|
||||
* 如果数据较小(长度小于255字节)可使用{@link Value}类。
|
||||
* 如果数据较小且对性能有高要求可使用{@link Var}类。
|
||||
*
|
||||
* @see Value
|
||||
* @see Var
|
||||
*/
|
||||
public class Resource {
|
||||
/**
|
||||
* 获取当前用户指定编号的文本资源。如果资源不存在将返回defaultValue。
|
||||
*
|
||||
* @param request 当前用户请求的request对象。
|
||||
* @param id 资源id编号。
|
||||
* @param defaultValue 默认值。
|
||||
* @return 获取的文本。
|
||||
*/
|
||||
public static String getString(HttpServletRequest request, String id,
|
||||
String defaultValue) {
|
||||
return getString(WebUtil.getIdWithUser(request, id), defaultValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定编号的文本资源。如果资源不存在将返回defaultValue。
|
||||
*
|
||||
* @param id 资源id编号。
|
||||
* @param defaultValue 默认值。
|
||||
* @return 获取的文本。
|
||||
*/
|
||||
public static String getString(String id, String defaultValue) {
|
||||
try {
|
||||
byte[] bytes = getBytes(id, null);
|
||||
if (bytes == null)
|
||||
return defaultValue;
|
||||
else
|
||||
return new String(bytes, "utf-8");
|
||||
} catch (Throwable e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定编号的文本资源。如果资源不存在将返回null。
|
||||
*
|
||||
* @param id 资源id编号。
|
||||
* @return 获取的文本。
|
||||
*/
|
||||
public static String getString(String id) {
|
||||
return getString(id, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前用户指定编号的字节数组资源。如果资源不存在将返回defaultValue。
|
||||
*
|
||||
* @param request 当前用户请求的request对象。
|
||||
* @param id 资源id编号。
|
||||
* @param defaultValue 默认值。
|
||||
* @return 获取的字节数组。
|
||||
*/
|
||||
public static byte[] getBytes(HttpServletRequest request, String id,
|
||||
byte[] defaultValue) {
|
||||
return getBytes(WebUtil.getIdWithUser(request, id), defaultValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定编号的字节数组资源。如果资源不存在将返回defaultValue。
|
||||
*
|
||||
* @param id 资源id编号。
|
||||
* @param defaultValue 默认值。
|
||||
* @return 获取的字节数组。
|
||||
*/
|
||||
public static byte[] getBytes(String id, byte[] defaultValue) {
|
||||
Connection conn = null;
|
||||
PreparedStatement st = null;
|
||||
ResultSet rs = null;
|
||||
|
||||
try {
|
||||
conn = com.wb.util.DbUtil.getConnection();
|
||||
st = conn
|
||||
.prepareStatement("select RES_CONTENT from WB_RESOURCE where RES_ID=?");
|
||||
st.setString(1, id);
|
||||
rs = st.executeQuery();
|
||||
if (rs.next()) {
|
||||
ByteArrayOutputStream os = new ByteArrayOutputStream();
|
||||
InputStream is = rs.getBinaryStream(1);
|
||||
if (is != null) {
|
||||
try {
|
||||
IOUtils.copy(is, os);
|
||||
} finally {
|
||||
is.close();
|
||||
}
|
||||
return os.toByteArray();
|
||||
}
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
throw new RuntimeException(e);
|
||||
} finally {
|
||||
com.wb.util.DbUtil.close(rs);
|
||||
com.wb.util.DbUtil.close(st);
|
||||
com.wb.util.DbUtil.close(conn);
|
||||
}
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* 把字符串作为资源存储到特定的数据库表中,并在当前用户下指定id编号标识。
|
||||
* 如果值为null将删除id指定的值。
|
||||
* @param request 当前用户请求的request对象。
|
||||
* @param id 资源id编号。
|
||||
* @param data 存储的字符串。
|
||||
*/
|
||||
public static void set(HttpServletRequest request, String id, String data) {
|
||||
set(WebUtil.getIdWithUser(request, id), data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 把字符串作为资源存储到特定的数据库表中,并以指定id编号标识。
|
||||
* 如果值为null将删除id指定的值。
|
||||
*
|
||||
* @param id 资源id编号。
|
||||
* @param data 存储的字符串。
|
||||
*/
|
||||
public static void set(String id, String data) {
|
||||
try {
|
||||
byte[] bytes;
|
||||
|
||||
if (data == null)
|
||||
bytes = null;
|
||||
else
|
||||
bytes = data.getBytes("utf-8");
|
||||
set(id, bytes);
|
||||
} catch (Throwable e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除指定编号的资源。
|
||||
*
|
||||
* @param id 资源id编号。
|
||||
*/
|
||||
public static void remove(String id) {
|
||||
set(id, (byte[]) null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除当前用户指定编号的资源。
|
||||
*
|
||||
* @param request 请求对象。
|
||||
* @param id 资源id编号。
|
||||
*/
|
||||
public static void remove(HttpServletRequest request, String id) {
|
||||
set(request, id, (byte[]) null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 把字节数组作为资源存储到特定的数据库表中,并以指定id编号标识。
|
||||
* 如果值为null将删除id指定的值。
|
||||
* @param id 资源id编号。
|
||||
* @param data 字节数组值。
|
||||
*/
|
||||
public static void set(String id, byte[] data) {
|
||||
Connection conn = null;
|
||||
PreparedStatement st = null;
|
||||
boolean hasData = data != null;
|
||||
|
||||
try {
|
||||
conn = com.wb.util.DbUtil.getConnection();
|
||||
if (hasData)
|
||||
conn.setAutoCommit(false);
|
||||
st = conn
|
||||
.prepareStatement("delete from WB_RESOURCE where RES_ID=?");
|
||||
st.setString(1, id);
|
||||
st.executeUpdate();
|
||||
com.wb.util.DbUtil.close(st);
|
||||
st = null;
|
||||
if (hasData) {
|
||||
st = conn
|
||||
.prepareStatement("insert into WB_RESOURCE values(?,?,?)");
|
||||
st.setString(1, id);
|
||||
st.setBinaryStream(2, new ByteArrayInputStream(data),
|
||||
data.length);
|
||||
st.setString(3, UUID.randomUUID().toString().replaceAll("-",""));
|
||||
st.executeUpdate();
|
||||
conn.commit();
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
throw new RuntimeException(e);
|
||||
} finally {
|
||||
com.wb.util.DbUtil.close(st);
|
||||
com.wb.util.DbUtil.close(conn);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* 把字节数组作为资源存储到特定的数据库表中,并在当前用户下指定id编号标识。
|
||||
* 如果值为null将删除id指定的值。
|
||||
* @param request 当前用户请求的request对象。
|
||||
* @param id 资源id编号。
|
||||
* @param data 字节数组值。
|
||||
*/
|
||||
public static void set(HttpServletRequest request, String id, byte[] data) {
|
||||
set(WebUtil.getIdWithUser(request, id), data);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user