1 package hu.user.mediacube.executors.tests;
\r
3 import java.nio.file.Files;
\r
4 import java.nio.file.Paths;
\r
5 import java.sql.Connection;
\r
6 import java.sql.PreparedStatement;
\r
7 import java.sql.ResultSet;
\r
8 import java.sql.SQLException;
\r
9 import java.util.List;
\r
11 import org.junit.AfterClass;
\r
12 import org.junit.BeforeClass;
\r
13 import org.junit.Test;
\r
15 import sqlj.runtime.ref.DefaultContext;
\r
16 import user.commons.StoreUri;
\r
17 import user.commons.remotestore.RemoteStoreProtocol;
\r
18 import user.jobengine.db.IItemManager;
\r
19 import user.jobengine.db.IResultSetConsumer;
\r
20 import user.jobengine.db.IStatementDecorator;
\r
21 import user.jobengine.db.Item;
\r
22 import user.jobengine.db.ItemManager;
\r
23 import user.jobengine.db.MediaFile;
\r
24 import user.jobengine.db.Store;
\r
25 import user.jobengine.server.steps.MetadataTypeDetector;
\r
26 import user.jobengine.server.steps.MetadataTypeDetector.MetadataType;
\r
27 import user.jobengine.server.steps.PlanAirExtensions;
\r
29 public class SupportCleanMissingTSM {
\r
30 class PlanAirProcessor implements IStatementDecorator, IResultSetConsumer {
\r
32 private final MetadataType type;
\r
33 private String search;
\r
34 private String itemHouseId;
\r
35 private String itemTitle;
\r
37 public PlanAirProcessor(String search) {
\r
38 this.search = MetadataTypeDetector.truncateExtension(search);
\r
39 this.type = MetadataTypeDetector.GuessMetadataType(this.search);
\r
40 this.search = this.search.substring(1, this.search.length() - 1);
\r
44 public void decorate(PreparedStatement statement) throws SQLException {
\r
45 statement.setString(1, search);
\r
48 public String getItemHouseId() {
\r
52 public String getItemTitle() {
\r
56 public MetadataType getType() {
\r
60 public Connection process(Connection connection) throws Exception {
\r
61 return PlanAirExtensions.search(connection, type, manager, "jdbc:sqlserver://10.10.1.45;databaseName=PA_Echo;", "MAM", "Echotv.hu", this, this);
\r
65 public boolean process(ResultSet resultSet) throws SQLException {
\r
67 case TrafficMaterial:
\r
68 itemHouseId = resultSet.getString("v_ProgrammeID");
\r
69 itemTitle = resultSet.getString("v_ProgTitle");
\r
72 throw new SQLException("Not implemented!");
\r
79 protected static IItemManager manager = null;
\r
80 private static final String LOWRES_ROOT = "//10.10.1.27/mclowres/www/video";
\r
82 private static final long[] duplicateLength = { 0 };
\r
85 static public void setUpConnection() {
\r
86 System.setProperty("jobengine.db.url", "jdbc:db2://10.11.1.90:50000/mc:retrieveMessagesFromServerOnGetMessage=true;");
\r
87 System.setProperty("jobengine.db.user", "db2admin");
\r
88 System.setProperty("jobengine.db.password", "password");
\r
89 manager = new ItemManager();
\r
94 static public void tearDownConnection() {
\r
95 manager.disconnect();
\r
98 public void executeUpdate(Connection connection, String query, IResultSetConsumer consumer, IStatementDecorator decorator) {
\r
99 PreparedStatement st = null;
\r
101 st = connection.prepareStatement(query);
\r
102 if (decorator != null)
\r
103 decorator.decorate(st);
\r
104 int i = st.executeUpdate();
\r
105 connection.commit();
\r
106 } catch (Exception e) {
\r
108 connection.rollback();
\r
109 } catch (Exception e1) {
\r
115 } catch (Exception e1) {
\r
120 public void importTSM() throws SQLException {
\r
121 final Connection[] con = { null };
\r
122 String sql = "INSERt INTO TSM (NAME) VALUES (?)";
\r
124 DefaultContext context = manager.getDbContext();
\r
125 Connection connection = context.getConnection();
\r
127 List<String> lines = Files.readAllLines(Paths.get("/Temp/save.out"));
\r
128 for (String line : lines) {
\r
129 final String name = line.trim();
\r
130 executeUpdate(connection, sql, null, st -> {
\r
131 st.setString(1, name);
\r
134 } catch (Exception e) {
\r
136 manager.putDbContext(context);
\r
142 public void process() throws SQLException {
\r
143 Store store = manager.getSystemStore(false);
\r
144 final StoreUri storeUri = store.getSourceStoreUri(RemoteStoreProtocol.TSM);
\r
145 final Connection[] con = { null };
\r
146 String sql = "select distinct(i.id) from mediafile mf left outer join tsm t on(mf.RELATIVEPATH=t.name) "
\r
147 + "left outer join media m on(mf.mediaid=m.id) " + "left outer join item i on(m.itemid=i.id) " + "where mf.FILETYPEID=1 and t.name is null";
\r
149 DefaultContext context = manager.getDbContext();
\r
150 Connection connection = context.getConnection();
\r
152 manager.executeQuery(connection, sql, rs -> {
\r
153 long itemid = rs.getLong("id");
\r
154 Item item = manager.getItem(itemid);
\r
157 MediaFile mf = item.getMedias().get(0).getMediaFiles().get(0);
\r
158 System.out.println("Delete " + mf.getRelativePath());
\r
159 manager.remove(item);
\r
160 } catch (Exception e) {
\r
161 System.out.println(e.getMessage());
\r
165 } catch (Exception e) {
\r
167 manager.putDbContext(context);
\r
168 storeUri.cleanUp();
\r