<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>\r
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -console"/>\r
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>\r
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory -Dorg.eclipse.epp.logging.aeri.skipReports=true -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Djobengine.jobsteps.root="${workspace_loc}/user.jobengine.executors/bin" -Djobengine.jobtemplates.root="${workspace_loc}/user.jobengine.executors/jobtemplates" -Djobengine.jobsteps.config="${workspace_loc}/user.jobengine.executors/config/config.xml" -Djobengine.jobscheduling.config="${workspace_loc}/-configuration/scheduledjobs.json" -Djobengine.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.db.user=db2admin -Djobengine.db.password=password -Djobengine.loglevel=INFO -Dlog4j.configurationFile="${workspace_loc}/-configuration/log4j2.xml" -Djobengine.jobsteps.alternate.root="${workspace_loc}/user.jobengine.executors/bin/" -Djetty.home="${workspace_loc:}/-configuration/jetty" -Djetty.etc.config.urls=etc/user-jetty.xml,etc/user-jetty-ssl.xml,etc/user-jetty-ssl-context.xml,,etc/user-jetty-http.xml,etc/user-jetty-https.xml -Dorg.eclipse.jetty.webapp.basetempdir=c:\temp\jetty -Djava.io.tmpdir=c:\temp\jetty -Djobengine.octopus.api.address=http://10.10.1.11/api/v1 -Djobengine.octopus.api.user=mam -Djobengine.octopus.api.password=napocska -Djobengine.nosql.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.nosql.db.user=db2admin -Djobengine.nosql.db.password=password -Djobengine.nosql.db.schema=test -Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl -Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC.zenium -Djobengine.nexio.db.url=jdbc:sqlserver://10.10.1.59:1433;databaseName=NXDB; -Djobengine.nexio.db.user=sa -Djobengine.nexio.db.password=resolve -Dnexio.host=10.10.1.55 -Djobengine.nexio.name=testnexioclips -Dnexio.useMOSGateway=true -Dnexio.disable=true -Djobengine.octopus.rundowns.name=rundowns -Djobengine.octopus.storyfolders.name=storyfolders -Djobengine.octopus.stories.name=stories -Dmediacube.auth.location="${workspace_loc}/-configuration/mediacube-auth.properties" -Djobengine.mediacube.config="${workspace_loc}/-configuration/mediacube.json" -Djobengine.mediacube.service.proxyroot="/opt" -Djobengine.randomize.archives=false"/>\r
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory -Dorg.eclipse.epp.logging.aeri.skipReports=true -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Djobengine.jobsteps.root="${workspace_loc}/user.jobengine.executors/bin" -Djobengine.jobtemplates.root="${workspace_loc}/user.jobengine.executors/jobtemplates" -Djobengine.jobsteps.config="${workspace_loc}/user.jobengine.executors/config/config.xml" -Djobengine.jobscheduling.config="${workspace_loc}/-configuration/scheduledjobs.json" -Djobengine.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.db.user=db2admin -Djobengine.db.password=password -Djobengine.loglevel=INFO -Dlog4j.configurationFile="${workspace_loc}/-configuration/log4j2.xml" -Djobengine.jobsteps.alternate.root="${workspace_loc}/user.jobengine.executors/bin/" -Djetty.home="${workspace_loc:}/-configuration/jetty" -Djetty.etc.config.urls=etc/user-jetty.xml,etc/user-jetty-ssl.xml,etc/user-jetty-ssl-context.xml,,etc/user-jetty-http.xml,etc/user-jetty-https.xml -Dorg.eclipse.jetty.webapp.basetempdir=c:\temp\jetty -Djava.io.tmpdir=c:\temp\jetty -Djobengine.octopus.api.address=http://10.10.1.11/api/v1 -Djobengine.octopus.api.user=mam -Djobengine.octopus.api.password=napocska -Djobengine.nosql.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.nosql.db.user=db2admin -Djobengine.nosql.db.password=password -Djobengine.nosql.db.schema=test -Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl -Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC.zenium -Djobengine.nexio.db.url=jdbc:sqlserver://10.10.1.59:1433;databaseName=NXDB; -Djobengine.nexio.db.user=sa -Djobengine.nexio.db.password=resolve -Dnexio.host=10.10.1.55 -Djobengine.nexio.name=testnexioclips -Dnexio.useMOSGateway=true -Dnexio.disable=true -Djobengine.octopus.rundowns.name=rundowns -Djobengine.octopus.storyfolders.name=storyfolders -Djobengine.octopus.stories.name=stories -Dmediacube.auth.location="${workspace_loc}/-configuration/mediacube-auth.properties" -Djobengine.mediacube.config="${workspace_loc}/-configuration/mediacube.json" -Djobengine.mediacube.service.proxyroot="/opt" -Djobengine.randomize.archives=false -Dmediacube.simplesearch=true"/>\r
<stringAttribute key="pde.version" value="3.3"/>\r
<booleanAttribute key="show_selected_only" value="false"/>\r
<stringAttribute key="target_bundles" value="cglib@default:default,com.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.ibm.db2.jcc@default:default,com.ibm.nosql@default:default,com.microsoft.sqlserver.sqljdbc@default:default,groovy@default:default,humble.video.noarch@default:default,humble.video.windows@default:default,javax.annotation-api@default:default,javax.mail@default:default,javax.servlet-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.collections@default:default,org.apache.commons.digester@default:default,org.apache.commons.io@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.logging.log4j.api@1:true,org.apache.logging.log4j.core@default:default,org.apache.logging.log4j.slf4j-impl@default:default,org.apache.servicemix.bundles.quartz@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.util@default:default,org.eclipse.jetty.deploy@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,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-api@default:default,org.jboss.resteasy.jaxrs@default:default,org.jmock.junit4@default:default,org.jmock@default:default,org.junit@default:default,org.mybatis.mybatis@default:default,org.objectweb.asm.commons@default:default,org.objectweb.asm.tree@default:default,org.objectweb.asm@default:default,org.omnifaces@default:default,slf4j.api@default:default,slf4j.simple@default:false"/>\r
package hu.user.mediacube.executors.tests;\r
\r
-import java.sql.Timestamp;\r
-import java.text.SimpleDateFormat;\r
import java.time.Duration;\r
import java.time.Instant;\r
import java.util.Arrays;\r
import org.apache.commons.io.output.ByteArrayOutputStream;\r
import org.apache.commons.net.ftp.FTPClient;\r
import org.junit.Test;\r
-import org.w3c.dom.Document;\r
-import org.w3c.dom.Node;\r
-import org.w3c.dom.NodeList;\r
\r
import user.commons.RemoteFile;\r
import user.commons.StoreUri;\r
import user.commons.remotestore.FtpDirectoryLister;\r
import user.commons.remotestore.IDirectoryLister;\r
import user.commons.remotestore.RemoteStoreProtocol;\r
-import user.jobengine.server.steps.EscortFiles;\r
\r
public class MediaBaseTest {\r
\r
nexioUri.setUserName("ftp");\r
nexioUri.setPassword("ftp");\r
byte[] content = nexioUri.getFileWithContent("test-dani.xml").getContent();\r
- System.out.println(new String(content));\r
-\r
- Document document = EscortFiles.createNEXIOMeta(content);\r
- Node firstChild = document.getFirstChild();\r
- NodeList list = firstChild.getChildNodes();\r
- for (int i = 0; i < list.getLength(); i++) {\r
- Node item = list.item(i);\r
- //System.out.println(item.getNodeName());\r
- if (item.getNodeName().equals("ModifiedTimeStamp")) {\r
- System.out.println(item.getTextContent());\r
- SimpleDateFormat df = new SimpleDateFormat("MM-dd-yyyy (HH:mm:ss)");\r
- System.out.println(Timestamp.from(df.parse(item.getTextContent()).toInstant()));\r
- break;\r
- }\r
- }\r
+ System.out.println("Content " + new String(content).length());\r
+\r
+ // Document document = EscortFiles.createNEXIOMeta(content);\r
+ // Node firstChild = document.getFirstChild();\r
+ // NodeList list = firstChild.getChildNodes();\r
+ // for (int i = 0; i < list.getLength(); i++) {\r
+ // Node item = list.item(i);\r
+ // //System.out.println(item.getNodeName());\r
+ // if (item.getNodeName().equals("ModifiedTimeStamp")) {\r
+ // System.out.println(item.getTextContent());\r
+ // SimpleDateFormat df = new SimpleDateFormat("MM-dd-yyyy (HH:mm:ss)");\r
+ // System.out.println(Timestamp.from(df.parse(item.getTextContent()).toInstant()));\r
+ // break;\r
+ // }\r
+ // }\r
\r
// if (elementsByTagName.getLength() == 1) {\r
//\r
// }\r
+\r
+ nexioUri.cleanUp();\r
+\r
+ StoreUri localUri = new StoreUri();\r
+ localUri.setProtocol(RemoteStoreProtocol.LOCAL);\r
+ localUri.setUri("/_video");\r
+\r
+ String fileName = "test-dani.mxf";\r
+ nexioUri.transferFrom(localUri, fileName, fileName);\r
+\r
+ content = nexioUri.getFileWithContent("test-dani.xml").getContent();\r
+ System.out.println("Content " + new String(content).length());\r
+\r
nexioUri.cleanUp();\r
+ localUri.cleanUp();\r
}\r
\r
@Test\r
* 19. oldal\r
C8 B1 00 00 00 02 00 00 00 02\r
If not already established, sets up the interchange of data to be in Unicode, where appropriate\r
-\r
+ \r
C1 4C 21\r
Retrieves the first ID in the system. Mode 21 retrieves both the 8-byte ID handle and the extended ID at the same time. More traditional methods of ID retrieval use A0 14 to get the first 8-byte ID handle followed by C8 C3 to get its matching extended ID.\r
C8 4A 25 30 30 30 30 31 32 33\r
-\r
+ \r
Retrieves the normal set of metadata associated with the specified 8-byte ID handle retrieved in the previous command\r
C9 C3 25 30 30 30 30 31 32 33 00\r
-\r
+ \r
Retrieves the metadata for the specified clip in the first extended field\r
C9 C3 25 30 30 30 30 31 32 33 nn\r
-\r
+ \r
Retrieves the metadata for the specified clip in each of the remaining extended fields\r
C8 84 25 30 30 30 30 31 32 33\r
-\r
+ \r
Retrieves the special attributes associated with the specified clip\r
C0 4D\r
-\r
+ \r
Retrieves the next ID in the system including its 8-byte ID handle and extended ID\r
C8 4A 25 30 30 30 30 31 32 34\r
-\r
+ \r
Retrieves the normal set of metadata associated with the next ID in the list\r
…\r
Continue this cycle of retrieving the next ID in the list and its associated metadata until the server returns no more IDs * */\r
// getJobRuntime().setDescription(String.valueOf(param));\r
\r
try {\r
- //getJobRuntime().setRelated("xxx");\r
//logger.info(new MediaCubeMarker("vasary@elgekko.net", "TESZT"), "Heloka");\r
- //logger.error(getSessionMarker(), "Heloka");\r
+ logger.error(getSessionMarker(), "Heloka");\r
for (int i = 0; i < count; i++) {\r
if (getJobRuntime().isWaitingCancel())\r
break;\r
\r
if (getJobRuntime().isWaitingCancel()) {\r
EscortFiles.remove(filePath);\r
- EscortFiles.remove(escortFilePath);\r
+ //EscortFiles.remove(escortFilePath);\r
EscortFiles.remove(Paths.get(escortFile + EscortFiles.DOT_CATCHED));\r
\r
Message msg = new ParameterizedMessage("A {} fájl visszatöltése kezelői beavatkozás miatt megszakadt.", fileName);\r
\r
EscortFiles.remove(filePath);\r
EscortFiles.remove(Paths.get(escortFile));\r
+ //200911 a kommentet kivettem, mert ezeket is torolni kell\r
EscortFiles.remove(Paths.get(escortFile + EscortFiles.DOT_CATCHED));\r
throw new Exception("Length mismatch in " + filePath + ". Expected: " + expectedFrameNumber + ", found: " + frames);\r
}\r
StoreUri sourceStoreUri = getManager().getStoreUri(downloadable.getLong("sourceStoreUriId"));\r
StoreUri targetStoreUri = getManager().getStoreUri(downloadable.getLong("targetStoreUriId"));\r
\r
- Store targetStore = getManager().getStore(targetStoreUri.getStoreId());\r
- template = targetStore.getName() + "-" + template;\r
+ Store sourceStore = getManager().getStore(sourceStoreUri.getStoreId());\r
+ String sourceStoreName = sourceStore.getName();\r
+ template = sourceStoreName + "-" + template;\r
logger.info(getMarker(), "Starting {} for {}", template, escortFileName);\r
\r
String sourceFileName = downloadable.getString("fileName");\r
\r
//parameterek: IJobRuntime parent, String template, String name, int priority, Map<String, Object> parameters\r
IJobRuntime child = getEngine().submit(null, e -> {\r
- if (e.getStatus().equals(JobStatus.CANCELED))\r
+ if (e.getStatus().equals(JobStatus.CANCELED) || e.getStatus().equals(JobStatus.SUSPENDED))\r
EscortFiles.removeCatchedFile(escortFile);\r
}, template, "Archiválás", priority, IJobEngine.DEFAULT_OWNER, parameters);\r
if (child == null)\r
throw new Exception("Submit error.");\r
\r
child.setDescription(sourceFileName);\r
- child.setRelated(downloadable.getString("title"));\r
+\r
+ child.setRelated(downloadable.getString("title") + " / " + sourceStoreName);\r
+\r
EscortFiles.createCatchedFile(escortFile);\r
\r
} catch (Exception e) {\r
\r
child.setDescription(escortFileName);\r
\r
- child.setRelated(downloadable.getString("title"));\r
+ child.setRelated(downloadable.getString("title") + " / " + targetStore.getName());\r
EscortFiles.createCatchedFile(escortFile);\r
} catch (Exception e) {\r
logger.error(getSessionMarker(), e.getMessage());\r
package user.jobengine.server.steps;\r
\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
+import user.commons.RemoteFile;\r
import user.commons.StoreUri;\r
\r
public class NEXIO1TransferToStep extends TransferStep {\r
+ private static final Logger logger = LogManager.getLogger();\r
+\r
@Override\r
@StepEntry\r
public Object[] execute(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String targetFileName) throws Exception {\r
+\r
+ try {\r
+ String title = targetFileName;\r
+ if (title.contains("."))\r
+ title = title.substring(0, title.lastIndexOf("."));\r
+ RemoteFile remoteFile = targetStoreUri.getFileWithContent(title + ".xml");\r
+ if (remoteFile != null && remoteFile.getContent() != null) {\r
+ logger.info("File already exists on NEXIO1 {}", targetFileName);\r
+ return null;\r
+ }\r
+ } catch (Exception e) {\r
+ logger.error(e.getMessage());\r
+ } finally {\r
+ targetStoreUri.cleanUp();\r
+ }\r
+\r
return super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
}\r
}\r
package user.jobengine.server.steps;\r
\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
+import user.commons.RemoteFile;\r
import user.commons.StoreUri;\r
\r
public class NEXIO2TransferToStep extends TransferStep {\r
+ private static final Logger logger = LogManager.getLogger();\r
+\r
@Override\r
@StepEntry\r
public Object[] execute(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String targetFileName) throws Exception {\r
+ try {\r
+ String title = targetFileName;\r
+ if (title.contains("."))\r
+ title = title.substring(0, title.lastIndexOf("."));\r
+ RemoteFile remoteFile = targetStoreUri.getFileWithContent(title + ".xml");\r
+ if (remoteFile != null && remoteFile.getContent() != null) {\r
+ logger.info("File already exists on NEXIO2 {}", targetFileName);\r
+ return null;\r
+ }\r
+ } catch (Exception e) {\r
+ logger.error(e.getMessage());\r
+ } finally {\r
+ targetStoreUri.cleanUp();\r
+ }\r
+\r
return super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
}\r
}\r
\r
//formatum\r
if (!(videoFormat == 3 || videoFormat == 19)) {\r
- logger.info(getMarker(), "{} unsupported video format", videoFormat);\r
+ logger.debug(getMarker(), "{} unsupported video format", videoFormat);\r
return false;\r
}\r
\r
return false;\r
}\r
if (modifiedHours < lastModifiedHours) {\r
- logger.info(getMarker(), "{} modification time is too cloose for now", title);\r
+ logger.debug(getMarker(), "{} modification time is too cloose for now", title);\r
return false;\r
}\r
\r
\r
//TODO mediafile lastmodified = feltoltott file nexio xml lastmodified\r
Timestamp lastModified = getLastModified(remoteFile);\r
+ logger.info("Setting last modification time on {} to {}", downloadable.getString("title"), lastModified);\r
mediaFile.setLastModified(lastModified);\r
getManager().modify(mediaFile);\r
\r
\r
if (medias != null && medias.size() > 0) {\r
count = medias.size();\r
-\r
for (MMMedia media : medias) {\r
logger.info(getMarker(), "API response contains {}", media.getName());\r
}\r
for (RemoteFile rf : remoteFiles) {\r
try {\r
String name = rf.getName();\r
- int pos = name.lastIndexOf(".");\r
- if (pos > -1) {\r
- name = name.substring(0, pos);\r
- //logger.info(getMarker(), "Adding {}", name);\r
- poolContent.add(name);\r
+ if (name.toLowerCase().endsWith(".mxf")) {\r
+ int pos = name.lastIndexOf(".");\r
+ if (pos > -1) {\r
+ name = name.substring(0, pos);\r
+ //logger.info(getMarker(), "Adding {}", name);\r
+ poolContent.add(name);\r
+ }\r
}\r
} catch (Exception e) {\r
logger.error(e.getMessage());\r
RemoteFile result = null;\r
connect();\r
if (ftpClient != null) {\r
+ //TODO eleg a try?\r
try (InputStream input = ftpClient.retrieveFileStream(name)) {\r
checkCompletePending = true;\r
if (input != null) {\r
--- /dev/null
+-- // Creates MediaCube local temporary and NEXIO stores
+-- Migration SQL that makes the change goes here.
+
+INSERT INTO STORE(NAME,ISSYSTEM,ISLOWRES) VALUES
+('NEXIO1','N','N'),
+('NEXIO2','N','N'),
+('MEDIACUBE_DOWNLOADS','N','N'),
+('MEDIACUBE_UPLOADS','N','N')
+@
+
+INSERT INTO STOREURI(STOREID,PROTOCOL,DELIVERY,URI,ISSTREAM,ISSOURCE,ISTARGET,USERNAME,PASSWORD,ROOTPATH,PORTNUMBER) VALUES
+((SELECT ID FROM STORE WHERE NAME='NEXIO1'),'FTP',null,'192.168.0.98','N','Y','Y','pasa','999',null,null),
+((SELECT ID FROM STORE WHERE NAME='NEXIO1'),'NEXIO',null,'192.168.0.98','N','Y','N',null,null,null,null),
+((SELECT ID FROM STORE WHERE NAME='NEXIO2'),'FTP',null,'192.168.0.99','N','Y','Y','pasa','999',null,null),
+((SELECT ID FROM STORE WHERE NAME='NEXIO2'),'NEXIO',null,'192.168.0.99','N','Y','N',null,null,null,null),
+((SELECT ID FROM STORE WHERE NAME='MEDIACUBE_DOWNLOADS'),'LOCAL',null,'/mediacube/downloads','N','Y','Y',null,null,null,null),
+((SELECT ID FROM STORE WHERE NAME='MEDIACUBE_UPLOADS'),'LOCAL',null,'/mediacube/uploads','N','Y','Y',null,null,null,null)
+@
+
+-- //@UNDO
+-- SQL to undo the change goes here.
+DELETE FROM STOREURI WHERE STOREID=(SELECT ID FROM STORE WHERE NAME='NEXIO1')
+@
+DELETE FROM STOREURI WHERE STOREID=(SELECT ID FROM STORE WHERE NAME='NEXIO2')
+@
+DELETE FROM STOREURI WHERE STOREID=(SELECT ID FROM STORE WHERE NAME='MEDIACUBE_DOWNLOADS')
+@
+DELETE FROM STOREURI WHERE STOREID=(SELECT ID FROM STORE WHERE NAME='MEDIACUBE_UPLOADS')
+@
+DELETE FROM STORE WHERE NAME='NEXIO1'
+@
+DELETE FROM STORE WHERE NAME='NEXIO2'
+@
+DELETE FROM STORE WHERE NAME='MEDIACUBE_DOWNLOADS'
+@
+DELETE FROM STORE WHERE NAME='MEDIACUBE_UPLOADS'
+@
--- /dev/null
+-- // Ensure existance of TSM store with TSM protocol
+-- Migration SQL that makes the change goes here.
+
+MERGE INTO STORE store USING (
+ VALUES ('TSM','Y','N')
+ ) AS merge (NAME,ISSYSTEM,ISLOWRES)
+ ON store.NAME = merge.NAME
+ WHEN NOT MATCHED THEN
+ INSERT (NAME,ISSYSTEM,ISLOWRES) VALUES (merge.NAME, merge.ISSYSTEM, merge.ISLOWRES)
+ ELSE IGNORE
+@
+
+MERGE INTO STOREURI storeuri USING (
+ VALUES ((SELECT ID FROM STORE WHERE NAME='TSM'),'TSM',null,'','N','Y','Y','','',null,null)
+ ) AS merge (STOREID,PROTOCOL,DELIVERY,URI,ISSTREAM,ISSOURCE,ISTARGET,USERNAME,PASSWORD,ROOTPATH,PORTNUMBER)
+ ON (storeuri.PROTOCOL = merge.PROTOCOL AND storeuri.STOREID = merge.STOREID)
+ WHEN NOT MATCHED THEN
+ INSERT (STOREID,PROTOCOL,DELIVERY,URI,ISSTREAM,ISSOURCE,ISTARGET,USERNAME,PASSWORD,ROOTPATH,PORTNUMBER)
+ VALUES (merge.STOREID,merge.PROTOCOL,merge.DELIVERY,merge.URI,merge.ISSTREAM,merge.ISSOURCE,merge.ISTARGET,merge.USERNAME,merge.PASSWORD,merge.ROOTPATH,merge.PORTNUMBER)
+ ELSE IGNORE
+@
+-- //@UNDO
+-- SQL to undo the change goes here.
+--Nem kell undo
\ No newline at end of file
--- /dev/null
+-- // Modify ft triggers, use real tsm store to filter
+-- Migration SQL that makes the change goes here.
+
+
+CREATE OR REPLACE TRIGGER TRG_MEDIAFILE_AFTER_INSERT after insert
+on mediafile
+referencing new as n
+for each row
+
+begin atomic
+ DECLARE storeid BIGINT;
+ SET storeid = (SELECT ID FROM STORE WHERE NAME='TSM');
+
+ IF n.storeid = storeid THEN
+ insert into mediadescription (itemid, mediaid, mediafileid, description)
+ select
+ itemid,
+ mediaid,
+ mediafileid,
+ fulldesc(itemid, mediaid, mediafileid)
+ from vw_items
+ where mediafileid = n.id;
+ END IF;
+end
+@
+
+CREATE OR REPLACE TRIGGER TRG_MEDIAFILE_AFTER_DELETE after delete
+on mediafile
+referencing old as o
+for each row
+begin atomic
+ DECLARE storeid BIGINT;
+ SET storeid = (SELECT ID FROM STORE WHERE NAME='TSM');
+
+ IF o.storeid = storeid THEN
+ delete from mediadescription where mediafileid = o.id;
+ END IF;
+end
+@
+
+-- //@UNDO
+-- SQL to undo the change goes here.
+
+--nincs undo
\ No newline at end of file
--- /dev/null
+-- // Creates PeableBeach local BeachPool as mounted store
+-- Migration SQL that makes the change goes here.
+
+INSERT INTO STORE(NAME,ISSYSTEM,ISLOWRES) VALUES
+('PEABLEBEACH','N','N')
+@
+
+INSERT INTO STOREURI(STOREID,PROTOCOL,DELIVERY,URI,ISSTREAM,ISSOURCE,ISTARGET,USERNAME,PASSWORD,ROOTPATH,PORTNUMBER) VALUES
+((SELECT ID FROM STORE WHERE NAME='PEABLEBEACH'),'LOCAL',null,'/mnt/PEABLEBEACH/BEACHPOOL','N','Y','Y','pasa','999',null,null)
+@
+
+-- //@UNDO
+-- SQL to undo the change goes here.
+DELETE FROM STOREURI WHERE STOREID=(SELECT ID FROM STORE WHERE NAME='PEABLEBEACH')
+@
+DELETE FROM STORE WHERE NAME='PEABLEBEACH'
+@
--- /dev/null
+-- // Modify TSM storeuri username/password
+-- Migration SQL that makes the change goes here.
+
+UPDATE STOREURI storeuri SET USERNAME=NULL, PASSWORD=NULL WHERE PROTOCOL='TSM'
+@
+-- //@UNDO
+-- SQL to undo the change goes here.
+--Nem kell undo
\ No newline at end of file
--- /dev/null
+-- // Add filesize column to mediafile
+-- Migration SQL that makes the change goes here.
+
+ALTER TABLE MEDIAFILE ADD COLUMN FILESIZE BIGINT default 0
+@
+CALL SYSPROC.ADMIN_CMD ( 'REORG TABLE DB2ADMIN.MEDIAFILE' )
+@
+
+
+-- //@UNDO
+-- SQL to undo the change goes here.
+ALTER TABLE MEDIAFILE DROP COLUMN FILESIZE
+@
+CALL SYSPROC.ADMIN_CMD ( 'REORG TABLE DB2ADMIN.MEDIAFILE' )
+@
--- /dev/null
+--
+-- Copyright 2010-2016 the original author or authors.
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+
+-- // Alter JOB table, add RELATED column
+-- Migration SQL that makes the change goes here.
+
+ALTER TABLE JOB ADD COLUMN RELATED VARCHAR(255)
+@
+
+CREATE INDEX IDX_JOB_RELATED ON JOB ("RELATED")
+@
+
+CALL SYSPROC.ADMIN_CMD('REORG TABLE DB2ADMIN.JOB')
+@
+
+-- //@UNDO
+-- SQL to undo the change goes here.
+
+DROP INDEX IDX_JOB_RELATED
+@
+
+ALTER TABLE JOB DROP COLUMN RELATED
+@
+
+CALL SYSPROC.ADMIN_CMD('REORG TABLE DB2ADMIN.JOB')
+@
--- /dev/null
+--
+-- Copyright 2010-2016 the original author or authors.
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+
+-- // Add LOOKUP function for use dynamic like from sqlj
+-- Migration SQL that makes the change goes here.
+
+CREATE OR REPLACE FUNCTION LOOKUP(col VARCHAR(255), search VARCHAR(255))
+ RETURNS int
+ RETURN
+SELECT LOCATE(search, LOWER(col)) FROM SYSIBM.SYSDUMMY1
+@
+
+-- //@UNDO
+-- SQL to undo the change goes here.
+
+DROP FUNCTION LOOKUP
+@
--- /dev/null
+-- // Creates PASAPOOL as mounted store
+-- Migration SQL that makes the change goes here.
+
+INSERT INTO STORE(NAME,ISSYSTEM,ISLOWRES) VALUES
+('PASAPOOL','N','N')
+@
+
+INSERT INTO STOREURI(STOREID,PROTOCOL,DELIVERY,URI,ISSTREAM,ISSOURCE,ISTARGET,USERNAME,PASSWORD,ROOTPATH,PORTNUMBER) VALUES
+((SELECT ID FROM STORE WHERE NAME='PASAPOOL'),'LOCAL',null,'/mnt/PEABLEBEACH/PASAPOOL','N','Y','Y',null,null,null,null)
+@
+
+INSERT INTO STORE(NAME,ISSYSTEM,ISLOWRES) VALUES
+('SELENIOPOOL','N','N')
+@
+
+INSERT INTO STOREURI(STOREID,PROTOCOL,DELIVERY,URI,ISSTREAM,ISSOURCE,ISTARGET,USERNAME,PASSWORD,ROOTPATH,PORTNUMBER) VALUES
+((SELECT ID FROM STORE WHERE NAME='SELENIOPOOL'),'LOCAL',null,'/mnt/PEABLEBEACH/SELENIOPOOL','N','Y','N',null,null,null,null)
+@
+
+INSERT INTO STORE(NAME,ISSYSTEM,ISLOWRES) VALUES
+('SELENIOPOOL_16_9','N','N')
+@
+
+INSERT INTO STOREURI(STOREID,PROTOCOL,DELIVERY,URI,ISSTREAM,ISSOURCE,ISTARGET,USERNAME,PASSWORD,ROOTPATH,PORTNUMBER) VALUES
+((SELECT ID FROM STORE WHERE NAME='SELENIOPOOL_16_9'),'LOCAL',null,'/mnt/PEABLEBEACH/SELENIOPOOL/16_9','N','Y','N',null,null,null,null)
+@
+
+INSERT INTO STORE(NAME,ISSYSTEM,ISLOWRES) VALUES
+('SELENIOPOOL_16_9_PROCESSING','N','N')
+@
+
+INSERT INTO STOREURI(STOREID,PROTOCOL,DELIVERY,URI,ISSTREAM,ISSOURCE,ISTARGET,USERNAME,PASSWORD,ROOTPATH,PORTNUMBER) VALUES
+((SELECT ID FROM STORE WHERE NAME='SELENIOPOOL_16_9_PROCESSING'),'LOCAL',null,'/mnt/PEABLEBEACH/SELENIOPOOL/16_9/PROCESSING','N','Y','N',null,null,null,null)
+@
+
+INSERT INTO STORE(NAME,ISSYSTEM,ISLOWRES) VALUES
+('SELENIOPOOL_4_3','N','N')
+@
+
+INSERT INTO STOREURI(STOREID,PROTOCOL,DELIVERY,URI,ISSTREAM,ISSOURCE,ISTARGET,USERNAME,PASSWORD,ROOTPATH,PORTNUMBER) VALUES
+((SELECT ID FROM STORE WHERE NAME='SELENIOPOOL_4_3'),'LOCAL',null,'/mnt/PEABLEBEACH/SELENIOPOOL/4_3','N','Y','N',null,null,null,null)
+@
+
+INSERT INTO STORE(NAME,ISSYSTEM,ISLOWRES) VALUES
+('SELENIOPOOL_4_3_PROCESSING','N','N')
+@
+
+INSERT INTO STOREURI(STOREID,PROTOCOL,DELIVERY,URI,ISSTREAM,ISSOURCE,ISTARGET,USERNAME,PASSWORD,ROOTPATH,PORTNUMBER) VALUES
+((SELECT ID FROM STORE WHERE NAME='SELENIOPOOL_4_3_PROCESSING'),'LOCAL',null,'/mnt/PEABLEBEACH/SELENIOPOOL/4_3/PROCESSING','N','Y','N',null,null,null,null)
+@
+
+
+-- //@UNDO
+-- SQL to undo the change goes here.
+DELETE FROM STOREURI WHERE STOREID=(SELECT ID FROM STORE WHERE NAME='PASAPOOL')
+@
+DELETE FROM STORE WHERE NAME='PASAPOOL'
+@
+DELETE FROM STOREURI WHERE STOREID=(SELECT ID FROM STORE WHERE NAME='SELENIOPOOL')
+@
+DELETE FROM STORE WHERE NAME='SELENIOPOOL'
+@
+DELETE FROM STOREURI WHERE STOREID=(SELECT ID FROM STORE WHERE NAME='SELENIOPOOL_16_9')
+@
+DELETE FROM STORE WHERE NAME='SELENIOPOOL_16_9'
+@
+DELETE FROM STOREURI WHERE STOREID=(SELECT ID FROM STORE WHERE NAME='SELENIOPOOL_16_9_PROCESSING')
+@
+DELETE FROM STORE WHERE NAME='SELENIOPOOL_16_9_PROCESSING'
+@
+DELETE FROM STOREURI WHERE STOREID=(SELECT ID FROM STORE WHERE NAME='SELENIOPOOL_4_3')
+@
+DELETE FROM STORE WHERE NAME='SELENIOPOOL_4_3'
+@
+DELETE FROM STOREURI WHERE STOREID=(SELECT ID FROM STORE WHERE NAME='SELENIOPOOL_4_3_PROCESSING')
+@
+DELETE FROM STORE WHERE NAME='SELENIOPOOL_4_3_PROCESSING'
+@
--- /dev/null
+-- // Creates PASAPOOL as mounted store
+-- Migration SQL that makes the change goes here.
+
+INSERT INTO STORE(NAME,ISSYSTEM,ISLOWRES) VALUES
+('FILEZILLA_PASARESTORE','N','N')
+@
+
+-- @DELIMITER $
+INSERT INTO STOREURI(STOREID,PROTOCOL,DELIVERY,URI,ISSTREAM,ISSOURCE,ISTARGET,USERNAME,PASSWORD,ROOTPATH,PORTNUMBER) VALUES
+((SELECT ID FROM STORE WHERE NAME='FILEZILLA_PASARESTORE'),'FTP',null,'192.168.0.101','N','N','Y','ftpuser','FtPVs3r@1','/Input/Pasa_Restore',null)
+$
+-- @DELIMITER @
+
+INSERT INTO STORE(NAME,ISSYSTEM,ISLOWRES) VALUES
+('FILEZILLA_AVID','N','N')
+@
+
+-- @DELIMITER $
+INSERT INTO STOREURI(STOREID,PROTOCOL,DELIVERY,URI,ISSTREAM,ISSOURCE,ISTARGET,USERNAME,PASSWORD,ROOTPATH,PORTNUMBER) VALUES
+((SELECT ID FROM STORE WHERE NAME='FILEZILLA_AVID'),'FTP',null,'192.168.0.101','N','N','Y','ftpuser','FtPVs3r@1','/Input/HD_to_DNxHD_MXF',null)
+$
+-- @DELIMITER @
+
+-- //@UNDO
+-- SQL to undo the change goes here.
+DELETE FROM STOREURI WHERE STOREID=(SELECT ID FROM STORE WHERE NAME='FILEZILLA_PASARESTORE')
+@
+DELETE FROM STORE WHERE NAME='FILEZILLA_PASARESTORE'
+@
+DELETE FROM STOREURI WHERE STOREID=(SELECT ID FROM STORE WHERE NAME='FILEZILLA_AVID')
+@
+DELETE FROM STORE WHERE NAME='FILEZILLA_AVID'
+@
--- /dev/null
+--
+-- Copyright 2010-2016 the original author or authors.
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+
+-- // Create DROPITEM stored procedure
+-- Migration SQL that makes the change goes here.
+
+CREATE PROCEDURE DROPITEM(vITEMID BIGINT)
+LANGUAGE SQL
+BEGIN
+ DECLARE vMEDIAFILEID BIGINT;
+ DECLARE vMEDIAID BIGINT;
+ SELECT ID INTO vMEDIAID FROM MEDIA WHERE ITEMID = vITEMID;
+ SELECT ID INTO vMEDIAFILEID FROM MEDIAFILE WHERE MEDIAID = vMEDIAID;
+
+ delete from mediafile where id = vMEDIAFILEID;
+ delete from media where id = vMEDIAID;
+ delete from item where id = vITEMID;
+END
+@
+
+-- //@UNDO
+-- SQL to undo the change goes here.
+
+DROP PROCEDURE DROPITEM
+@
final private List<String> filters;\r
final private Date searchFrom;\r
final private Date searchTo;\r
+ final private int descLength;\r
final private String orderBy;\r
final private boolean orderAscending;\r
final private boolean missingProxy;\r
private int fromResult;\r
private int toResult;\r
\r
- public SearchOptions(String text, List<String> filters, Date searchFrom, Date searchTo, boolean missingProxy, String orderBy, boolean orderAscending) {\r
+ public SearchOptions(String text, List<String> filters, Date searchFrom, Date searchTo, boolean missingProxy, int descLength, String orderBy,\r
+ boolean orderAscending) {\r
this.text = text;\r
this.filters = filters;\r
this.searchFrom = searchFrom;\r
this.searchTo = searchTo;\r
this.missingProxy = missingProxy;\r
+ this.descLength = descLength;\r
this.orderBy = orderBy;\r
this.orderAscending = orderAscending;\r
}\r
return toResult;\r
}\r
\r
+ public boolean isMissingProxy() {\r
+ return missingProxy;\r
+ }\r
+\r
public boolean isOrderAscending() {\r
return orderAscending;\r
}\r
this.toResult = toResult;\r
}\r
\r
- public boolean isMissingProxy() {\r
- return missingProxy;\r
+ public int getDescLength() {\r
+ return descLength;\r
}\r
\r
}\r
private static final Logger logger = LogManager.getLogger();\r
private ItemManager manager = null;\r
private SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");\r
+ private boolean simpleSearch = "true".equals(System.getProperty("mediacube.simplesearch", "false"));\r
\r
public MediaFinder(ItemManager manager) {\r
this.manager = manager;\r
sql.append("m.length,");\r
sql.append("m.itemtypeid mediaitemtypeid,");\r
sql.append(String.format("HIGHLIGHT(md.description, '<span class=''rhl''>', '</span>', '%s') description,", criteriasPattern));\r
- // sql.append("'blabla' description,");\r
sql.append("it.name mediaitemtypename,");\r
sql.append("m.houseid mediahouseid,");\r
sql.append("mf.houseid mediafilehouseid,");\r
sql.append("vw_mf.mediafilecount");\r
- sql.append(\r
- " FROM ITEM i, MEDIA m, MEDIAFILE mf, MEDIADESCRIPTION md, VW_MEDIAFILES vw_mf, ITEMTYPE it WHERE i.id = md.itemid AND m.id = md.mediaid AND mf.id = md.mediafileid AND m.id=vw_mf.mediaid AND m.itemTypeId = it.id");\r
+ sql.append(" FROM ITEM i");\r
+ sql.append(" LEFT OUTER JOIN MEDIADESCRIPTION md ON (md.itemid = i.id)");\r
+ sql.append(" LEFT OUTER JOIN MEDIA m ON (m.id = md.mediaid)");\r
+ sql.append(" LEFT OUTER JOIN MEDIAFILE mf ON (mf.id = md.mediafileid)");\r
+ sql.append(" LEFT OUTER JOIN VW_MEDIAFILES vw_mf ON (vw_mf.mediaid=m.id)");\r
+ sql.append(" LEFT OUTER JOIN ITEMTYPE it ON (it.id = m.itemTypeId)");\r
if (typeIDs != null) {\r
sql.append(" AND m.itemtypeid IN ");\r
sql.append(typeCriteria.toString());\r
}\r
\r
- // Ha csak LIKE van media.title-re, nem kell (AMC)\r
- // String criteria = formatSearchValue(criteria);\r
-\r
- // if (criteria != null && criteria.trim().length() > 0)\r
- // sql.append(" AND CONTAINS(md.description, '" + criteria + "') >= 1");\r
-\r
- if (criteria.endsWith("*"))\r
- criteria = criteria.replace("*", "");\r
- if (criteria != null && criteria.trim().length() > 0)\r
- sql.append(" AND m.title LIKE('%" + criteria + "%')");\r
+ if (simpleSearch) {\r
+ if (criteria.endsWith("*"))\r
+ criteria = criteria.replace("*", "");\r
+ if (criteria != null && criteria.trim().length() > 0)\r
+ sql.append(" AND m.title LIKE('%" + criteria + "%')");\r
+ } else {\r
+ criteria = formatSearchValue(criteria);\r
+ if (criteria != null && criteria.trim().length() > 0)\r
+ sql.append(" AND CONTAINS(md.description, '" + criteria + "') >= 1");\r
+ }\r
\r
- if (options.getSearchFrom() != null) {\r
+ if (options.getSearchFrom() != null)\r
sql.append(String.format(" AND m.archived > '%s'", df.format(options.getSearchFrom())));\r
- }\r
- if (options.getSearchTo() != null) {\r
+\r
+ if (options.getSearchTo() != null)\r
sql.append(String.format(" AND m.archived < '%s'", df.format(options.getSearchTo())));\r
- }\r
\r
if (options.isMissingProxy())\r
sql.append(" AND vw_mf.mediafilecount=1");\r
\r
+ if (options.getDescLength() > 0)\r
+ sql.append(" AND LENGTH(m.description) < " + options.getDescLength());\r
+\r
sql.append(" ORDER BY ");\r
if (options.getOrderBy() == null) {\r
sql.append("itemtitle desc, mediaitemtypeid");\r
return result;\r
}\r
\r
- private void setRelevant(String[] criterias, ArchivedMedia am, String content) {\r
- if (content == null)\r
- return;\r
- for (String c : criterias) {\r
- if (c != null && c.length() > 2) {\r
-\r
- int pos = content.toLowerCase().indexOf(c.toLowerCase());\r
- if (pos > -1) {\r
- int start = 0;\r
- if (pos > 100)\r
- start = pos - 100;\r
- else\r
- start = 0;\r
- int end = pos + 200;\r
- if (end > content.length() - 1)\r
- end = content.length() - 1;\r
-\r
- String relevant = content.substring(start, pos) + "<span class='rhl'>" + content.substring(pos, pos + c.length()) + "</span>"\r
- + content.substring(pos + c.length(), end);\r
-\r
- if (start > 0)\r
- relevant = "..." + relevant;\r
- if (end < content.length() - 1)\r
- relevant = relevant + "...";\r
-\r
- am.setRelevant(relevant);\r
- break;\r
- }\r
-\r
- }\r
- }\r
- }\r
+ // private void setRelevant(String[] criterias, ArchivedMedia am, String content) {\r
+ // if (content == null)\r
+ // return;\r
+ // for (String c : criterias) {\r
+ // if (c != null && c.length() > 2) {\r
+ //\r
+ // int pos = content.toLowerCase().indexOf(c.toLowerCase());\r
+ // if (pos > -1) {\r
+ // int start = 0;\r
+ // if (pos > 100)\r
+ // start = pos - 100;\r
+ // else\r
+ // start = 0;\r
+ // int end = pos + 200;\r
+ // if (end > content.length() - 1)\r
+ // end = content.length() - 1;\r
+ //\r
+ // String relevant = content.substring(start, pos) + "<span class='rhl'>" + content.substring(pos, pos + c.length()) + "</span>"\r
+ // + content.substring(pos + c.length(), end);\r
+ //\r
+ // if (start > 0)\r
+ // relevant = "..." + relevant;\r
+ // if (end < content.length() - 1)\r
+ // relevant = relevant + "...";\r
+ //\r
+ // am.setRelevant(relevant);\r
+ // break;\r
+ // }\r
+ //\r
+ // }\r
+ // }\r
+ // }\r
}\r
<toolbarbutton label="NEXIO szinkronizálás" iconSclass="z-icon-renren" onClick="@command('restartNexio')" visible="${not sessionScope.nexioDisable}" autodisable="self"/>\r
</toolbar>\r
\r
+ <div width="100%" onAfterSize='chart.setWidth(new Integer(event.getWidth()))'>\r
+ <charts id="chart" type="spline" title="Feladatok" marginRight="10"/>\r
+ </div>\r
\r
<div height="100%" width="100%">\r
<groupbox height="94%" closable="false">\r
<label multiline="true" value="@load(vm.selectedObject.media.description)" />\r
</div>\r
</div>\r
-<!-- <div> -->\r
-<!-- <h:textarea name='tags2' placeholder='Címkék'></h:textarea> -->\r
-<!-- <div id="listenerDiv" onChange="@command('onTag')" /> -->\r
+ <div>\r
+ <h:textarea name='tags2' placeholder='Címkék'></h:textarea>\r
+ <div id="listenerDiv" onChange="@command('onTag')" />\r
\r
-<!-- </div> -->\r
+ </div>\r
</div>\r
</div>\r
</zk>
\ No newline at end of file
\r
<datebox id="searchFrom" value="@bind(vm.searchFrom)"/>\r
<datebox id="searchTo" value="@bind(vm.searchTo)"/>\r
+ <spinner value="@bind(vm.descLength)" tooltiptext="Leírás mező karakterszáma"/>\r
<combobox id="search" sclass="search" hflex="1" focus="true" model="@load(vm.searchHistory)" autodrop="true" buttonVisible="false"\r
tooltiptext="Gépelje be a keresendő kifejezést és nyomja meg az Enter-t." onOK="@command('doSearch')">\r
<attribute w:name="_doKeyDown">\r
-version=2.6.2\r
+version=2.6.4\r
footer=2016-2020 © Copyright User Rendszerház Kft.\r
\r
login_info=Információ\r
import static java.util.stream.Collectors.toList;\r
\r
import java.util.Arrays;\r
+import java.util.Calendar;\r
import java.util.HashSet;\r
import java.util.List;\r
import java.util.Map;\r
import org.apache.commons.lang.StringUtils;\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
+import org.zkoss.bind.annotation.AfterCompose;\r
import org.zkoss.bind.annotation.BindingParam;\r
import org.zkoss.bind.annotation.Command;\r
+import org.zkoss.bind.annotation.ContextParam;\r
+import org.zkoss.bind.annotation.ContextType;\r
import org.zkoss.bind.annotation.Init;\r
import org.zkoss.bind.annotation.NotifyChange;\r
+import org.zkoss.chart.Charts;\r
+import org.zkoss.chart.Options;\r
+import org.zkoss.chart.PlotLine;\r
+import org.zkoss.chart.Point;\r
+import org.zkoss.chart.Series;\r
+import org.zkoss.zk.ui.Component;\r
import org.zkoss.zk.ui.Executions;\r
import org.zkoss.zk.ui.event.Event;\r
import org.zkoss.zk.ui.event.EventListener;\r
+import org.zkoss.zk.ui.select.Selectors;\r
+import org.zkoss.zk.ui.select.annotation.Wire;\r
import org.zkoss.zul.ListModelList;\r
import org.zkoss.zul.Messagebox;\r
import org.zkoss.zul.Window;\r
private String searchText;\r
private JobStatus searchStatus;\r
private List<JobStatus> searchStatuses;\r
+ @Wire\r
+ Charts chart;\r
+\r
+ @AfterCompose\r
+ public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {\r
+ Selectors.wireComponents(view, this, false);\r
+ Options options = new Options();\r
+\r
+ options.getGlobal().setUseUTC(false);\r
+ chart.setHeight(150);\r
+ chart.setOptions(options);\r
+ chart.setAnimation(false);\r
+\r
+ chart.getXAxis().setType("datetime");\r
+ chart.getXAxis().setTickPixelInterval(150);\r
+\r
+ chart.getYAxis().setTitle("Darab");\r
+ PlotLine plotLine = new PlotLine();\r
+ plotLine.setValue(0);\r
+ plotLine.setWidth(1);\r
+ plotLine.setColor("#808080");\r
+ chart.getYAxis().setMin(0);\r
+ chart.getYAxis().addPlotLine(plotLine);\r
+\r
+ chart.getTooltip().setHeaderFormat("<b>{series.name}</b><br/>");\r
+ chart.getTooltip().setPointFormat("{point.x:%Y-%m-%d %H:%M:%S}<br>{point.y}");\r
+\r
+ chart.getLegend().setEnabled(false);\r
+ chart.getExporting().setEnabled(false);\r
+\r
+ Series series = chart.getSeries();\r
+ series.setName("Feladatok");\r
+ //updateJobsChart();\r
+\r
+ int size = jobList.size();\r
+ for (int i = -19; i <= 0; i++) {\r
+ Point point = new Point(Calendar.getInstance().getTimeInMillis() + i * 1000, size);\r
+ series.addPoint(point);\r
+ }\r
+ }\r
\r
@Command\r
public void cancelAllJobs() {\r
jobList.clear();\r
Map<Long, IJobRuntime> jobMap = jobEngine.getJobs();\r
jobList.addAll(jobMap.values());\r
-\r
- //Collections.sort(jobList, (o1, o2) -> compare(o1, o2));\r
}\r
\r
public boolean isAllExecutionDisabled() {\r
private void onJobCreated(IJobRuntime job) {\r
jobList.add(job);\r
notifyChange("jobList");\r
+ updateJobsChart();\r
}\r
\r
private void onJobDeleted(IJobRuntime job) {\r
onSelect();\r
\r
notifyChange("jobList");\r
+ updateJobsChart();\r
+ }\r
+\r
+ private void onJobUpdated(IJobRuntime job) {\r
+ //List<IJobRuntime> savedSelectedJobs = new ArrayList<>(selectedJobs);\r
+ jobList.notifyChange(job);\r
}\r
\r
// @Command\r
// initializeList();\r
// }\r
\r
- private void onJobUpdated(IJobRuntime job) {\r
- //List<IJobRuntime> savedSelectedJobs = new ArrayList<>(selectedJobs);\r
- jobList.notifyChange(job);\r
- }\r
-\r
@Command\r
public void onSelect() {\r
- logger.info("Selection changed!");\r
notifyChange("updatePriorityDisabled");\r
}\r
\r
setShutdownDisabled(false);\r
initializeList();\r
}\r
+\r
+ private void updateJobsChart() {\r
+ chart.getSeries().addPoint(new Point(Calendar.getInstance().getTimeInMillis(), jobList.size()), true, true, true);\r
+ }\r
}\r
private boolean rowsExpanded = true;\r
private boolean allSelected;\r
private boolean itemSelected;\r
+ private int descLength;\r
protected IItemManager itemManager = null;\r
@Wire\r
Timer timer;\r
\r
}\r
\r
- @Command\r
- public void setPageSize(@BindingParam("source") Menuitem source) {\r
- if (source.isChecked())\r
- return;\r
- int pageSize = Integer.parseInt(source.getValue());\r
- setSettingsPageSize(pageSize);\r
- itemsGrid.setPageSize(pageSize);\r
- itemsGrid.setActivePage(0);\r
- SessionUtil.putUserPageSize(pageSize);\r
- }\r
-\r
private void clearAllFilters() {\r
for (String filter : typeFilters.keySet()) {\r
typeFilters.get(filter).setChecked(false);\r
throw new Exception("Legalább 3 karakter keresőszöveg, a 'hiányzó proxy' beállítás vagy egy dátum kitöltése szükséges!");\r
}\r
\r
- SearchOptions options = new SearchOptions(searchValue, searchFilters, searchFrom, searchTo, missingProxy, orderBy, orderAscending);\r
+ SearchOptions options = new SearchOptions(searchValue, searchFilters, searchFrom, searchTo, missingProxy, descLength, orderBy, orderAscending);\r
searchResult = new CachedListModel(options);\r
searchResult.addEventListener(e -> {\r
if (e.getName().equals(Events.ON_ERROR)) {\r
}\r
}\r
\r
- private void handleSearchError(Exception e) {\r
- Clients.showNotification(e.getMessage(), "error", search, "start_center", 2000);\r
- logger.error(e);\r
- }\r
-\r
public void doSort(Event event) throws Exception {\r
itemsGrid.getColumns().getChildren().forEach(c -> ((Column) c).setSortDirection("natural"));\r
SortEvent evt = (SortEvent) event;\r
return bottomTypeFilters;\r
}\r
\r
+ public int getDescLength() {\r
+ return descLength;\r
+ }\r
+\r
public boolean getHasLowresMediaFile() {\r
boolean ret = false;\r
if (selectedObject != null) {\r
return typeFilters;\r
}\r
\r
+ private void handleSearchError(Exception e) {\r
+ Clients.showNotification(e.getMessage(), "error", search, "start_center", 2000);\r
+ logger.error(e);\r
+ }\r
+\r
private void highlight(ArchivedMedia am, boolean highlight) {\r
if (am == null)\r
return;\r
}\r
}\r
\r
+ public void setDescLength(int descLength) {\r
+ this.descLength = descLength;\r
+ }\r
+\r
public void setItemSelected(boolean itemSelected) {\r
this.itemSelected = itemSelected;\r
}\r
this.missingProxy = missingProxy;\r
}\r
\r
+ @Command\r
+ public void setPageSize(@BindingParam("source") Menuitem source) {\r
+ if (source.isChecked())\r
+ return;\r
+ int pageSize = Integer.parseInt(source.getValue());\r
+ setSettingsPageSize(pageSize);\r
+ itemsGrid.setPageSize(pageSize);\r
+ itemsGrid.setActivePage(0);\r
+ SessionUtil.putUserPageSize(pageSize);\r
+ }\r
+\r
public void setRowsExpanded(boolean rowsExpanded) {\r
this.rowsExpanded = rowsExpanded;\r
}\r
private void showExternalMediaID() {\r
String mediaID = SessionUtil.getQueryParameter(MEDIA_ID);\r
if (mediaID != null) {\r
- SearchOptions options = new SearchOptions(searchValue, null, searchFrom, searchTo, false, orderBy, orderAscending);\r
+ SearchOptions options = new SearchOptions(searchValue, null, searchFrom, searchTo, false, 0, orderBy, orderAscending);\r
options.setMediaId(Long.parseLong(mediaID));\r
searchResult = new InitializedCachedListModel(options);\r
}\r