5a1ddc5f024904516a74937a277d3337c855b2ab
[mediacube.git] /
1 package user.jobengine.server.steps;\r
2 \r
3 import java.nio.file.Paths;\r
4 \r
5 import org.apache.logging.log4j.LogManager;\r
6 import org.apache.logging.log4j.Logger;\r
7 \r
8 import com.ibm.nosql.json.api.BasicDBObject;\r
9 import com.ibm.nosql.json.api.DB;\r
10 import com.ibm.nosql.json.api.DBCollection;\r
11 \r
12 import user.commons.MediaCubeMarker;\r
13 import user.commons.MediaCubeUndoMarker;\r
14 import user.commons.nosql.NoSQLUtils;\r
15 import user.jobengine.db.IItemManager;\r
16 import user.jobengine.db.Media;\r
17 import user.jobengine.server.IJobEngine;\r
18 import user.jobengine.server.IJobRuntime;\r
19 \r
20 public class CreateMissingLowresStep extends JobStep {\r
21         private static final Logger logger = LogManager.getLogger();\r
22         private MediaCubeMarker marker;\r
23 \r
24         @StepEntry\r
25         public Object[] execute(String localHiresPath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
26                 Object[] result = new Object[] { null, null, "%s", null, 0, true };\r
27                 marker = (MediaCubeMarker) jobRuntime.getSessionMarker();\r
28                 DB db = NoSQLUtils.getNoSQLDB();\r
29                 DBCollection collection = db.getCollection("missing_lowres");\r
30                 IItemManager manager = jobEngine.getItemManager();\r
31                 Media media = getFirstUntranscodedMedia(manager, collection);\r
32 \r
33                 try {\r
34                         if (media == null) {\r
35                                 logger.info(new MediaCubeUndoMarker(marker.getSessionID()), "Nincs feldolgozandó hiány.");\r
36                                 // throw new Exception("Nincs feldolgozandó hiány.");\r
37                                 cancel();\r
38                                 return null;\r
39                         }\r
40 \r
41                         String name = media.getMediaFileRealName();\r
42                         result[0] = media;\r
43                         ArchiveItem archiveItem = new ArchiveItem();\r
44                         archiveItem.setMediaFile(Paths.get(localHiresPath, name).toString());\r
45                         result[1] = archiveItem;\r
46                         collection.save(new BasicDBObject("name", name));\r
47                         logger.info(marker, "Hiányzó lowres mediaId: {}", media.getId());\r
48 \r
49                 } catch (Exception e) {\r
50                         logger.catching(e);\r
51                         logger.info(marker, e.getMessage());\r
52                         throw e;\r
53                 } finally {\r
54                         setProgress(100);\r
55                 }\r
56                 return result;\r
57         }\r
58 \r
59         private Media getFirstUntranscodedMedia(IItemManager manager, DBCollection collection) {\r
60                 Media[] result = new Media[] { null };\r
61                 String query = "SELECT mediaid FROM VW_MISSING_PROXY_IDS WHERE HOUSEID like 'M%' or HOUSEID like 'P%' or HOUSEID like 'R%' ORDER BY modified DESC FETCH FIRST ROW ONLY";\r
62                 manager.executeQuery(query, rs -> {\r
63                         try {\r
64                                 long mediaId = rs.getLong(1);\r
65                                 Media media = manager.getMedia(mediaId);\r
66                                 //a nevgeneralas miatt az eredeti MediaFilesName nem jo, a pontos nev kell nekunk\r
67                                 String name = media.getMediaFileRealName();\r
68                                 long existing = collection.find(new BasicDBObject("name", name)).count();\r
69                                 if (existing > 0)\r
70                                         return true;\r
71 \r
72                                 result[0] = media;\r
73                         } catch (Exception e) {\r
74                                 logger.error(e);\r
75                         }\r
76                         return false;\r
77                 }, null);\r
78                 return result[0];\r
79         }\r
80 }\r