19bad479f092e0a4f3e1deb3688dd80eb85caaf9
[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.MediaCubeUndoMarker;\r
13 import user.commons.nosql.NoSQLUtils;\r
14 import user.jobengine.db.IItemManager;\r
15 import user.jobengine.db.Media;\r
16 import user.jobengine.server.IJobEngine;\r
17 import user.jobengine.server.IJobRuntime;\r
18 \r
19 public class CreateMissingLowresStep extends JobStep {\r
20         private static final Logger logger = LogManager.getLogger();\r
21 \r
22         @StepEntry\r
23         public Object[] execute(String localHiresPath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
24                 Object[] result = new Object[] { null, null, "%s", null, 0, true };\r
25                 DB db = NoSQLUtils.getNoSQLDB();\r
26                 DBCollection collection = db.getCollection("missing_lowres");\r
27                 IItemManager manager = jobEngine.getItemManager();\r
28                 Media media = getFirstUntranscodedMedia(manager, collection);\r
29 \r
30                 try {\r
31                         if (media == null) {\r
32                                 logger.info(new MediaCubeUndoMarker(getSessionMarker().getSessionID()), "Nincs feldolgozandó hiány.");\r
33                                 // throw new Exception("Nincs feldolgozandó hiány.");\r
34                                 cancel();\r
35                                 return null;\r
36                         }\r
37 \r
38                         String name = media.getMediaFileRealName();\r
39                         result[0] = media;\r
40                         ArchiveItem archiveItem = new ArchiveItem();\r
41                         archiveItem.setMediaFile(Paths.get(localHiresPath, name).toString());\r
42                         result[1] = archiveItem;\r
43                         collection.save(new BasicDBObject("name", name));\r
44                         logger.info(getSessionMarker(), "Processing mediaID: {}", media.getId());\r
45 \r
46                 } catch (Exception e) {\r
47                         logger.catching(e);\r
48                         logger.error(getSessionMarker(), e.getMessage());\r
49                         throw e;\r
50                 } finally {\r
51                         setProgress(100);\r
52                 }\r
53                 return result;\r
54         }\r
55 \r
56         private Media getFirstUntranscodedMedia(IItemManager manager, DBCollection collection) {\r
57                 Media[] result = new Media[] { null };\r
58                 //MV\r
59                 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";\r
60 \r
61                 //HTV\r
62                 //String query = "SELECT mediaid FROM VW_MISSING_PROXY_IDS";\r
63                 manager.executeQuery(query, rs -> {\r
64                         try {\r
65                                 long mediaId = rs.getLong(1);\r
66                                 Media media = manager.getMedia(mediaId);\r
67                                 //a nevgeneralas miatt az eredeti MediaFilesName nem jo, a pontos nev kell nekunk\r
68                                 String name = media.getMediaFileRealName();\r
69                                 logger.info(getSessionMarker(), "Checking {}", name);\r
70                                 long existing = collection.find(new BasicDBObject("name", name)).count();\r
71                                 if (existing > 0) {\r
72                                         logger.info(getSessionMarker(), "{} is on missing_lowres list", name);\r
73                                         return true;\r
74                                 }\r
75 \r
76                                 result[0] = media;\r
77                         } catch (Exception e) {\r
78                                 logger.error(e);\r
79                         }\r
80                         return false;\r
81                 }, null);\r
82                 return result[0];\r
83         }\r
84 }\r