<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>\r
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -console"/>\r
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>\r
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory -Dorg.eclipse.epp.logging.aeri.skipReports=true -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Djobengine.jobsteps.root="${workspace_loc}/user.jobengine.executors/config" -Djobengine.jobtemplates.root="${workspace_loc}/user.jobengine.executors/jobtemplates" -Djobengine.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.db.user=db2admin -Djobengine.db.password=password -Djobengine.loglevel=INFO -Dlog4j.configurationFile="${workspace_loc}/-configuration/log4j2.xml" -Djobengine.jobsteps.alternate.root="${workspace_loc}/user.jobengine.executors/bin/" -Djetty.home="${workspace_loc:}/-configuration/jetty" -Djetty.etc.config.urls=etc/user-jetty.xml,etc/user-jetty-ssl.xml,etc/user-jetty-ssl-context.xml,,etc/user-jetty-http.xml,etc/user-jetty-https.xml -Dorg.eclipse.jetty.webapp.basetempdir=c:\temp\jetty -Djava.io.tmpdir=c:\temp\jetty -Djobengine.octopus.api.address=http://10.10.1.11/api/v1 -Djobengine.octopus.api.user=mam -Djobengine.octopus.api.password=napocska -Djobengine.nosql.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.nosql.db.user=db2admin -Djobengine.nosql.db.password=password -Djobengine.nosql.db.schema=test -Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl -Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC.zenium -Djobengine.jobscheduling.config="${workspace_loc}/-configuration/scheduledjobs.json" -Djobengine.nexio.db.url=jdbc:sqlserver://10.10.1.59:1433;databaseName=NXDB; -Djobengine.nexio.db.user=sa -Djobengine.nexio.db.password=resolve -Dnexio.host=10.10.1.55 -Djobengine.nexio.name=testnexioclips -Dnexio.useMOSGateway=true -Dnexio.disable=false -Djobengine.octopus.rundowns.name=rundowns181026 -Djobengine.octopus.storyfolders.name=storyfolders181026 -Djobengine.octopus.stories.name=stories181026 -Dmediacube.auth.location="${workspace_loc}/-configuration/mediacube-auth.properties""/>\r
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory -Dorg.eclipse.epp.logging.aeri.skipReports=true -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Djobengine.jobsteps.root="${workspace_loc}/user.jobengine.executors/config" -Djobengine.jobtemplates.root="${workspace_loc}/user.jobengine.executors/jobtemplates" -Djobengine.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.db.user=db2admin -Djobengine.db.password=password -Djobengine.loglevel=INFO -Dlog4j.configurationFile="${workspace_loc}/-configuration/log4j2.xml" -Djobengine.jobsteps.alternate.root="${workspace_loc}/user.jobengine.executors/bin/" -Djetty.home="${workspace_loc:}/-configuration/jetty" -Djetty.etc.config.urls=etc/user-jetty.xml,etc/user-jetty-ssl.xml,etc/user-jetty-ssl-context.xml,,etc/user-jetty-http.xml,etc/user-jetty-https.xml -Dorg.eclipse.jetty.webapp.basetempdir=c:\temp\jetty -Djava.io.tmpdir=c:\temp\jetty -Djobengine.octopus.api.address=http://10.10.1.11/api/v1 -Djobengine.octopus.api.user=mam -Djobengine.octopus.api.password=napocska -Djobengine.nosql.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.nosql.db.user=db2admin -Djobengine.nosql.db.password=password -Djobengine.nosql.db.schema=test -Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl -Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC.zenium -Djobengine.jobscheduling.config="${workspace_loc}/-configuration/scheduledjobs.json" -Djobengine.nexio.db.url=jdbc:sqlserver://10.10.1.59:1433;databaseName=NXDB; -Djobengine.nexio.db.user=sa -Djobengine.nexio.db.password=resolve -Dnexio.host=10.10.1.55 -Djobengine.nexio.name=testnexioclips -Dnexio.useMOSGateway=true -Dnexio.disable=true -Djobengine.octopus.rundowns.name=rundowns181026 -Djobengine.octopus.storyfolders.name=storyfolders181026 -Djobengine.octopus.stories.name=stories181026 -Dmediacube.auth.location="${workspace_loc}/-configuration/mediacube-auth.properties""/>\r
<stringAttribute key="pde.version" value="3.3"/>\r
<booleanAttribute key="show_selected_only" value="false"/>\r
<stringAttribute key="target_bundles" value="cglib@default:default,com.auth0.java-jwt@default:default,com.fasterxml.jackson.core.jackson-annotations@default:default,com.fasterxml.jackson.core.jackson-core@default:default,com.fasterxml.jackson.core.jackson-databind@default:default,com.fasterxml.jackson.datatype.jackson-datatype-joda@default:default,com.fasterxml.jackson.jaxrs.jackson-jaxrs-base@default:default,com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider@default:default,com.fasterxml.jackson.module.jackson-module-jaxb-annotations@default:default,com.google.guava@default:default,com.ibm.db2jcc4@default:default,com.ibm.nosql@default:default,com.microsoft.sqlserver.sqljdbc@default:default,com.sun.el.javax.el@default:default,commons-logging@default:default,humble.video.noarch@default:default,humble.video.windows@default:default,javax.annotation-api@default:default,javax.inject@default:default,javax.mail@default:default,javax.servlet-api@default:default,javax.servlet.jsp-api@default:default,javax.validation.api@default:default,javax.ws.rs-api@default:default,jcifs@default:default,joda-time@default:default,org.apache.aries.spifly.dynamic.bundle@default:default,org.apache.aries.util@default:default,org.apache.commons.beanutils@default:default,org.apache.commons.codec@default:default,org.apache.commons.collections@default:default,org.apache.commons.digester@default:default,org.apache.commons.io@default:default,org.apache.commons.lang3@default:default,org.apache.commons.lang@default:default,org.apache.commons.logging@default:default,org.apache.commons.net@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.apache.jasper.glassfish@default:default,org.apache.logging.log4j.api@1:true,org.apache.logging.log4j.core@default:default,org.apache.logging.log4j.slf4j-impl@default:default,org.apache.servicemix.bundles.quartz@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.util@default:default,org.eclipse.jetty.client@default:default,org.eclipse.jetty.deploy@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.jsp@default:default,org.eclipse.jetty.osgi.boot.jsp@default:false,org.eclipse.jetty.osgi.boot@default:true,org.eclipse.jetty.schemas@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jetty.webapp@default:default,org.eclipse.jetty.websocket.api@default:default,org.eclipse.jetty.websocket.client@default:default,org.eclipse.jetty.websocket.common@default:default,org.eclipse.jetty.websocket.server@default:default,org.eclipse.jetty.websocket.servlet@default:default,org.eclipse.jetty.xml@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.hamcrest.core@default:default,org.jboss.resteasy.client@default:default,org.jboss.resteasy.jaxrs@default:default,org.jmock.junit4@default:default,org.jmock@default:default,org.junit@default:default,org.objectweb.asm.commons@default:default,org.objectweb.asm.tree@default:default,org.objectweb.asm@default:default,slf4j.api@default:default,slf4j.simple@default:false"/>\r
import user.commons.logging.LogUtils;\r
import user.commons.nosql.NoSQLUtils;\r
import user.jobengine.db.IItemManager;\r
-import user.jobengine.db.IResultSetConsumer;\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.server.JobRuntime;\r
import user.jobengine.server.steps.ItemManagerExtensions;\r
-import user.jobengine.server.steps.MetadataTypeDetector;\r
-import user.jobengine.server.steps.MetadataTypeDetector.MetadataType;\r
import user.jobengine.server.steps.PlanAirExtensions;\r
+import user.jobengine.server.steps.ProjectCleanupMountedLocationStep;\r
import user.jobengine.server.steps.RundownArchive;\r
\r
public class Support {\r
}\r
stream.close();\r
\r
- check_rd_process(allFiles, allStatus);\r
+ //check_rd_process(allFiles, allStatus);\r
} catch (Exception e) {\r
System.err.println(e.getMessage());\r
}\r
return null;\r
}\r
\r
- private void check_rd_process(List<String> allFiles, List<String> allStatus) {\r
- File mediaFile = mediaFilePath.toFile();\r
- if (mediaFile.isDirectory() || !mediaFile.getName().toUpperCase().endsWith(".MXF"))\r
- return;\r
- Path status = Paths.get(mediaFilePath.getParent().toString(), ".STATUS", mediaFile.getName() + ".json");\r
- if (!status.toFile().exists()) {\r
- System.out.println("Nincs JSON: " + mediaFile.getAbsolutePath());\r
- }\r
-\r
- if (mediaFile.length() == 0) {\r
- String houseid = mediaFile.getName().substring(0, mediaFile.getName().lastIndexOf("."));\r
- final String idToCheck = houseid.substring(0, houseid.lastIndexOf("-"));\r
- MetadataType metadataType = MetadataTypeDetector.GuessMetadataType(idToCheck);\r
- if (metadataType == MetadataType.OctopusPlaceholder) {\r
- String query = String.format("select count(*) from mediafile where houseid like '%s%%'", idToCheck);\r
- IResultSetConsumer consumer = rs -> {\r
- if (rs.getInt(1) == 0) {\r
-\r
- File f = check_rd_nonzero_fellow(idToCheck, allFiles);\r
- if (f == null)\r
- System.out.println("0 még sincs korábbi: " + mediaFile.getAbsolutePath());\r
-\r
- }\r
- return false;\r
- };\r
- manager.executeQuery(query, consumer, null);\r
- }\r
-\r
- }\r
-\r
- }\r
+ // private void check_rd_process(List<String> allFiles, List<String> allStatus) {\r
+ // File mediaFile = mediaFilePath.toFile();\r
+ // if (mediaFile.isDirectory() || !mediaFile.getName().toUpperCase().endsWith(".MXF"))\r
+ // return;\r
+ // Path status = Paths.get(mediaFilePath.getParent().toString(), ".STATUS", mediaFile.getName() + ".json");\r
+ // if (!status.toFile().exists()) {\r
+ // System.out.println("Nincs JSON: " + mediaFile.getAbsolutePath());\r
+ // }\r
+ //\r
+ // if (mediaFile.length() == 0) {\r
+ // String houseid = mediaFile.getName().substring(0, mediaFile.getName().lastIndexOf("."));\r
+ // final String idToCheck = houseid.substring(0, houseid.lastIndexOf("-"));\r
+ // MetadataType metadataType = MetadataTypeDetector.GuessMetadataType(idToCheck);\r
+ // if (metadataType == MetadataType.OctopusPlaceholder) {\r
+ // String query = String.format("select count(*) from mediafile where houseid like '%s%%'", idToCheck);\r
+ // IResultSetConsumer consumer = rs -> {\r
+ // if (rs.getInt(1) == 0) {\r
+ //\r
+ // File f = check_rd_nonzero_fellow(idToCheck, allFiles);\r
+ // if (f == null)\r
+ // System.out.println("0 még sincs korábbi: " + mediaFile.getAbsolutePath());\r
+ //\r
+ // }\r
+ // return false;\r
+ // };\r
+ // manager.executeQuery(query, consumer, null);\r
+ // }\r
+ //\r
+ // }\r
+ //\r
+ // }\r
\r
private void rescue_archive(RescueNEXIOMaterials processor, String clipName, long duration) throws Exception {\r
/*\r
assertTrue(actual.length() > 0);\r
}\r
\r
+ @Test\r
+ public void test_ProjectCleanupMountedLocationStep() throws Exception {\r
+ //TODO\r
+ ProjectCleanupMountedLocationStep sut = new ProjectCleanupMountedLocationStep();\r
+ sut.execute("c:\\_video\\projects", null, new JobRuntime());\r
+ }\r
+\r
@Test\r
public void test_Solr() throws Exception {\r
//http://lucene.apache.org/solr/guide/7_5/using-solrj.html#using-solrj\r
\r
System.out.println("itemid=" + i.getId() + " AND mediaid=" + m.getId() + " AND mediafileid=" + mf.getId());\r
}\r
-\r
}\r
<executor className="user.jobengine.server.steps.CheckMORPHEUSMissingMaterialsStep" maxConcurrent="1"/>\r
<executor className="user.jobengine.server.steps.CheckTRAFFICMissingMaterialsStep" maxConcurrent="1"/>\r
<executor className="user.jobengine.server.steps.CleanupMountedLocationStep" maxConcurrent="10"/>\r
+ <executor className="user.jobengine.server.steps.ProjectCleanupMountedLocationStep" maxConcurrent="1"/>\r
<executor className="user.jobengine.server.steps.CopyForArchiveNEXIOMaterialsStep" maxConcurrent="1"/>\r
<executor className="user.jobengine.server.steps.CopyForArchiveNEXIORecordingsStep" maxConcurrent="1"/>\r
<executor className="user.jobengine.server.steps.CreateMissingLowresStep" maxConcurrent="1"/>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<jobtemplate name="Anyagok törlése" multiInstance="true">\r
+ <declarations>\r
+ <parameters>\r
+ <parameter name="sourcePath" type="java.lang.String"/>\r
+ </parameters>\r
+ </declarations>\r
+ <commands>\r
+ <calljobstep id="id1" type="user.jobengine.server.steps.ProjectCleanupMountedLocationStep" weight="1">\r
+ <inputs>\r
+ <input>\r
+ <parameter name="sourcePath" />\r
+ </input>\r
+ </inputs>\r
+ </calljobstep>\r
+ </commands>\r
+</jobtemplate>
\ No newline at end of file
\r
} catch (Exception e) {\r
logger.catching(e);\r
- logger.error(marker, e.getMessage());\r
+ logger.info(marker, e.getMessage());\r
+ throw e;\r
} finally {\r
setProgress(100);\r
}\r
--- /dev/null
+package user.jobengine.server.steps;\r
+\r
+import java.io.File;\r
+import java.io.IOException;\r
+import java.nio.file.DirectoryStream;\r
+import java.nio.file.FileVisitResult;\r
+import java.nio.file.FileVisitor;\r
+import java.nio.file.Files;\r
+import java.nio.file.Path;\r
+import java.nio.file.Paths;\r
+import java.nio.file.SimpleFileVisitor;\r
+import java.nio.file.attribute.BasicFileAttributes;\r
+import java.text.ParseException;\r
+import java.text.SimpleDateFormat;\r
+import java.util.ArrayList;\r
+import java.util.Collections;\r
+import java.util.Date;\r
+import java.util.List;\r
+\r
+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
+\r
+import user.jobengine.server.IJobEngine;\r
+import user.jobengine.server.IJobRuntime;\r
+import user.jobengine.server.steps.MetadataTypeDetector.MetadataType;\r
+\r
+public class ProjectCleanupMountedLocationStep extends JobStep implements FileVisitor<Path> {\r
+\r
+ private static final Logger logger = LogManager.getLogger();\r
+ private static final String DATEFORMAT = "yyyyMMdd";\r
+ private static final String DOT = ".";\r
+ private static final String STATUSFOLDER = ".STATUS";\r
+ private static final String KILLDATEEXT = ".killdate";\r
+ private Marker marker;\r
+ final int[] allCount = { 0 };\r
+ final int[] currentCount = { 0 };\r
+ private Path sourcePath;\r
+ private SimpleDateFormat dateFormat;\r
+\r
+ private Date checkExpiration(List<Path> killDateFiles) {\r
+ Date killDate = null;\r
+ for (Path killDateFile : killDateFiles) {\r
+ Date currentKillDate = getKillDate(killDateFile);\r
+ if (currentKillDate == null)\r
+ continue;\r
+ if ((killDate != null && currentKillDate.after(killDate)) || killDate == null)\r
+ killDate = currentKillDate;\r
+ }\r
+ return new Date().after(killDate) ? killDate : null;\r
+ }\r
+\r
+ @StepEntry\r
+ public Object[] execute(String sourceFolder, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+ marker = jobRuntime.getMarker();\r
+ sourcePath = Paths.get(sourceFolder);\r
+ DirectoryStream<Path> directoryStream = null;\r
+ if (StringUtils.isBlank(sourcePath.toString())) {\r
+ logger.error(marker, "A folyamat 'sourcePath' bemeneti paramétere üres.");\r
+ throw new NullPointerException("System is not configured properly, 'sourceFolder' input parameter missing.");\r
+ }\r
+\r
+ if (!sourcePath.toFile().exists() || !sourcePath.toFile().isDirectory()) {\r
+ logger.error(marker, "A {} mappa nem létezik.", sourceFolder);\r
+ throw new NullPointerException(String.format("Directory %s not exists.", sourceFolder));\r
+ }\r
+ try {\r
+ setProgress(1);\r
+ dateFormat = new SimpleDateFormat(DATEFORMAT);\r
+ Files.walkFileTree(sourcePath, new SimpleFileVisitor<Path>() {\r
+ @Override\r
+ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {\r
+ allCount[0]++;\r
+ return super.visitFile(file, attrs);\r
+ }\r
+ });\r
+ Files.walkFileTree(sourcePath, this);\r
+ } catch (Exception e) {\r
+ logger.catching(e);\r
+ logger.error(marker, "Az '{}' mappa elérése sikertelen. A rendszer hibaüzenete: {}", sourcePath, e.getMessage());\r
+ throw e;\r
+ } finally {\r
+ if (directoryStream != null) {\r
+ try {\r
+ directoryStream.close();\r
+ } catch (IOException e) {\r
+ }\r
+ }\r
+ }\r
+ return null;\r
+ }\r
+\r
+ private Date getKillDate(Path killDateFile) {\r
+ String fileName = killDateFile.getFileName().toString();\r
+ int end = fileName.lastIndexOf(DOT);\r
+ if (end < 1)\r
+ return null;\r
+ int start = fileName.lastIndexOf(DOT, end - 1);\r
+ if (start < 0)\r
+ return null;\r
+ String strKillDate = fileName.substring(start + 1, end);\r
+ Date result = null;\r
+ if (StringUtils.isNumeric(strKillDate)) {\r
+ try {\r
+ result = dateFormat.parse(strKillDate);\r
+ } catch (ParseException e) {\r
+ logger.error(marker, "A {} fájl 'killdate' állománya hibás formátumú, a {} karaktersorozat nem konvertálható dátummá.", fileName, strKillDate);\r
+ return null;\r
+ }\r
+ } else\r
+ logger.error(marker, "A {} fájl 'killdate' állománya hibás formátumú, az dátum helyett ez áll: '{}'.", fileName, strKillDate);\r
+ return result;\r
+ }\r
+\r
+ private List<Path> getKillDateFiles(Path filePath) {\r
+ String killDateFilePattern = String.format("%s.*%s", filePath.getFileName().toString(), KILLDATEEXT);\r
+ List<Path> result = new ArrayList<>();\r
+ Path statusPath = null;\r
+ try {\r
+ statusPath = Paths.get(filePath.getParent().toString(), STATUSFOLDER);\r
+ } catch (Exception e) {\r
+ logger.catching(e);\r
+ return null;\r
+ }\r
+ File statusPathFile = statusPath.toFile();\r
+ if (statusPathFile.exists() && statusPathFile.isDirectory()) {\r
+ try (DirectoryStream<Path> stream = Files.newDirectoryStream(statusPath, killDateFilePattern)) {\r
+ stream.forEach(p -> result.add(p));\r
+ } catch (Exception e) {\r
+ logger.catching(e);\r
+ }\r
+ }\r
+ Collections.sort(result);\r
+ return result;\r
+ }\r
+\r
+ private Path getProjectRootPath(Path filePath) {\r
+ Path result = null;\r
+ if (filePath.getNameCount() > sourcePath.getNameCount()) {\r
+ String dir = filePath.getName(sourcePath.getNameCount()).toString();\r
+ String[] tokens = dir.split("-");\r
+ if (tokens.length != 0 && MetadataTypeDetector.GuessMetadataType(tokens[0]) == MetadataType.TrafficPromo)\r
+ result = Paths.get(sourcePath.toAbsolutePath().toString(), dir);\r
+ }\r
+ return result;\r
+ }\r
+\r
+ @Override\r
+ public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {\r
+ return FileVisitResult.CONTINUE;\r
+ }\r
+\r
+ @Override\r
+ public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {\r
+ if (dir.equals(sourcePath))\r
+ return FileVisitResult.CONTINUE;\r
+\r
+ Path parent = getProjectRootPath(dir);\r
+ if (parent == null) {\r
+ System.out.println("Skipping " + dir);\r
+ return FileVisitResult.SKIP_SUBTREE;\r
+ }\r
+\r
+ return FileVisitResult.CONTINUE;\r
+ }\r
+\r
+ private boolean processPathItem(Path filePath) {\r
+ currentCount[0]++;\r
+ setProgress(currentCount[0] * 100 / allCount[0]);\r
+\r
+ if (filePath.toFile().isDirectory() || !filePath.toString().toUpperCase().endsWith(".EZP"))\r
+ return false;\r
+\r
+ List<Path> killDateFiles = getKillDateFiles(filePath);\r
+ if (killDateFiles == null || killDateFiles.size() == 0) {\r
+ logger.warn(marker, "A {} fájlhoz nem található 'killdate' állomány.", filePath);\r
+ return false;\r
+ }\r
+\r
+ if (killDateFiles.size() != 1)\r
+ logger.warn(marker, "A {} fájlhoz több 'killdate' állomány található, a legújabb dátum határozza meg a törlés időpontját.", filePath);\r
+\r
+ Date killDate = checkExpiration(killDateFiles);\r
+ if (killDate == null)\r
+ return false;\r
+\r
+ Path parent = getProjectRootPath(filePath);\r
+ if (parent != null) {\r
+ Path pathToDelete = Paths.get(sourcePath.toAbsolutePath().toString(), filePath.getName(sourcePath.getNameCount()).toString());\r
+ //FileUtils.deleteDirectory(pathToDelete);\r
+ logger.info(marker, "A {} mappa törölhető", pathToDelete);\r
+ System.out.println(pathToDelete);\r
+ } else\r
+ logger.warn(marker, "A {} fájlhoz nem határozható meg a törlendő szülőkönyvtár.", filePath);\r
+ return true;\r
+ }\r
+\r
+ @Override\r
+ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {\r
+ processPathItem(file);\r
+ return FileVisitResult.CONTINUE;\r
+ }\r
+\r
+ @Override\r
+ public FileVisitResult visitFileFailed(Path file, IOException e) throws IOException {\r
+ logger.error(marker, "A {} fájl nem érhető el. A rendszer hibaüzenete: {}", file.toString(), e.getMessage());\r
+ return FileVisitResult.CONTINUE;\r
+ }\r
+}\r
<div id="scdiv" width="100%" height="100%" apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('user.jobengine.zk.model.SearchModel')">\r
<timer id="timer" delay="1" repeats="false" onTimer="@command('uiTick')" />\r
<borderlayout width="100%" height="100%">\r
- <west border="none" size="60%" splittable="true" minsize="500">\r
+ <west border="none" size="60%" splittable="true" minsize="500" onSize="@command('onWestResize', west=self)">\r
<div height="100%" width="100%">\r
<groupbox vflex="min" closable="false">\r
<vlayout>\r
*/\r
public class JobStep implements IJobStep {\r
private static final Logger logger = LogManager.getLogger();\r
- private IJobRuntime jobRuntime = null;\r
+ protected IJobRuntime jobRuntime = null;\r
\r
private Object[] addParameter(Method stepEntry, Object[] inputs, Class<?> type, Object parameter) {\r
Object[] result = inputs;\r
}\r
\r
protected void setProgress(int progress) {\r
- jobRuntime.incrementProgress(progress);\r
+ if (jobRuntime != null)\r
+ jobRuntime.incrementProgress(progress);\r
}\r
}\r
import org.zkoss.zul.Paging;\r
import org.zkoss.zul.Row;\r
import org.zkoss.zul.Timer;\r
+import org.zkoss.zul.West;\r
import org.zkoss.zul.Window;\r
\r
import user.commons.ListUtils;\r
private static final String ARG = "arg";\r
private static final String MEDIA_ID = "showMediaID";\r
private static final String GENERIC = "Egyéb";\r
+ private static final String ECHO_RECORDING = "ECHO visszarögzített";\r
private static final String RECORDING = "Visszarögzített";\r
private static final String RAW_AD = "Reklám nyers";\r
+ private static final String ECHO_AD = "ECHO reklám";\r
private static final String AD = "Reklám";\r
private static final String RAW_PROMO = "Promo nyers";\r
+ private static final String ECHO_PROMO = "ECHO promo";\r
private static final String PROMO = "Promo";\r
private static final String RAW_MATERIAL = "Műsor nyers";\r
+ private static final String ECHO_MATERIAL = "ECHO műsor";\r
private static final String MATERIAL = "Műsor";\r
private static final String RAW_NEWS_MATERIAL = "Hír nyers";\r
private static final String NEWS_MATERIAL = "Hír bejátszó";\r
private Map<String, TypeFilter> typeFilters;\r
private Map<String, String> columnHeaders;\r
private String searchValue = null;\r
- private CachedListModel searchResult = null;\r
+ private ListModelList<ArchivedMedia> searchResult = null;\r
private ArchivedMedia selectedObject = null;\r
private Validator allFilterCheckedValidator;\r
private Validator itemSelectedValidator;\r
addTypeFilter(TypeFilter.as(NEWS_MATERIAL, "RED200", "ic_language_black_18dp.png"));\r
addTypeFilter(TypeFilter.as(RAW_NEWS_MATERIAL, "RED100", "ic_perm_camera_mic_black_18dp.png"));\r
addTypeFilter(TypeFilter.as(MATERIAL, "TEAL200", "ic_theaters_black_18dp.png"));\r
+ addTypeFilter(TypeFilter.as(ECHO_MATERIAL, "TEAL200", "ic_theaters_black_18dp.png"));\r
addTypeFilter(TypeFilter.as(RAW_MATERIAL, "TEAL100", "ic_invert_colors_black_18dp.png"));\r
addTypeFilter(TypeFilter.as(PROMO, "INDIGO200", "ic_picture_in_picture_black_18dp.png"));\r
+ addTypeFilter(TypeFilter.as(ECHO_PROMO, "INDIGO200", "ic_picture_in_picture_black_18dp.png"));\r
addTypeFilter(TypeFilter.as(RAW_PROMO, "INDIGO100", "ic_bug_report_black_18dp.png"));\r
addTypeFilter(TypeFilter.as(AD, "BLUE200", "ic_picture_in_picture_alt_black_18dp.png"));\r
+ addTypeFilter(TypeFilter.as(ECHO_AD, "BLUE200", "ic_picture_in_picture_alt_black_18dp.png"));\r
addTypeFilter(TypeFilter.as(RAW_AD, "BLUE100", "ic_settings_brightness_black_18dp.png"));\r
addTypeFilter(TypeFilter.as(RECORDING, "BROWN100", "ic_group_work_black_18dp.png"));\r
+ addTypeFilter(TypeFilter.as(ECHO_RECORDING, "BROWN100", "ic_group_work_black_18dp.png"));\r
addTypeFilter(TypeFilter.as(GENERIC, "YELLOW200", "ic_view_quilt_black_18dp.png"));\r
addTypeFilter(TypeFilter.as(GENERIC_ORIGINAL, "YELLOW200", "ic_view_quilt_black_18dp.png"));\r
- topTypeFilterNames = new String[] { NEWS_MATERIAL, RAW_NEWS_MATERIAL, RECORDING, GENERIC };\r
- bottomTypeFilterNames = new String[] { MATERIAL, RAW_MATERIAL, PROMO, RAW_PROMO, AD, RAW_AD };\r
+ topTypeFilterNames = new String[] { NEWS_MATERIAL, RAW_NEWS_MATERIAL, ECHO_RECORDING, RECORDING, GENERIC };\r
+ bottomTypeFilterNames = new String[] { ECHO_MATERIAL, MATERIAL, RAW_MATERIAL, ECHO_PROMO, PROMO, RAW_PROMO, ECHO_AD, AD, RAW_AD };\r
\r
columnHeaders = new LinkedHashMap<>();\r
columnHeaders.put("ID", "mediahouseid");\r
return searchHistory;\r
}\r
\r
- public CachedListModel getSearchResult() {\r
+ public ListModelList<ArchivedMedia> getSearchResult() {\r
return searchResult;\r
}\r
\r
logger.info("onPaging");\r
}\r
\r
+ @Command\r
+ public void onWestResize(@BindingParam("west") West _west) {\r
+ _west.invalidate();\r
+ }\r
+\r
@Command\r
public void openMetaDataDialog() {\r
String template = "/pages/metadatadetails.zul";\r
import org.junit.BeforeClass;\r
import org.junit.Test;\r
\r
+import com.ibm.nosql.json.api.BasicDBList;\r
import com.ibm.nosql.json.api.BasicDBObject;\r
import com.ibm.nosql.json.api.DB;\r
import com.ibm.nosql.json.api.DBCollection;\r
result = result.substring(0, result.lastIndexOf("."));\r
System.out.println(result);\r
}\r
+\r
+ @Test\r
+ public void updateClipRecordDate() {\r
+\r
+ DB db = NoSQLUtils.getNoSQLDB();\r
+ DBCollection collection = db.getCollection("nexioclips");\r
+ BasicDBList agencies = new BasicDBList(new Object[] { "schedule-rec" });\r
+\r
+ Calendar now = CalendarUtils.createZeroCalendar();\r
+ QueryBuilder dateQueryBuilder = QueryBuilder.start("recorddate").lessThan(now.getTime());\r
+ QueryBuilder queryBuilder = QueryBuilder.start("extagency").in(agencies).and(dateQueryBuilder.get());\r
+ DBCursor cursor = collection.find(queryBuilder.get()).sort("recorddate", -1);\r
+ if (!cursor.hasNext())\r
+ return;\r
+ List<BasicDBObject> clips = ListUtils.cast(cursor.toArray());\r
+ for (BasicDBObject c : clips) {\r
+ String name = c.getString("longnameid");\r
+ Date recorddate = c.getDate("recorddate");\r
+ if (name != null && name.toLowerCase().contains("_nodelete")) {\r
+ // recorddate.setMonth(2);\r
+ // recorddate.setDate(31);\r
+ System.out.println(name + " " + recorddate);\r
+ // collection.save(c);\r
+ }\r
+\r
+ }\r
+\r
+ }\r
}\r