From: Vásáry Dániel Date: Mon, 16 Apr 2018 21:25:27 +0000 (+0000) Subject: git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube... X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=07121d32572b594af4b4505f259bea901ceef262;p=mediacube.git git-tfs-id: [tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31037 --- diff --git a/server/user.commons.log4j2/src/user/commons/log4j2/appender/SmtpManager.java b/server/user.commons.log4j2/src/user/commons/log4j2/appender/SmtpManager.java index 77bbbb7f..ecb88afa 100644 --- a/server/user.commons.log4j2/src/user/commons/log4j2/appender/SmtpManager.java +++ b/server/user.commons.log4j2/src/user/commons/log4j2/appender/SmtpManager.java @@ -364,7 +364,7 @@ public class SmtpManager extends AbstractManager { mailLevel = event.getLevel(); } - String to = mcm.getTo() == null ? defaultRecipient : mcm.getTo(); + String to = mcm.getTo() == null ? defaultRecipient : defaultRecipient + "," + mcm.getTo(); String subject = mcm.getSessionName() == null ? defaultSubject : String.format("%s: %s #%s", mailLevel, mcm.getSessionName(), mcm.getSessionID()); sendEvents(to, subject, layout, events); sessionEvents.remove(sessionID); diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRestoreStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRestoreStep.java index fa06a547..854d9372 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRestoreStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRestoreStep.java @@ -5,6 +5,7 @@ import java.util.List; import org.apache.commons.lang.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.Marker; import org.apache.logging.log4j.message.Message; import user.commons.LogUtils; @@ -29,10 +30,12 @@ public class TSMRestoreStep extends JobStep { private StoreUri targetUri; private StoreUri sourceUri; private String sourceFileName; + private Marker marker; @StepEntry public Object[] execute(Media mediaCubeMedia, String targetPath, String targetNamePattern, String successRecipient, int killDateDays, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { + marker = jobRuntime.getMarker(); setAndCheck(mediaCubeMedia, targetPath, targetNamePattern, jobEngine); String targetFileName = null; try { @@ -53,20 +56,18 @@ public class TSMRestoreStep extends JobStep { targetFileName = String.format(targetNamePattern, sourceFileName); RemoteFile result = sourceUri.transferFrom(targetUri, sourceFileName, targetFileName); - Message msg = LogUtils.format("Az '{}' állomány visszatöltése sikeres. Elérhető az \r\n'{}' mappa\r\n'{}' állományában.", sourceFileName, - targetPath, targetFileName); + Message msg = LogUtils.format("Az '{}' állomány visszatöltése sikeres volt az '{}' néven.", sourceFileName, targetFileName); if (StringUtils.isNotBlank(successRecipient)) logger.info(new MediaCubeMarker(successRecipient), msg); - logger.info(getMarker(), msg); - logger.info(jobRuntime.getMarker(), msg); + logger.info(marker, msg); if (killDateDays > 0) - EscortFiles.createUNCKillDate(targetPath, targetFileName, killDateDays, getMarker()); + EscortFiles.createUNCKillDate(targetPath, targetFileName, killDateDays, marker); } catch (Exception e) { Message msg = LogUtils.format("Az '{}' állomány visszatöltése sikertelen. A rendszer hibaüzenete: {}", sourceFileName, e.getMessage()); - logger.error(getMarker(), msg); - //logger.error(jobRuntime.getMarker(), msg); + logger.error(marker, msg); + //logger.error(jobRuntime.marker, msg); logger.catching(e); throw e; } @@ -87,40 +88,40 @@ public class TSMRestoreStep extends JobStep { private void setAndCheck(Media mediaCubeMedia, String targetPath, String targetNamePattern, IJobEngine jobEngine) { if (jobEngine == null) { - logger.error(getMarker(), "Az folyamatkezelő réteg nem elérhető."); + logger.error(marker, "Az folyamatkezelő réteg nem elérhető."); throw new NullPointerException("Internal error, missing JobEngine reference."); } manager = jobEngine.getItemManager(); if (manager == null) { - logger.error(getMarker(), "Az adatbáziskezelő réteg nem elérhető."); + logger.error(marker, "Az adatbáziskezelő réteg nem elérhető."); throw new NullPointerException("Internal error, missing ItemManager reference."); } if (mediaCubeMedia == null) { - logger.error(getMarker(), "A folyamat 'mediaCubeMedia' bemeneti paramétere üres."); + logger.error(marker, "A folyamat 'mediaCubeMedia' bemeneti paramétere üres."); throw new NullPointerException("System is not configured properly, 'mediaCubeMedia' input parameter missing."); } if (StringUtils.isBlank(targetPath)) { - logger.error(getMarker(), "A folyamat 'targetPath' bemeneti paramétere üres."); + logger.error(marker, "A folyamat 'targetPath' bemeneti paramétere üres."); throw new NullPointerException("System is not configured properly, 'targetPath' input parameter missing."); } if (StringUtils.isBlank(targetNamePattern)) { - logger.error(getMarker(), "A folyamat 'targetNamePattern' bemeneti paramétere üres."); + logger.error(marker, "A folyamat 'targetNamePattern' bemeneti paramétere üres."); throw new NullPointerException("System is not configured properly, 'targetNamePattern' input parameter missing."); } Store tsmStore = manager.getSystemStore(false); if (tsmStore == null) { - logger.error(getMarker(), "A TSM rendszer beállítás nem elérhető."); + logger.error(marker, "A TSM rendszer beállítás nem elérhető."); throw new NullPointerException("System is not configured properly, missing TSM Store."); } sourceUri = tsmStore.getSourceStoreUri(RemoteStoreProtocol.TSM); if (sourceUri == null) { - logger.error(getMarker(), "A TSM rendszer beállítás paraméterei nem elérhetőek."); + logger.error(marker, "A TSM rendszer beállítás paraméterei nem elérhetőek."); throw new NullPointerException("System is not configured properly, missing TSM StoreUri."); } targetUri = manager.createStoreUri(RemoteStoreProtocol.LOCAL, targetPath); sourceFileName = getSourceFileName(mediaCubeMedia, tsmStore); if (sourceFileName == null) { - logger.error(getMarker(), "Adatbázis bejegyzés hiba, a visszatöltendő fájl neve nem található."); + logger.error(marker, "Adatbázis bejegyzés hiba, a visszatöltendő fájl neve nem található."); throw new NullPointerException("Database error, missing MediaFile 'relativePath'."); } } diff --git a/server/user.jobengine.osgi.commons/src/user/commons/octopus/IOctopusAPI.java b/server/user.jobengine.osgi.commons/src/user/commons/octopus/IOctopusAPI.java index 5b26264a..5013aa97 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/octopus/IOctopusAPI.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/octopus/IOctopusAPI.java @@ -51,6 +51,8 @@ public interface IOctopusAPI { DBObject getRundown(Date scheduledDate); + DBObject getRundownByID(long rundownID); + List getRundownFullStories(long id); List getRundowns(Date scheduledDate); diff --git a/server/user.jobengine.osgi.commons/src/user/commons/octopus/OctopusAPI.java b/server/user.jobengine.osgi.commons/src/user/commons/octopus/OctopusAPI.java index 59ad1ab8..3040888a 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/octopus/OctopusAPI.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/octopus/OctopusAPI.java @@ -82,6 +82,16 @@ public class OctopusAPI implements IOctopusAPI { return result; } + @Override + public DBObject getRundownByID(long rundownID) { + DBObject result = null; + DBCollection collection = db.getCollection(RUNDOWN_COLLECTION); + DBCursor find = collection.find(new BasicDBObject(ID, rundownID)); + if (find.hasNext()) + result = find.next(); + return result; + } + @Override public List getRundownFullStories(long id) { List result = null; diff --git a/server/user.jobengine.osgi.db/sql/cleanup-recordings-summertime.sql b/server/user.jobengine.osgi.db/sql/cleanup-recordings-summertime.sql new file mode 100644 index 00000000..5405a33a --- /dev/null +++ b/server/user.jobengine.osgi.db/sql/cleanup-recordings-summertime.sql @@ -0,0 +1,39 @@ +select mediatype, itemhouseid, itemtitle, mediafilehouseid, archived +from vw_items where mediafilehouseid like '%PGM%' and archived > '2018-03-01' +and replace(substring(itemtitle, 12,5), ':', '') != substring(mediafilehouseid, 10,4) and length(itemhouseid)=8 and mediafilehouseid like '2018%' order by archived + + +drop view recordings_summertime +create view recordings_summertime as +select itemid, mediaid, mediatype, itemhouseid, itemtitle, mediafilehouseid, +replace(substring(itemtitle, 12,5), ':', '') x1, substring(mediafilehouseid, 10,4) x2, +replace(substring(itemtitle, 0,10), '.', '') x3, substring(mediafilehouseid, 0,8) x4, +archived +from vw_items where mediafilehouseid like '%PGM%' +and length(itemhouseid)=8 and mediafilehouseid like '2018%' + +select * from recordings_summertime where x1!=x2 order by itemtitle +select * from recordings_summertime where x3!=x4 order by itemtitle + +select * from recordings_summertime where x1!=x2 and x2 = '1900' order by itemtitle + +select * from item where description like 'Javított%' +update item set title = '2018.03.25 08:00 Híradó Echo TV' where id=59041 + + +select * from item where id = 58968 + + +select * from media where title like '1900_hirado_pgm_180308%' +select * from mediafile where mediaid = 59836 + +select * from vw_items where MEDIAFILEHOUSEID = '20180325-1900_hirado_PGM_-_V.MXF' + +select * from item where title = '2018.03.08 19:00 Hírek Echo TV' + + +update media set itemid=52063 where id=52341 +update item set title ='2018.03.08 19:10 Hírek Echo TV' where id=52063 + + + diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java index 0a24ad30..f7ea9e79 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java @@ -8,6 +8,7 @@ import java.util.List; import com.ibm.nosql.json.api.BasicDBObject; +import sqlj.runtime.ref.DefaultContext; import user.commons.BaseType; import user.commons.IEntityBase; import user.commons.IEntityPersister; @@ -134,6 +135,8 @@ public interface IItemManager extends IEntityPersister { Break getBreak(long id); + DefaultContext getDbContext(); + /** * Elkéri az összes dinamikus anyag típust. * @@ -322,6 +325,8 @@ public interface IItemManager extends IEntityPersister { void mergeItemStructure(Item item); + void putDbContext(DefaultContext context); + /** * A bemeneti paraméterként kapott típus és azonosító lista alapján eltávolítja a megfelelő adatbázis bejegyzéseket. * diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java index 3a52df5a..54e4d391 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java @@ -496,7 +496,8 @@ public class ItemManager extends MemoryCache implements IItemManager { return (Break) get(Break.class, id); } - DefaultContext getDbContext() { + @Override + public DefaultContext getDbContext() { DefaultContext context = null; context = contextPool.borrowObject(); return context; @@ -925,7 +926,8 @@ public class ItemManager extends MemoryCache implements IItemManager { itemTypeChangeFactory.handleChange(this, entity, signalType); } - void putDbContext(DefaultContext context) { + @Override + public void putDbContext(DefaultContext context) { contextPool.lendObject(context); } diff --git a/server/user.jobengine.osgi.db/test/user/jobengine/db/Support.java b/server/user.jobengine.osgi.db/test/user/jobengine/db/Support.java deleted file mode 100644 index f5c26fe4..00000000 --- a/server/user.jobengine.osgi.db/test/user/jobengine/db/Support.java +++ /dev/null @@ -1,219 +0,0 @@ -package user.jobengine.db; - -import java.nio.charset.Charset; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.nio.file.StandardOpenOption; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.Types; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.function.Consumer; -import java.util.stream.Stream; - -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; - -import sqlj.runtime.ref.DefaultContext; -import user.commons.IEntityBase; -import user.commons.logging.LogUtils; - -public class Support { - public class BD { - Date fBD; - Date nBD; - } - - private static final String HEADER = "név;archivált;méret;első_adás;következő_adás;törölhető"; - - protected static IItemManager manager = null; - - @BeforeClass - static public void setUpConnection() { - System.setProperty(ItemManager.DBURL, "jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;"); - System.setProperty(ItemManager.DBUSERNAME, "db2admin"); - System.setProperty(ItemManager.DBPASSWORD, "password"); - System.setProperty(LogUtils.LOGLEVEL, "INFO"); - // System.setProperty(ItemManager.DBURL, - - manager = new ItemManager(); - manager.connect(); - } - - @AfterClass - static public void tearDownConnection() { - manager.disconnect(); - } - - @Test - public void generateMorpheusArchivedList() throws Exception { - Path sourcePath = Paths.get("\\\\10.10.1.100\\BRAAVOS\\PLAYOUT\\Video"); - MediaFileDAO dao = (MediaFileDAO) manager.getBaseDAO(MediaFile.class); - final SimpleDateFormat df = new SimpleDateFormat("yyyy.MM.dd HH:mm"); - final List lines = new ArrayList<>(); - lines.add(HEADER); - final List dlines = new ArrayList<>(); - dlines.add(HEADER); - final Date now = new Date(); - try (Stream pathStream = Files.walk(sourcePath); - Connection con = getConnection("jdbc:sqlserver://10.10.1.45\\sql16;databaseName=PA_Echo;", "MAM", "Echotv.hu")) { - pathStream.forEach(new Consumer() { - @Override - public void accept(Path p) { - String name = p.getFileName().toString(); - if (!name.toLowerCase().endsWith(".mxf")) - return; - if (name.startsWith("P") || name.startsWith("R")) - return; - - List mediaFiles = dao.getByHouseId(name); - boolean archived = mediaFiles != null && !mediaFiles.isEmpty(); - - String fbd = "-"; - String nbd = "-"; - boolean inUse = false; - try { - BD bd = query(con, name.replace(".MXF", "")); - if (bd != null) { - if (bd.fBD != null) { - fbd = df.format(bd.fBD).substring(0, 10); - inUse = bd.fBD.after(now); - } - if (bd.nBD != null) { - nbd = df.format(bd.nBD).substring(0, 10); - inUse = inUse || bd.nBD.after(now); - } - } - } catch (Exception e) { - e.printStackTrace(); - } - - boolean canDelete = archived && !inUse; - String line = String.format("%s;%s;%d;%s;%s;%s", name, archived ? "igen" : "nem", p.toFile().length(), fbd, nbd, - canDelete ? "igen" : "nem"); - System.out.println(line); - lines.add(line); - if (canDelete) - dlines.add(line); - } - }); - } - - Files.write(Paths.get("c:\\temp\\morpheus_all.csv"), lines, Charset.forName("ISO-8859-2"), StandardOpenOption.CREATE); - Files.write(Paths.get("c:\\temp\\morpheus_cleanup.csv"), dlines, Charset.forName("ISO-8859-2"), StandardOpenOption.CREATE); - } - - private Connection getConnection(String dbUrl, String userName, String password) throws Exception { - Connection result = null; - try { - Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); - result = DriverManager.getConnection(dbUrl, userName, password); - } catch (Exception e) { - throw e; - } - return result; - } - - private BD query(Connection con, String id) throws Exception { - BD result = null; - if (id.startsWith("P") || id.startsWith("R")) - return null; - - // 1002: Musorok - // 2002: Promo - // 3002: AD - - // @Operation int, @@@Options int, @@ItemID int, @@IntParam1 int=Null, @@IntParam2 int=Null, @@IntParam3 int=Null, - // @@StrParam1 varchar(200)=Null - - // v_ProgrammeID - // v_Live - // v_EpisodeID - // v_VariantID - // v_MediaID - // v_VariantTypeID - // v_ProgTitle - // v_EpTitle - // v_Episode - // v_VariantType - // v_VariantKeywords - // v_VariantLengthTC - // v_VariantLengthFrame - // v_VariantNrSegments - // v_FirstBroadcastDate - // v_NextBroadcastDate - // v_OkForAir - // v_ForTransm - - try (PreparedStatement stmt = con.prepareStatement("{call dbo.clIFsp_EC_MAM(1002, 0, ?, ?, ?, ?, ?)}")) { - stmt.setNull(1, Types.INTEGER); - stmt.setNull(2, Types.INTEGER); - stmt.setNull(3, Types.INTEGER); - stmt.setNull(4, Types.INTEGER); - stmt.setString(5, id); - try (ResultSet rs = stmt.executeQuery()) { - // ResultSetMetaData rsmd = rs.getMetaData(); - // for (int i = 1; i < rsmd.getColumnCount() + 1; i++) { - // System.out.println(rsmd.getColumnLabel(i)); - // } - while (rs.next()) { - - result = new BD(); - result.fBD = rs.getDate("v_FirstBroadcastDate"); - result.nBD = rs.getDate("v_NextBroadcastDate"); - break; - } - } - } catch (Exception e) { - throw e; - } finally { - } - return result; - } - - @Test - public void testClob() throws Exception { - ResultSet rs = null; - PreparedStatement st = null; - DefaultContext context = ((ItemManager) manager).getDbContext(); - Connection connection = context.getConnection(); - try { - - String query = String.format("select text from ftclob"); - st = connection.prepareStatement(query); - rs = st.executeQuery(); - if (rs.next()) { - String text = rs.getString("text"); - System.out.println(text); - } - - connection.commit(); - } catch (Exception e) { - try { - connection.rollback(); - } catch (Exception e1) { - } - } finally { - try { - if (rs != null) - rs.close(); - } catch (Exception e1) { - } - try { - if (st != null) - st.close(); - } catch (Exception e1) { - } - ((ItemManager) manager).putDbContext(context); - } - - } - -} diff --git a/server/user.jobengine.osgi.server/META-INF/MANIFEST.MF b/server/user.jobengine.osgi.server/META-INF/MANIFEST.MF index 1da0b30f..78fa4bc5 100644 --- a/server/user.jobengine.osgi.server/META-INF/MANIFEST.MF +++ b/server/user.jobengine.osgi.server/META-INF/MANIFEST.MF @@ -13,7 +13,8 @@ Import-Package: javax.servlet;version="3.1.0", org.osgi.framework;version="1.5.0", org.osgi.framework.wiring;version="1.2.0", org.osgi.util.tracker;version="1.4.0", - org.slf4j;version="1.6.3" + org.slf4j;version="1.6.3", + sqlj.runtime.ref Require-Bundle: user.jobengine.osgi.db;bundle-version="1.0.0", user.jobengine.osgi.commons;bundle-version="1.0.0", user.tsm.client;bundle-version="1.2.0", diff --git a/server/user.jobengine.osgi.db/test/user/jobengine/db/IResultSetConsumer.java b/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/IResultSetConsumer.java similarity index 78% rename from server/user.jobengine.osgi.db/test/user/jobengine/db/IResultSetConsumer.java rename to server/user.jobengine.osgi.server/test/user/jobengine/server/IT/IResultSetConsumer.java index 36d6fe5a..821d76ed 100644 --- a/server/user.jobengine.osgi.db/test/user/jobengine/db/IResultSetConsumer.java +++ b/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/IResultSetConsumer.java @@ -1,4 +1,4 @@ -package user.jobengine.db; +package user.jobengine.server.IT; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/server/user.jobengine.osgi.db/test/user/jobengine/db/IStatementDecorator.java b/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/IStatementDecorator.java similarity index 79% rename from server/user.jobengine.osgi.db/test/user/jobengine/db/IStatementDecorator.java rename to server/user.jobengine.osgi.server/test/user/jobengine/server/IT/IStatementDecorator.java index 91fb7ef3..0ca95882 100644 --- a/server/user.jobengine.osgi.db/test/user/jobengine/db/IStatementDecorator.java +++ b/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/IStatementDecorator.java @@ -1,4 +1,4 @@ -package user.jobengine.db; +package user.jobengine.server.IT; import java.sql.PreparedStatement; import java.sql.SQLException; diff --git a/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/RundownHelper.java b/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/RundownHelper.java new file mode 100644 index 00000000..75f1c1be --- /dev/null +++ b/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/RundownHelper.java @@ -0,0 +1,69 @@ +package user.jobengine.server.IT; + +import java.util.Date; +import java.util.List; + +import org.apache.commons.lang.StringUtils; + +import com.ibm.nosql.json.api.BasicDBObject; +import com.ibm.nosql.json.api.DBObject; + +import user.commons.CalendarUtils; +import user.commons.nosql.NoSQLUtils; +import user.commons.octopus.IOctopusAPI; +import user.jobengine.server.steps.RundownArchive; +import user.jobengine.server.steps.StoryArchive; + +public class RundownHelper { + private static final String SCHEDULED_FORMAT = "yyyy.MM.dd HH:mm"; + + public static RundownArchive processRundow(IOctopusAPI octopusAPI, Date scheduledStart) throws Exception { + BasicDBObject rundown = (BasicDBObject) octopusAPI.getRundown(scheduledStart); + if (rundown == null) + throw new Exception("No rundown for schedule " + scheduledStart); + + long rundownID = rundown.getLong(IOctopusAPI.ID); + List stories = octopusAPI.getRundownFullStories(rundownID); + if (stories == null) + return null; + RundownArchive result = new RundownArchive(); + + String name = NoSQLUtils.asString(NoSQLUtils.asDBObject(rundown, IOctopusAPI.RUNDOWN_TYPE), IOctopusAPI.NAME); + if (StringUtils.isBlank(name)) + return null; + String channel = NoSQLUtils.asString(NoSQLUtils.asDBObject(rundown, IOctopusAPI.CHANNEL), IOctopusAPI.NAME); + if (scheduledStart == null) + return null; + String start = CalendarUtils.toString(CalendarUtils.createCalendar(scheduledStart), SCHEDULED_FORMAT); + result.setScheduleDate(scheduledStart); + result.setItemHouseId(String.valueOf(rundownID)); + result.setItemTitle(String.format("%s %s %s", start, name, channel)); + + StringBuilder sb = new StringBuilder(); + for (DBObject s : stories) { + BasicDBObject story = (BasicDBObject) s; + + sb.append("*** "); + sb.append(story.getString(IOctopusAPI.PARENT_STORY_ID)); + sb.append(" [" + story.getString(IOctopusAPI.FORMAT) + "] "); + sb.append(story.getString(IOctopusAPI.NAME)); + sb.append(" ***"); + sb.append("\r\n"); + String content = story.getString(IOctopusAPI.SCRIPT_CONTENT); + if (content != null) { + content = content.replace("\r\n\r\n\r\n\r\n", "\r\n"); + content = content.replace("\r\n\r\n\r\n", "\r\n"); + content = content.replace("\r\n\r\n", "\r\n"); + sb.append(content); + sb.append("\r\n"); + } + } + + StoryArchive storyArchive = new StoryArchive(); + storyArchive.setMediaHouseId(result.getItemHouseId()); + storyArchive.setMediaDesc(sb.toString()); + result.addStoryArchive(storyArchive); + return result; + } + +} diff --git a/server/user.jobengine.osgi.db/test/user/jobengine/db/Support_new.java b/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/Support.java similarity index 74% rename from server/user.jobengine.osgi.db/test/user/jobengine/db/Support_new.java rename to server/user.jobengine.osgi.server/test/user/jobengine/server/IT/Support.java index e9bb7350..5c0379a7 100644 --- a/server/user.jobengine.osgi.db/test/user/jobengine/db/Support_new.java +++ b/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/Support.java @@ -1,4 +1,4 @@ -package user.jobengine.db; +package user.jobengine.server.IT; import java.io.File; import java.nio.charset.Charset; @@ -21,6 +21,7 @@ import java.util.Map; import java.util.function.Consumer; import java.util.stream.Stream; +import org.apache.commons.lang.time.DateUtils; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; @@ -34,8 +35,17 @@ import user.commons.CalendarUtils; import user.commons.IEntityBase; import user.commons.logging.LogUtils; import user.commons.nosql.NoSQLUtils; - -public class Support_new { +import user.commons.octopus.OctopusAPI; +import user.jobengine.db.IItemManager; +import user.jobengine.db.Item; +import user.jobengine.db.ItemManager; +import user.jobengine.db.Media; +import user.jobengine.db.MediaFile; +import user.jobengine.db.MediaFileDAO; +import user.jobengine.server.steps.RundownArchive; +import user.jobengine.server.steps.StoryArchive; + +public class Support { public class BD { Date fBD; Date nBD; @@ -49,6 +59,10 @@ public class Support_new { @BeforeClass static public void setUpConnection() { + System.setProperty("jobengine.octopus.rundowns.name", "test_rundowns"); + System.setProperty("jobengine.octopus.stories.name", "test_stories"); + System.setProperty("jobengine.octopus.storyfolders.name", "test_storyfolders"); + System.setProperty("jobengine.nosql.db.url", "jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;"); System.setProperty("jobengine.nosql.db.user", "db2admin"); System.setProperty("jobengine.nosql.db.password", "password"); @@ -272,6 +286,58 @@ public class Support_new { System.out.println("Available will " + duplicateLength[0]); } + @Test + public void processRecordingsSummertime() throws Exception { + + // Item item1 = manager.createItem("Generic", "2018.03.25 19:00 xxx", "", "56607293"); + // manager.merge(item1); + + SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd-HHmm"); + OctopusAPI octopusAPI = new OctopusAPI(); + String query = "select * from recordings_summertime where x1!=x2 order by itemtitle"; + IResultSetConsumer consumer = rs -> { + long rundownID = rs.getLong("itemhouseid"); + try { + long itemID = rs.getLong("itemid"); + long mediaID = rs.getLong("mediaid"); + String itemTitle = rs.getString("itemtitle"); + String mediaFileHouseID = rs.getString("mediafilehouseid"); + String x1 = rs.getString("x1"); + String x2 = rs.getString("x2"); + String time = mediaFileHouseID.substring(9, 13); + //Date scheduleDate = df.parse(mediaFileHouseID.substring(0, 13)); + Date scheduleDate = df.parse("20180308-1900"); + + RundownArchive rundownArchive = RundownHelper.processRundow(octopusAPI, scheduleDate); + + if (time.equals("1900")) { + scheduleDate = DateUtils.addMinutes(scheduleDate, 5); + RundownArchive rundownArchive2 = RundownHelper.processRundow(octopusAPI, scheduleDate); + + rundownArchive.setItemTitle(rundownArchive.getItemTitle() + " + NAPIAKT"); + StoryArchive storyArchive = rundownArchive.getStoryArchives().get(0); + StoryArchive storyArchive2 = rundownArchive2.getStoryArchives().get(0); + storyArchive.setMediaDesc(storyArchive.getMediaDesc() + "\r\n\r\n****** NAPIAKT ******\r\n\r\n" + storyArchive2.getMediaDesc()); + } + + Item item = manager.getItem(itemID); + item.setDescription("Javított eredeti adatok: " + item.getHouseId() + " " + item.getTitle()); + item.setTitle(rundownArchive.getItemTitle()); + item.setHouseId(rundownArchive.getItemHouseId()); + manager.merge(item); + + Media media = manager.getMedia(mediaID); + media.setDescription(rundownArchive.getStoryArchives().get(0).getMediaDesc()); + manager.merge(media); + System.out.println(rundownID + " " + x1 + " " + x2 + " " + itemTitle + " -> " + rundownArchive.getItemTitle()); + } catch (Exception e) { + System.out.println("Error processing: " + rundownID); + } + }; + executeQuery(query, consumer, null); + //System.out.println("Available will " + duplicateLength[0]); + } + private List query(Connection con) throws Exception { List result = new ArrayList<>();