1 package hu.user.mediacube.executors.tests;
\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
8 import org.junit.AfterClass;
\r
9 import org.junit.BeforeClass;
\r
10 import org.junit.Test;
\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
22 public class SupportCheckItem {
\r
23 class PlanAirProcessor implements IStatementDecorator, IResultSetConsumer {
\r
25 private final MetadataType type;
\r
26 private String search;
\r
27 private String itemHouseId;
\r
28 private String itemTitle;
\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
37 public void decorate(PreparedStatement statement) throws SQLException {
\r
38 statement.setString(1, search);
\r
41 public String getItemHouseId() {
\r
45 public String getItemTitle() {
\r
49 public MetadataType getType() {
\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
58 public boolean process(ResultSet resultSet) throws SQLException {
\r
60 case TrafficMaterial:
\r
61 itemHouseId = resultSet.getString("v_ProgrammeID");
\r
62 itemTitle = resultSet.getString("v_ProgTitle");
\r
65 throw new SQLException("Not implemented!");
\r
72 protected static IItemManager manager = null;
\r
73 private static final String LOWRES_ROOT = "//10.10.1.27/mclowres/www/video";
\r
75 private static final long[] duplicateLength = { 0 };
\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
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
94 manager = new ItemManager();
\r
99 static public void tearDownConnection() {
\r
100 manager.disconnect();
\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
114 if (mediaFileHouseId.length() > 7)
\r
115 mediaFileHouseId = mediaFileHouseId.substring(0, 8);
\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
127 item.setTitle(itemTitle2);
\r
128 item.setHouseId(itemHouseId2);
\r
131 Media media = manager.getMedia(mediaId);
\r
132 media.setItemId(item.getId());
\r
133 manager.modify(media);
\r
134 //item.setMedias(null);
\r
136 updateMediaDescription(itemId, mediaId, mediaFileId);
\r
138 //delete from MEDIADESCRIPTION where MEDIAID=364228;
\r
143 } catch (Exception e) {
\r
144 e.printStackTrace();
\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
157 manager.executeQuery(sqlc, rs -> {
\r
158 count[0] = rs.getInt(1);
\r
161 manager.executeQuery(sql, rs -> {
\r
163 int progress = (processed[0] * 100) / count[0];
\r
166 createItem(con, rs, progress);
\r
167 } catch (Exception e) {
\r
175 if (con[0] != null)
\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