package com.norteksoft.product.util;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;
import java.util.Set;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.ServletActionContext;
public class PropUtils {
private static Log log = LogFactory.getLog(PropUtils.class);
private static final String DEFAULT_PROP_FILE = "application.properties";
public static final String LOG_METHOD_BEGIN="底层日志方法开始***";
public static final String LOG_METHOD_END="底层日志方法结束***";
public static final String LOG_CONTENT="底层日志***";
public static final String LOG_FLAG="***";
public static final String DATABASE_ORACLE="oracle";
public static final String DATABASE_MYSQL="mysql";
public static final String DATABASE_SQLSERVER="sqlserver";
public static String getProp(String key){
Properties propert = new Properties();
try {
propert.load(PropUtils.class.getClassLoader().getResourceAsStream(DEFAULT_PROP_FILE));
} catch (IOException e) {
throw new RuntimeException(e);
}
return propert.getProperty(key);
}
public static String getProp(String fileName, String propName){
Properties propert = new Properties();
try {
InputStream ins = PropUtils.class.getClassLoader().getResourceAsStream(fileName);
if(ins!=null){
propert.load(ins);
}
} catch (IOException e) {
log.debug(getExceptionInfo(e));
}
return propert.getProperty(propName);
}
public static String getExceptionInfo(Exception e){
StringBuilder sb=new StringBuilder();
sb.append(e);
StackTraceElement[] trace = e.getStackTrace();
for (int i=0; i < trace.length; i++)
sb.append("\n\t " + trace[i]);
return sb.toString();
}
public static boolean isOracle(){
boolean isOracle=true;
//数据库方言
String databaseDialect=PropUtils.getProp("hibernate.dialect");
if("org.hibernate.dialect.MySQLDialect".equals(databaseDialect)){
isOracle=false;
}
return isOracle;
}
/**
* 获得数据库类型
* @return
*/
public static String getDataBase(){
//数据库连接地址
String databaseLink=PropUtils.getProp("hibernate.connection.url");
if(databaseLink.startsWith("jdbc:oracle")){//oracle
return DATABASE_ORACLE;
}else if(databaseLink.startsWith("jdbc:sqlserver")){//sqlserver
return DATABASE_SQLSERVER;
}else{//mysql
return DATABASE_MYSQL;
}
}
/**
* 是否是底层平台
* @param url
* @return
*/
public static boolean isBasicSystem(String url){
return (url.endsWith("/acs")||url.endsWith("/acs/"))||
(url.endsWith("/mms")||url.endsWith("/mms/"))||
(url.endsWith("/wf")||url.endsWith("/wf/"))||
(url.endsWith("/bs")||url.endsWith("/bs/"))||
(url.endsWith("/task")||url.endsWith("/task/"))||
(url.endsWith("/portal")||url.endsWith("/portal/"));
}
public static Set<Object> getPropertyKeys(String fileName){
Properties propert = new Properties();
try {
propert.load(PropUtils.class.getClassLoader().getResourceAsStream(fileName));
} catch (IOException e) {
throw new RuntimeException(e);
}
Set<Object> keys=propert.keySet();
return keys;
}
/**
* 显示图片
* @param file
* @return
* @throws IOException
* @throws Exception
*/
public static String showPic(File file) throws IOException{
BufferedInputStream bis =null;
OutputStream out=null;
try {
FileInputStream fileinput =new FileInputStream(file);
bis = new BufferedInputStream(fileinput);
HttpServletResponse response = ServletActionContext.getResponse();
response.reset();
response.setContentType("image/jpeg;charset=UTF-8");
response.addHeader("Content-Transfer-Encoding","base64");
out = response.getOutputStream();
byte[] buffer = new byte[4096];
int size = 0;
while ((size = bis.read(buffer, 0, buffer.length)) != -1) {
out.write(buffer, 0, size);
}
} catch (FileNotFoundException e) {
throw new RuntimeException("显示图片出错");
} catch (IOException e) {
throw new RuntimeException("显示图片出错");
}finally{
if(out!=null){
out.close();
bis.close();
}
}
return null;
}
}