--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<launchConfiguration type="org.eclipse.jdt.launching.remoteJavaApplication">\r
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">\r
+<listEntry value="/user.jobengine.osgi.server"/>\r
+</listAttribute>\r
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">\r
+<listEntry value="4"/>\r
+</listAttribute>\r
+<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/>\r
+<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <sourceLookupDirector> <sourceContainers duplicates="false"> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;javaProject name=&quot;user.commons.zk&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/commons-codec-1.10.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/commons-fileupload-1.2.1.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/commons-io-1.4.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/commons-logging-1.1.1.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zcommon.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zel.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zhtml.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk_bsh.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk_commons-collections.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk_elinez.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk_eplotz.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk_Filters.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk_flashchart.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk_gmapsz.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk_jackson-annotations.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk_jackson-core.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk_jackson-databind.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk_jasperreports.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk_javassist.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk_jcommon.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk_jfreechart.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk_jsp.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk_monitor.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk_psz.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk_sapphire.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk_shchart.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk_silvertail.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk_timelinez.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk_timeplotz.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk_zuljsp.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zk.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zkbind.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zkcharts.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zkex_r.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zkmax.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zkplus.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zml.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zsoup.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zul.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zuti.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.commons.zk/lib\/zweb.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;javaProject name=&quot;user.mediacube.gui&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.mediacube.gui/WEB-INF\/classes&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;javaProject name=&quot;user.mediacube.metadata&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;javaProject name=&quot;user.commons.log4j2&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;javaProject name=&quot;user.jobengine.executors&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;javaProject name=&quot;user.jobengine.osgi.commons&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;javaProject name=&quot;user.jobengine.osgi.db&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;javaProject name=&quot;user.jobengine.osgi.server&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zkcharts.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/classes&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/commons-codec-1.10.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/commons-fileupload-1.2.1.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/commons-io-1.4.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/commons-logging-1.1.1.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zcommon.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zel.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zhtml.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_bsh.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_commons-collections.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_elinez.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_eplotz.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_Filters.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_flashchart.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_gmapsz.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_jackson-annotations.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_jackson-core.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_jackson-databind.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_jasperreports.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_javassist.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_jcommon.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_jfreechart.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_jsp.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_monitor.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_psz.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_sapphire.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_shchart.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_silvertail.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_timelinez.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_timeplotz.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_zuljsp.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zkbind.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zkex_r.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zkmax.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zkplus.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zml.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zsoup.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zul.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zuti.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;packageFragmentRoot handle=&quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zweb.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;javaProject name=&quot;user.jobengine.osgi.services&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;javaProject name=&quot;user.tsm.client&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> </sourceContainers> </sourceLookupDirector> "/>\r
+<booleanAttribute key="org.eclipse.jdt.launching.ALLOW_TERMINATE" value="false"/>\r
+<mapAttribute key="org.eclipse.jdt.launching.CONNECT_MAP">\r
+<mapEntry key="hostname" value="10.11.1.90"/>\r
+<mapEntry key="port" value="9999"/>\r
+</mapAttribute>\r
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="user.jobengine.osgi.server"/>\r
+<stringAttribute key="org.eclipse.jdt.launching.VM_CONNECTOR_ID" value="org.eclipse.jdt.launching.socketAttachConnector"/>\r
+</launchConfiguration>\r
--- /dev/null
+package hu.user.mediacube.executors.tests;\r
+\r
+import groovy.lang.GroovyClassLoader;\r
+\r
+public class GGGClassLoader extends GroovyClassLoader {\r
+\r
+}\r
package hu.user.mediacube.executors.tests;\r
\r
+import static org.junit.Assert.assertFalse;\r
import static org.junit.Assert.assertNotNull;\r
+import static org.junit.Assert.assertTrue;\r
\r
import java.io.File;\r
+import java.io.IOException;\r
+import java.lang.reflect.Method;\r
import java.nio.file.DirectoryStream;\r
import java.nio.file.Files;\r
import java.nio.file.Path;\r
return new DecimalFormat("#,##0.#").format(size / Math.pow(1024, digitGroups)) + " " + units[digitGroups];\r
}\r
\r
+ Class<?> parseClassHierarchy(GroovyClassLoader cl, String root, String className) throws IOException {\r
+ System.out.println("Loading " + className);\r
+ Path path = Paths.get(root, className + ".java");\r
+ Class<?> result = null;\r
+ if (!path.toFile().exists())\r
+ return result;\r
+ List<String> lines = Files.readAllLines(path);\r
+\r
+ for (String line : lines) {\r
+ if (line.contains("extends")) {\r
+ String[] tokens = line.split("extends");\r
+ String parent = tokens[tokens.length - 1];\r
+ parent = parent.replace("{", "").trim();\r
+\r
+ parseClassHierarchy(cl, root, parent);\r
+ break;\r
+ }\r
+ }\r
+ result = cl.parseClass(path.toFile());\r
+ return result;\r
+ }\r
+\r
@Test\r
public void test0() throws Exception {\r
File f = new File("/opt/test.txt");\r
public void test9995() throws Exception {\r
String className = "TestStep1";\r
String root = "/opt/steps";\r
+\r
try (GroovyClassLoader cl = new GroovyClassLoader(this.getClass().getClassLoader())) {\r
- List<String> lines = Files.readAllLines(Paths.get(root, className + ".java"));\r
- String packageName = null;\r
- for (String line : lines) {\r
- String trimedLine = line.trim();\r
- if (trimedLine.startsWith("package")) {\r
- packageName = trimedLine.replace("package", "").replace(";", ".");\r
- }\r
\r
- if (packageName != null && trimedLine.startsWith("import") && trimedLine.contains(packageName)) {\r
- System.out.println(trimedLine);\r
- }\r
- }\r
+ Class<?> myClass = parseClassHierarchy(cl, root, className);\r
+ System.out.println(myClass.getCanonicalName());\r
+ Method method = myClass.getMethod("execute");\r
+ method.invoke(myClass.newInstance());\r
+ } catch (Exception e) {\r
+ throw e;\r
+ }\r
\r
- // Class<?> myClass = cl.parseClass(Paths.get("/opt/steps/TestStep1.java").toFile());\r
- // System.out.println(myClass.getCanonicalName());\r
- // Method method = myClass.getMethod("execute");\r
- // method.invoke(myClass.newInstance());\r
+ }\r
+\r
+ @Test\r
+ public void test9996() throws Exception {\r
+ String className = "TestStep1";\r
+ String root = "/opt/steps";\r
+\r
+ try (GroovyClassLoader cl = new GroovyClassLoader(this.getClass().getClassLoader())) {\r
+ Path path = Paths.get(root, className + ".java");\r
+ cl.addURL(path.toUri().toURL());\r
+ Class<?> myClass = cl.loadClass("user.jobengine.server.steps.TestStep1", true, true);\r
+ System.out.println(myClass.getCanonicalName());\r
+ Method method = myClass.getMethod("execute");\r
+ method.invoke(myClass.newInstance());\r
} catch (Exception e) {\r
throw e;\r
}\r
\r
}\r
+\r
+ @Test\r
+ public void test9997() throws Exception {\r
+ Path sut = Paths.get("/opt/test.mxf");\r
+ Path catched = Paths.get("/opt/.STATUS/test.mxf.catched");\r
+ assertFalse(catched.toFile().exists());\r
+ assertFalse(EscortFiles.isMediaCatched(sut));\r
+\r
+ EscortFiles.createMediaCatch(sut);\r
+\r
+ assertTrue(catched.toFile().exists());\r
+ assertTrue(EscortFiles.isMediaCatched(sut));\r
+\r
+ EscortFiles.removeMediaCatch(sut);\r
+ assertFalse(catched.toFile().exists());\r
+ assertFalse(EscortFiles.isMediaCatched(sut));\r
+ }\r
}\r
import user.jobengine.db.Item;\r
import user.jobengine.db.ItemManager;\r
import user.jobengine.db.Media;\r
+import user.jobengine.server.steps.MetadataType;\r
import user.jobengine.server.steps.MetadataTypeDetector;\r
-import user.jobengine.server.steps.MetadataTypeDetector.MetadataType;\r
import user.jobengine.server.steps.PlanAirExtensions;\r
\r
public class SupportCheckItem {\r
import user.jobengine.db.ItemManager;\r
import user.jobengine.db.MediaFile;\r
import user.jobengine.db.Store;\r
+import user.jobengine.server.steps.MetadataType;\r
import user.jobengine.server.steps.MetadataTypeDetector;\r
-import user.jobengine.server.steps.MetadataTypeDetector.MetadataType;\r
import user.jobengine.server.steps.PlanAirExtensions;\r
\r
public class SupportCleanMissingTSM {\r
mi.process();\r
\r
if (isHD(mi)) {\r
- logger.info(marker, "%s is HD", sourceFileName);\r
+ logger.info(marker, "{} is HD", sourceFileName);\r
return;\r
}\r
\r
if (isSD_HIGH_16_9(mi)) {\r
- logger.info(marker, "%s is SD_HIGH_16_9", sourceFileName);\r
+ logger.info(marker, "{} is SD_HIGH_16_9", sourceFileName);\r
return;\r
}\r
\r
if (isSD_HIGH_4_3(mi)) {\r
- logger.info(marker, "%s is SD_HIGH_4_3", sourceFileName);\r
+ logger.info(marker, "{} is SD_HIGH_4_3", sourceFileName);\r
return;\r
}\r
\r
if (isSD_MAIN_422(mi)) {\r
- logger.info(marker, "%s is SD_MAIN_422", sourceFileName);\r
+ logger.info(marker, "{} is SD_MAIN_422", sourceFileName);\r
return;\r
}\r
} catch (Exception e) {\r
</output>\r
</outputs>\r
</calljobstep>\r
- <calljobstep id="id2" type="user.jobengine.server.steps.TSMBackupStep" weight="1">\r
+ <calljobstep type="user.jobengine.server.steps.MediaToolStep" weight="1">\r
<inputs>\r
<input>\r
<parameter name="archiveItem" />\r
<input>\r
<variable name="mediaCubeMedia" />\r
</input>\r
- <input>\r
- <parameter name="killDateDays" />\r
- </input>\r
</inputs>\r
- </calljobstep>\r
- <calljobstep type="user.jobengine.server.steps.MediaToolStep" weight="1">\r
+ </calljobstep> \r
+ <calljobstep id="id2" type="user.jobengine.server.steps.TSMBackupStep" weight="1">\r
<inputs>\r
<input>\r
<parameter name="archiveItem" />\r
<input>\r
<variable name="mediaCubeMedia" />\r
</input>\r
+ <input>\r
+ <parameter name="killDateDays" />\r
+ </input>\r
</inputs>\r
- </calljobstep> \r
+ </calljobstep>\r
</commands>\r
</jobtemplate>
\ No newline at end of file
\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.attribute.PosixFilePermission;\r
import java.nio.file.attribute.PosixFilePermissions;\r
import java.text.SimpleDateFormat;\r
+import java.util.Arrays;\r
import java.util.Date;\r
import java.util.List;\r
+import java.util.Map;\r
import java.util.Set;\r
\r
import org.apache.commons.io.FilenameUtils;\r
\r
import com.ibm.nosql.json.api.BasicDBObject;\r
\r
+import user.commons.JobStatus;\r
import user.commons.ListUtils;\r
+import user.commons.mediatool.MediaInfo;\r
+import user.jobengine.server.IJobEngine;\r
import user.jobengine.server.IJobRuntime;\r
import user.mediacube.metadata.interfaces.IMetadata;\r
import user.mediacube.metadata.interfaces.IMetadataProvider;\r
import user.mediacube.metadata.interfaces.MetadataType;\r
import user.mediacube.metadata.interfaces.PlanAirMetadataListOptions;\r
\r
-public class ArchiveRecursive extends JobStep {\r
+public class ArchiveRecursive extends JobStep implements FileVisitor<Path> {\r
private static final Logger logger = LogManager.getLogger();\r
private static final String JOBTEMPLATE = "archive-material.xml";\r
private static final String ITEM_TITLE = "itemTitle";\r
private static final String KILL_DATE_DAYS = "killDateDays";\r
private static final String CONFLICT = ".CONFLICT";\r
private SimpleDateFormat df = new SimpleDateFormat("yyyy.MM.dd");\r
+ private String sourcePath;\r
+\r
+ private List<String> skipPathNames = Arrays.asList("!ARCHIVALAS_ALATT", "Transfered", "VASAROLT", EscortFiles.STATUSFOLDER, EscortFiles.CONFLICTFOLDER);\r
+ private int limit;\r
+ private int submitted;\r
+ private int killDateDays;\r
+\r
+ private boolean canReadMediaInfo(Path mediaFilePath) {\r
+ boolean result = false;\r
+ try {\r
+ MediaInfo mi = new MediaInfo(mediaFilePath);\r
+ mi.process();\r
+ result = true;\r
+ } catch (Exception e) {\r
+ logger.warn(getSessionMarker(), e.getMessage());\r
+ }\r
+ return result;\r
+ }\r
+\r
+ private void checkArchiveItem(ArchiveItem archiveItem, Path mediaPath) throws Exception {\r
+ if (archiveItem == null)\r
+ throw new Exception(mediaPath + " has no metadata specified.");\r
+\r
+ if (StringUtils.isBlank(archiveItem.getItemHouseId()))\r
+ throw new Exception(mediaPath + " has no Item HouseID specified in metadata.");\r
+\r
+ if (StringUtils.isBlank(archiveItem.getItemTitle()))\r
+ throw new Exception(mediaPath + " has no Item Title specified in metadata.");\r
+\r
+ if (StringUtils.isBlank(archiveItem.getMediaHouseId()))\r
+ throw new Exception(mediaPath + " has no Media HouseID specified in metadata.");\r
+\r
+ if (StringUtils.isBlank(archiveItem.getMediaTitle()))\r
+ throw new Exception(mediaPath + " has no Media Title specified in metadata.");\r
+ }\r
\r
private ArchiveItem createArchiveItem(Path filePath) throws Exception {\r
ArchiveItem result = null;\r
result.setMediaHouseId(mediaHouseId);\r
result.setMediaTitle(fileName);\r
//TODO kesobb kivenni\r
- result.setMediaDescription("/OMARCHIVE");\r
+ //result.setMediaDescription("/OMARCHIVE");\r
result.setMediaType("Generic");\r
}\r
\r
\r
@StepEntry\r
public Object[] execute(String sourcePath, int killDateDays, int limit) {\r
- DirectoryStream<Path> directoryStream = null;\r
+ this.sourcePath = sourcePath;\r
+ this.killDateDays = killDateDays;\r
+ this.limit = limit;\r
try {\r
- DirectoryStream<Path> stream = Files.newDirectoryStream(Paths.get(sourcePath));\r
- int current = 0;\r
- for (Path p : stream) {\r
- if (processPathItem(p, killDateDays))\r
- current++;\r
- if (current == limit)\r
- return null;\r
- }\r
+ Files.walkFileTree(Paths.get(sourcePath), this);\r
} catch (Exception e) {\r
- logger.error(getSessionMarker(), "Az '{}' mappa elérése sikertelen. A rendszer hibaüzenete: {}", e.getMessage());\r
- } finally {\r
- if (directoryStream != null) {\r
- try {\r
- directoryStream.close();\r
- } catch (IOException e) {\r
- }\r
- }\r
+ logger.error(getSessionMarker(), "Az '{}' mappa elérése sikertelen. A rendszer hibaüzenete: {}", sourcePath, e.getMessage());\r
}\r
-\r
return null;\r
}\r
\r
return result;\r
}\r
\r
- private boolean handleConflict(Path sourcePath) throws Exception {\r
+ private boolean handleArchiveConflict(Path sourcePath) throws Exception {\r
boolean result = false;\r
String sourceFileName = sourcePath.getFileName().toString();\r
if (getManager().isMediaFileExists(sourceFileName)) {\r
return result;\r
}\r
\r
- private boolean processPathItem(Path mediaFilePath, int killDateDays) throws Exception {\r
- File mediaFile = mediaFilePath.toFile();\r
- if (mediaFile.isDirectory())\r
- return false;\r
-\r
- Path dotStorePath = Paths.get(mediaFilePath.getParent().toString(), EscortFiles.STATUSFOLDER, mediaFilePath.getFileName().toString());\r
+ @Override\r
+ public FileVisitResult postVisitDirectory(Path paramT, IOException paramIOException) throws IOException {\r
+ return FileVisitResult.CONTINUE;\r
+ }\r
\r
- if (EscortFiles.isCatchedFileExists(dotStorePath))\r
- return false;\r
+ @Override\r
+ public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes paramBasicFileAttributes) throws IOException {\r
+ Path dirName = dir.getFileName();\r
\r
- //mar letezik az archivumban, atmozgatjuk\r
- if (handleConflict(mediaFilePath))\r
- return false;\r
+ if (skipPathNames.contains(dirName.toString())) {\r
+ //logger.info("Skipping {}", dir);\r
+ return FileVisitResult.SKIP_SUBTREE;\r
+ } else\r
+ logger.info("PreVisit {}", dir);\r
\r
- ArchiveItem archiveItem = createArchiveItem(mediaFilePath);\r
+ return FileVisitResult.CONTINUE;\r
+ }\r
\r
- if (archiveItem == null) {\r
- logger.warn("{} has no metadata specified.", mediaFile.getName());\r
+ private boolean processPathItem(Path mediaPath) throws Exception {\r
+ if (submitted == limit)\r
return false;\r
- }\r
\r
- if (StringUtils.isBlank(archiveItem.getItemHouseId())) {\r
- logger.warn("{} has no Item HouseID specified in metadata.", mediaFile.getName());\r
+ File mediaFile = mediaPath.toFile();\r
+ if (mediaFile.isDirectory())\r
return false;\r
- }\r
\r
- if (StringUtils.isBlank(archiveItem.getItemTitle())) {\r
- logger.warn("{} has no Item Title specified in metadata.", mediaFile.getName());\r
+ if (EscortFiles.isMediaCatched(mediaPath))\r
return false;\r
- }\r
\r
- if (StringUtils.isBlank(archiveItem.getMediaHouseId())) {\r
- logger.warn("{} has no Media HouseID specified in metadata.", mediaFile.getName());\r
+ if (!canReadMediaInfo(mediaPath))\r
return false;\r
- }\r
\r
- if (StringUtils.isBlank(archiveItem.getMediaTitle())) {\r
- logger.warn("{} has no Media Title specified in metadata.", mediaFile.getName());\r
+ if (handleArchiveConflict(mediaPath))\r
return false;\r
- }\r
+\r
+ ArchiveItem archiveItem = createArchiveItem(mediaPath);\r
\r
try {\r
- IJobRuntime runtime = getEngine().submit(JOBTEMPLATE, ARCHIVE, ListUtils.asMap(ARCHIVE_ITEM, archiveItem, KILL_DATE_DAYS, killDateDays));\r
+ checkArchiveItem(archiveItem, mediaPath);\r
+ submitted++;\r
+\r
+ Map<String, Object> parameters = ListUtils.asMap(ARCHIVE_ITEM, archiveItem, KILL_DATE_DAYS, killDateDays);\r
+ IJobRuntime runtime = getEngine().submit(null, e -> {\r
+ if (e.getStatus().equals(JobStatus.CANCELED) || e.getStatus().equals(JobStatus.SUSPENDED))\r
+ EscortFiles.removeMediaCatch(mediaPath);\r
+ }, JOBTEMPLATE, ARCHIVE, 1, IJobEngine.DEFAULT_OWNER, parameters);\r
if (runtime == null)\r
throw new Exception("Submit returned null runtime");\r
\r
- EscortFiles.createCatchedFile(dotStorePath);\r
+ EscortFiles.createMediaCatch(mediaPath);\r
} catch (Exception e) {\r
String fileName = new File(archiveItem.getMediaFile()).getName();\r
logger.error(getSessionMarker(), "Az '{}' állomány archiválási kísérlete sikertelen. A rendszer üzenete: {}", fileName, e.getMessage());\r
- throw e;\r
}\r
\r
return true;\r
}\r
+\r
+ @Override\r
+ public FileVisitResult visitFile(Path filePath, BasicFileAttributes paramBasicFileAttributes) throws IOException {\r
+ //logger.info("Will archived {}", filePath);\r
+ try {\r
+ processPathItem(filePath);\r
+ } catch (Exception e) {\r
+ logger.catching(e);\r
+ }\r
+ return FileVisitResult.CONTINUE;\r
+ }\r
+\r
+ @Override\r
+ public FileVisitResult visitFileFailed(Path filePath, IOException paramIOException) throws IOException {\r
+ logger.info("Error archive {}", filePath);\r
+ return FileVisitResult.CONTINUE;\r
+ }\r
}\r
\r
private static boolean isEmpty(final Path directory) throws IOException {\r
try (DirectoryStream<Path> dirStream = Files.newDirectoryStream(directory)) {\r
- final int[] count = { 0 };\r
- final int[] specialCount = { 0 };\r
+ final int[] count = new int[] { 0 };\r
+ final int[] specialCount = new int[] { 0 };\r
dirStream.forEach(p -> {\r
count[0]++;\r
// if (p.getFileName().toString().toLowerCase().equals(PROJECTFOLDER.toLowerCase()))\r
\r
private Marker marker;\r
\r
- final int[] allCount = { 0 };\r
- final int[] currentCount = { 0 };\r
+ final int[] allCount = new int[] { 0 };\r
+ final int[] currentCount = new int[] { 0 };\r
\r
private Path sourcePath;\r
private SimpleDateFormat dateFormat;\r
private void processPathItem(Path filePath) {\r
currentCount[0]++;\r
\r
- setProgress(currentCount[0] * 100 / allCount[0]);\r
+ int progress = currentCount[0] * 100 / allCount[0];\r
+ setProgress(progress);\r
\r
logger.info("Checking {}", filePath);\r
List<Path> killDateFiles = getKillDateFiles(filePath);\r
\r
removeFile(Paths.get(filePath.toString() + EWC2EXT));\r
removeFile(Paths.get(filePath.toString() + XMPEXT));\r
- removeFile(Paths.get(Paths.get(filePath.getParent().toString(), STATUSFOLDER, filePath.getFileName().toString()) + CATCHEDEXT));\r
- removeFile(Paths.get(Paths.get(filePath.getParent().toString(), STATUSFOLDER, filePath.getFileName().toString()) + JSONEXT));\r
+ removeFile(Paths.get(filePath.getParent().toString(), STATUSFOLDER, filePath.getFileName().toString() + CATCHEDEXT));\r
+ removeFile(Paths.get(filePath.getParent().toString(), STATUSFOLDER, filePath.getFileName().toString() + JSONEXT));\r
\r
boolean result = true;\r
for (Path killDateFile : killDateFiles) {\r
import user.jobengine.db.IItemManager;\r
import user.jobengine.server.IJobEngine;\r
import user.jobengine.server.IJobRuntime;\r
-import user.jobengine.server.steps.MetadataTypeDetector.MetadataType;\r
\r
public class CopyForArchiveNEXIOMaterialsStep extends JobStep {\r
private static final String SCHEDULED_FORMAT = "yyyy.MM.dd HH:mm";\r
} finally {\r
setProgress(100);\r
}\r
- Object[] result = { archiveItem };\r
- return result;\r
+ return new Object[] { archiveItem };\r
}\r
}\r
\r
@StepEntry\r
public Object[] execute(String localHiresPath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
- Object[] result = { null, null, "%s", null, 0, true };\r
+ Object[] result = new Object[] { null, null, "%s", null, 0, true };\r
marker = (MediaCubeMarker) jobRuntime.getSessionMarker();\r
DB db = NoSQLUtils.getNoSQLDB();\r
DBCollection collection = db.getCollection("missing_lowres");\r
}\r
\r
private Media getFirstUntranscodedMedia(IItemManager manager, DBCollection collection) {\r
- Media[] result = { null };\r
+ Media[] result = new Media[] { null };\r
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
manager.executeQuery(query, rs -> {\r
try {\r
private static final String KILLDATE_FILENAME = "%s.%s.killdate";\r
private static final String FORMAT_KILLDATENAME = "yyyyMMdd";\r
public static final String STATUSFOLDER = ".STATUS";\r
+ public static final String CONFLICTFOLDER = ".CONFLICT";\r
\r
public static String composeKillDate(int days) {\r
Calendar killDate = Calendar.getInstance();\r
Files.copy(Paths.get(escortFile), Paths.get(escortFile + "." + extension));\r
}\r
\r
+ /***\r
+ * A media eleresi utjan alapjan a .STATUS almappaban letrehozza a .catch fajlt.\r
+ *\r
+ * @param mediaFile\r
+ * @throws IOException\r
+ */\r
+ public static void createMediaCatch(Path mediaFile) throws IOException {\r
+ Path catchedFile = createMediaCathFilePath(mediaFile);\r
+ ensureUNCFolder(mediaFile.getParent());\r
+ Files.createFile(catchedFile);\r
+ }\r
+\r
+ private static Path createMediaCathFilePath(Path mediaFile) {\r
+ return Paths.get(mediaFile.getParent().toString(), STATUSFOLDER, mediaFile.getFileName() + DOT_CATCHED);\r
+ }\r
+\r
public static void createMetadata(String filePath, String fileName, String metadata) throws IOException {\r
ensureUNCFolder(filePath, STATUSFOLDER);\r
String metadataFileName = fileName + DOT_JSON;\r
return catchedFilePath.toFile().exists();\r
}\r
\r
+ /***\r
+ * A media eleresi utjan alapjan a .STATUS almappaban vizsgalja .catch fajl letezeset.\r
+ *\r
+ * @param mediaFile\r
+ * @return\r
+ */\r
+ public static boolean isMediaCatched(Path mediaFile) {\r
+ Path catchedFile = createMediaCathFilePath(mediaFile);\r
+ return catchedFile.toFile().exists();\r
+ }\r
+\r
public static boolean isMetadataExists(String filePath, String fileName) throws IOException {\r
boolean result = false;\r
String metadataFileName = fileName + DOT_JSON;\r
remove(Paths.get(escortFile.toString() + DOT_CATCHED));\r
}\r
\r
+ /***\r
+ * A media eleresi utjan alapjan a .STATUS almappabol torli a .catch fajlt.\r
+ *\r
+ * @param mediaFile\r
+ * @throws IOException\r
+ */\r
+ public static void removeMediaCatch(Path mediaFile) {\r
+ Path catchedFile = createMediaCathFilePath(mediaFile);\r
+ remove(catchedFile);\r
+ }\r
+\r
public static void setNEXIOKillDate(int killDateDays, String targetFileName, String nexioAgency, StoreUri targetUri) throws Exception {\r
OutputStream outStream = null;\r
try {\r
String xml = targetFileName + ".xml";\r
outStream = targetFTP.storeFileStream(xml);\r
if (outStream == null) {\r
- throw new NullPointerException(\r
- "Can not open: " + targetFileName.substring(0, targetFileName.lastIndexOf('.')) + ".xml" + " Reply:" + targetFTP.getReplyString());\r
+ throw new NullPointerException("Can not open: " + targetFileName.substring(0, targetFileName.lastIndexOf('.')) + ".xml" + " Reply:"\r
+ + targetFTP.getReplyString());\r
}\r
outStream.write(killDateFile);\r
outStream.flush();\r
\r
import user.jobengine.db.IItemManager;\r
import user.jobengine.db.IResultSetConsumer;\r
-import user.jobengine.server.steps.MetadataTypeDetector.MetadataType;\r
\r
public class ItemManagerExtensions {\r
\r
private static final String ITEM_MANAGER_IS_NULL = "ItemManager is null";\r
public static final String DEFAULT_MEDIATYPE = "Generic";\r
private ItemManager itemManager;\r
- private Marker marker;\r
+\r
+ private Marker marker;;\r
\r
private void addTags(ArchiveItem archiveItem, Media mediaCubeMedia) {\r
BasicDBList tags = archiveItem.getTags();\r
}\r
\r
private Item getExistingItem(String itemHouseId, String itemTitle) {\r
- Item[] result = { null };\r
+ Item[] result = new Item[] { null };\r
String sql = String.format("select id from item where houseid='%s' and title='%s'", itemHouseId, itemTitle);\r
itemManager.executeQuery(sql, rs -> {\r
long id = rs.getLong("id");\r
--- /dev/null
+package user.jobengine.server.steps;\r
+\r
+public enum MetadataType {\r
+ TrafficMaterial, TrafficPromo, TrafficAD, OctopusStory, OctopusPlaceholder, Generic\r
+}\r
\r
public class MetadataTypeDetector {\r
\r
- public enum MetadataType {\r
- TrafficMaterial, TrafficPromo, TrafficAD, OctopusStory, OctopusPlaceholder, Generic\r
- }\r
-\r
private static final String HYPHEN = "-";\r
private static final String DOT = ".";\r
\r
import user.commons.octopus.IOctopusAPI;\r
import user.commons.remotestore.IProgressEventListener;\r
import user.commons.remotestore.ProgressEvent;\r
-import user.jobengine.server.steps.MetadataTypeDetector.MetadataType;\r
\r
public class OctopusDataMiner {\r
private static final String MOS_ABSTRACT = "<mosAbstract>";\r
import user.jobengine.db.ArchivedMedia;\r
import user.jobengine.server.IJobEngine;\r
import user.jobengine.server.IJobRuntime;\r
-import user.jobengine.server.steps.MetadataTypeDetector.MetadataType;\r
\r
public class OutputPathAndNameSelectorStep extends JobStep {\r
\r
@StepEntry\r
public Object[] execute(String localRetrievePath, String materialOutputFolder, String promoOutputFolder, String advertisementOutputFolder,\r
String octopusOutputFolder, String genericOutputFolder, String onlineOutputFolder, String houseId, String targetPathType,\r
- ArchivedMedia archivedMedia, IJobEngine jobEngine, IJobRuntime jobRuntime) throws IOException {\r
+ ArchivedMedia archivedMedia, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
marker = jobRuntime.getSessionMarker();\r
check(localRetrievePath, materialOutputFolder, promoOutputFolder, advertisementOutputFolder, octopusOutputFolder, genericOutputFolder, houseId,\r
targetPathType);\r
}\r
\r
private String getFolderById(String materialOutputFolder, String promoOutputFolder, String advertisementOutputFolder, String octopusOutputFolder,\r
- String genericOutputFolder, String houseId, ArchivedMedia archivedMedia) {\r
+ String genericOutputFolder, String houseId, ArchivedMedia archivedMedia) throws Exception {\r
String id = houseId.toUpperCase();\r
MetadataType mdType = MetadataTypeDetector.GuessMetadataType(id);\r
String result = null;\r
\r
- switch (mdType) {\r
- case Generic:\r
- result = genericOutputFolder;\r
- break;\r
- case OctopusPlaceholder:\r
- case OctopusStory:\r
+ //a groovy nem latja enumnak, hanem az objektum tulajdonsaganak\r
+ switch (mdType.toString()) {\r
+ case "OctopusPlaceholder":\r
+ case "OctopusStory":\r
result = octopusOutputFolder;\r
break;\r
- case TrafficMaterial:\r
+ case "TrafficMaterial":\r
result = materialOutputFolder;\r
break;\r
- case TrafficPromo:\r
+ case "TrafficPromo":\r
result = promoOutputFolder;\r
break;\r
- case TrafficAD:\r
+ case "TrafficAD":\r
result = advertisementOutputFolder;\r
break;\r
+ case "Generic":\r
+ result = genericOutputFolder;\r
+ break;\r
}\r
return result;\r
}\r
\r
private String getPossiblePath(String id, Path targetPath) throws IOException {\r
- String[] result = { targetPath.toString() };\r
+ String[] result = new String[] { targetPath.toString() };\r
FileVisitor<Path> matcherVisitor = new SimpleFileVisitor<Path>() {\r
@Override\r
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {\r
try {\r
EscortFiles.ensureUNCFolder(Paths.get(targetPath));\r
} catch (Exception e) {\r
- logger.error(jobRuntime.getSessionMarker(), "A cél mappa '{}' nem létezik és nem hozható létre. A rendszer hibaüzenete: {}", targetPath, e.getMessage());\r
+ logger.error(jobRuntime.getSessionMarker(), "A cél mappa '{}' nem létezik és nem hozható létre. A rendszer hibaüzenete: {}", targetPath,\r
+ e.getMessage());\r
throw e;\r
}\r
return new Object[] { targetPath, targetNamePattern, false };\r
import user.jobengine.db.IItemManager;\r
import user.jobengine.db.IResultSetConsumer;\r
import user.jobengine.db.IStatementDecorator;\r
-import user.jobengine.server.steps.MetadataTypeDetector.MetadataType;\r
\r
public class PlanAirExtensions {\r
private static final Logger logger = LogManager.getLogger();\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
String targetFileName = String.format(targetNamePattern, sourceFileName);\r
try {\r
String details = String.format("%s (%d frames)", sourceFileName, mediaCubeMedia.getLength());\r
- jobRuntime.setDescription(String.format("%s: %s", jobRuntime.getDescription(), details));\r
+ jobRuntime.setDescription(details);\r
beforeRestore(targetUri, targetNamePattern);\r
final IJobRuntime runtime = jobRuntime;\r
sourceUri.addProgressListener(new IProgressEventListener() {\r
private static final String MP4EXT = ".MP4";\r
private static final String MXFEXT = ".MXF";\r
private static final String LOWRES_FILETYPE = "Low-res";\r
- private static final Logger logger = LogManager.getLogger();\r
+ private static final Logger logger = LogManager.getLogger("TranscodeFFAStranStep");\r
private IItemManager manager;\r
private Store store;\r
private FileType fileType;\r
import user.jobengine.db.Store;\r
import user.jobengine.server.IJobEngine;\r
import user.jobengine.server.IJobRuntime;\r
-import user.jobengine.server.steps.MetadataTypeDetector.MetadataType;\r
\r
-public class UpdateGhostMediaData extends JobStep {\r
+public class UpdateGhostMediaDataStep extends JobStep {\r
private static final Logger logger = LogManager.getLogger();\r
private Marker marker;\r
\r
package user.jobengine.server;
+import java.io.IOException;
import java.net.URLClassLoader;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
if (isGroovyStep()) {
try (GroovyClassLoader gcl = new GroovyClassLoader(parentLoader)) {
String stepsDir = System.getProperty("jobengine.jobsteps.groovy.root", "");
- for (String executorName : jobEngine.getExecutors().keySet()) {
- if (!executorName.endsWith(".java"))
- continue;
- Class<?> myClass = gcl.parseClass(Paths.get(stepsDir, executorName).toFile());
- if (stepUnitName.equals(executorName)) {
- result = (IJobStep) myClass.newInstance();
- break;
- }
- }
+ Class<?> myClass = parseClassHierarchy(gcl, stepsDir, stepUnitName);
+ result = (IJobStep) myClass.newInstance();
+
+ // for (String executorName : jobEngine.getExecutors().keySet()) {
+ // if (!executorName.endsWith(".java"))
+ // continue;
+ //
+ // Class<?> myClass = gcl.parseClass(Paths.get(stepsDir, executorName).toFile());
+ // if (stepUnitName.equals(executorName)) {
+ // result = (IJobStep) myClass.newInstance();
+ // break;
+ // }
+ // }
} catch (Exception e) {
logger.error(e.getMessage());
throw e;
return isRemote;
}
+ private Class<?> parseClassHierarchy(GroovyClassLoader cl, String root, String className) throws IOException {
+ Path path = Paths.get(root, className);
+ Class<?> result = null;
+ if (!path.toFile().exists())
+ return result;
+ List<String> lines = Files.readAllLines(path);
+
+ for (String line : lines) {
+ if (line.contains("extends")) {
+ String[] tokens = line.split("extends");
+ String parent = tokens[tokens.length - 1];
+ parent = parent.replace("{", "").trim();
+
+ parseClassHierarchy(cl, root, parent);
+ break;
+ }
+ }
+ result = cl.parseClass(path.toFile());
+ return result;
+ }
+
@Override
public void revoke(IJobRuntime jobRuntime) {
queue.remove(jobRuntime);
-version=2.6.7\r
+version=2.6.8\r
footer=2016-2020 © Copyright User Rendszerház Kft.\r
\r
login_info=Információ\r