package user.jobengine.server.steps;\r
\r
-import org.apache.commons.io.FileUtils;\r
+import java.nio.file.Path;\r
+import java.nio.file.Paths;\r
+\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.MarkerManager;\r
\r
-import user.commons.RemoteFile;\r
import user.commons.StoreUri;\r
+import user.commons.mediaarea.MediaArea;\r
\r
public class FILEZILLA_PASARESTORETransferToStep extends TransferStep {\r
private static final Logger logger = LogManager.getLogger();\r
+ private static final String CODEC_PROFILE_HIGH = "HIGH";\r
+ private static final String CODEC_PROFILE_MAIN = "MAIN";\r
+ private static final String CODEC_PROFILE_422 = "4:2:2";\r
+ private static final String DISPLAY_ASPECT_16_9 = "16:9";\r
+ private static final String DISPLAY_ASPECT_4_3 = "4:3";\r
+ private StoreUri sourceStoreUri;\r
+ private String sourceFileName;\r
\r
@Override\r
@StepEntry\r
public Object[] execute(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String targetFileName) throws Exception {\r
- long start = System.currentTimeMillis();\r
+ this.sourceStoreUri = sourceStoreUri;\r
+ this.sourceFileName = sourceFileName;\r
+ logMediaProfile();\r
Object[] result = super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
- RemoteFile remoteFile = sourceStoreUri.getRemoteFile(targetFileName);\r
- if (remoteFile != null) {\r
- if (remoteFile.getSize() > 0) {\r
- long diff = (System.currentTimeMillis() - start) / 1000;\r
- long bytesSpeed = remoteFile.getSize() / diff;\r
- String speed = FileUtils.byteCountToDisplaySize(bytesSpeed);\r
- logger.info(getMarker(), "{} size is {}, upload speed was {}/sec", targetFileName, FileUtils.byteCountToDisplaySize(remoteFile.getSize()),\r
- speed);\r
- } else\r
- logger.info(getMarker(), "RemoteFile {} size is 0!", targetFileName);\r
- }\r
return result;\r
}\r
+\r
+ private boolean isHD(MediaArea mi) {\r
+ return mi.getHeight() == 1080;\r
+ }\r
+\r
+ private boolean isSD_HIGH_16_9(MediaArea mi) {\r
+ String formatProfileName = mi.getFormatProfileName();\r
+ return mi.getHeight() < 650 && formatProfileName.contains(CODEC_PROFILE_HIGH) && DISPLAY_ASPECT_16_9.equals(mi.getDisplayAspect());\r
+ }\r
+\r
+ private boolean isSD_HIGH_4_3(MediaArea mi) {\r
+ String formatProfileName = mi.getFormatProfileName();\r
+ return mi.getHeight() < 650 && formatProfileName.contains(CODEC_PROFILE_HIGH) && DISPLAY_ASPECT_4_3.equals(mi.getDisplayAspect());\r
+ }\r
+\r
+ private boolean isSD_MAIN_422(MediaArea mi) {\r
+ String formatProfileName = mi.getFormatProfileName();\r
+ return mi.getHeight() < 650 && (formatProfileName.contains(CODEC_PROFILE_MAIN) || formatProfileName.contains(CODEC_PROFILE_422));\r
+ }\r
+\r
+ protected void logMediaProfile() {\r
+ Marker marker = MarkerManager.getMarker("MEDIAPROFILE");\r
+ try {\r
+ Path filePath = Paths.get(sourceStoreUri.toString(true), sourceFileName);\r
+ MediaArea mi = new MediaArea(filePath);\r
+ mi.process();\r
+ logger.info(marker, "{} data : {} {} {}", sourceFileName, mi.getFormatProfileName(), mi.getHeight(), mi.getDisplayAspect());\r
+\r
+ if (isHD(mi)) {\r
+ logger.info(marker, "{} is MOVED_HD", sourceFileName);\r
+ return;\r
+ }\r
+\r
+ if (isSD_HIGH_16_9(mi)) {\r
+ logger.info(marker, "{} is CONVSD16_9", sourceFileName);\r
+ return;\r
+ }\r
+\r
+ if (isSD_HIGH_4_3(mi)) {\r
+ logger.info(marker, "{} is CONVSD4_3", sourceFileName);\r
+ return;\r
+ }\r
+\r
+ if (isSD_MAIN_422(mi)) {\r
+ logger.info(marker, "{} is MOVED_SD", sourceFileName);\r
+ return;\r
+ }\r
+ } catch (Exception e) {\r
+ logger.error(marker, e.getMessage());\r
+ }\r
+ }\r
+\r
}\r
Timestamp modified = downloadable.getTimestamp("modified");\r
Timestamp created = downloadable.getTimestamp("created");\r
long frames = downloadable.getLong("frames");\r
- \r
+\r
+ String targetStoreName = getManager().getStore(targetStoreUri.getStoreId()).getName();\r
if (mediaId == 0) {\r
- String targetStoreName = getManager().getStore(targetStoreUri.getStoreId()).getName();\r
//ez elszallhat, mert nincs filetype vagy store\r
MediaFile mediaFile = manager.createMediaFile(fileName, fileTypeName, targetStoreName);\r
//ez elszallhat, mert nincs itemtype\r
//TODO\r
//mediaFile.setFileSize(fileSize);\r
MediaFile mediaFile = manager.getSystemMediaFile(media);\r
- mediaFile.setRelativePath(fileName);\r
- mediaFile.setLastModified(modified);\r
- manager.modify(mediaFile);\r
+ if (mediaFile == null) {\r
+ mediaFile = manager.createMediaFile(fileName, fileTypeName, targetStoreName);\r
+ mediaFile.setMediaId(media.getId());\r
+ mediaFile.setLastModified(modified);\r
+ mediaFile.add();\r
+ } else {\r
+ mediaFile.setRelativePath(fileName);\r
+ mediaFile.setLastModified(modified);\r
+ manager.modify(mediaFile);\r
+ }\r
}\r
\r
} else\r