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