9fcab493edeaf9fe7f181316d5a0952de236243f
[mediacube.git] /
1 package hu.user.mediacube.executors.tests;\r
2 \r
3 import java.sql.Connection;\r
4 import java.sql.PreparedStatement;\r
5 import java.sql.ResultSet;\r
6 import java.sql.SQLException;\r
7 \r
8 import org.junit.AfterClass;\r
9 import org.junit.BeforeClass;\r
10 import org.junit.Test;\r
11 \r
12 import user.jobengine.db.IItemManager;\r
13 import user.jobengine.db.IResultSetConsumer;\r
14 import user.jobengine.db.IStatementDecorator;\r
15 import user.jobengine.db.Item;\r
16 import user.jobengine.db.ItemManager;\r
17 import user.jobengine.db.Media;\r
18 import user.jobengine.server.steps.shared.MetadataType;\r
19 import user.jobengine.server.steps.shared.MetadataTypeDetector;\r
20 import user.jobengine.server.steps.shared.PlanAirExtensions;\r
21 \r
22 public class SupportCheckItem {\r
23         class PlanAirProcessor implements IStatementDecorator, IResultSetConsumer {\r
24 \r
25                 private final MetadataType type;\r
26                 private String search;\r
27                 private String itemHouseId;\r
28                 private String itemTitle;\r
29 \r
30                 public PlanAirProcessor(String search) {\r
31                         this.search = MetadataTypeDetector.truncateExtension(search);\r
32                         this.type = MetadataTypeDetector.GuessMetadataType(this.search);\r
33                         this.search = this.search.substring(1, this.search.length() - 1);\r
34                 }\r
35 \r
36                 @Override\r
37                 public void decorate(PreparedStatement statement) throws SQLException {\r
38                         statement.setString(1, search);\r
39                 }\r
40 \r
41                 public String getItemHouseId() {\r
42                         return itemHouseId;\r
43                 }\r
44 \r
45                 public String getItemTitle() {\r
46                         return itemTitle;\r
47                 }\r
48 \r
49                 public MetadataType getType() {\r
50                         return type;\r
51                 }\r
52 \r
53                 public Connection process(Connection connection) throws Exception {\r
54                         return PlanAirExtensions.search(connection, type, manager, "jdbc:sqlserver://10.10.1.45;databaseName=PA_Echo;", "MAM", "Echotv.hu", this, this);\r
55                 }\r
56 \r
57                 @Override\r
58                 public boolean process(ResultSet resultSet) throws SQLException {\r
59                         switch (type) {\r
60                         case TrafficMaterial:\r
61                                 itemHouseId = resultSet.getString("v_ProgrammeID");\r
62                                 itemTitle = resultSet.getString("v_ProgTitle");\r
63                                 break;\r
64                         default:\r
65                                 throw new SQLException("Not implemented!");\r
66                         }\r
67                         return true;\r
68                 }\r
69 \r
70         }\r
71 \r
72         protected static IItemManager manager = null;\r
73         private static final String LOWRES_ROOT = "//10.10.1.27/mclowres/www/video";\r
74 \r
75         private static final long[] duplicateLength = { 0 };\r
76 \r
77         @BeforeClass\r
78         static public void setUpConnection() {\r
79                 //              System.setProperty("jobengine.octopus.rundowns.name", "test_rundowns");\r
80                 //              System.setProperty("jobengine.octopus.stories.name", "test_stories");\r
81                 //              System.setProperty("jobengine.octopus.storyfolders.name", "test_storyfolders");\r
82                 //              System.setProperty("jobengine.octopus.rundowns.name", "rundowns180620");\r
83                 //              System.setProperty("jobengine.octopus.stories.name", "stories180620");\r
84                 //              System.setProperty("jobengine.octopus.storyfolders.name", "storyfolders180620");\r
85                 //\r
86                 //              System.setProperty("jobengine.nosql.db.url", "jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;");\r
87                 //              System.setProperty("jobengine.nosql.db.user", "db2admin");\r
88                 //              System.setProperty("jobengine.nosql.db.password", "password");\r
89                 //              System.setProperty(ItemManager.DBURL, "jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;");\r
90                 //              System.setProperty(ItemManager.DBUSERNAME, "db2admin");\r
91                 //              System.setProperty(ItemManager.DBPASSWORD, "password");\r
92                 // System.setProperty(ItemManager.DBURL,\r
93 \r
94                 manager = new ItemManager();\r
95                 manager.connect();\r
96         }\r
97 \r
98         @AfterClass\r
99         static public void tearDownConnection() {\r
100                 manager.disconnect();\r
101         }\r
102 \r
103         private void createItem(final Connection[] con, ResultSet rs, int progress) throws Exception {\r
104                 long itemId = rs.getLong("itemId");\r
105                 String itemHouseId = rs.getString("itemHouseId");\r
106                 itemHouseId = itemHouseId == null ? "" : itemHouseId;\r
107                 String itemTitle = rs.getString("itemTitle");\r
108                 itemTitle = itemTitle == null ? "" : itemTitle;\r
109                 String mediaFileHouseId = rs.getString("mediaFileHouseId");\r
110                 String mediaType = rs.getString("mediaType");\r
111                 long mediaId = rs.getLong("mediaId");\r
112                 long mediaFileId = rs.getLong("mediaFileId");\r
113                 try {\r
114                         if (mediaFileHouseId.length() > 7)\r
115                                 mediaFileHouseId = mediaFileHouseId.substring(0, 8);\r
116 \r
117                         PlanAirProcessor p = new PlanAirProcessor(mediaFileHouseId);\r
118                         if (p.getType() == MetadataType.TrafficMaterial) {\r
119                                 con[0] = p.process(con[0]);\r
120                                 String itemHouseId2 = p.getItemHouseId() == null ? "" : p.getItemHouseId();\r
121                                 String itemTitle2 = p.getItemTitle() == null ? "" : p.getItemTitle();\r
122                                 if (!itemHouseId2.equals(itemHouseId) || !itemTitle2.equals(itemTitle)) {\r
123                                         Item item = manager.getItem(itemId);\r
124                                         System.out.println(itemId + " : wrong | " + rs.getString("mediaFileHouseId") + ", " + itemHouseId + ", " + itemTitle + ", " + mediaType);\r
125                                         System.out.println("\t good | " + itemHouseId2 + ", " + itemTitle2 + ", " + progress + "%");\r
126                                         item.setId(0);\r
127                                         item.setTitle(itemTitle2);\r
128                                         item.setHouseId(itemHouseId2);\r
129                                         manager.add(item);\r
130 \r
131                                         Media media = manager.getMedia(mediaId);\r
132                                         media.setItemId(item.getId());\r
133                                         manager.modify(media);\r
134                                         //item.setMedias(null);\r
135 \r
136                                         updateMediaDescription(itemId, mediaId, mediaFileId);\r
137 \r
138                                         //delete from MEDIADESCRIPTION where MEDIAID=364228;\r
139 \r
140                                 }\r
141 \r
142                         }\r
143                 } catch (Exception e) {\r
144                         e.printStackTrace();\r
145                 }\r
146         }\r
147 \r
148         @Test\r
149         public void process() throws SQLException {\r
150                 final Connection[] con = { null };\r
151                 final int[] count = { 0 };\r
152                 final int[] processed = { 0 };\r
153                 String sqlb = "select %s from vw_items where (mediatype = 'ECHO műsor' or mediatype = 'Műsor')"; // and mediaFileHouseId like '%%M109138A%%'\r
154                 String sqlc = String.format(sqlb, "count(*)");\r
155                 String sql = String.format(sqlb + "  order by mediacreated desc", "itemid, itemhouseid, itemtitle, mediaid, mediafilehouseid, mediafileid, mediatype");\r
156 \r
157                 manager.executeQuery(sqlc, rs -> {\r
158                         count[0] = rs.getInt(1);\r
159                         return true;\r
160                 }, null);\r
161                 manager.executeQuery(sql, rs -> {\r
162                         processed[0]++;\r
163                         int progress = (processed[0] * 100) / count[0];\r
164 \r
165                         try {\r
166                                 createItem(con, rs, progress);\r
167                         } catch (Exception e) {\r
168                                 return false;\r
169                         }\r
170 \r
171                         processed[0]++;\r
172                         return true;\r
173                 }, null);\r
174 \r
175                 if (con[0] != null)\r
176                         con[0].close();\r
177         }\r
178 \r
179         private void updateMediaDescription(long itemId, long mediaId, long mediaFileId) {\r
180                 // TODO Auto-generated method stub\r
181                 manager.executeUpdate(String.format("delete from MEDIADESCRIPTION where ITEMID=%d and MEDIAID=%d", itemId, mediaId), null, null);\r
182                 String sql = String.format("insert into mediadescription (itemid, mediaid, mediafileid, description) "\r
183                                 + "select itemid, mediaid, mediafileid, fulldesc(itemid, mediaid, mediafileid) from vw_items " + "where mediafileid=%d", mediaFileId);\r
184                 manager.executeUpdate(sql, null, null);\r
185 \r
186         }\r
187 \r
188 }\r