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.commons.logging.LogUtils;
\r
13 import user.jobengine.db.IItemManager;
\r
14 import user.jobengine.db.IResultSetConsumer;
\r
15 import user.jobengine.db.IStatementDecorator;
\r
16 import user.jobengine.db.Item;
\r
17 import user.jobengine.db.ItemManager;
\r
18 import user.jobengine.db.Media;
\r
19 import user.jobengine.server.steps.MetadataTypeDetector;
\r
20 import user.jobengine.server.steps.MetadataTypeDetector.MetadataType;
\r
21 import user.jobengine.server.steps.PlanAirExtensions;
\r
23 public class SupportCheckItem {
\r
24 class PlanAirProcessor implements IStatementDecorator, IResultSetConsumer {
\r
26 private final MetadataType type;
\r
27 private String search;
\r
28 private String itemHouseId;
\r
29 private String itemTitle;
\r
31 public PlanAirProcessor(String search) {
\r
32 this.search = MetadataTypeDetector.truncateExtension(search);
\r
33 this.type = MetadataTypeDetector.GuessMetadataType(this.search);
\r
34 this.search = this.search.substring(1, this.search.length() - 1);
\r
38 public void decorate(PreparedStatement statement) throws SQLException {
\r
39 statement.setString(1, search);
\r
42 public String getItemHouseId() {
\r
46 public String getItemTitle() {
\r
50 public MetadataType getType() {
\r
54 public Connection process(Connection connection) throws Exception {
\r
55 return PlanAirExtensions.search(connection, type, manager, "jdbc:sqlserver://10.10.1.45;databaseName=PA_Echo;", "MAM", "Echotv.hu", this, this);
\r
59 public boolean process(ResultSet resultSet) throws SQLException {
\r
61 case TrafficMaterial:
\r
62 itemHouseId = resultSet.getString("v_ProgrammeID");
\r
63 itemTitle = resultSet.getString("v_ProgTitle");
\r
66 throw new SQLException("Not implemented!");
\r
73 protected static IItemManager manager = null;
\r
74 private static final String LOWRES_ROOT = "//10.10.1.27/mclowres/www/video";
\r
76 private static final long[] duplicateLength = { 0 };
\r
79 static public void setUpConnection() {
\r
80 // System.setProperty("jobengine.octopus.rundowns.name", "test_rundowns");
\r
81 // System.setProperty("jobengine.octopus.stories.name", "test_stories");
\r
82 // System.setProperty("jobengine.octopus.storyfolders.name", "test_storyfolders");
\r
83 System.setProperty("jobengine.octopus.rundowns.name", "rundowns180620");
\r
84 System.setProperty("jobengine.octopus.stories.name", "stories180620");
\r
85 System.setProperty("jobengine.octopus.storyfolders.name", "storyfolders180620");
\r
87 System.setProperty("jobengine.nosql.db.url", "jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;");
\r
88 System.setProperty("jobengine.nosql.db.user", "db2admin");
\r
89 System.setProperty("jobengine.nosql.db.password", "password");
\r
90 System.setProperty(ItemManager.DBURL, "jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;");
\r
91 System.setProperty(ItemManager.DBUSERNAME, "db2admin");
\r
92 System.setProperty(ItemManager.DBPASSWORD, "password");
\r
93 System.setProperty(LogUtils.LOGLEVEL, "INFO");
\r
94 // System.setProperty(ItemManager.DBURL,
\r
96 manager = new ItemManager();
\r
101 static public void tearDownConnection() {
\r
102 manager.disconnect();
\r
105 private void createItem(final Connection[] con, ResultSet rs, int progress) throws Exception {
\r
106 long itemId = rs.getLong("itemId");
\r
107 String itemHouseId = rs.getString("itemHouseId");
\r
108 itemHouseId = itemHouseId == null ? "" : itemHouseId;
\r
109 String itemTitle = rs.getString("itemTitle");
\r
110 itemTitle = itemTitle == null ? "" : itemTitle;
\r
111 String mediaFileHouseId = rs.getString("mediaFileHouseId");
\r
112 String mediaType = rs.getString("mediaType");
\r
113 long mediaId = rs.getLong("mediaId");
\r
114 long mediaFileId = rs.getLong("mediaFileId");
\r
116 if (mediaFileHouseId.length() > 7)
\r
117 mediaFileHouseId = mediaFileHouseId.substring(0, 8);
\r
119 PlanAirProcessor p = new PlanAirProcessor(mediaFileHouseId);
\r
120 if (p.getType() == MetadataType.TrafficMaterial) {
\r
121 con[0] = p.process(con[0]);
\r
122 String itemHouseId2 = p.getItemHouseId() == null ? "" : p.getItemHouseId();
\r
123 String itemTitle2 = p.getItemTitle() == null ? "" : p.getItemTitle();
\r
124 if (!itemHouseId2.equals(itemHouseId) || !itemTitle2.equals(itemTitle)) {
\r
125 Item item = manager.getItem(itemId);
\r
126 System.out.println(itemId + " : wrong | " + rs.getString("mediaFileHouseId") + ", " + itemHouseId + ", " + itemTitle + ", " + mediaType);
\r
127 System.out.println("\t good | " + itemHouseId2 + ", " + itemTitle2 + ", " + progress + "%");
\r
129 item.setTitle(itemTitle2);
\r
130 item.setHouseId(itemHouseId2);
\r
133 Media media = manager.getMedia(mediaId);
\r
134 media.setItemId(item.getId());
\r
135 manager.modify(media);
\r
136 //item.setMedias(null);
\r
138 updateMediaDescription(itemId, mediaId, mediaFileId);
\r
140 //delete from MEDIADESCRIPTION where MEDIAID=364228;
\r
145 } catch (Exception e) {
\r
146 e.printStackTrace();
\r
151 public void process() throws SQLException {
\r
152 final Connection[] con = { null };
\r
153 final int[] count = { 0 };
\r
154 final int[] processed = { 0 };
\r
155 String sqlb = "select %s from vw_items where (mediatype = 'ECHO műsor' or mediatype = 'Műsor')"; // and mediaFileHouseId like '%%M109138A%%'
\r
156 String sqlc = String.format(sqlb, "count(*)");
\r
157 String sql = String.format(sqlb + " order by mediacreated desc", "itemid, itemhouseid, itemtitle, mediaid, mediafilehouseid, mediafileid, mediatype");
\r
159 manager.executeQuery(sqlc, rs -> {
\r
160 count[0] = rs.getInt(1);
\r
163 manager.executeQuery(sql, rs -> {
\r
165 int progress = (processed[0] * 100) / count[0];
\r
168 createItem(con, rs, progress);
\r
169 } catch (Exception e) {
\r
177 if (con[0] != null)
\r
181 private void updateMediaDescription(long itemId, long mediaId, long mediaFileId) {
\r
182 // TODO Auto-generated method stub
\r
183 manager.executeUpdate(String.format("delete from MEDIADESCRIPTION where ITEMID=%d and MEDIAID=%d", itemId, mediaId), null, null);
\r
184 String sql = String.format("insert into mediadescription (itemid, mediaid, mediafileid, description) "
\r
185 + "select itemid, mediaid, mediafileid, fulldesc(itemid, mediaid, mediafileid) from vw_items " + "where mediafileid=%d", mediaFileId);
\r
186 manager.executeUpdate(sql, null, null);
\r