git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Wed, 24 Jan 2018 14:23:43 +0000 (14:23 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Wed, 24 Jan 2018 14:23:43 +0000 (14:23 +0000)
28 files changed:
server/-configuration/log4j2.xml
server/-configuration/run-mediacube-server-bsh.launch
server/user.commons.log4j2/src/user/commons/log4j2/appender/SmtpManager.java
server/user.jobengine.executors/jobtemplates/sync-octopus.xml
server/user.jobengine.executors/src/user/jobengine/server/steps/CopyForArchiveNEXIORecordingsStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/FakeNoParamsStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/OctopusDataMiner.java
server/user.jobengine.executors/src/user/jobengine/server/steps/OutputPathAndNameSelectorStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRestoreStep.java
server/user.jobengine.osgi.commons/META-INF/MANIFEST.MF
server/user.jobengine.osgi.commons/src/user/commons/LogUtils.java [new file with mode: 0644]
server/user.jobengine.osgi.commons/src/user/commons/MediaCubeFinishMarker.java
server/user.jobengine.osgi.commons/src/user/commons/MediaCubeMarker.java
server/user.jobengine.osgi.commons/src/user/commons/octopus/OctopusAPI.java
server/user.jobengine.osgi.server/pages/login.zul
server/user.jobengine.osgi.server/pages/menu.zul
server/user.jobengine.osgi.server/pages/retrieveselector.zul
server/user.jobengine.osgi.server/src/user/jobengine/server/IJobRuntime.java
server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java
server/user.jobengine.osgi.server/src/user/jobengine/server/JobRuntime.java
server/user.jobengine.osgi.server/src/user/jobengine/server/JobStepExecutor.java
server/user.jobengine.osgi.server/src/user/jobengine/server/actions/DoneExecutingAction.java
server/user.jobengine.osgi.server/src/user/jobengine/server/actions/DoneSuspendAction.java
server/user.jobengine.osgi.server/src/user/jobengine/server/actions/ExecuteRunableAction.java
server/user.jobengine.osgi.server/src/user/jobengine/server/ast/JobTemplate.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/RetrieveSelectorModel.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/util/SessionUtil.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/util/UserPrincipal.java

index 74ce51bea57bd9563ed0103737302bc1ba6c7739..498e21f019049c3fa9b0fefc45cf1859b38fe4e1 100644 (file)
@@ -17,7 +17,7 @@
                        <Filters>\r
                                <MarkerFilter marker="MEDIACUBE" onMatch="ACCEPT" onMismatch="DENY" />\r
                        </Filters>\r
-                       <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{1}.%M - %markerSimpleName - %msg (%F:%L) %n" />\r
+                       <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{1}.%M - %marker - %msg (%F:%L) %n" />\r
                </Console>\r
                <HTMLMailAppender name="MarkeredMail" subject="TEST MediaCube rendszerüzenet" to="vasary@elgekko.net" from="mediacubeserver@gmail.com" smtpHost="smtp.gmail.com"\r
                        smtpPort="465" smtpProtocol="smtps" smtpUsername="mediacubeserver@gmail.com" smtpPassword="salabakter" ignoreExceptions="false" bufferSize="1">\r
index 193800bdae679448c8c4db5834008f3c18841850..f1eb552c36cdf04fa52dea6e49692ca16cb1b026 100644 (file)
@@ -19,7 +19,7 @@
 <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&#13;&#10;-Dorg.eclipse.epp.logging.aeri.skipReports=true &#13;&#10;-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true&#13;&#10;-Djobengine.jobsteps.root=&quot;${workspace_loc}/user.jobengine.executors/config&quot;&#13;&#10;-Djobengine.jobtemplates.root=&quot;${workspace_loc}/user.jobengine.executors/jobtemplates&quot;&#13;&#10;-Djobengine.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.db.user=db2admin&#13;&#10;-Djobengine.db.password=password&#13;&#10;-Djobengine.loglevel=INFO&#13;&#10;-Dlog4j.configurationFile=&quot;${workspace_loc}/-configuration/log4j2.xml&quot;&#13;&#10;-Djobengine.jobsteps.alternate.root=&quot;${workspace_loc}/user.jobengine.executors/bin/user/jobengine/server/steps&quot;&#13;&#10;-Djetty.home=&quot;${workspace_loc:}/-configuration/jetty&quot;&#13;&#10;-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&#13;&#10;-Djobengine.octopus.api.address=http://10.10.1.11/api/v1&#13;&#10;-Djobengine.octopus.api.user=mam&#13;&#10;-Djobengine.octopus.api.password=napocska&#13;&#10;-Djobengine.nosql.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.nosql.db.user=db2admin&#13;&#10;-Djobengine.nosql.db.password=password&#13;&#10;-Djobengine.nosql.db.schema=test&#13;&#10;-Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl&#13;&#10;-Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC.zenium&#13;&#10;-Djobengine.jobscheduling.config=&quot;${workspace_loc}/-configuration/scheduledjobs.json&quot;&#13;&#10;-Dnexio.host=10.10.1.55&#13;&#10;-Dnexio.disable=true&#13;&#10;-Djobengine.octopus.rundowns.name=new-rundowns&#13;&#10;-Djobengine.octopus.storyfolders.name=new-storyfolders&#13;&#10;-Djobengine.octopus.stories.name=new-stories&#13;&#10;-Dmediacube.auth.location=&quot;${workspace_loc}/-configuration/mediacube-auth.properties&quot;"/>\r
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory&#13;&#10;-Dorg.eclipse.epp.logging.aeri.skipReports=true &#13;&#10;-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true&#13;&#10;-Djobengine.jobsteps.root=&quot;${workspace_loc}/user.jobengine.executors/config&quot;&#13;&#10;-Djobengine.jobtemplates.root=&quot;${workspace_loc}/user.jobengine.executors/jobtemplates&quot;&#13;&#10;-Djobengine.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.db.user=db2admin&#13;&#10;-Djobengine.db.password=password&#13;&#10;-Djobengine.loglevel=INFO&#13;&#10;-Dlog4j.configurationFile=&quot;${workspace_loc}/-configuration/log4j2.xml&quot;&#13;&#10;-Djobengine.jobsteps.alternate.root=&quot;${workspace_loc}/user.jobengine.executors/bin/user/jobengine/server/steps&quot;&#13;&#10;-Djetty.home=&quot;${workspace_loc:}/-configuration/jetty&quot;&#13;&#10;-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&#13;&#10;-Djobengine.octopus.api.address=http://10.10.1.11/api/v1&#13;&#10;-Djobengine.octopus.api.user=mam&#13;&#10;-Djobengine.octopus.api.password=napocska&#13;&#10;-Djobengine.nosql.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.nosql.db.user=db2admin&#13;&#10;-Djobengine.nosql.db.password=password&#13;&#10;-Djobengine.nosql.db.schema=test&#13;&#10;-Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl&#13;&#10;-Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC.zenium&#13;&#10;-Djobengine.jobscheduling.config=&quot;${workspace_loc}/-configuration/scheduledjobs.json&quot;&#13;&#10;-Dnexio.host=10.10.1.55&#13;&#10;-Dnexio.disable=true&#13;&#10;-Djobengine.octopus.rundowns.name=test_rundowns&#13;&#10;-Djobengine.octopus.storyfolders.name=test_storyfolders&#13;&#10;-Djobengine.octopus.stories.name=test_stories&#13;&#10;-Dmediacube.auth.location=&quot;${workspace_loc}/-configuration/mediacube-auth.properties&quot;"/>\r
 <stringAttribute key="pde.version" value="3.3"/>\r
 <booleanAttribute key="show_selected_only" value="true"/>\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
index 666e7b038bdfcdd82f4bc8c2f61e2cce8a366cf9..aa4a792d53cc6d4100206e48efc3ec6a41ce1c67 100644 (file)
@@ -41,20 +41,18 @@ import javax.mail.internet.MimeMultipart;
 import javax.mail.internet.MimeUtility;
 import javax.mail.util.ByteArrayDataSource;
 
+import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.LoggingException;
 import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.appender.AbstractManager;
 import org.apache.logging.log4j.core.appender.ManagerFactory;
 import org.apache.logging.log4j.core.config.Configuration;
-import org.apache.logging.log4j.core.impl.Log4jLogEvent;
-import org.apache.logging.log4j.core.impl.MutableLogEvent;
 import org.apache.logging.log4j.core.layout.AbstractStringLayout.Serializer;
 import org.apache.logging.log4j.core.layout.PatternLayout;
 import org.apache.logging.log4j.core.net.MimeMessageBuilder;
 import org.apache.logging.log4j.core.util.NameUtil;
 import org.apache.logging.log4j.core.util.NetUtils;
-import org.apache.logging.log4j.message.ReusableMessage;
 import org.apache.logging.log4j.util.PropertiesUtil;
 import org.apache.logging.log4j.util.Strings;
 
@@ -211,14 +209,10 @@ public class SmtpManager extends AbstractManager {
        }
 
        private final Session session;
-
-       //private final CyclicBuffer<LogEvent> buffer;
-
        private volatile MimeMessage message;
-
        private final FactoryData data;
-
        private String defaultRecipient;
+       private String defaultSubject;
 
        protected SmtpManager(final String name, final Session session, final MimeMessage message, final FactoryData data) {
                super(null, name);
@@ -226,17 +220,15 @@ public class SmtpManager extends AbstractManager {
                this.message = message;
                this.data = data;
                this.defaultRecipient = data.to;
-               //this.buffer = new CyclicBuffer<>(LogEvent.class, data.numElements);
        }
 
-       public void add(LogEvent event) {
-               if (event instanceof Log4jLogEvent && event.getMessage() instanceof ReusableMessage) {
-                       ((Log4jLogEvent) event).makeMessageImmutable();
-               } else if (event instanceof MutableLogEvent) {
-                       event = ((MutableLogEvent) event).createMemento();
-               }
-               //buffer.add(event);
-       }
+       //      public void add(LogEvent event) {
+       //              if (event instanceof Log4jLogEvent && event.getMessage() instanceof ReusableMessage) {
+       //                      ((Log4jLogEvent) event).makeMessageImmutable();
+       //              } else if (event instanceof MutableLogEvent) {
+       //                      event = ((MutableLogEvent) event).createMemento();
+       //              }
+       //      }
 
        private synchronized void connect(final LogEvent appendEvent) {
                if (message != null) {
@@ -244,6 +236,7 @@ public class SmtpManager extends AbstractManager {
                }
                try {
                        message = createMimeMessage(data, session, appendEvent);
+                       this.defaultSubject = message.getSubject();
                } catch (final MessagingException e) {
                        logError("Could not set SmtpAppender message options", e);
                        message = null;
@@ -287,8 +280,9 @@ public class SmtpManager extends AbstractManager {
                return mp;
        }
 
-       private void sendEmail(final String to, byte[] content, String contentType) {
+       private void sendEmail(final String to, final String subject, byte[] content, String contentType) {
                try {
+                       message.setSubject(subject);
                        final String encoding = getEncoding(content, contentType);
                        final byte[] encodedBytes = encodeContentToBytes(content, encoding);
                        final InternetHeaders headers = getHeaders(contentType, encoding);
@@ -300,17 +294,6 @@ public class SmtpManager extends AbstractManager {
                }
        }
 
-       private void sendEvents(final Layout<?> layout, final List<LogEvent> events, final String to) {
-               try {
-                       final byte[] rawBytes = formatContentToBytes(events, layout);
-                       final String contentType = layout.getContentType();
-                       sendEmail(to, rawBytes, contentType);
-               } catch (Exception e) {
-                       logError("Caught exception while sending e-mail notification.", e);
-                       throw new LoggingException("Error occurred while sending email", e);
-               }
-       }
-
        /**
         * Send the contents of the cyclic buffer as an e-mail message.
         *
@@ -328,7 +311,7 @@ public class SmtpManager extends AbstractManager {
                if (appendEvent.getMarker() instanceof MediaCubeFinishMarker) {
                        MediaCubeFinishMarker mcm = (MediaCubeFinishMarker) appendEvent.getMarker();
                        storeSessionEvent(mcm, appendEvent);
-                       sendSessionEvents(mcm, layout);
+                       sendSessionEvents(mcm, layout, appendEvent.getLevel());
                        return;
                }
 
@@ -344,7 +327,18 @@ public class SmtpManager extends AbstractManager {
 
                }
 
-               sendEvents(layout, Arrays.asList(appendEvent), to);
+               sendEvents(to, defaultSubject, layout, Arrays.asList(appendEvent));
+       }
+
+       private void sendEvents(final String to, final String subject, final Layout<?> layout, final List<LogEvent> events) {
+               try {
+                       final byte[] rawBytes = formatContentToBytes(events, layout);
+                       final String contentType = layout.getContentType();
+                       sendEmail(to, subject, rawBytes, contentType);
+               } catch (Exception e) {
+                       logError("Caught exception while sending e-mail notification.", e);
+                       throw new LoggingException("Error occurred while sending email", e);
+               }
        }
 
        protected void sendMultipartMessage(final MimeMessage msg, final MimeMultipart mp) throws MessagingException {
@@ -355,13 +349,14 @@ public class SmtpManager extends AbstractManager {
                }
        }
 
-       private void sendSessionEvents(final MediaCubeMarker mcm, final Layout<?> layout) {
+       private void sendSessionEvents(final MediaCubeMarker mcm, final Layout<?> layout, final Level level) {
                String sessionID = mcm.getSessionID();
                List<LogEvent> events = sessionEvents.get(sessionID);
                if (events == null)
                        return;
                String to = mcm.getTo() == null ? defaultRecipient : mcm.getTo();
-               sendEvents(layout, events, to);
+               String subject = mcm.getSessionName() == null ? defaultSubject : String.format("%s: %s", level, mcm.getSessionName());
+               sendEvents(to, subject, layout, events);
                sessionEvents.remove(sessionID);
        }
 
index 58aa09f7ab5c4835dc0af8849bcac783578a072d..846caec5b137308aaa7c0d3d6efe1d3303f1a136 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate name="OCTOPUS adatok szinkronizálása">\r
+<jobtemplate name="OCTOPUS adatok szinkronizálása" service="true">\r
        <declarations>\r
                <parameters>\r
                        <parameter name="includeArchived" type="java.lang.Boolean" />\r
index 958b2a9ccf3e5425ed3f9f9f92f6d9a4511235b8..296c84c921f65b4c2cdb3965996f5b5521a787b6 100644 (file)
@@ -15,6 +15,7 @@ import org.apache.commons.net.ftp.FTPClient;
 import org.apache.commons.net.ftp.FTPReply;\r
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
+import org.apache.logging.log4j.Marker;\r
 \r
 import com.ibm.nosql.json.api.BasicDBList;\r
 import com.ibm.nosql.json.api.BasicDBObject;\r
@@ -64,10 +65,11 @@ public class CopyForArchiveNEXIORecordingsStep extends JobStep {
        private int nexioKillDateDays;\r
        private String nexioAgency;\r
        private Object[] filterAgencies;\r
+       private Marker systemMarker;\r
 \r
        private int check(int value, String name) {\r
                if (value == 0) {\r
-                       logger.error(getMarker(), "A folyamat '{}' bemeneti paramétere 0.", name);\r
+                       logger.error(systemMarker, "A folyamat '{}' bemeneti paramétere 0.", name);\r
                        throw new NullPointerException(String.format("System is not configured properly, missing '%s' input parameter.", name));\r
                }\r
                return value;\r
@@ -75,7 +77,7 @@ public class CopyForArchiveNEXIORecordingsStep extends JobStep {
 \r
        private String check(String value, String name) {\r
                if (StringUtils.isBlank(value)) {\r
-                       logger.error(getMarker(), "A folyamat '{}' bemeneti paramétere üres.", name);\r
+                       logger.error(systemMarker, "A folyamat '{}' bemeneti paramétere üres.", name);\r
                        throw new NullPointerException(String.format("System is not configured properly, missing '%s' input parameter.", name));\r
                }\r
                return value;\r
@@ -86,9 +88,9 @@ public class CopyForArchiveNEXIORecordingsStep extends JobStep {
                        for (FileArchive fileArchive : storyArchive.getFileArchives()) {\r
                                try {\r
                                        copyFile(fileArchive, rundownArchive, storyArchive);\r
-                                       logger.info(getMarker(), "Sikeres anyag archiválás a '{}' tükörhöz: '{}'.", rundownArchive.getItemTitle(), fileArchive.getFileName());\r
+                                       logger.info(systemMarker, "Sikeres fájl archiválás a '{}' tükörhöz: '{}'.", rundownArchive.getItemTitle(), fileArchive.getFileName());\r
                                } catch (Exception e) {\r
-                                       logger.error(getMarker(), "Az '{}' anyag archiválása sikertelen. A rendszer üzenete: {}", fileArchive.getFileName(), e.getMessage());\r
+                                       logger.error(systemMarker, "Az '{}' fájl archiválása sikertelen. A rendszer üzenete: {}", fileArchive.getFileName(), e.getMessage());\r
                                }\r
                        }\r
                }\r
@@ -147,6 +149,7 @@ public class CopyForArchiveNEXIORecordingsStep extends JobStep {
        @StepEntry\r
        public Object[] execute(int nexioPort, String nexioUserName, String nexioPassword, String archiveFtp, String archiveUserName, String archivePassword,\r
                        String agencies, int limit, int nexioKillDateDays, String nexioAgency, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+               systemMarker = jobRuntime.getMarker();\r
                setAndCheck(nexioPort, nexioUserName, nexioPassword, archiveFtp, archiveUserName, archivePassword, agencies, limit, nexioKillDateDays, nexioAgency,\r
                                jobEngine);\r
                octopusAPI = new OctopusAPI();\r
@@ -156,17 +159,21 @@ public class CopyForArchiveNEXIORecordingsStep extends JobStep {
        }\r
 \r
        private Date getScheduledStart(String clipName, Date recordDate) {\r
-               if (StringUtils.isBlank(clipName))\r
-                       logger.warn(getMarker(), "A anyagnak nincs neve, ezért nem archiválható.", clipName);\r
-               if (recordDate == null)\r
-                       logger.warn(getMarker(), "A {} anyag rögzítésének ideje nem meghatározható, ezért nem archiválható.", clipName);\r
+               if (StringUtils.isBlank(clipName)) {\r
+                       logger.warn(systemMarker, "A fájlnak nincs neve, ezért nem archiválható.");\r
+                       return null;\r
+               }\r
+               if (recordDate == null) {\r
+                       logger.warn(systemMarker, "Az '{}' fájl rögzítésének ideje nem meghatározható, ezért nem archiválható.", clipName);\r
+                       return null;\r
+               }\r
 \r
                Date timePart = null;\r
                try {\r
                        String clipNameTime = clipName.split("_")[0];\r
                        timePart = startTimeformat.parse(clipNameTime);\r
                } catch (ParseException e) {\r
-                       logger.warn(getMarker(), "A {} anyag neve nem időbélyeggel kezdődik, ezért nem archiválható.", clipName);\r
+                       logger.warn(systemMarker, "A '{}' fájl neve nem időbélyeggel kezdődik, ezért nem archiválható.", clipName);\r
                        return null;\r
                }\r
                return CalendarUtils.createCalendar(CalendarUtils.createCalendar(recordDate), timePart).getTime();\r
@@ -183,7 +190,7 @@ public class CopyForArchiveNEXIORecordingsStep extends JobStep {
                        return null;\r
                DBObject rundown = octopusAPI.getRundown(scheduledStart);\r
                if (rundown == null) {\r
-                       logger.error(getMarker(), "A '{}' anyaghoz nem található tükör '{}' kezdéssel, ezért nem archiválható.", clipName, scheduledStart);\r
+                       logger.error(systemMarker, "A '{}' anyaghoz nem található tükör '{}' kezdéssel, ezért nem archiválható.", clipName, scheduledStart);\r
                        return null;\r
                }\r
 \r
@@ -191,7 +198,7 @@ public class CopyForArchiveNEXIORecordingsStep extends JobStep {
                        result = processRundow(rundown, clipName, duration);\r
                } catch (Exception e) {\r
                        logger.catching(e);\r
-                       logger.error(getMarker(), "A '{}' anyag metaadatainak transzformálása sikertelen, ezért az nem archiválható. A rendszer hibaüzenete: {}",\r
+                       logger.error(systemMarker, "A '{}' anyag metaadatainak transzformálása sikertelen, ezért az nem archiválható. A rendszer hibaüzenete: {}",\r
                                        e.getMessage());\r
                        return null;\r
                }\r
@@ -199,7 +206,7 @@ public class CopyForArchiveNEXIORecordingsStep extends JobStep {
        }\r
 \r
        private void processClips(List<BasicDBObject> clips, int limit) {\r
-               logger.info(getMarker(), "A folyamat {} archiválható anyagot érzékelt.", clips.size());\r
+               logger.info(systemMarker, "A folyamat {} archiválható anyagot érzékelt.", clips.size());\r
                int current = 0;\r
                for (BasicDBObject clip : clips) {\r
                        RundownArchive rundownArchive = processClip(clip);\r
@@ -271,22 +278,22 @@ public class CopyForArchiveNEXIORecordingsStep extends JobStep {
                        String agencies, int limit, int nexioKillDateDays, String nexioAgency, IJobEngine jobEngine) throws Exception {\r
                db = NoSQLUtils.getNoSQLDB();\r
                if (db == null) {\r
-                       logger.error(getMarker(), "Az NoSQL adatkezelő réteg nem elérhető.");\r
+                       logger.error(systemMarker, "Az NoSQL adatkezelő réteg nem elérhető.");\r
                        throw new NullPointerException("Internal error, missing NoSQL DB reference.");\r
                }\r
 \r
                if (jobEngine == null) {\r
-                       logger.error(getMarker(), "Az folyamatkezelő réteg nem elérhető.");\r
+                       logger.error(systemMarker, "Az folyamatkezelő réteg nem elérhető.");\r
                        throw new NullPointerException("Internal error, missing JobEngine reference.");\r
                }\r
                manager = jobEngine.getItemManager();\r
                if (manager == null) {\r
-                       logger.error(getMarker(), "Az adatbáziskezelő réteg nem elérhető.");\r
+                       logger.error(systemMarker, "Az adatbáziskezelő réteg nem elérhető.");\r
                        throw new NullPointerException("Internal error, missing ItemManager reference.");\r
                }\r
                String nexioHost = System.getProperty("nexio.host");\r
                if (StringUtils.isBlank(nexioHost)) {\r
-                       logger.error(getMarker(), "A 'nexio.host' rendszer paraméter nem található.");\r
+                       logger.error(systemMarker, "A 'nexio.host' rendszer paraméter nem található.");\r
                        throw new NullPointerException("System is not configured properly, 'jobengine.selenio.address' startup parameter missing.");\r
                }\r
                check(nexioPort, "nexioPort");\r
@@ -308,7 +315,7 @@ public class CopyForArchiveNEXIORecordingsStep extends JobStep {
                sourceUri.setUserName(nexioUserName);\r
                sourceUri.setPassword(nexioPassword);\r
                if (sourceUri == null) {\r
-                       logger.error(getMarker(), "A forrás nem elérhető.");\r
+                       logger.error(systemMarker, "A forrás nem elérhető.");\r
                        throw new NullPointerException("Internal error, missing 'sourceUri'.");\r
                }\r
 \r
@@ -320,7 +327,7 @@ public class CopyForArchiveNEXIORecordingsStep extends JobStep {
                targetUri.setUserName(archiveUserName);\r
                targetUri.setPassword(archivePassword);\r
                if (targetUri == null) {\r
-                       logger.error(getMarker(), "A cél nem elérhető.");\r
+                       logger.error(systemMarker, "A cél nem elérhető.");\r
                        throw new NullPointerException("Internal error, missing 'targetUri'.");\r
                }\r
 \r
@@ -358,7 +365,7 @@ public class CopyForArchiveNEXIORecordingsStep extends JobStep {
                                if (!FTPReply.isPositiveCompletion(reply))\r
                                        throw new Exception("STAT parancs válasza: " + sourceFtp.getReplyString());\r
 \r
-                               logger.info("Status: {}", sourceFtp.getReplyString());\r
+                               //logger.info("Status: {}", sourceFtp.getReplyString());\r
                                if (reply == 226) {\r
                                        break;\r
                                }\r
index f90b470dcf18056dc261e7f59b83d60c703ed67e..5fb9225cdd06b723c4fad80877b90624f9cafd16 100644 (file)
@@ -11,23 +11,20 @@ public class FakeNoParamsStep extends JobStep {
        int count = 10;\r
 \r
        @StepEntry\r
-       public Object[] execute(IJobEngine jobEngine, IJobRuntime jobRuntime) throws InterruptedException {\r
-               logger.info(jobRuntime.getMarker(), "A folyamat elindult");\r
-               logger.warn(jobRuntime.getMarker(), "Egy WARN");\r
-               logger.error(jobRuntime.getMarker(), "Egy ERROR");\r
-               //              logger.warn(toMarker, "Egy WARN {}", "paraméterrel");\r
-               //              logger.error(toMarker, "Egy ERROR {}", "paraméterrel");\r
+       public Object[] execute(IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+               logger.warn(jobRuntime.getMarker(), "Egy WARN {}", "paraméterrel");\r
+               logger.error(jobRuntime.getMarker(), "Egy ERROR {}", "paraméterrel");\r
                for (int i = 0; i < count; i++) {\r
                        if (!canContinue())\r
                                break;\r
                        jobRuntime.incrementProgress((i + 1) * count);\r
+\r
                        Thread.sleep(100);\r
                        logger.info(jobRuntime.getMarker(), "Log markered" + i);\r
-                       //                      logger.info(toMarker, "Log markered" + i);\r
-                       //logger.info("Progress {}", jobRuntime.getProgress());\r
+\r
+                       if (i == 8)\r
+                               throw new Exception("stop");\r
                }\r
-               logger.info(jobRuntime.getFinishMarker(), "A folyamat véget ért");\r
-               //logger.info(LogCollector.FINISH);\r
                return null;\r
        }\r
 \r
index 1f565ec50954415760d21a869fe31125b459a950..cf3acd5d8f5f2faea37653ba189e36dd59e5b3e3 100644 (file)
@@ -82,6 +82,8 @@ public class OctopusDataMiner {
        private int objectCount;\r
        private int currentObjectIndex;\r
 \r
+       private boolean disableWrite = false;\r
+\r
        public OctopusDataMiner() {\r
                db = NoSQLUtils.getNoSQLDB();\r
 \r
@@ -208,6 +210,9 @@ public class OctopusDataMiner {
                storeRundowns(rundowns);\r
                storeStoryFolders(storyFolders);\r
 \r
+               if (disableWrite)\r
+                       return;\r
+\r
                deleteDiff(currentRundowns.keySet(), rundownIDs, IOctopusAPI.RUNDOWN_COLLECTION);\r
                deleteDiff(currentFolder.keySet(), folderIDs, IOctopusAPI.FOLDER_COLLECTION);\r
                deleteDiff(currentStories.keySet(), storyIDs, IOctopusAPI.STORY_COLLECTION);\r
@@ -359,7 +364,7 @@ public class OctopusDataMiner {
                        String objId = obj.getString(IOctopusAPI.OBJ_ID);\r
                        if (objId == null)\r
                                continue;\r
-                       result.put(mosId, label);\r
+                       result.put(objId, label);\r
 \r
                }\r
                return result;\r
@@ -367,7 +372,7 @@ public class OctopusDataMiner {
 \r
        private void fireProgressEvent() {\r
                currentObjectIndex++;\r
-               logger.info("currentObjectIndex {}", currentObjectIndex);\r
+               //logger.info("currentObjectIndex {}", currentObjectIndex);\r
                int progress = currentObjectIndex * 100 / objectCount;\r
                if (progress != progressEvent.getProgress()) {\r
                        progressEvent.setProgress(progress);\r
@@ -537,7 +542,8 @@ public class OctopusDataMiner {
                        DBCollection collection = db.getCollection(IOctopusAPI.RUNDOWN_COLLECTION);\r
                        long rundownID = NoSQLUtils.asLong(rundown, IOctopusAPI.ID);\r
                        setObjectID(currentRundowns, rundownID, rundown);\r
-                       collection.save(rundown);\r
+                       if (!disableWrite)\r
+                               collection.save(rundown);\r
                }\r
                logger.trace(ENTER);\r
        }\r
@@ -607,7 +613,8 @@ public class OctopusDataMiner {
                        story.append(IOctopusAPI.PARENT_STORY_ID, parentStoryId);\r
                logger.debug(SAVING_STORY_ID, storyID);\r
                setObjectID(currentStories, storyID, story);\r
-               collection.save(story);\r
+               if (!disableWrite)\r
+                       collection.save(story);\r
                logger.trace(EXIT);\r
        }\r
 \r
@@ -619,7 +626,8 @@ public class OctopusDataMiner {
                logger.debug("Storing story folder {}", name);\r
                long folderID = NoSQLUtils.asLong(storyFolder, IOctopusAPI.ID);\r
                setObjectID(currentFolder, folderID, storyFolder);\r
-               collection.save(storyFolder);\r
+               if (!disableWrite)\r
+                       collection.save(storyFolder);\r
                logger.trace(EXIT);\r
        }\r
 \r
index cb85b8d00956be257157790d7cfdb2a46cfce830..65718f14104c3e9b6033db0d084359068b29e125 100644 (file)
@@ -78,7 +78,8 @@ public class OutputPathAndNameSelectorStep extends JobStep {
                        ensureTargetPathExistence(targetPath);\r
                } catch (Exception e) {\r
                        logger.catching(e);\r
-                       logger.error(getMarker(), "A cél mappa {} nem létezik és hozható létre. A rendszer hibaüzenete: {}", targetPath, e.getMessage());\r
+                       logger.error(jobRuntime.getMarker(), "A cél mappa '{}' nem létezik és hozható létre. A rendszer hibaüzenete: {}", targetPath, e.getMessage());\r
+                       throw e;\r
                }\r
                return new Object[] { targetPath, targetNamePattern };\r
        }\r
index 7ce844212eb9bf1c54b5e2badc5ed1cb022312ac..6d1d78a929e8d9b33651ca5f650a529f8331d330 100644 (file)
@@ -5,7 +5,9 @@ import java.util.List;
 import org.apache.commons.lang.StringUtils;\r
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
+import org.apache.logging.log4j.message.Message;\r
 \r
+import user.commons.LogUtils;\r
 import user.commons.MediaCubeMarker;\r
 import user.commons.RemoteFile;\r
 import user.commons.StoreUri;\r
@@ -51,16 +53,20 @@ public class TSMRestoreStep extends JobStep {
                        targetFileName = String.format(targetNamePattern, sourceFileName);\r
                        RemoteFile result = sourceUri.transferFrom(targetUri, sourceFileName, targetFileName);\r
 \r
-                       String successMessage = "Az '{}' állomány visszatöltése sikeres. Elérhető az \r\n'{}' mappa\r\n'{}' állományában.";\r
+                       Message msg = LogUtils.format("Az '{}' állomány visszatöltése sikeres. Elérhető az \r\n'{}' mappa\r\n'{}' állományában.", sourceFileName,\r
+                                       targetPath, targetFileName);\r
                        if (StringUtils.isNotBlank(successRecipient))\r
-                               logger.info(new MediaCubeMarker(successRecipient), successMessage, sourceFileName, targetPath, targetFileName);\r
-                       logger.info(getMarker(), successMessage, sourceFileName, targetPath, targetFileName);\r
+                               logger.info(new MediaCubeMarker(successRecipient), msg);\r
+                       logger.info(getMarker(), msg);\r
+                       logger.info(jobRuntime.getMarker(), msg);\r
 \r
                        if (killDateDays > 0)\r
                                EscortFiles.createUNCKillDate(targetPath, targetFileName, killDateDays, getMarker());\r
 \r
                } catch (Exception e) {\r
-                       logger.error(getMarker(), "Az '{}' állomány visszatöltése sikertelen. A rendszer hibaüzenete: {}", sourceFileName, e.getMessage());\r
+                       Message msg = LogUtils.format("Az '{}' állomány visszatöltése sikertelen. A rendszer hibaüzenete: {}", sourceFileName, e.getMessage());\r
+                       logger.error(getMarker(), msg);\r
+                       logger.error(jobRuntime.getMarker(), msg);\r
                        logger.catching(e);\r
                        throw e;\r
                }\r
index 42c7d65ac1567b2eced8cdba2dd0660183493362..1b5c10849354639c2e112a5bdfa42afcdc7ab383 100644 (file)
@@ -10,6 +10,7 @@ Import-Package: com.fasterxml.jackson.annotation;version="2.4.5",
  com.fasterxml.jackson.datatype.joda;version="2.4.5",
  com.fasterxml.jackson.jaxrs.json;version="2.4.5",
  org.apache.logging.log4j;version="2.8.2",
+ org.apache.logging.log4j.message;version="2.8.2",
  org.jboss.resteasy.client.jaxrs,
  org.jboss.resteasy.plugins.providers,
  org.jboss.resteasy.spi,
diff --git a/server/user.jobengine.osgi.commons/src/user/commons/LogUtils.java b/server/user.jobengine.osgi.commons/src/user/commons/LogUtils.java
new file mode 100644 (file)
index 0000000..41408c0
--- /dev/null
@@ -0,0 +1,12 @@
+package user.commons;\r
+\r
+import org.apache.logging.log4j.message.Message;\r
+import org.apache.logging.log4j.message.ParameterizedMessageFactory;\r
+\r
+public class LogUtils {\r
+       private static ParameterizedMessageFactory factory = new ParameterizedMessageFactory();\r
+\r
+       public static Message format(String message, Object... parameters) {\r
+               return factory.newMessage(message, parameters);\r
+       }\r
+}\r
index e2b252ac2b9d9e6a95f93f75b8449635b48d044c..accab8e91ce7ba6f202576c6805af54760dc4298 100644 (file)
@@ -5,10 +5,12 @@ public class MediaCubeFinishMarker extends MediaCubeMarker {
 \r
        public MediaCubeFinishMarker(MediaCubeMarker parent) {\r
                setSessionID(parent.getSessionID());\r
+               setSessionName(parent.getSessionName());\r
        }\r
 \r
        public MediaCubeFinishMarker(MediaCubeMarker parent, String to) {\r
                super(to);\r
                setSessionID(parent.getSessionID());\r
+               setSessionName(parent.getSessionName());\r
        }\r
 }\r
index f1dbf54ef718a45c1c3fabeca5d72d985b3a5862..52805004ec37f29d26899bf7bd947bc577c733af 100644 (file)
@@ -7,6 +7,7 @@ public class MediaCubeMarker extends Log4jMarker {
        private static final String MEDIACUBE = "MEDIACUBE";\r
        private String to;\r
        private String sessionID;\r
+       private String sessionName;\r
 \r
        public MediaCubeMarker() {\r
                super(MEDIACUBE);\r
@@ -21,6 +22,10 @@ public class MediaCubeMarker extends Log4jMarker {
                return sessionID;\r
        }\r
 \r
+       public String getSessionName() {\r
+               return sessionName;\r
+       }\r
+\r
        public String getTo() {\r
                return to;\r
        }\r
@@ -29,6 +34,10 @@ public class MediaCubeMarker extends Log4jMarker {
                this.sessionID = sessionID;\r
        }\r
 \r
+       public void setSessionName(String sessionName) {\r
+               this.sessionName = sessionName;\r
+       }\r
+\r
        public void setTo(String to) {\r
                this.to = to;\r
        }\r
index c2eca5bfe47a780fa0c00c6443b0f255481f5080..eeee1dec6d6fd48843b7e629be692a33c55b79fc 100644 (file)
@@ -155,7 +155,7 @@ public class OctopusAPI implements IOctopusAPI {
        public List<DBObject> getStories() {\r
                List<DBObject> result = null;\r
                DBCollection collection = db.getCollection(STORY_COLLECTION);\r
-               DBCursor find = collection.find().limit(1000);\r
+               DBCursor find = collection.find(new BasicDBObject(), new BasicDBObject("mosObjects", 1).append("_id", 0)).limit(1000);\r
                if (find.hasNext())\r
                        result = find.toArray();\r
                return result;\r
index 6fa93ee12745513ff7960f1bba2b2f215670e805..3cff1c7827674c703dcc6c07ca5784df995d9e04 100644 (file)
@@ -21,7 +21,7 @@
                             </row>\r
                             <row>\r
                                 Felhasználó\r
-                                <textbox value="@bind(jlm.account)" id="account" width="200px" forward="onOK=login.onClick" />\r
+                                <textbox value="@bind(jlm.account)" id="account" width="200px" forward="onOK=login.onClick" onCreate="self.focus()" />\r
                             </row>\r
                             <row>\r
                                 Jelszó\r
index a67f28d067f55e0bc975fb69e0b7e128bb8d6ffb..89ed1a887821ffa4164900308f45ef90cf14b812 100644 (file)
@@ -55,9 +55,9 @@
                <menu sclass="whitemenu" label="Archívum" >\r
                        <menupopup>\r
                                <menuitem sclass="rozsda" label="Keresés" onClick='includeContent.src="/pages/search_items.zul"' disabled="false" />\r
-                               <menuitem sclass="rozsda" label="Statisztikák" onClick='includeContent.src="/pages/statistics.zul"' disabled="${not sessionScope.userPrincipal.admin}" />\r
-                               <menuitem sclass="rozsda" label="Folyamatok" onClick='includeContent.src="/pages/joblist.zul"' disabled="${not sessionScope.userPrincipal.admin}" />\r
-                               <menuitem sclass="rozsda" label="Hiányzó anyagok" onClick='includeContent.src="/pages/missingmaterials.zul"' disabled="${not sessionScope.userPrincipal.jobSubmitter}" />\r
+                               <menuitem sclass="rozsda" label="Statisztikák" onClick='includeContent.src="/pages/statistics.zul"' disabled="${not sessionScope.userPrincipal.admin or sessionScope.userPrincipal.anonymous}" />\r
+                               <menuitem sclass="rozsda" label="Folyamatok" onClick='includeContent.src="/pages/joblist.zul"' disabled="${not sessionScope.userPrincipal.admin or sessionScope.userPrincipal.anonymous}" />\r
+                               <menuitem sclass="rozsda" label="Hiányzó anyagok" onClick='includeContent.src="/pages/missingmaterials.zul"' disabled="${not sessionScope.userPrincipal.jobSubmitter or sessionScope.userPrincipal.anonymous}" />\r
                        </menupopup>\r
                </menu>\r
 \r
index 0a7b553f6e8d1ffd6d329673a2f48a3e78966c60..b6e2221c8836db2717ffb327e7f4b19a97d002b1 100644 (file)
@@ -1,23 +1,31 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
-<window id="resultWin" title="Visszatöltés azonosító" width="500px" border="normal" apply="org.zkoss.bind.BindComposer" viewModel="@id('jlm') @init('user.jobengine.zk.model.RetrieveSelectorModel')">\r
-       <grid>\r
-               <columns>\r
-                       <column width="120px" />\r
-                       <column width="100%"/>\r
-               </columns>\r
-               <rows>\r
-                       <row>\r
-                               <label value="Azonosító:" />\r
-                               <textbox value="@bind(jlm.houseId)" width="100%" tabindex="1" constraint="no empty: Kérem adjon meg egy TRAFFIC vagy egy OCTOPUS azonosítót!"/>\r
-                       </row>\r
-                       <row>\r
-                               <label value="Értesítési cím:"/>\r
-                               <textbox value="@bind(jlm.email)" width="100%" tabindex="2" constraint="/.+@.+\.[a-z]+/: Kérem adjon meg egy email címet!" />\r
-                       </row>\r
-               </rows>\r
-       </grid>\r
-       <hbox width="100%" pack="center">\r
-        <button id="closeButton" label="Mégsem" onClick="@command('close')" />\r
-        <button id="executeButton" label="Végrehajtás" onClick="@command('execute')" />\r
-    </hbox>\r
+<window id="resultWin" title="Azonosító megadása" width="500px" border="normal" apply="org.zkoss.bind.BindComposer"\r
+       viewModel="@id('jlm') @init('user.jobengine.zk.model.RetrieveSelectorModel')" onCancel="self.detach(); event.stopPropagation();">\r
+       <grid>\r
+               <columns>\r
+                       <column width="120px" />\r
+                       <column width="100%" />\r
+               </columns>\r
+               <rows>\r
+                       <row>\r
+                               <label value="Azonosító:" />\r
+                               <textbox value="@load(jlm.houseId) @save(jlm.houseId,before='execute')" width="100%" tabindex="1"\r
+                                       forward="onOK=execute.onClick"\r
+                                       constraint="no empty: Kérem adjon meg egy TRAFFIC vagy egy OCTOPUS azonosítót!" />\r
+                       </row>\r
+                       <row>\r
+                               <label value="Értesítési cím:" />\r
+                               <textbox value="@load(jlm.email) @save(jlm.email,before='execute')" width="100%" tabindex="2"\r
+                                       forward="onOK=execute.onClick"\r
+                                       constraint="/.+@.+\.[a-z]+/: Kérem adjon meg egy email címet!" />\r
+                       </row>\r
+               </rows>\r
+       </grid>\r
+       <hbox width="100%" pack="center">\r
+                       \r
+               <button id="close" label="Mégsem" onClick="@command('close')" />\r
+                       \r
+               <button id="execute" label="Végrehajtás" onClick="@command('execute')" />\r
+                   \r
+       </hbox>\r
 </window>\r
index 12276fc6574b91d72a00be193ff2330f495a7928..2021009d3401ebb60d4768a7845760f030451290 100644 (file)
@@ -58,6 +58,8 @@ public interface IJobRuntime extends IJob {
 \r
        boolean isRunable();\r
 \r
+       boolean isService();\r
+\r
        boolean isWaiting();\r
 \r
        Object popFromStack();\r
@@ -77,6 +79,8 @@ public interface IJobRuntime extends IJob {
        @Override\r
        void setParameters(Map<String, Object> parameters);\r
 \r
+       void setService(boolean isService);\r
+\r
        void setVariable(String name, Object value);\r
 \r
        void swapStack();\r
index 54163f921d2ebaabc31fd8878431715f43cd3078..aaaee4063f57de77e947a1f89b58305b9dddd6b1 100644 (file)
@@ -832,6 +832,7 @@ public class JobEngine implements IJobEngine {
                        result.setTemplate(template);
                        result.setName(name);
                        result.setParameters(parameters);
+                       result.setService(program.getTemplate().isService());
                        submit(result);
                } else {
                        logger.error("Unknown template: " + template);
index c4357fc49c7cfc0065b048cf5a0613594786ab42..bf551c6fff75952ff303bbd9d625f60a1e001f17 100644 (file)
@@ -49,6 +49,7 @@ public class JobRuntime extends Job implements IJobRuntime {
        private int runtimeWeight;
        private List<JobRuntime> children;
        private MediaCubeMarker sessionMarker;
+       private boolean isService;
 
        public JobRuntime() {
                this.listeners = new EventListenerList();
@@ -225,6 +226,7 @@ public class JobRuntime extends Job implements IJobRuntime {
                if (sessionMarker == null) {
                        sessionMarker = new MediaCubeMarker();
                        sessionMarker.setSessionID(String.valueOf(getId()));
+                       sessionMarker.setSessionName(name);
                }
                return sessionMarker;
        }
@@ -350,6 +352,11 @@ public class JobRuntime extends Job implements IJobRuntime {
                return result;
        }
 
+       @Override
+       public boolean isService() {
+               return isService;
+       }
+
        @Override
        public boolean isWaiting() {
                return ((getStatus().getValue() & 0x0100) == 0x0100);
@@ -470,6 +477,11 @@ public class JobRuntime extends Job implements IJobRuntime {
                }
        }
 
+       @Override
+       public void setService(boolean isService) {
+               this.isService = isService;
+       }
+
        @Override
        public void setStatus(JobStatus status) {
                if (this.status != status) {
index b7741fa4f5d694a1b546a9ee02893a2d7675e699..930f5def6be17eda9dad631b9d0859a2dea873c0 100644 (file)
@@ -64,8 +64,6 @@ public class JobStepExecutor implements IJobStepExecutor {
                                        logger.catching(t);
                                        jobEngine.suspendJob(t, jobRuntime);
                                } finally {
-                                       logger.info(jobRuntime.getFinishMarker(), "A folyamat futása véget ért");
-
                                        if (step != null) {
                                                step.cleanup();
                                                jobRuntime = null;
index 6540fb9fa7effa0af9eeff2d79975a63da4c8649..121c377c3599a25a1158e7b6e2f73c0e64f1754a 100644 (file)
@@ -1,15 +1,21 @@
 package user.jobengine.server.actions;\r
 \r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
 import user.commons.JobStatus;\r
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.IJobRuntime;\r
 \r
 public class DoneExecutingAction implements IJobStatusAction {\r
+       private static final Logger logger = LogManager.getLogger();\r
 \r
        @Override\r
        public void processAction(IJobEngine jobEngine, IJobRuntime jobRuntime) {\r
                jobRuntime.setStatus(JobStatus.RUNABLE);\r
                jobRuntime.NotifyUpdate();\r
                jobEngine.addToRunQueue(jobRuntime);\r
+               if (!jobRuntime.isService())\r
+                       logger.info(jobRuntime.getFinishMarker(), "A '{}' folyamat futása sikeresen véget ért", jobRuntime.getName());\r
        }\r
 }\r
index 771082183459848e36537ac503360aa5ee59b2cc..f9fa229b4004712631635940244a74a36bfb43bf 100644 (file)
@@ -2,11 +2,15 @@ package user.jobengine.server.actions;
 \r
 import java.sql.Timestamp;\r
 \r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
 import user.commons.JobStatus;\r
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.IJobRuntime;\r
 \r
 public class DoneSuspendAction implements IJobStatusAction {\r
+       private static final Logger logger = LogManager.getLogger();\r
 \r
        @Override\r
        public void processAction(IJobEngine jobEngine, IJobRuntime jobRuntime) {\r
@@ -16,5 +20,7 @@ public class DoneSuspendAction implements IJobStatusAction {
                jobRuntime.NotifyUpdate();\r
                jobRuntime.restoreStack();\r
                jobRuntime.decrementInstructionPointer();\r
+               if (!jobRuntime.isService())\r
+                       logger.error(jobRuntime.getFinishMarker(), "A '{}' folyamat futása megszakadt", jobRuntime.getName());\r
        }\r
 }\r
index 4d1552eff1dbcf3d9872cbc4992da1bea4664944..2d6c15d45604ee67c37870b118237780063924cf 100644 (file)
@@ -1,10 +1,14 @@
 package user.jobengine.server.actions;\r
 \r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
 import user.commons.JobStatus;\r
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.IJobRuntime;\r
 \r
 public class ExecuteRunableAction implements IJobStatusAction {\r
+       private static final Logger logger = LogManager.getLogger();\r
 \r
        @Override\r
        public void processAction(IJobEngine jobEngine, IJobRuntime jobRuntime) {\r
@@ -12,5 +16,7 @@ public class ExecuteRunableAction implements IJobStatusAction {
                jobRuntime.NotifyUpdate();\r
                jobRuntime.saveStack();\r
                jobEngine.addToExecutorQueue(jobRuntime);\r
+               if (!jobRuntime.isService())\r
+                       logger.info(jobRuntime.getMarker(), "A '{}' folyamat elindult", jobRuntime.getName());\r
        }\r
 }\r
index 5819d99f97697718dfc2aa3c3b7d59278e532331..885f2f6733583d39a2cada94a28d767959e23107 100644 (file)
@@ -16,6 +16,7 @@ public class JobTemplate extends AST {
        private String name = null;\r
        private String description = null;\r
        private boolean multiInstance;\r
+       private boolean service;\r
 \r
        public JobTemplate() {\r
        }\r
@@ -49,6 +50,10 @@ public class JobTemplate extends AST {
                return multiInstance;\r
        }\r
 \r
+       public boolean isService() {\r
+               return service;\r
+       }\r
+\r
        public void setCommandSequence(CommandSequence commandSequence) {\r
                this.commandSequence = commandSequence;\r
        }\r
@@ -73,6 +78,10 @@ public class JobTemplate extends AST {
                this.name = name;\r
        }\r
 \r
+       public void setService(boolean service) {\r
+               this.service = service;\r
+       }\r
+\r
        public List<String> validate() throws Exception {\r
                Map<String, String> parameters = new HashMap<>();\r
                Map<String, String> variables = new HashMap<>();\r
index 701d72d39843b12e28013b934835b0022f795d50..f2c7821e12324574e0b6bc54c2df0d898f2b6aef 100644 (file)
@@ -23,6 +23,7 @@ import user.jobengine.db.Media;
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.IJobRuntime;\r
 import user.jobengine.server.JobEngine;\r
+import user.jobengine.zk.util.SessionUtil;\r
 \r
 public class RetrieveSelectorModel extends BaseModel {\r
        private static final Logger logger = LogManager.getLogger();\r
@@ -55,11 +56,13 @@ public class RetrieveSelectorModel extends BaseModel {
        @Command\r
        public void execute() {\r
                try {\r
+                       if (StringUtils.isBlank(houseId))\r
+                               throw new Exception("Az azonosító megadása kötelező!");\r
+                       if (StringUtils.isBlank(email))\r
+                               throw new Exception("Az értesítési cím megadása kötelező!");\r
                        String trafficOutputPath = "/mnt/ISILON/PLAYOUT_NLE";\r
                        String octopusOutputPath = "/mnt/ISILON/OCTOPUS";\r
                        String genericOutputPath = "/mnt/ISILON/ARCHIVE_RESTORE";\r
-                       if (StringUtils.isBlank(houseId))\r
-                               throw new Exception("Az azonosító megadása kötelező!");\r
                        Map<String, Object> parameters = ListUtils.asMap(TRAFFICOUTPUTPATH, trafficOutputPath, OCTOPUSOUTPUTPATH, octopusOutputPath, GENERICOUTPUTPATH,\r
                                        genericOutputPath, MEDIACUBEMEDIA, this.selectedMedia, HOUSEID, houseId, SUCCESSRECIPIENT, email, KILLDATEDAYS, 7);\r
                        IJobEngine jobEngine = JobEngine.getInstance();\r
@@ -84,6 +87,7 @@ public class RetrieveSelectorModel extends BaseModel {
        public void init() {\r
                Map<?, ?> args = Executions.getCurrent().getArg();\r
                this.selectedMedia = (Media) args.get(MEDIACUBEMEDIA);\r
+               setEmail(SessionUtil.getUserPrincipal().getEmail());\r
        }\r
 \r
        public void setEmail(String email) {\r
index 8c9066d15fd94a50d06c948c2a7916345e853274..0625e90fc8e6dc332569a21a70dd42d57f45cad2 100644 (file)
@@ -25,13 +25,13 @@ public class SessionUtil {
                Properties cfg = getConfiguration();\r
                UserPrincipal userPrincipal = null;\r
                if (authenticateLocal(account, password, cfg, LOCAL_ADMINS)) {\r
-                       userPrincipal = new UserPrincipal(account, true, true);\r
+                       userPrincipal = new UserPrincipal(account, true, true, false);\r
                } else {\r
                        if (authenticateLocal(account, password, cfg, LOCAL_JOBSUBMITTERS)) {\r
-                               userPrincipal = new UserPrincipal(account, false, true);\r
+                               userPrincipal = new UserPrincipal(account, false, true, false);\r
                        } else {\r
                                if (authenticateLocal(account, password, cfg, LOCAL_USERS)) {\r
-                                       userPrincipal = new UserPrincipal(account, false, false);\r
+                                       userPrincipal = new UserPrincipal(account, false, false, false);\r
                                } else {\r
                                        LDAPHandler h = new LDAPHandler(account, password, cfg);\r
                                        userPrincipal = h.getUserPrincipal();\r
@@ -93,13 +93,13 @@ public class SessionUtil {
                return !isAuthenticationEnabled() || getUserPrincipal() != null;\r
        }\r
 \r
-       private static boolean isAuthenticationEnabled() {\r
+       public static boolean isAuthenticationEnabled() {\r
                boolean result = false;\r
                try {\r
                        Properties cfg = getConfiguration();\r
                        result = Boolean.parseBoolean(cfg.getProperty(AUTH_ENABLED, "false"));\r
                        if (!result)\r
-                               setAttribute(USERPRINCIPAL, new UserPrincipal("admin", true, true));\r
+                               setAttribute(USERPRINCIPAL, new UserPrincipal("anonymous", true, true, true));\r
                } finally {\r
                }\r
                return result;\r
index d5b69338d90fe9a743213960b255112bc562bb00..b2d5c5629a7f6a007a9431d88abb50d6c803f99b 100644 (file)
@@ -17,20 +17,22 @@ public class UserPrincipal implements java.io.Serializable {
 \r
        private List<String> memberOf;\r
        private boolean admin;\r
+       private boolean anonymous;\r
        private boolean jobSubmitter;\r
        private String account;\r
        private String displayName;\r
        private String email;\r
 \r
        public UserPrincipal(String account) {\r
-               this(account, false, false);\r
+               this(account, false, false, false);\r
        }\r
 \r
-       public UserPrincipal(String account, boolean isAdmin, boolean isJobSubmitter) {\r
+       public UserPrincipal(String account, boolean isAdmin, boolean isJobSubmitter, boolean isAnonymous) {\r
                this.account = account;\r
                this.displayName = account;\r
                this.admin = isAdmin;\r
                this.jobSubmitter = isJobSubmitter;\r
+               this.anonymous = isAnonymous;\r
        }\r
 \r
        public String getAccount() {\r
@@ -49,6 +51,10 @@ public class UserPrincipal implements java.io.Serializable {
                return admin;\r
        }\r
 \r
+       public boolean isAnonymous() {\r
+               return anonymous;\r
+       }\r
+\r
        public boolean isJobSubmitter() {\r
                return jobSubmitter;\r
        }\r
@@ -57,6 +63,10 @@ public class UserPrincipal implements java.io.Serializable {
                this.admin = admin;\r
        }\r
 \r
+       public void setAnonymous(boolean anonymous) {\r
+               this.anonymous = anonymous;\r
+       }\r
+\r
        public void setDisplayName(String displayName) {\r
                this.displayName = displayName;\r
        }\r