作者 朱兆平

开发框架utils init

/target/
!.mvn/wrapper/maven-wrapper.jar
/logs/
/out/
.mvn
/xmlFromImf/
kakoRevice/
/errorLogs/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/build/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
... ...
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.tianbo</groupId>
<artifactId>util</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.dom4j/dom4j -->
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.0</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
... ...
package com.tianbo.util.Date;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.Date;
public final class DateUtil {
private static Date currentDate = new Date();
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
private static SimpleDateFormat timesdf = new SimpleDateFormat("yyyyMMddHHmmss");
public static String getToday(){
return sdf.format(currentDate);
}
public static String getDDTM(){
return timesdf.format(currentDate);
}
public static Date formatByyyyyMMddHHmmss(String dateStr) throws DateTimeParseException{
//毫秒级的去掉
if(dateStr.length()>14){
dateStr= dateStr.substring(0,14);
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
LocalDateTime dateTime = LocalDateTime.parse(dateStr, formatter);
return convertLDTToDate(dateTime);
}
//LocalDateTime转换为Date
public static Date convertLDTToDate(LocalDateTime time) {
return Date.from(time.atZone(ZoneId.systemDefault()).toInstant());
}
}
... ...
package com.tianbo.util;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Map;
import java.util.UUID;
public class Helper {
/**
* Object转BigDecimal类型-MRZ-2018年5月14日09:56:26
*
* @param value 要转的object类型
* @return 转成的BigDecimal类型数据
*/
static public BigDecimal getBigDecimal(Object value) {
BigDecimal ret = null;
if (value != null) {
if (value instanceof BigDecimal) {
ret = (BigDecimal) value;
} else if (value instanceof String) {
ret = new BigDecimal((String) value);
} else if (value instanceof BigInteger) {
ret = new BigDecimal((BigInteger) value);
} else if (value instanceof Number) {
ret = new BigDecimal(((Number) value).doubleValue());
} else {
throw new ClassCastException("Not possible to coerce [" + value + "] from class " + value.getClass() + " into a BigDecimal.");
}
}
return ret;
}
public static String getUUID(){
return UUID.randomUUID().toString().replace("-", "");
}
}
... ...
package com.tianbo.util.IO;
import com.tianbo.util.Date.DateUtil;
import com.tianbo.util.Helper;
import org.apache.commons.io.FileUtils;
import java.io.*;
import java.util.List;
import java.util.Properties;
public final class FileTool {
private final static String errorRootDirectory = "errorLogs";//错误的根目录名
private final static String xmlRootDirectory = "xmlLog"; //记录已收到的报文目录
private final static String Cherector = "UTF-8";
/**
* 写入文件
* @param path 二级目录
* @param content 写入内容
* @param rightOrwrong 是写入错误记录目录还是记录目录
*/
public static void writeFile(String path,String content,boolean rightOrwrong){
StringBuffer stringBuffer = new StringBuffer();
if (rightOrwrong){
stringBuffer.append(xmlRootDirectory).append("/").append(path).append("/").append(DateUtil.getToday()).append("/").append(Helper.getUUID()).append(".log");
}else {
stringBuffer.append(errorRootDirectory).append("/").append(path).append("/").append(DateUtil.getToday()).append("/").append(Helper.getUUID()).append(".log");
}
File file = new File(stringBuffer.toString());
try{
FileUtils.writeStringToFile(file,content,Cherector);
}catch (IOException e){
e.printStackTrace();
}
}
public static String readfile(File file) throws IOException{
String fileToString = FileUtils.readFileToString(file, "utf-8");
return fileToString;
}
public static List<File> readDirectoryFiles(File dir){
List<File> files = (List<File>)FileUtils.listFiles(dir,new String[]{"xml"},false);
return files;
}
public static void writeWaybill(String path,String content,String waybillNo){
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(xmlRootDirectory).append("/").append(path).append("/").append(DateUtil.getToday()).append("/").append(waybillNo).append(".log");
File file = new File(stringBuffer.toString());
try{
FileUtils.writeStringToFile(file,content,Cherector);
}catch (IOException e){
e.printStackTrace();
}
}
public static void writeFileToBak(String content){
String bakDir = readProperties("bakDirectory");
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(bakDir).append("/").append(Helper.getUUID()).append(".txt");
File file = new File(stringBuffer.toString());
try{
FileUtils.writeStringToFile(file,content,Cherector);
}catch (IOException e){
e.printStackTrace();
}
}
public static String readProperties(String key){
Properties properties = new Properties();
String value = "";
try{
BufferedReader bufferedReader = new BufferedReader(new FileReader("config/config.properties"));
properties.load(bufferedReader);
//获取key对应的value值
value= properties.getProperty(key);
}catch (Exception e){
e.printStackTrace();
}
return value;
}
}
... ...
package com.tianbo.util.IO;
import org.apache.commons.lang.ArrayUtils;
import java.util.Arrays;
import java.util.stream.Stream;
public abstract class StreamUtil implements Stream{
public static <T> Stream<T> streamOf(T[] array) {
return ArrayUtils.isEmpty(array) ? Stream.empty() : Arrays.asList(array).stream();
}
}
... ...
package com.tianbo.util.XML;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.xml.sax.SAXParseException;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.UnsupportedEncodingException;
public class MakeImfMeta {
public static String makeImfDocument(String SNDR,String RCVR,String TYPE,String STYP,String DDTM,String SEQN,File Content) throws DocumentException,UnsupportedEncodingException,SAXParseException{
Document document = DocumentHelper.createDocument();
Element root = document.addElement( "MSG" );
Element meta = root.addElement("META");
meta.addElement("SNDR").addText(SNDR);
meta.addElement("RCVR").addText(RCVR);
meta.addElement("SEQN").addText(SEQN);
meta.addElement("DDTM").addText(DDTM);
meta.addElement("TYPE").addText(TYPE);
meta.addElement("STYP").addText(STYP);
SAXReader saxReader = new SAXReader();
// saxReader.setEncoding("gb2312");
Document doc = saxReader.read(Content);
Element contentRoot = doc.getRootElement();
root.add(contentRoot);
return document.asXML();
}
}
... ...
package com.tianbo.util.XML;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
public class XML2ENTITY {
@SuppressWarnings("unchecked")
/**取KEY的VALUE
*
*/
public Map<String, Object> Dom2Map(Document doc){
Map<String, Object> map = new HashMap<String, Object>();
if(doc == null){
return map;
}
Element root = doc.getRootElement();
for (Iterator iterator = root.elementIterator(); iterator.hasNext();) {
Element e = (Element) iterator.next();
List list = e.elements();
if(list.size() > 0){
map.put(e.getName(), Dom2Map(e));
}else{
map.put(e.getName(), e.getText());}
}
return map;
}
@SuppressWarnings("unchecked")
public Map Dom2Map(Element e){
Map map = new HashMap();
List list = e.elements();
if(list.size() > 0){
for (int i = 0;i < list.size(); i++) {
Element iter = (Element) list.get(i);
List mapList = new ArrayList();
if(iter.elements().size() > 0){
Map m = Dom2Map(iter);
if(map.get(iter.getName()) != null){
Object obj = map.get(iter.getName());
if(!obj.getClass().getName().equals("java.util.ArrayList")){
mapList = new ArrayList();
mapList.add(obj);
mapList.add(m);
}
if(obj.getClass().getName().equals("java.util.ArrayList")){
mapList = (List) obj;
mapList.add(m);
}
map.put(iter.getName(), mapList);
}else{
map.put(iter.getName(), m);}
}
else{
if(map.get(iter.getName()) != null){
Object obj = map.get(iter.getName());
if(!obj.getClass().getName().equals("java.util.ArrayList")){
mapList = new ArrayList();
mapList.add(obj);
mapList.add(iter.getText());
}
if(obj.getClass().getName().equals("java.util.ArrayList")){
mapList = (List) obj;
mapList.add(iter.getText());
}
map.put(iter.getName(), mapList);
}else{
map.put(iter.getName(), iter.getText());}
}
}
}else{
map.put(e.getName(), e.getText());}
return map;
}
public List<Map> attrOfElement(Element e){
List attList = new ArrayList();
List<Attribute> listAttr = e.attributes();
for(Attribute attr:listAttr){//遍历当前节点的所有属性
String name=attr.getName();//属性名称
String value=attr.getValue();//属性的值
Map<String, Object> attMap = new HashMap<String, Object>();
attMap.put(name,value);
attList.add(attMap);
}
return attList;
}
@SuppressWarnings("unchecked")
/**遍历所有节点的属性值
*
*/
public Map<String, Object> Dom2Map_propety(Document doc){
Map<String, Object> map = new HashMap<String, Object>();
if(doc == null) {
return map;
}
Element root = doc.getRootElement();
for (Iterator iterator = root.elementIterator(); iterator.hasNext();) {
Element e = (Element) iterator.next();
List list = e.elements();
if(list.size() > 0){
map.put(e.getName(), Dom2Map_propety(e));
}else {
map.put(e.getName(), attrOfElement(e));
}
}
return map;
}
@SuppressWarnings("unchecked")
public Map Dom2Map_propety(Element e){
Map map = new HashMap();
List list = e.elements();
if(list.size() > 0){
for (int i = 0;i < list.size(); i++) {
Element iter = (Element) list.get(i);
List mapList = new ArrayList();
if(iter.elements().size() > 0){
Map m = Dom2Map_propety(iter);
if(map.get(iter.getName()) != null){
Object obj = map.get(iter.getName());
if(!obj.getClass().getName().equals("java.util.ArrayList")){
mapList = new ArrayList();
mapList.add(obj);
mapList.add(m);
}
if(obj.getClass().getName().equals("java.util.ArrayList")){
mapList = (List) obj;
mapList.add(m);
}
map.put(iter.getName(), mapList);
}else {
map.put(iter.getName(), m);
}
}
else{
if(map.get(iter.getName()) != null){
Object obj = map.get(iter.getName());
if(!obj.getClass().getName().equals("java.util.ArrayList")){
mapList = new ArrayList();
mapList.add(obj);
mapList.add(iter.getText());
}
if(obj.getClass().getName().equals("java.util.ArrayList")){
mapList = (List) obj;
mapList.add(iter.getText());
}
map.put(iter.getName(), mapList);
}else{
map.put(iter.getName(), attrOfElement(iter));
}
}
}
}else {
map.put(e.getName(), attrOfElement(e));
}
return map;
}
/**
* 判断map是否包含key,包含返回KEY值,不包含返回NULL
* @param map
* @param key
* @return
*/
public static Object getMap(Map map, String key){
if(map!=null && key!=null && !key.isEmpty() && map.containsKey(key)){
return map.get(key);
} else {
return "";
}
}
}
... ...
package com.tianbo.util.XML;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Node;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class XMLXPath {
public static String getSingleValueByPath(Document document,String path){
Node node = document.selectSingleNode(path);
if (node!=null){
String nodeValue = node.getStringValue();
return nodeValue;
}else {
return null;
}
}
public static List<Node> getPathValues(Document document,String path){
List<Node> nodes= document.selectNodes(path);
return nodes;
}
public static void getPathValues2(Document document,String path){
List list = document.selectNodes(path);
for (Iterator it = list.iterator(); it.hasNext();) {
Attribute attr = (Attribute) it.next();
//TODO
}
}
}
... ...