--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>\r
+<configuration>\r
+ <startup> \r
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />\r
+ </startup>\r
+</configuration>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />\r
+ <PropertyGroup>\r
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
+ <ProjectGuid>{A64ADB88-2CC4-4E46-BC53-643E2C49E179}</ProjectGuid>\r
+ <OutputType>Exe</OutputType>\r
+ <RootNamespace>MCTool</RootNamespace>\r
+ <AssemblyName>MCTool</AssemblyName>\r
+ <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>\r
+ <FileAlignment>512</FileAlignment>\r
+ <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>\r
+ <SccProjectName>SAK</SccProjectName>\r
+ <SccLocalPath>SAK</SccLocalPath>\r
+ <SccAuxPath>SAK</SccAuxPath>\r
+ <SccProvider>SAK</SccProvider>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
+ <PlatformTarget>AnyCPU</PlatformTarget>\r
+ <DebugSymbols>true</DebugSymbols>\r
+ <DebugType>full</DebugType>\r
+ <Optimize>false</Optimize>\r
+ <OutputPath>bin\Debug\</OutputPath>\r
+ <DefineConstants>DEBUG;TRACE</DefineConstants>\r
+ <ErrorReport>prompt</ErrorReport>\r
+ <WarningLevel>4</WarningLevel>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
+ <PlatformTarget>AnyCPU</PlatformTarget>\r
+ <DebugType>pdbonly</DebugType>\r
+ <Optimize>true</Optimize>\r
+ <OutputPath>bin\Release\</OutputPath>\r
+ <DefineConstants>TRACE</DefineConstants>\r
+ <ErrorReport>prompt</ErrorReport>\r
+ <WarningLevel>4</WarningLevel>\r
+ </PropertyGroup>\r
+ <ItemGroup>\r
+ <Reference Include="System" />\r
+ <Reference Include="System.Core" />\r
+ <Reference Include="System.Xml.Linq" />\r
+ <Reference Include="System.Data.DataSetExtensions" />\r
+ <Reference Include="Microsoft.CSharp" />\r
+ <Reference Include="System.Data" />\r
+ <Reference Include="System.Net.Http" />\r
+ <Reference Include="System.Xml" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <Compile Include="Program.cs" />\r
+ <Compile Include="Properties\AssemblyInfo.cs" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <None Include="App.config" />\r
+ </ItemGroup>\r
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
+</Project>
\ No newline at end of file
--- /dev/null
+using System;\r
+using System.Diagnostics;\r
+using System.IO;\r
+using System.Linq;\r
+\r
+namespace MCTool {\r
+ class Program {\r
+ static void Main(string[] args) {\r
+ string source = "file://10.10.1.27/mclowres/www/video";\r
+ string destination = "file://10.10.1.100/BRAAVOS/ARCHIVE";\r
+ var sFiles = Directory.EnumerateFiles(new Uri(source).LocalPath, "*.mp4");\r
+ var dFiles = Directory.EnumerateFiles(new Uri(destination).LocalPath, "*.MXF");\r
+\r
+ var diff = dFiles.Where(s => {\r
+ string name = Path.GetFileNameWithoutExtension(s) + ".mp4";\r
+ string lookup = new Uri(Path.Combine(source, name)).LocalPath;\r
+ bool result = !source.Contains(lookup);\r
+ if (result)\r
+ Debug.WriteLine(name);\r
+ return result;\r
+ });\r
+\r
+ Console.WriteLine("Diff " + diff.Count());\r
+ Console.ReadLine();\r
+ }\r
+ }\r
+}\r
--- /dev/null
+using System.Reflection;\r
+using System.Runtime.CompilerServices;\r
+using System.Runtime.InteropServices;\r
+\r
+// General Information about an assembly is controlled through the following\r
+// set of attributes. Change these attribute values to modify the information\r
+// associated with an assembly.\r
+[assembly: AssemblyTitle("MCTool")]\r
+[assembly: AssemblyDescription("")]\r
+[assembly: AssemblyConfiguration("")]\r
+[assembly: AssemblyCompany("")]\r
+[assembly: AssemblyProduct("MCTool")]\r
+[assembly: AssemblyCopyright("Copyright © 2017")]\r
+[assembly: AssemblyTrademark("")]\r
+[assembly: AssemblyCulture("")]\r
+\r
+// Setting ComVisible to false makes the types in this assembly not visible\r
+// to COM components. If you need to access a type in this assembly from\r
+// COM, set the ComVisible attribute to true on that type.\r
+[assembly: ComVisible(false)]\r
+\r
+// The following GUID is for the ID of the typelib if this project is exposed to COM\r
+[assembly: Guid("a64adb88-2cc4-4e46-bc53-643e2c49e179")]\r
+\r
+// Version information for an assembly consists of the following four values:\r
+//\r
+// Major Version\r
+// Minor Version\r
+// Build Number\r
+// Revision\r
+//\r
+// You can specify all the values or you can default the Build and Revision Numbers\r
+// by using the '*' as shown below:\r
+// [assembly: AssemblyVersion("1.0.*")]\r
+[assembly: AssemblyVersion("1.0.0.0")]\r
+[assembly: AssemblyFileVersion("1.0.0.0")]\r
{\r
"title": "Szerkesztő",\r
- "active": false,\r
+ "active": true,\r
"startInTray": false,\r
"enableCustomMetadataId": true,\r
"player": {\r
"$type": "UNCSource",\r
"filter": "avi,wav,mxf",\r
"local": {\r
- "address": "file://c:/x"\r
+ "address": "file://10.10.1.100/BRAAVOS/OCTOPUS"\r
}\r
},\r
"metadatas": [\r
<None Include="Configuration\-configuration-editor.json">\r
<CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
</None>\r
- <None Include="Configuration\-configuration-nle.json">\r
+ <None Include="Configuration\configuration-nle.json">\r
<CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
</None>\r
<None Include="Configuration\-configuration-playout-ingest.json">\r
<None Include="Configuration\-configuration-sxs.json">\r
<CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
</None>\r
- <None Include="Configuration\configuration-studio.json">\r
+ <None Include="Configuration\-configuration-studio.json">\r
<CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
</None>\r
</ItemGroup>\r
HideFolders();\r
btnShowFolders.CheckState = CheckState.Unchecked;\r
} else {\r
+ ResetSourceSearch();\r
ShowFolders();\r
btnShowFolders.CheckState = CheckState.Checked;\r
}\r
}\r
\r
private void picClearFilter_Click(object sender, EventArgs e) {\r
+ ResetSourceSearch();\r
+ }\r
+\r
+ private void ResetSourceSearch() {\r
txtSourceFilter.Text = null;\r
bindingSource.Filter = null;\r
SelectedSource = null;\r
private void txtSourceFilter_KeyDown(object sender, KeyEventArgs e) {\r
if (e.KeyCode != Keys.Return)\r
return;\r
- bindingSource.Filter = txtSourceFilter.Text;\r
- SelectedSource = null;\r
+\r
+ if (btnShowFolders.CheckState == CheckState.Checked) {\r
+ SearchFolders();\r
+ } else {\r
+ bindingSource.Filter = txtSourceFilter.Text;\r
+ SelectedSource = null;\r
+ }\r
+ }\r
+\r
+ private void SearchFolders() {\r
+ throw new NotImplementedException();\r
}\r
\r
private void textSelectedSource_KeyDown(object sender, KeyEventArgs e) {\r
EndProject\r
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MetadataSelector", "MetadataSelector\MetadataSelector.csproj", "{8CB8266D-2229-47E2-B06D-54FDE82CBDC4}"\r
EndProject\r
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MCTool", "MCTool\MCTool.csproj", "{A64ADB88-2CC4-4E46-BC53-643E2C49E179}"\r
+EndProject\r
Global\r
GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
Debug|Any CPU = Debug|Any CPU\r
{8CB8266D-2229-47E2-B06D-54FDE82CBDC4}.Release|x64.Build.0 = Release|Any CPU\r
{8CB8266D-2229-47E2-B06D-54FDE82CBDC4}.Release|x86.ActiveCfg = Release|Any CPU\r
{8CB8266D-2229-47E2-B06D-54FDE82CBDC4}.Release|x86.Build.0 = Release|Any CPU\r
+ {A64ADB88-2CC4-4E46-BC53-643E2C49E179}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+ {A64ADB88-2CC4-4E46-BC53-643E2C49E179}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+ {A64ADB88-2CC4-4E46-BC53-643E2C49E179}.Debug|x64.ActiveCfg = Debug|Any CPU\r
+ {A64ADB88-2CC4-4E46-BC53-643E2C49E179}.Debug|x64.Build.0 = Debug|Any CPU\r
+ {A64ADB88-2CC4-4E46-BC53-643E2C49E179}.Debug|x86.ActiveCfg = Debug|Any CPU\r
+ {A64ADB88-2CC4-4E46-BC53-643E2C49E179}.Debug|x86.Build.0 = Debug|Any CPU\r
+ {A64ADB88-2CC4-4E46-BC53-643E2C49E179}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+ {A64ADB88-2CC4-4E46-BC53-643E2C49E179}.Release|Any CPU.Build.0 = Release|Any CPU\r
+ {A64ADB88-2CC4-4E46-BC53-643E2C49E179}.Release|x64.ActiveCfg = Release|Any CPU\r
+ {A64ADB88-2CC4-4E46-BC53-643E2C49E179}.Release|x64.Build.0 = Release|Any CPU\r
+ {A64ADB88-2CC4-4E46-BC53-643E2C49E179}.Release|x86.ActiveCfg = Release|Any CPU\r
+ {A64ADB88-2CC4-4E46-BC53-643E2C49E179}.Release|x86.Build.0 = Release|Any CPU\r
EndGlobalSection\r
GlobalSection(SolutionProperties) = preSolution\r
HideSolutionNode = FALSE\r
SolutionGuid = {8F7E7365-1678-4775-B9E4-B3993FC028E2}\r
EndGlobalSection\r
GlobalSection(TeamFoundationVersionControl) = preSolution\r
- SccNumberOfProjects = 12\r
+ SccNumberOfProjects = 13\r
SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}\r
SccTeamFoundationServer = https://tfs.userrendszerhaz.hu/tfs/defaultcollection\r
SccLocalPath0 = .\r
SccProjectUniqueName11 = MetadataSelector\\MetadataSelector.csproj\r
SccProjectName11 = MetadataSelector\r
SccLocalPath11 = MetadataSelector\r
+ SccProjectUniqueName12 = MCTool\\MCTool.csproj\r
+ SccProjectName12 = MCTool\r
+ SccLocalPath12 = MCTool\r
EndGlobalSection\r
EndGlobal\r
} else\r
label = String.Format($"{parentStoryID} {story.Name}");\r
\r
+ logger.Debug("Adding story {0} {1}", parentStoryID, label);\r
+ if ("21519676".Equals(parentStoryID)) {\r
+ logger.Debug(":");\r
+ }\r
TreeNode storyNode = treeOctopus.Nodes.Add(parentStoryID, label);\r
storyNode.Tag = story;\r
\r
<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.equinox.http.jetty.http.port=8080 -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/user/jobengine/server/steps" -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 -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_v4.zenium -Djobengine.jobscheduling.config="${workspace_loc}/-configuration/scheduledjobs.json" -Dnexio.host=10.10.1.55"/>\r
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory -Dorg.eclipse.equinox.http.jetty.http.port=8080 -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/user/jobengine/server/steps" -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 -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_v4.zenium -Djobengine.jobscheduling.config="${workspace_loc}/-configuration/scheduledjobs.json" -Dnexio.host=10.10.1.555"/>\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,javassist@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.jdt.core.compiler.batch@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.jvnet.mimepull@default:default,org.objectweb.asm.commons@default:default,org.objectweb.asm.tree@default:default,org.objectweb.asm@default:default,org.reflections@default:default,slf4j.api@default:default,slf4j.simple@default:false"/>\r
</Policies>\r
</RollingFile>\r
<RollingFile name="RollingFileExceptions" fileName="${fileName.err}" filePattern="${filePattern.err}">\r
- <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{1}.%M - %markerSimpleName - %msg (%F:%L)%n %throwable" />\r
+ <PatternLayout pattern="%d{HH:mm:ss.SSS} %logger{1}.%M %msg (%F:%L)%n %throwable" />\r
<Filters>\r
<ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY" />\r
</Filters>\r
]\r
}, \r
{\r
+ "active": false,\r
+ "name" : "Lejárt ISISLON/ARCHIVE_TEMP anyagok törlése",\r
+ "template": "delete-materials.xml",\r
+ "executeimmediate": true,\r
+ "cronexpression": "0 0 0/1 1/1 * ? *",\r
+ "parameters": [ \r
+ {"name": "sourcePath", "value": "/mnt/ISILON/ARCHIVE_TEMP", "type": "java.lang.String"}\r
+ ]\r
+ }, \r
+ {\r
"active": false,\r
"name" : "NEXIO anyagok törlése",\r
"template": "delete-nexio-materials.xml",\r
result.setMediaHouseId(getMetadata(dbObject, MEDIA_HOUSEID));\r
result.setMediaTitle(getMetadata(dbObject, MEDIA_TITLE));\r
result.setMediaDescription(getMetadata(dbObject, MEDIA_DESCRIPTION));\r
-\r
result.setMediaFile(mediaFilePath.toString());\r
result.setCatchedFile(catchedFilePath.toString());\r
\r
logger.catching(e);\r
return null;\r
}\r
+\r
return result;\r
}\r
\r
}\r
}\r
}\r
+ logger.info(getMarker(), "Az archiváló folyamat {} új anyagot érzékelt.", archiveList == null ? 0 : archiveList.size());\r
+\r
return new Object[] { archiveList };\r
}\r
\r
final int[] specialCount = { 0 };\r
dirStream.forEach(p -> {\r
count[0]++;\r
- if (p.getFileName().toString().toLowerCase().equals(PROJECTFOLDER.toLowerCase()))\r
- specialCount[0]++;\r
+ // if (p.getFileName().toString().toLowerCase().equals(PROJECTFOLDER.toLowerCase()))\r
+ // specialCount[0]++;\r
if (p.getFileName().toString().toLowerCase().equals(STATUSFOLDER.toLowerCase()))\r
specialCount[0]++;\r
\r
import java.io.IOException;\r
import java.net.URI;\r
import java.net.URISyntaxException;\r
+import java.util.ArrayList;\r
import java.util.Calendar;\r
import java.util.List;\r
\r
import user.jobengine.server.steps.MetadataTypeDetector.MetadataType;\r
\r
public class CopyForArchiveNEXIOMaterialsStep extends JobStep {\r
+ private class StoryArchive {\r
+ private String mediaHouseId;\r
+ private String mediaTitle;\r
+ private String mediaDesc;\r
+ private List<String> fileNames;\r
+\r
+ public void addFile(String fileName) {\r
+ if (fileNames == null)\r
+ fileNames = new ArrayList<>();\r
+ fileNames.add(fileName);\r
+ }\r
+ }\r
+\r
private static final String MXFEXT = ".MXF";\r
private static final Logger logger = LogManager.getLogger();\r
private static final String NEXIOCLIPS = "nexioclips";\r
private StoreUri targetUri;\r
private OctopusAPI octopusAPI;\r
private IItemManager manager;\r
+\r
private DB db;\r
\r
private int check(int value, String name) {\r
setAndCheck(nexioPort, nexioUserName, nexioPassword, archiveFtp, archiveUserName, archivePassword, jobEngine);\r
octopusAPI = new OctopusAPI();\r
Calendar scheduledDate = Calendar.getInstance();\r
- scheduledDate.add(Calendar.DAY_OF_YEAR, -1 * daysBeforeNow);\r
+ // scheduledDate.add(Calendar.DAY_OF_YEAR, -1 * daysBeforeNow);\r
List<DBObject> rundowns = octopusAPI.getRundowns(scheduledDate.getTime());\r
if (rundowns == null) {\r
logger.warn(getMarker(), "Nem található adástükör a {} napra.", CalendarUtils.toDateString(scheduledDate));\r
return null;\r
}\r
- try {\r
- int index = 1;\r
- for (DBObject r : rundowns) {\r
- setProgress(index * 100 / rundowns.size());\r
- processRundow(r);\r
- index++;\r
+ int index = 1;\r
+\r
+ List<List<StoryArchive>> rundownArchives = null;\r
+ for (DBObject r : rundowns) {\r
+ setProgress(index * 100 / rundowns.size());\r
+ try {\r
+ List<StoryArchive> storyArchive = processRundow(r);\r
+ if (storyArchive.size() > 0) {\r
+ if (rundownArchives == null)\r
+ rundownArchives = new ArrayList<>();\r
+ rundownArchives.add(storyArchive);\r
+ }\r
+ } catch (Exception e) {\r
+ logger.catching(e);\r
+ logger.error(getMarker(),\r
+ "A {} tükör archiválása nem lehetséges, mert a annak ellenőrzése hibát jelzett. A rendszer üzenete: " + e.getMessage());\r
}\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- logger.error(getMarker(), e.getMessage());\r
- throw e;\r
+ index++;\r
}\r
return null;\r
}\r
\r
- private void processMosObject(BasicDBObject rundown, BasicDBObject story, BasicDBObject mosObject) throws Exception {\r
+ private String processMosObject(BasicDBObject rundown, BasicDBObject story, BasicDBObject mosObject) throws Exception {\r
String mosID = mosObject.getString(IOctopusAPI.OBJ_ID);\r
if (MetadataTypeDetector.GuessMetadataType(mosID) != MetadataType.OCTOPUSPLACEHOLDER) {\r
logger.warn("Skipping MOS object {}", mosID);\r
- return;\r
+ return null;\r
}\r
-\r
DBCollection clips = db.getCollection(NEXIOCLIPS);\r
DBObject clip = clips.findOne(new BasicDBObject(LONGNAMEID, mosID));\r
if (clip == null) {\r
logger.info("File NOT exists {}", mosID);\r
- throw new Exception("Not exists");\r
+ throw new Exception(String.format("File NOT exists %s"));\r
} else {\r
logger.info("File exists {}", mosID);\r
}\r
-\r
- BasicDBObject metadata = createMetadata(rundown, story, mosObject);\r
+ return mosID + MXFEXT;\r
}\r
\r
- private void processRundow(DBObject r) throws Exception {\r
+ private List<StoryArchive> processRundow(DBObject r) throws Exception {\r
+ //storyArchive = new ArrayList<>();\r
BasicDBObject rundown = (BasicDBObject) r;\r
long rundownID = rundown.getLong(ID);\r
- logger.info("Processing rundown {}", rundownID);\r
- List<DBObject> stories = octopusAPI.getRundownStories(rundownID);\r
+ logger.info("Processing rundown {} {}", rundownID, rundown.getString(IOctopusAPI.NAME));\r
+ List<DBObject> stories = octopusAPI.getRundownFullStories(rundownID);\r
if (stories == null)\r
- return;\r
- for (DBObject s : stories)\r
- processStory(rundown, s);\r
+ return null;\r
+ List<StoryArchive> storyArchives = null;\r
+ for (DBObject s : stories) {\r
+ StoryArchive storyArchive = processStory(rundown, s);\r
+ if (storyArchive == null)\r
+ continue;\r
+ if (storyArchives == null)\r
+ storyArchives = new ArrayList<>();\r
+ storyArchives.add(storyArchive);\r
+ }\r
+ return storyArchives;\r
}\r
\r
- private void processStory(BasicDBObject rundown, DBObject s) throws Exception {\r
+ private StoryArchive processStory(BasicDBObject rundown, DBObject s) throws Exception {\r
BasicDBObject story = (BasicDBObject) s;\r
String parentStoryID = story.getString(IOctopusAPI.PARENT_STORY_ID);\r
- logger.info("Processing story {}", parentStoryID);\r
+ if (StringUtils.isBlank(parentStoryID)) {\r
+ logger.warn("Story parentStoryID is null: {}", story.toPrettyString(null));\r
+ return null;\r
+ } else\r
+ logger.info("Processing story {}", parentStoryID);\r
List<BasicDBObject> mosObjects = NoSQLUtils.asList(story, IOctopusAPI.MOS_OBJECTS);\r
if (mosObjects == null)\r
- return;\r
- for (BasicDBObject mosObject : mosObjects)\r
- processMosObject(rundown, story, mosObject);\r
+ return null;\r
+ StoryArchive storyArchive = null;\r
+ for (BasicDBObject mosObject : mosObjects) {\r
+ String fileName = processMosObject(rundown, story, mosObject);\r
+ if (fileName == null)\r
+ continue;\r
+ if (storyArchive == null)\r
+ storyArchive = new StoryArchive();\r
+ storyArchive.addFile(fileName);\r
+ }\r
+ return null;\r
\r
}\r
\r
}\r
\r
/*\r
-\r
+ \r
int c = connection.read(buffer, 0, 2);\r
//2 bytes hosszan az idokozben hozzaadott id-k szamossaga\r
if (c < 2) {\r
throw new ProtocolException("c, 2, 2");\r
}\r
//MSB, LSB\r
-\r
+ \r
return nofIds;\r
*/\r
return ret;\r
collection.save(clip);\r
onUpdate(clip);\r
}\r
- } else {\r
- logger.error("Not found {}, XID based clip is {}", id, clipForName.toPrettyString(null));\r
- }\r
+ } else if (clipForName != null) {\r
+ clip.put("_id", clipForName.get("_id"));\r
+ if (!clip.equals(clipForName)) {\r
+ collection.save(clip);\r
+ onUpdate(clip);\r
+ }\r
+ } else\r
+ logger.error("Clip not found {} {}", id, xid);\r
}\r
}\r
\r
static final String STORYID = "storyId";\r
static final String FORMAT = "format";\r
\r
+ List<DBObject> getRundownFullStories(long id);\r
+\r
List<DBObject> getRundowns(Date scheduledDate);\r
\r
List<DBObject> getRundownsByParentStoryID(String storyID);\r
return result;\r
}\r
\r
+ @Override\r
+ public List<DBObject> getRundownFullStories(long id) {\r
+ List<DBObject> result = null;\r
+ DBCollection collection = db.getCollection(STORY_COLLECTION);\r
+ DBCursor find = collection.find(new BasicDBObject(REF_RUNDOWN, new BasicDBObject($ELEMMATCH, new BasicDBObject(ID, id))))\r
+ .sort(new BasicDBObject("name", 1));\r
+ if (find.hasNext())\r
+ result = find.toArray();\r
+ return result;\r
+ }\r
+\r
@Override\r
public List<DBObject> getRundowns(Date scheduledDate) {\r
List<DBObject> result = null;\r
private static final String FIELDS_STORIES = "stories,Story.modified,Story.name,Story.id,Story.mosObjects,Story.script,Story.type,Story.format,Story.customColumns,CustomColumn.label,CustomColumn.value";\r
private static final String FIELDS_SLUGS = "slugs,Slug.story,Slug.position,Story.name,Story.id,Story.modified,Story.mosObjects,Story.script,Story.type,Story.format,Story.customColumns,CustomColumn.label,CustomColumn.value";\r
private static final String FIELDS_RUNDOWN_LIST = "id,name,modified,scheduledStart,rundownType,RundownType.name,slugs,Slug.storyId,Slug.position";\r
- private static final String FIELDS_STORY_FOLDER_LIST = "id,name,modified,stories,Story.id";\r
+ // private static final String FIELDS_STORY_FOLDER_LIST = "id,name,modified,stories,Story.id";\r
+ private static final String FIELDS_STORY_FOLDER_LIST = "id,name,modified";\r
private static final String RUNDOWN = "Rundown";\r
private static final String OCTOPUS_DEVICE_NAME = "Octopus-Device-Name";\r
private static final String OCTOPUS_DEVICE_ID = "Octopus-Device-Id";\r
Response response = query(String.format("%s/", RUNDOWN) + id, fields).get();\r
String json = response.readEntity(String.class);\r
BasicDBObject resultObject = (BasicDBObject) JSONUtil.jsonToDbObject(json);\r
- if (resultObject != null)\r
+ if (resultObject == null)\r
+ logger.error("Rundown {} is not available", id);\r
+ else\r
result = NoSQLUtils.asDBObject(resultObject, RESULT);\r
logger.trace(EXIT);\r
return result;\r
String name = rundown.containsKey(IOctopusAPI.NAME) ? rundown.getString(IOctopusAPI.NAME) : null;\r
logger.debug("Storing rundown {} {}", name, rundown.get(IOctopusAPI.SCHEDULED_START));\r
BasicDBObject rundownWithStories = queryRundown(rundownID);\r
- BasicDBList stories = NoSQLUtils.asDBList(rundownWithStories, IOctopusAPI.SLUGS);\r
- if (stories != null)\r
- storeRundownStories(stories, lastUpdateTime);\r
- rundown.put(IOctopusAPI.SCHEDULED_START, toDate(rundown, IOctopusAPI.SCHEDULED_START));\r
- rundown.put(IOctopusAPI.MODIFIED, toDate(rundown, IOctopusAPI.MODIFIED));\r
- DBCollection collection = db.getCollection(RUNDOWN_COLLECTION);\r
- if (lastUpdateTime == null || (lastUpdateTime != null && isModified(lastUpdateTime, rundown))) {\r
- logger.debug(SAVING_RUNDOWN, rundownID, name);\r
- collection.save(rundown);\r
+ if (rundownWithStories != null) {\r
+ BasicDBList stories = NoSQLUtils.asDBList(rundownWithStories, IOctopusAPI.SLUGS);\r
+ if (stories != null)\r
+ storeRundownStories(stories, lastUpdateTime);\r
+ rundown.put(IOctopusAPI.SCHEDULED_START, toDate(rundown, IOctopusAPI.SCHEDULED_START));\r
+ rundown.put(IOctopusAPI.MODIFIED, toDate(rundown, IOctopusAPI.MODIFIED));\r
+ DBCollection collection = db.getCollection(RUNDOWN_COLLECTION);\r
+ if (lastUpdateTime == null || (lastUpdateTime != null && isModified(lastUpdateTime, rundown))) {\r
+ logger.debug(SAVING_RUNDOWN, rundownID, name);\r
+ collection.save(rundown);\r
+ }\r
}\r
logger.trace(EXIT);\r
}\r
--- /dev/null
+--MEDIAFILE\r
+select * from mediafile f where f.mediaid in (select mediaid from vw_mediafiles where mediafilecount = 1)\r
+delete from mediafile f where f.mediaid in (select mediaid from vw_mediafiles where mediafilecount = 1)\r
+select * from mediafile f where f.mediaid in (select id from media where created > '2017-12-08')\r
+delete from mediafile f where f.mediaid in (select id from media where created > '2017-12-08')\r
+\r
+\r
+--MEDIA\r
+CREATE VIEW vw_mediafiles as select mediaid, count(*) as mediafilecount from mediafile group by (mediaid)\r
+select m.id, m.title, m.created,f.mediafilecount from media m right outer join vw_mediafiles f on (f.mediaid = m.id) where m.created > '2017-12-08'\r
+select m.itemid, m.id, m.itemtypeid, m.title, m.created,f.mediafilecount from media m left outer join vw_mediafiles f on (f.mediaid = m.id) where f.mediafilecount is null\r
+select m.itemid, m.id, m.itemtypeid, m.title, m.created,f.mediafilecount from media m left outer join vw_mediafiles f on (f.mediaid = m.id) where f.mediafilecount = 1\r
+delete from media where id in (select m.id from media m left outer join vw_mediafiles f on (f.mediaid = m.id) where f.mediafilecount is null)\r
+\r
+\r
+\r
+--ITEM\r
+CREATE VIEW vw_medias as select itemid, count(*) as mediacount from media group by (itemid)\r
+select i.id, i.title, i.created, m.mediacount from item i left outer join vw_medias m on (m.itemid = i.id) where m.mediacount is null\r
+delete from item where id in (select i.id from item i left outer join vw_medias m on (m.itemid = i.id) where m.mediacount is null)\r
+\r
+\r
+\r
+insert into media (id, itemid, title, ITEMTYPEID, houseid, length) values (13985, 13045, 'xxx', 2, 'xxx', 0)\r
+\r
+select * from media fetch first 10 rows only\r
+\r
+select id from item where created > '2017-12-08'\r
+\r
+SELECT C.TABSCHEMA, C.TABNAME,\r
+C.COLNAME\r
+FROM SYSCAT.TABLES AS T,\r
+SYSCAT.COLUMNS AS C\r
+WHERE T.TBSPACEID = 2\r
+AND T.TABLEID = 14\r
+AND C.COLNO = 0\r
+AND C.TABSCHEMA = T.TABSCHEMA\r
+AND C.TABNAME = T.TABNAME\r
<div height="100%" width="100%" style="background: #e3e3e3" align="left">\r
<groupbox height="94%" closable="false">\r
<caption sclass="boldfont" label="Aktív folyamatok" />\r
- <listbox id="lbJobList" sizedByContent="false" model="@load(jlm.jobList)" multiple="true" autopaging="true" mold="paging" vflex="true" checkmark="true" \r
- onSelect="@command('selectJob')" style="border: none; background: #e3e3e3 !important;" oddRowSclass="listbox-odd-style" sclass="listbox-normal-style" >\r
+ <listbox id="lbJobList" sizedByContent="false" model="@load(jlm.jobList)" multiple="true" autopaging="false" mold="paging" vflex="true" checkmark="true" \r
+ onSelect="@command('selectJob')" style="border: none; background: #e3e3e3 !important;" oddRowSclass="listbox-odd-style" sclass="listbox-normal-style" \r
+ emptyMessage="Nincs futó folyamat.">\r
<listhead sizable="true">\r
- <listheader label="Id" hflex="min" align="left"/>\r
- <listheader label="Indítás" hflex="min" align="left"/>\r
- <listheader label="Kész" hflex="min" align="left"/>\r
- <listheader label="Név" hflex="min" align="left"/>\r
- <listheader label="Prioritás" hflex="min" align="left"/>\r
- <listheader label="Állapot" hflex="min" align="left"/>\r
- <listheader label="Készültség" width="100px" align="left"/>\r
- <listheader label="Üzenet" align="max"/>\r
+ <listheader label="Id" hflex="min" align="left" sort="auto"/>\r
+ <listheader label="Indítás" hflex="min" align="left" sort="auto"/>\r
+ <listheader label="Kész" hflex="min" align="left" sort="auto"/>\r
+ <listheader label="Név" hflex="min" align="left" sort="auto"/>\r
+ <listheader label="Prioritás" hflex="min" align="left" sort="auto"/>\r
+ <listheader label="Állapot" hflex="min" align="left" sort="auto"/>\r
+ <listheader label="Készültség" width="100px" align="left" sort="auto"/>\r
+ <listheader label="Üzenet" align="max" sort="auto"/>\r
</listhead>\r
\r
<template name="model">\r
<west border="none" size="25%" splittable="true" minsize="250">\r
<div height="100%" width="100%">\r
<groupbox vflex="min" closable="false">\r
- <caption sclass="boldfont" label="Kereső" />\r
- <textbox style="border:none" instant="true" value="@bind(svm.searchValue)" width="100%" tooltiptext="Keresőérték"\r
+<!-- <caption sclass="boldfont" label="Kereső" /> -->\r
+ <textbox style="border:none" instant="true" value="@bind(svm.searchValue)" width="100%" tooltiptext="Gépelje be a keresendő kifejezést és nyomja meg az Enter-t."\r
onOK="@command('doSearch')" />\r
<!-- <button sclass="buttonboldfont" label="${labels.button_search}" onClick="@command('doSearch')" autodisable="self" /> -->\r
</groupbox>\r
List<Job> runningJobs = itemManager.getRunningJobs(template.getFileName());
if (runningJobs != null) {
for (Job job : runningJobs) {
- if (getJob(job.getId()) != null)
- throw new JobEngineException(String.format("Can not submit job. Job with %s already running", template));
+ Job runningJob = getJob(job.getId());
+ if (runningJob != null && runningJob.getStatus() != JobStatus.SUSPENDED)
+ throw new JobEngineException(
+ String.format("Can not submit job. Job with %s.%s already running", template.getFileName(), template.getName()));
}
}
}
package user.jobengine.zk.model;\r
\r
import java.util.ArrayList;\r
-import java.util.Collections;\r
import java.util.HashMap;\r
import java.util.List;\r
import java.util.Map;\r
// for (IEntityBase entity : allItems) {\r
// jobList.add(new JobRuntime((IJob) entity));\r
// }\r
- Collections.sort(jobList, (o1, o2) -> compare(o1, o2));\r
+\r
+ //Collections.sort(jobList, (o1, o2) -> compare(o1, o2));\r
}\r
\r
public boolean isShutdownDisabled() {\r
colors.put("INGEST", new Color("red"));\r
colors.put("Betöltés", new Color("green"));\r
colors.put("Adáskész", new Color("blue"));\r
+ colors.put("Archiválás", new Color("orange"));\r
+ colors.put("Újravágás", new Color("brown"));\r
}\r
\r
private IItemManager itemManager = null;\r
data.put("Started", action.getStarted());\r
data.put("Source", action.getSource());\r
data.put("Destination", action.getDestination());\r
- data.put("Tag", color == null ? "lightgray" : color.toString());\r
+ data.put("Tag", action.getTag());\r
data.put("Successful", action.isSuccessful());\r
data.put("UserName", action.getUserName());\r
addPoint(series, x, y, data.toString(), color);\r