49505ca65b5f57dc28188869306dfbd42dff54a5
[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.List;\r
8 \r
9 import org.apache.commons.lang.StringUtils;\r
10 import org.apache.logging.log4j.LogManager;\r
11 import org.apache.logging.log4j.Logger;\r
12 \r
13 import user.commons.IEntityBase;\r
14 import user.commons.ListUtils;\r
15 import user.jobengine.db.IItemManager;\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 String KILLDATEDAYS = "killDateDays";\r
23         private static final Logger logger = LogManager.getLogger();\r
24         private static final String TARGET_NAME_PATTERN = "targetNamePattern";\r
25         private static final String TARGET_PATH = "targetPath";\r
26         private static final String MEDIA_CUBE_MEDIA = "mediaCubeMedia";\r
27         private static final String SQLSERVER_JDBC_SQL_SERVER_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";\r
28         private static final String SQL = "{call dbo.clIFsp_EC_MAM(1001, 32, Null,  Null, ?)}";\r
29         private static final String JOBTEMPLATE = "retrieve-material.xml";\r
30         private static final String SUCCESSRECIPIENT = "successRecipient";\r
31         private int killDateDays;\r
32 \r
33         @StepEntry\r
34         public Object[] execute(String dbUrl, String userName, String password, int lookupDays, String targetPath,\r
35                         int killDateDays, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
36 \r
37                 this.killDateDays = killDateDays;\r
38                 try (Connection con = getConnection(dbUrl, userName, password);\r
39                                 PreparedStatement stmt = con.prepareStatement(SQL)) {\r
40                         stmt.setInt(1, lookupDays);\r
41                         try (ResultSet rs = stmt.executeQuery()) {\r
42                                 while (rs.next()) {\r
43                                         String trafficId = rs.getString(5);\r
44                                         if (StringUtils.isBlank(trafficId))\r
45                                                 continue;\r
46 \r
47                                         try {\r
48                                                 processTrafficId(trafficId, targetPath, jobEngine);\r
49                                         } catch (Exception e) {\r
50                                                 logger.error(getMarker(),\r
51                                                                 "Hiba lépett fel az {} anyag visszatöltéskor. A rendszer hibaüzenete: {}", trafficId,\r
52                                                                 e.getMessage());\r
53                                         }\r
54 \r
55                                 }\r
56                         }\r
57                 } catch (Exception e) {\r
58                         logger.catching(e);\r
59                         throw e;\r
60                 } finally {\r
61                 }\r
62                 return null;\r
63         }\r
64 \r
65         private Connection getConnection(String dbUrl, String userName, String password) throws Exception {\r
66                 Connection result = null;\r
67                 try {\r
68                         Class.forName(SQLSERVER_JDBC_SQL_SERVER_DRIVER);\r
69                         result = DriverManager.getConnection(dbUrl, userName, password);\r
70                 } catch (Exception e) {\r
71                         logger.error(getMarker(), "Hiba lépett fel a folyamat indításakor. A rendszer hibaüzenete: {}",\r
72                                         e.getMessage());\r
73                         throw e;\r
74                 }\r
75                 return result;\r
76         }\r
77 \r
78         private void processTrafficId(String trafficId, String targetPath, IJobEngine jobEngine) throws Exception {\r
79                 IItemManager manager = jobEngine.getItemManager();\r
80                 MediaFileDAO dao = (MediaFileDAO) manager.getBaseDAO(MediaFile.class);\r
81                 List<IEntityBase> medias = dao.getByHouseId(trafficId);\r
82                 if (medias == null || medias.size() == 0) {\r
83                         logger.error(getMarker(), "Az {} anyag nem található az archívumban.", trafficId);\r
84                         return;\r
85                 }\r
86 \r
87                 if (medias.size() > 1) {\r
88                         logger.error(getMarker(), "Az {} anyagból egynél több található az archívumban.", trafficId);\r
89                         return;\r
90                 }\r
91 \r
92                 String title = "Traffic adásanyag visszatöltés: " + trafficId;\r
93                 jobEngine.submit(JOBTEMPLATE, title, ListUtils.asMap(MEDIA_CUBE_MEDIA, medias.get(0), TARGET_PATH, targetPath, TARGET_NAME_PATTERN, "%s",\r
94                                 SUCCESSRECIPIENT, null, KILLDATEDAYS, killDateDays));\r
95         }\r
96 \r
97 }\r