git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Mon, 16 Apr 2018 21:25:27 +0000 (21:25 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Mon, 16 Apr 2018 21:25:27 +0000 (21:25 +0000)
13 files changed:
server/user.commons.log4j2/src/user/commons/log4j2/appender/SmtpManager.java
server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRestoreStep.java
server/user.jobengine.osgi.commons/src/user/commons/octopus/IOctopusAPI.java
server/user.jobengine.osgi.commons/src/user/commons/octopus/OctopusAPI.java
server/user.jobengine.osgi.db/sql/cleanup-recordings-summertime.sql [new file with mode: 0644]
server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java
server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java
server/user.jobengine.osgi.db/test/user/jobengine/db/Support.java [deleted file]
server/user.jobengine.osgi.server/META-INF/MANIFEST.MF
server/user.jobengine.osgi.server/test/user/jobengine/server/IT/IResultSetConsumer.java [moved from server/user.jobengine.osgi.db/test/user/jobengine/db/IResultSetConsumer.java with 78% similarity]
server/user.jobengine.osgi.server/test/user/jobengine/server/IT/IStatementDecorator.java [moved from server/user.jobengine.osgi.db/test/user/jobengine/db/IStatementDecorator.java with 79% similarity]
server/user.jobengine.osgi.server/test/user/jobengine/server/IT/RundownHelper.java [new file with mode: 0644]
server/user.jobengine.osgi.server/test/user/jobengine/server/IT/Support.java [moved from server/user.jobengine.osgi.db/test/user/jobengine/db/Support_new.java with 74% similarity]

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