From e0dee0791597c0d73b268c53216dca846dc2d7d2 Mon Sep 17 00:00:00 2001 From: yinjiangyi Date: Tue, 24 Nov 2020 16:03:55 +0800 Subject: [PATCH] edit mariaConect --- UaAnalyser.jar | Bin 1134540 -> 1134725 bytes .../com/mesalab/ua/analyser/UaAnalyser.java | 4 ++-- .../ua/analyser/enums/RegexFeatureEnum.java | 2 +- .../ua/analyser/enums/StandardUaList.java | 2 +- .../mesalab/ua/analyser/enums/UserInfo.java | 2 +- .../ua/analyser/impl/AndroidAnalyser.java | 10 +++++----- .../ua/analyser/impl/AppleAnalyser.java | 8 ++++---- .../ua/analyser/impl/TerminalClassify.java | 6 +++--- .../ua/analyser/impl/UaAnalyserImpl.java | 14 +++++++++----- .../ua/analyser/impl/WindowsAnalyser.java | 10 +++++----- .../mesalab/ua/config/ApplicationConfig.java | 4 ++-- .../java/com/mesalab/ua/dao/QueryMariaDb.java | 2 +- .../mesalab/ua/dao/impl/QueryMariaDbImpl.java | 11 ++++++----- .../com/mesalab/ua/utils/ConfigUtils.java | 2 +- .../com/mesalab/ua/utils/MariaDBConnect.java | 16 +++++++++++----- src/test/java/UaAnalyserTest.java | 6 +++--- 16 files changed, 55 insertions(+), 44 deletions(-) diff --git a/UaAnalyser.jar b/UaAnalyser.jar index 84ccfe50bbe88815964857631ad5ca3b452d686e..e18e9ca3fedbc4fd1ace070245447c80d3e2fe17 100644 GIT binary patch delta 18528 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 delta 18017 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 K;YGsb{Qm<=)=i86 diff --git a/src/main/java/com/mesalab/ua/analyser/UaAnalyser.java b/src/main/java/com/mesalab/ua/analyser/UaAnalyser.java index df06447..bd9e8c5 100644 --- a/src/main/java/com/mesalab/ua/analyser/UaAnalyser.java +++ b/src/main/java/com/mesalab/ua/analyser/UaAnalyser.java @@ -1,6 +1,6 @@ -package com.example.ua.analyser; +package com.mesalab.ua.analyser; -import com.example.ua.analyser.enums.UserInfo; +import com.mesalab.ua.analyser.enums.UserInfo; /** * @author yjy diff --git a/src/main/java/com/mesalab/ua/analyser/enums/RegexFeatureEnum.java b/src/main/java/com/mesalab/ua/analyser/enums/RegexFeatureEnum.java index 209664f..bf104fe 100644 --- a/src/main/java/com/mesalab/ua/analyser/enums/RegexFeatureEnum.java +++ b/src/main/java/com/mesalab/ua/analyser/enums/RegexFeatureEnum.java @@ -1,4 +1,4 @@ -package com.example.ua.analyser.enums; +package com.mesalab.ua.analyser.enums; /** * @author yjy diff --git a/src/main/java/com/mesalab/ua/analyser/enums/StandardUaList.java b/src/main/java/com/mesalab/ua/analyser/enums/StandardUaList.java index 95f43c0..fce03c2 100644 --- a/src/main/java/com/mesalab/ua/analyser/enums/StandardUaList.java +++ b/src/main/java/com/mesalab/ua/analyser/enums/StandardUaList.java @@ -1,4 +1,4 @@ -package com.example.ua.analyser.enums; +package com.mesalab.ua.analyser.enums; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/com/mesalab/ua/analyser/enums/UserInfo.java b/src/main/java/com/mesalab/ua/analyser/enums/UserInfo.java index b56f3bf..466cf26 100644 --- a/src/main/java/com/mesalab/ua/analyser/enums/UserInfo.java +++ b/src/main/java/com/mesalab/ua/analyser/enums/UserInfo.java @@ -1,4 +1,4 @@ -package com.example.ua.analyser.enums; +package com.mesalab.ua.analyser.enums; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/com/mesalab/ua/analyser/impl/AndroidAnalyser.java b/src/main/java/com/mesalab/ua/analyser/impl/AndroidAnalyser.java index 5e8f6a7..f071126 100644 --- a/src/main/java/com/mesalab/ua/analyser/impl/AndroidAnalyser.java +++ b/src/main/java/com/mesalab/ua/analyser/impl/AndroidAnalyser.java @@ -1,4 +1,4 @@ -package com.example.ua.analyser.impl; +package com.mesalab.ua.analyser.impl; import java.util.ArrayList; import java.util.Arrays; @@ -6,10 +6,10 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -import com.example.ua.analyser.enums.RegexFeatureEnum; -import com.example.ua.analyser.enums.UserInfo; -import com.example.ua.dao.QueryMariaDb; -import com.example.ua.dao.impl.QueryMariaDbImpl; +import com.mesalab.ua.analyser.enums.RegexFeatureEnum; +import com.mesalab.ua.analyser.enums.UserInfo; +import com.mesalab.ua.dao.QueryMariaDb; +import com.mesalab.ua.dao.impl.QueryMariaDbImpl; import org.mariadb.jdbc.MariaDbStatement; /** diff --git a/src/main/java/com/mesalab/ua/analyser/impl/AppleAnalyser.java b/src/main/java/com/mesalab/ua/analyser/impl/AppleAnalyser.java index 1e4f9a2..4546795 100644 --- a/src/main/java/com/mesalab/ua/analyser/impl/AppleAnalyser.java +++ b/src/main/java/com/mesalab/ua/analyser/impl/AppleAnalyser.java @@ -1,8 +1,8 @@ -package com.example.ua.analyser.impl; +package com.mesalab.ua.analyser.impl; -import com.example.ua.analyser.enums.UserInfo; -import com.example.ua.dao.QueryMariaDb; -import com.example.ua.dao.impl.QueryMariaDbImpl; +import com.mesalab.ua.analyser.enums.UserInfo; +import com.mesalab.ua.dao.QueryMariaDb; +import com.mesalab.ua.dao.impl.QueryMariaDbImpl; import org.mariadb.jdbc.MariaDbStatement; import java.util.ArrayList; diff --git a/src/main/java/com/mesalab/ua/analyser/impl/TerminalClassify.java b/src/main/java/com/mesalab/ua/analyser/impl/TerminalClassify.java index b20d3a4..ae511e8 100644 --- a/src/main/java/com/mesalab/ua/analyser/impl/TerminalClassify.java +++ b/src/main/java/com/mesalab/ua/analyser/impl/TerminalClassify.java @@ -1,7 +1,7 @@ -package com.example.ua.analyser.impl; +package com.mesalab.ua.analyser.impl; -import com.example.ua.analyser.enums.UserInfo; -import com.example.ua.analyser.enums.RegexFeatureEnum; +import com.mesalab.ua.analyser.enums.UserInfo; +import com.mesalab.ua.analyser.enums.RegexFeatureEnum; import java.util.HashMap; import java.util.List; diff --git a/src/main/java/com/mesalab/ua/analyser/impl/UaAnalyserImpl.java b/src/main/java/com/mesalab/ua/analyser/impl/UaAnalyserImpl.java index 4e0abf0..8ab48ac 100644 --- a/src/main/java/com/mesalab/ua/analyser/impl/UaAnalyserImpl.java +++ b/src/main/java/com/mesalab/ua/analyser/impl/UaAnalyserImpl.java @@ -3,18 +3,20 @@ * @version 1.0 * @date 2020/11/15 12:20 下午 */ -package com.example.ua.analyser.impl; +package com.mesalab.ua.analyser.impl; import java.sql.SQLException; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -import com.example.ua.analyser.UaAnalyser; -import com.example.ua.analyser.enums.UserInfo; -import com.example.ua.utils.MariaDBConnect; -import com.example.ua.analyser.enums.RegexFeatureEnum; +import com.mesalab.ua.analyser.UaAnalyser; +import com.mesalab.ua.analyser.enums.UserInfo; +import com.mesalab.ua.dao.QueryMariaDb; +import com.mesalab.ua.utils.MariaDBConnect; +import com.mesalab.ua.analyser.enums.RegexFeatureEnum; +import org.mariadb.jdbc.MariaDbConnection; import org.mariadb.jdbc.MariaDbStatement; import org.apache.log4j.Logger; @@ -47,6 +49,8 @@ public class UaAnalyserImpl implements UaAnalyser { AppleAnalyser appleAnalyser = new AppleAnalyser(connStatement, userInfo); userInfo = appleAnalyser.getTriples(); } + + MariaDBConnect.clear(); userInfo.update(); return userInfo; } diff --git a/src/main/java/com/mesalab/ua/analyser/impl/WindowsAnalyser.java b/src/main/java/com/mesalab/ua/analyser/impl/WindowsAnalyser.java index adafc43..ace258a 100644 --- a/src/main/java/com/mesalab/ua/analyser/impl/WindowsAnalyser.java +++ b/src/main/java/com/mesalab/ua/analyser/impl/WindowsAnalyser.java @@ -1,9 +1,9 @@ -package com.example.ua.analyser.impl; +package com.mesalab.ua.analyser.impl; -import com.example.ua.analyser.enums.StandardUaList; -import com.example.ua.analyser.enums.UserInfo; -import com.example.ua.dao.QueryMariaDb; -import com.example.ua.dao.impl.QueryMariaDbImpl; +import com.mesalab.ua.analyser.enums.StandardUaList; +import com.mesalab.ua.analyser.enums.UserInfo; +import com.mesalab.ua.dao.QueryMariaDb; +import com.mesalab.ua.dao.impl.QueryMariaDbImpl; import org.mariadb.jdbc.MariaDbStatement; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/com/mesalab/ua/config/ApplicationConfig.java b/src/main/java/com/mesalab/ua/config/ApplicationConfig.java index f22e594..89e300b 100644 --- a/src/main/java/com/mesalab/ua/config/ApplicationConfig.java +++ b/src/main/java/com/mesalab/ua/config/ApplicationConfig.java @@ -1,6 +1,6 @@ -package com.example.ua.config; +package com.mesalab.ua.config; -import com.example.ua.utils.ConfigUtils; +import com.mesalab.ua.utils.ConfigUtils; /** diff --git a/src/main/java/com/mesalab/ua/dao/QueryMariaDb.java b/src/main/java/com/mesalab/ua/dao/QueryMariaDb.java index f8f9ec9..e60d95a 100644 --- a/src/main/java/com/mesalab/ua/dao/QueryMariaDb.java +++ b/src/main/java/com/mesalab/ua/dao/QueryMariaDb.java @@ -1,4 +1,4 @@ -package com.example.ua.dao; +package com.mesalab.ua.dao; import org.mariadb.jdbc.MariaDbStatement; diff --git a/src/main/java/com/mesalab/ua/dao/impl/QueryMariaDbImpl.java b/src/main/java/com/mesalab/ua/dao/impl/QueryMariaDbImpl.java index 3c32049..7f0e7fc 100644 --- a/src/main/java/com/mesalab/ua/dao/impl/QueryMariaDbImpl.java +++ b/src/main/java/com/mesalab/ua/dao/impl/QueryMariaDbImpl.java @@ -1,7 +1,7 @@ -package com.example.ua.dao.impl; +package com.mesalab.ua.dao.impl; -import com.example.ua.config.ApplicationConfig; -import com.example.ua.dao.QueryMariaDb; +import com.mesalab.ua.config.ApplicationConfig; +import com.mesalab.ua.dao.QueryMariaDb; import org.mariadb.jdbc.MariaDbStatement; import org.apache.log4j.Logger; @@ -39,12 +39,13 @@ public class QueryMariaDbImpl implements QueryMariaDb { } else { LOG.info("QueryMariaDB.Empty " + ua); } - return triple; + results.close(); + connStatement.close(); } catch (SQLException e){ LOG.info("QueryMariaDB.Fail " + e.toString()); - return null; } + return triple; } private String getSqlPattern(String ua){ diff --git a/src/main/java/com/mesalab/ua/utils/ConfigUtils.java b/src/main/java/com/mesalab/ua/utils/ConfigUtils.java index 1a84ee5..8a94080 100644 --- a/src/main/java/com/mesalab/ua/utils/ConfigUtils.java +++ b/src/main/java/com/mesalab/ua/utils/ConfigUtils.java @@ -1,4 +1,4 @@ -package com.example.ua.utils; +package com.mesalab.ua.utils; import org.apache.log4j.Logger; import java.util.Properties; diff --git a/src/main/java/com/mesalab/ua/utils/MariaDBConnect.java b/src/main/java/com/mesalab/ua/utils/MariaDBConnect.java index 915b690..a59f9f2 100644 --- a/src/main/java/com/mesalab/ua/utils/MariaDBConnect.java +++ b/src/main/java/com/mesalab/ua/utils/MariaDBConnect.java @@ -1,6 +1,6 @@ -package com.example.ua.utils; +package com.mesalab.ua.utils; -import com.example.ua.config.ApplicationConfig; +import com.mesalab.ua.config.ApplicationConfig; import org.mariadb.jdbc.MariaDbDataSource; import org.mariadb.jdbc.MariaDbStatement; @@ -17,6 +17,7 @@ import java.sql.SQLException; */ public class MariaDBConnect{ private static final Logger LOG = Logger.getLogger(MariaDBConnect.class); + private static MariaDbConnection conn = null; public static MariaDbStatement getMariaDB() throws SQLException { String addr = "jdbc:mariadb://" @@ -27,13 +28,18 @@ public class MariaDBConnect{ MariaDbDataSource dataSource = new MariaDbDataSource(addr); MariaDbStatement statement = null; - MariaDbConnection conn = (MariaDbConnection) dataSource.getConnection( + conn = (MariaDbConnection) dataSource.getConnection( ApplicationConfig.MARIADB_USER, ApplicationConfig.MARIADB_PASSWORD); statement = (MariaDbStatement) conn.createStatement(); - - return statement; } + public static void clear(){ + try{ + conn.close(); + } catch (SQLException e){ + e.printStackTrace(); + } + } } \ No newline at end of file diff --git a/src/test/java/UaAnalyserTest.java b/src/test/java/UaAnalyserTest.java index 3782070..57cb123 100644 --- a/src/test/java/UaAnalyserTest.java +++ b/src/test/java/UaAnalyserTest.java @@ -1,6 +1,6 @@ -import com.example.ua.analyser.UaAnalyser; -import com.example.ua.analyser.enums.UserInfo; -import com.example.ua.analyser.impl.UaAnalyserImpl; +import com.mesalab.ua.analyser.UaAnalyser; +import com.mesalab.ua.analyser.enums.UserInfo; +import com.mesalab.ua.analyser.impl.UaAnalyserImpl; import java.sql.SQLException;