|
@@ -1,321 +0,0 @@
|
|
|
-package cn.cslg.pas.common.utils;
|
|
|
-
|
|
|
-import java.net.MalformedURLException;
|
|
|
-import java.net.URL;
|
|
|
-import java.net.URLClassLoader;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.List;
|
|
|
-import java.util.regex.Matcher;
|
|
|
-import java.util.regex.Pattern;
|
|
|
-import java.util.stream.Collectors;
|
|
|
-
|
|
|
-interface IProcessData {
|
|
|
- Object processData(Object data, Object code);
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * @name 一般字符串处理类
|
|
|
- * @description 1.带有分隔符按照分隔符拆分(去除所有空格) 2.不带分隔符直接返回原数据
|
|
|
- */
|
|
|
-class StringHandler implements IProcessData {
|
|
|
- @Override
|
|
|
- public Object processData(Object data, Object splitSymbol) {
|
|
|
- if (!"".equals(splitSymbol)) {
|
|
|
- return StringUtils.changeStringToString(data.toString().trim(), splitSymbol.toString());
|
|
|
- } else {
|
|
|
- return data.toString();
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * @name 时间处理类
|
|
|
- * @description 1.将时间类型数据转换为int型 2.现支持格式为 yyyy-MM-dd yyyy/MM/dd 可后需添加
|
|
|
- */
|
|
|
-class TimeHandler implements IProcessData {
|
|
|
- @Override
|
|
|
- public Object processData(Object data, Object splitSymbol) {
|
|
|
- return DateUtils.getDateTime(data.toString());
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * @name 数字处理类
|
|
|
- * @description 1.传入的字符型数字数据转换为int型
|
|
|
- */
|
|
|
-class IntegerHandler implements IProcessData {
|
|
|
- @Override
|
|
|
- public Object processData(Object data, Object splitSymbol) {
|
|
|
- return Integer.parseInt(data.toString());
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * @name 特殊字符串处理类
|
|
|
- * @description 1.带有分隔符按照分隔符拆分(去除 '>' 符号) 2.不带分隔符直接返回原数据 3.目前只有两个字段会使用 (1)标签(2)自定义字段
|
|
|
- */
|
|
|
-class StringSpecialHandler implements IProcessData {
|
|
|
- @Override
|
|
|
- public Object processData(Object data, Object splitSymbol) {
|
|
|
- if (!"".equals(splitSymbol)) {
|
|
|
- return StringUtils.changeStringToString(data.toString().replaceAll(">", ""), splitSymbol.toString());
|
|
|
- } else {
|
|
|
- return data.toString();
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * @name
|
|
|
- * @description
|
|
|
- */
|
|
|
-class SplitOriginalAndTranslationHandler implements IProcessData {
|
|
|
- @Override
|
|
|
- public Object processData(Object data, Object splitSymbol) {
|
|
|
- List<String> splitList = StringUtils.changeStringToString(splitSymbol.toString(), ",");
|
|
|
- if (splitList.get(0).equals("1")) {
|
|
|
- return StringUtils.changeStringToString(data.toString(), splitList.get(1)).get(0);
|
|
|
- } else if (splitList.get(0).equals("2")) {
|
|
|
- if (StringUtils.changeStringToString(data.toString(), splitList.get(1)).size() == 2) {
|
|
|
- return StringUtils.changeStringToString(data.toString(), splitList.get(1)).get(1);
|
|
|
- }
|
|
|
- }
|
|
|
- return null;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * @name 专利类型处理类
|
|
|
- * @description 1.将传入的专利类型转换成不同的ID 2.目前这个没有用字典项的原因是因为不同数据源的叫法不一致 无法统一进行分类
|
|
|
- */
|
|
|
-class PatentTypeHandler implements IProcessData {
|
|
|
- @Override
|
|
|
- public Object processData(Object data, Object ob) {
|
|
|
- if (data.toString().contains("实用新型")) {
|
|
|
- return 1;
|
|
|
- } else if (data.toString().contains("发明申请") || data.toString().contains("发明公布")) {
|
|
|
- return 2;
|
|
|
- } else if (data.toString().contains("外观设计")) {
|
|
|
- return 3;
|
|
|
- } else if (data.toString().contains("授权")) {
|
|
|
- return 4;
|
|
|
- }
|
|
|
- return null;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-class SplitBySerialNumberAndRemoveLineFeedHandler implements IProcessData {
|
|
|
- @Override
|
|
|
- public Object processData(Object data, Object splitSymbol) {
|
|
|
- return Arrays.stream(data.toString().replaceAll("\n", "").split(splitSymbol.toString()))
|
|
|
- .filter(StringUtils::isNotEmpty)
|
|
|
- .collect(Collectors.toList());
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-class PatSnapPatentAffairHandler implements IProcessData {
|
|
|
- @Override
|
|
|
- public Object processData(Object data, Object code) {
|
|
|
- List<String> splitStr = StringUtils.changeStringToString(data.toString(), "\\|");
|
|
|
-
|
|
|
- StringBuilder all = new StringBuilder();
|
|
|
- StringBuilder one = new StringBuilder();
|
|
|
- for (int i = 0; i < splitStr.size(); i += 3) {
|
|
|
- if (one.toString().equals("")) {
|
|
|
- one = new StringBuilder("\"inpadocData\"" + ":[" + "{" + "\"name\"" + ":" + "\"发生日期\"" + "," + "\"content\"" + ":" + "\"" + splitStr.get(i).trim() + "\"" + "}");
|
|
|
- } else {
|
|
|
- one.append("," + "{" + "\"name\"" + ":" + "\"发生日期\"" + "," + "\"content\"" + ":" + "\"").append(splitStr.get(i).trim()).append("\"").append("}");
|
|
|
- }
|
|
|
- one.append(",{").append("\"name\":\"国家\"").append(",").append("\"content\":").append("\"").append(splitStr.get(i + 2).trim()).append("\"").append("}");
|
|
|
- one.append("," + "{" + "\"name\"" + ":" + "\"内容\"" + "," + "\"content\"" + ":" + "\"").append(splitStr.get(i + 1).trim()).append("\"").append("}]");
|
|
|
-
|
|
|
- if (!one.toString().equals("")) {
|
|
|
- if (!all.toString().equals("")) {
|
|
|
- all.append(",{").append(one).append("}");
|
|
|
- } else {
|
|
|
- all = new StringBuilder("{" + one + "}");
|
|
|
- }
|
|
|
- }
|
|
|
- one = new StringBuilder();
|
|
|
- }
|
|
|
-
|
|
|
- all = new StringBuilder("[" + all + "]");
|
|
|
- return all.toString();
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-class IncoPatPatentAffairHandler implements IProcessData {
|
|
|
- @Override
|
|
|
- public Object processData(Object data, Object code) {
|
|
|
- String processedData = data.toString().replaceAll("\r\n", "");
|
|
|
- List<String> contentList = StringUtils.changeStringToString(processedData, "([\\u4e00-\\u9fa5]+):");
|
|
|
- contentList.remove(0);
|
|
|
-
|
|
|
- List<String> tableList = new ArrayList<>();
|
|
|
- Pattern p = Pattern.compile("([\\u4e00-\\u9fa5]+):");
|
|
|
- Matcher m = p.matcher(data.toString());
|
|
|
- while (m.find()) {
|
|
|
- tableList.add(m.group(1));
|
|
|
- }
|
|
|
-
|
|
|
- StringBuilder all = new StringBuilder();
|
|
|
- StringBuilder one = new StringBuilder();
|
|
|
- for (int i = 0; i < tableList.size(); i++) {
|
|
|
- if (tableList.get(i).contains("法律状态公告日")) {
|
|
|
- if (!one.toString().equals("")) {
|
|
|
- if (!all.toString().equals("")) {
|
|
|
- all.append(",{").append(one).append("]").append("}");
|
|
|
- } else {
|
|
|
- all = new StringBuilder("{" + one + "]}");
|
|
|
- }
|
|
|
- }
|
|
|
- one = new StringBuilder();
|
|
|
- }
|
|
|
-
|
|
|
- if (one.toString().equals("")) {
|
|
|
- one = new StringBuilder("\"inpadocData\"" + ":[" + "{" + "\"name\"" + ":" + "\"" + tableList.get(i) + "\"" + ",\"" + "content\"" + ":" + "\"" + contentList.get(i).replaceAll(";", "") + "\"" + "}");
|
|
|
- } else {
|
|
|
- one.append(",").append("{" + "\"name\"" + ":").append("\"").append(tableList.get(i)).append("\"" + "," + "\"" + "content\"" + ":" + "\"").append(contentList.get(i).replaceAll(";", "")).append("\"" + "}");
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- if (!one.toString().equals("")) {
|
|
|
- if (!all.toString().equals("")) {
|
|
|
- all.append(",{").append(one).append("]").append("}");
|
|
|
- } else {
|
|
|
- all = new StringBuilder("{" + one + "]}");
|
|
|
- }
|
|
|
- }
|
|
|
- all = new StringBuilder("[" + all + "]");
|
|
|
- return all.toString();
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-class IncoPatUCMainHandler implements IProcessData {
|
|
|
- @Override
|
|
|
- public Object processData(Object data, Object splitSymbol) {
|
|
|
- List<String> splitList = StringUtils.changeStringToString(data.toString(), splitSymbol.toString());
|
|
|
- return splitList.get(0);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-class IncoPatInventorAddressHandler implements IProcessData {
|
|
|
- @Override
|
|
|
- public Object processData(Object data, Object code) {
|
|
|
- List<String> splitStr = StringUtils.changeStringToString(data.toString().replaceAll(" ", ""), ";");
|
|
|
- if (code.toString().equals("1")) {
|
|
|
- return splitStr;
|
|
|
- } else if (code.toString().equals("2")) {
|
|
|
- return splitStr.get(0);
|
|
|
- }
|
|
|
- return null;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-class PatenticsPatentAffairHandler implements IProcessData {
|
|
|
- @Override
|
|
|
- public Object processData(Object data, Object code) {
|
|
|
- List<String> splitStr = StringUtils.changeStringToString(data.toString(), "\n");
|
|
|
- splitStr.removeIf(item -> item.equals(""));
|
|
|
-
|
|
|
- List<String> processList = splitStr.stream().map(item -> item.replaceAll(" ", "\\|")).collect(Collectors.toList());
|
|
|
-
|
|
|
- StringBuilder all = new StringBuilder();
|
|
|
- StringBuilder one = new StringBuilder();
|
|
|
- List<String> messageList;
|
|
|
- Pattern p = Pattern.compile("[0-9]*");
|
|
|
-
|
|
|
- for (int j = 0; j < processList.size(); j++) {
|
|
|
- if (j < processList.size() - 1) {
|
|
|
- Matcher m = p.matcher(processList.get(j + 1).substring(0, 2));
|
|
|
- if (!m.matches()) {
|
|
|
- processList.set(j, processList.get(j) + " " + processList.get(j + 1));
|
|
|
- processList.remove(j + 1);
|
|
|
- }
|
|
|
- }
|
|
|
- messageList = StringUtils.changeStringToString(processList.get(j), "\\|");
|
|
|
-
|
|
|
- for (int i = 0; i < messageList.size(); i += 3) {
|
|
|
- if (one.toString().equals("")) {
|
|
|
- one = new StringBuilder("\"inpadocData\"" + ":[" + "{" + "\"name\"" + ":" + "\"发生日期\"" + "," + "\"content\"" + ":" + "\"" + messageList.get(i).trim() + "\"" + "}");
|
|
|
- } else {
|
|
|
- one.append("," + "{" + "\"name\"" + ":" + "\"发生日期\"" + "," + "\"content\"" + ":" + "\"").append(messageList.get(i).trim()).append("\"").append("}");
|
|
|
- }
|
|
|
- one.append(",{").append("\"name\":\"法律状态\"").append(",").append("\"content\":").append("\"").append(messageList.get(i + 1).trim()).append("\"").append("}");
|
|
|
- one.append("," + "{" + "\"name\"" + ":" + "\"描述信息\"" + "," + "\"content\"" + ":" + "\"").append(messageList.get(i + 2).trim()).append("\"").append("}]");
|
|
|
-
|
|
|
- if (!one.toString().equals("")) {
|
|
|
- if (!all.toString().equals("")) {
|
|
|
- all.append(",{").append(one).append("}");
|
|
|
- } else {
|
|
|
- all = new StringBuilder("{" + one + "}");
|
|
|
- }
|
|
|
- }
|
|
|
- one = new StringBuilder();
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- all = new StringBuilder("[" + all + "]");
|
|
|
- return all.toString();
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-class PatenticsAgencyAndAgentHandler implements IProcessData {
|
|
|
- @Override
|
|
|
- public Object processData(Object data, Object code) {
|
|
|
- List<String> splitStr = StringUtils.changeStringToString(data.toString().replaceAll(" ", ""), ";");
|
|
|
- if (code.toString().equals("1")) {
|
|
|
- return splitStr.get(0);
|
|
|
- } else if (code.toString().equals("2")) {
|
|
|
- splitStr.remove(0);
|
|
|
- return splitStr;
|
|
|
- }
|
|
|
- return null;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-class PatenticsStringHandler implements IProcessData {
|
|
|
- @Override
|
|
|
- public Object processData(Object data, Object splitSymbol) {
|
|
|
- if (!"".equals(splitSymbol)) {
|
|
|
- return StringUtils.changeStringToString(data.toString().replaceAll(" ", "").replaceAll("\n", ""), splitSymbol.toString());
|
|
|
- } else {
|
|
|
- return data.toString().replaceAll(" ", "");
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-public class DataProcessHandler {
|
|
|
- public static IProcessData getData(String typeName, String jarOrClassPath) {
|
|
|
-
|
|
|
- if (jarOrClassPath != null) {
|
|
|
- try {
|
|
|
- //用路径创建Url
|
|
|
- URL url = new URL("file:" + jarOrClassPath);
|
|
|
- //通过Url加载外部的jar包
|
|
|
- URLClassLoader urlClassLoader = new URLClassLoader(new URL[]{url});
|
|
|
- Class<?> clazz = urlClassLoader.loadClass(typeName);
|
|
|
- return (IProcessData) clazz.newInstance();
|
|
|
- } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | MalformedURLException e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- } else {
|
|
|
- try {
|
|
|
- return (IProcessData) Class.forName(typeName).newInstance();
|
|
|
- } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- public static void main(String[] args) {
|
|
|
- System.out.println("启动成功");
|
|
|
- }
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|