487de5edcd23c409321a26df9247e6ba672a1177
[mediacube.git] /
1 package user.jobengine.server.steps;\r
2 \r
3 import java.sql.Connection;\r
4 import java.sql.DriverManager;\r
5 import java.sql.PreparedStatement;\r
6 import java.sql.ResultSet;\r
7 import java.util.ArrayList;\r
8 import java.util.List;\r
9 \r
10 import org.apache.commons.lang.StringUtils;\r
11 import org.apache.logging.log4j.LogManager;\r
12 import org.apache.logging.log4j.Logger;\r
13 \r
14 import user.jobengine.db.IItemManager;\r
15 import user.jobengine.db.Media;\r
16 import user.jobengine.db.MediaFile;\r
17 import user.jobengine.db.MediaFileDAO;\r
18 import user.jobengine.server.IJobEngine;\r
19 import user.jobengine.server.IJobRuntime;\r
20 \r
21 public class CheckTrafficMissingMaterialsStep extends JobStep {\r
22         private static final Logger logger = LogManager.getLogger();\r
23         private static final String SQLSERVER_JDBC_SQL_SERVER_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";\r
24         private static final String TRAFFIC_DB_PASSWORD = "traffic.db.password";\r
25         private static final String TRAFFIC_DB_USER = "traffic.db.user";\r
26         private static final String TRAFFIC_DB_URL = "traffic.db.url";\r
27         private static final String SQL = "{call clIFsp_EC_MAM(1001, 40, Null,  Null, ?)}";\r
28         private IItemManager manager;\r
29 \r
30         @StepEntry\r
31         public Object[] execute(IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
32                 List<Media> result = new ArrayList<>();\r
33                 manager = jobEngine.getItemManager();\r
34                 try (Connection con = getSQLConnection(); PreparedStatement stmt = con.prepareStatement(SQL)) {\r
35                         stmt.setInt(1, 7);\r
36                         try (ResultSet rs = stmt.executeQuery()) {\r
37                                 if (rs.next()) {\r
38                                         String trafficId = rs.getString(5);\r
39                                         if (StringUtils.isNotBlank(trafficId)) {\r
40                                                 try {\r
41                                                         processTrafficId(result, trafficId);\r
42                                                 } catch (Exception e) {\r
43                                                         logger.error(getMarker(), "Hiba lépett fel az {} anyag visszatöltéskor. A rendszer hibaüzenete: {}", trafficId, e.getMessage());\r
44                                                 }\r
45                                         }\r
46 \r
47                                 }\r
48                         }\r
49                 } catch (Exception e) {\r
50                         logger.catching(e);\r
51                         throw e;\r
52                 } finally {\r
53                 }\r
54                 return new Object[] {};\r
55         }\r
56 \r
57         private Connection getSQLConnection() throws Exception {\r
58                 Connection result = null;\r
59                 Class.forName(SQLSERVER_JDBC_SQL_SERVER_DRIVER);\r
60                 String url = System.getProperty(TRAFFIC_DB_URL);\r
61                 String user = System.getProperty(TRAFFIC_DB_USER);\r
62                 String pass = System.getProperty(TRAFFIC_DB_PASSWORD);\r
63                 result = DriverManager.getConnection(url, user, pass);\r
64                 return result;\r
65         }\r
66 \r
67         private void processTrafficId(List<Media> result, String trafficId) throws Exception {\r
68                 MediaFileDAO dao = (MediaFileDAO) manager.getBaseDAO(MediaFile.class);\r
69                 List<Media> medias = dao.getByHouseId(trafficId);\r
70                 if (medias.size() == 0) {\r
71                         logger.error(getMarker(), "Az {} anyag nem található az archívumban.", trafficId);\r
72                         return;\r
73                 }\r
74 \r
75                 if (medias.size() > 0) {\r
76                         logger.error(getMarker(), "Az {} anyagból egynél több található az archívumban.", trafficId);\r
77                         return;\r
78                 }\r
79 \r
80                 result.add(medias.get(0));\r
81 \r
82         }\r
83 \r
84 }\r