<setEntry value="com.microsoft.sqlserver.sqljdbc@default:default"/>\r
<setEntry value="com.sun.jna@default:default"/>\r
<setEntry value="groovy@default:default"/>\r
+ <setEntry value="hu.user.zk.theme.userdark@default:default"/>\r
<setEntry value="io.humble.video-arch-x86_64-pc-linux-gnu6@default:default"/>\r
<setEntry value="io.humble.video-arch-x86_64-w64-mingw32@default:default"/>\r
<setEntry value="io.humble.video-noarch@default:default"/>\r
<setEntry value="com.sun.jna.platform@default:default"/>\r
<setEntry value="com.sun.jna@default:default"/>\r
<setEntry value="groovy@default:default"/>\r
+ <setEntry value="hu.user.zk.theme.userdark@default:default"/>\r
<setEntry value="io.humble.video-arch-x86_64-pc-linux-gnu6@default:default"/>\r
<setEntry value="io.humble.video-arch-x86_64-w64-mingw32@default:default"/>\r
<setEntry value="io.humble.video-noarch@default:default"/>\r
<plugin id="com.microsoft.sqlserver.sqljdbc"/>\r
<plugin id="com.sun.jna"/>\r
<plugin id="groovy"/>\r
-<plugin id="io.humble.video-arch-x86_64-pc-linux-gnu6"/>\r
-<plugin id="io.humble.video-arch-x86_64-w64-mingw32"/>\r
-<plugin id="io.humble.video-noarch"/>\r
<plugin id="javax.annotation-api"/>\r
<plugin id="javax.mail"/>\r
<plugin id="javax.servlet-api"/>\r
<plugin id="org.objectweb.asm.tree"/>\r
<plugin id="org.objectweb.asm.commons"/>\r
<plugin id="com.sun.jna.platform"/>\r
+ <plugin id="hu.user.zk.theme.userdark"/>\r
</includeBundles>\r
<environment>\r
<os>win32</os>\r
<packaging>jar</packaging>\r
</configuration>\r
</execution>\r
+ <execution>\r
+ <id>install3</id>\r
+ <phase>package</phase>\r
+ <goals>\r
+ <goal>install-file</goal>\r
+ </goals>\r
+ <configuration>\r
+ <file>libs/userdark-1.0.0.jar</file>\r
+ <groupId>hu.user.zk.theme</groupId>\r
+ <artifactId>userdark</artifactId>\r
+ <version>1.0.0</version>\r
+ <packaging>jar</packaging>\r
+ </configuration>\r
+ </execution>\r
</executions>\r
</plugin>\r
<plugin>\r
<id>default-cli</id>\r
<configuration>\r
<artifacts>\r
+ <artifact>\r
+ <id>hu.user.zk.theme:userdark:1.0.0</id>\r
+ </artifact>\r
<artifact>\r
<id>org.apache.felix:org.apache.felix.gogo.command:0.12.0</id>\r
</artifact>\r
<artifact>\r
<id>org.apache.felix:org.apache.felix.gogo.runtime:0.12.0</id>\r
</artifact>\r
-<!-- <artifact> -->\r
-<!-- <id>org.apache.felix:org.apache.felix.gogo.command:0.10.0.v201209301215</id> -->\r
-<!-- </artifact> -->\r
-<!-- <artifact> -->\r
-<!-- <id>org.apache.felix:org.apache.felix.gogo.shell:0.10.0</id> -->\r
-<!-- </artifact> -->\r
-<!-- <artifact> -->\r
-<!-- <id>org.apache.felix:org.apache.felix.gogo.runtime:0.10.0</id> -->\r
-<!-- </artifact> -->\r
<artifact>\r
<id>org.eclipse.platform:org.eclipse.equinox.launcher:1.3.201</id>\r
</artifact>\r
<artifact>\r
<id>net.java.dev.jna:jna-platform:5.8.0</id>\r
</artifact>\r
+<!-- \r
<artifact>\r
<id>io.humble:humble-video-all:0.2.1</id>\r
</artifact>\r
<artifact>\r
<id>io.humble:humble-video-arch-x86_64-w64-mingw32:0.2.1</id>\r
</artifact>\r
+-->\r
<artifact>\r
<id>org.ow2.asm:asm:5.0.1</id>\r
</artifact>\r
<?xml version="1.0" encoding="UTF-8"?>\r
<?pde version="3.5"?>\r
-<!DOCTYPE xml>\r
\r
<product name="MediaCube" uid="MediaCube" version="1.0.0" useFeatures="false" includeLaunchers="false">\r
\r
<plugin id="com.sun.jna"/>\r
<plugin id="com.sun.jna.platform"/>\r
<plugin id="groovy"/>\r
+ <plugin id="hu.user.zk.theme.userdark"/>\r
<plugin id="io.humble.video-arch-x86_64-pc-linux-gnu6"/>\r
<plugin id="io.humble.video-arch-x86_64-w64-mingw32"/>\r
<plugin id="io.humble.video-noarch"/>\r
{\r
"joblist": [\r
+ {\r
+ "template": "backup-file.xml"\r
+ },\r
{\r
"active": false,\r
"cronexpression": "0/2 * * * * ?",\r
+theme: userdark\r
jobQueuePollInterval: 1000\r
disableHelp: true\r
maestroDisabled: false\r
- name: Reklám nyers\r
authentication:\r
authEnabled: true\r
-# defaultUser: root\r
-# defaultPassword: password\r
+ defaultUser: root\r
+ defaultPassword: password\r
adHost: 10.10.254.11\r
adNonSecurePort: 3268\r
adBaseDn: DC=intra,DC=echotv,DC=hu\r
System.out.println(formatatted + " " + formatatted.length());\r
}\r
\r
- @Test\r
- public void test99996() throws Exception {\r
- System.out.println(System.getProperty("user.home"));\r
- System.setProperty("java.library.path", "/users/elgekko");\r
- Path filePath = Paths.get("/opt/AMC/2021/ISSUES/#203/IFL000000071_43.mxf");\r
- user.commons.mediatool.MediaInfo mi = new user.commons.mediatool.MediaInfo(filePath);\r
- mi.process();\r
- System.out.println(String.format("%s %d %s", mi.getCodecProfileName(), mi.getHeight(), mi.getDisplayAspect()));\r
- }\r
-\r
@Test\r
public void test99997() throws Exception {\r
\r
<?xml version="1.0" encoding="UTF-8"?>\r
<classpath>\r
- <classpathentry exported="true" kind="lib" path="lib/userdark-8.0.3.jar"/>\r
<classpathentry exported="true" kind="lib" path="lib/datahandler-syntax-highlight-1.0.0.jar"/>\r
<classpathentry exported="true" kind="lib" path="lib/commons-codec-1.10.jar"/>\r
<classpathentry exported="true" kind="lib" path="lib/commons-fileupload-1.2.1.jar"/>\r
lib/zul.jar,
lib/zuti.jar,
lib/zweb.jar,
- lib/datahandler-syntax-highlight-1.0.0.jar,
- lib/userdark-8.0.3.jar
+ lib/datahandler-syntax-highlight-1.0.0.jar
Export-Package: bsh,
bsh.classpath,
bsh.collection,
org.zkoss.theme.___THEME_NAME___,
org.zkoss.theme.sapphire,
org.zkoss.theme.silvertail,
- org.zkoss.theme.userdark,
org.zkoss.util,
org.zkoss.util.logging,
org.zkoss.util.media,
web.zul.img.wnd,
web.zul.less,
web.zul.less.font
-Require-Bundle: javax.servlet-api;bundle-version="3.1.0"
+Require-Bundle: javax.servlet-api;bundle-version="3.1.0",
+ hu.user.zk.theme.userdark;bundle-version="1.0.0"
Import-Package: org.slf4j;version="1.7.2"
lib/zul.jar,\\r
lib/zuti.jar,\\r
lib/zweb.jar,\\r
- lib/datahandler-syntax-highlight-1.0.0.jar,\\r
- lib/userdark-8.0.3.jar\r
+ lib/datahandler-syntax-highlight-1.0.0.jar\r
\r
import user.commons.JobStatus;\r
import user.commons.ListUtils;\r
-import user.commons.mediatool.MediaInfo;\r
+import user.commons.mediaarea.MediaArea;\r
import user.jobengine.server.IJobEngine;\r
import user.jobengine.server.IJobRuntime;\r
import user.jobengine.server.steps.shared.EscortFiles;\r
private boolean canReadMediaInfo(Path mediaFilePath) {\r
boolean result = false;\r
try {\r
- MediaInfo mi = new MediaInfo(mediaFilePath);\r
+ MediaArea mi = new MediaArea(mediaFilePath);\r
mi.process();\r
result = true;\r
} catch (Exception e) {\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
\r
-import user.commons.mediatool.MediaInfo;\r
+import user.commons.mediaarea.MediaArea;\r
import user.jobengine.db.Media;\r
\r
public class DirMXFValidatorStep extends JobStep {\r
} else\r
frames = media.getLength();\r
\r
- MediaInfo mi = null;\r
+ MediaArea mi = null;\r
\r
try {\r
- mi = new MediaInfo(file);\r
+ mi = new MediaArea(file);\r
mi.process();\r
} catch (Exception e) {\r
logger.error(getSessionMarker(), e.getMessage());\r
logger.error("Unreadable: {}", fileName);\r
}\r
\r
- logger.info("Valid: {} MC farmes {} FF frames {}", fileName, frames, mi.getFrames());\r
+ logger.info("Valid: {} MC farmes {} FF frames {}", fileName, frames, mi.getFrameCount());\r
}\r
\r
return null;\r
\r
import user.commons.DownloadableMedia;\r
import user.commons.StoreUri;\r
-import user.commons.mediatool.MediaInfo;\r
+import user.commons.mediaarea.MediaArea;\r
import user.commons.remotestore.RemoteStoreProtocol;\r
import user.jobengine.server.steps.shared.EscortFiles;\r
\r
}\r
\r
private void storeCurrentFrames(Path filePath, DownloadableMedia downloadable, Path escortFilePath) {\r
- MediaInfo mi = null;\r
+ MediaArea mi = null;\r
try {\r
- mi = new MediaInfo(filePath);\r
+ mi = new MediaArea(filePath);\r
mi.process();\r
- long frames = mi.getFrames();\r
+ long frames = mi.getFrameCount();\r
downloadable.put("frames", frames);\r
Files.write(escortFilePath, downloadable.toPrettyString("").getBytes());\r
- logger.info(getMarker(), "{} length {} is saved to escort file", filePath, frames,\r
- escortFilePath.getFileName().toString());\r
+ logger.info(getMarker(), "{} length {} is saved to escort file", filePath, frames, escortFilePath.getFileName().toString());\r
} catch (Exception e) {\r
logger.error(getSessionMarker(), e.getMessage());\r
}\r
\r
import user.commons.DownloadableMedia;\r
import user.commons.StoreUri;\r
-import user.commons.mediatool.MediaInfo;\r
+import user.commons.mediaarea.MediaArea;\r
import user.commons.remotestore.RemoteStoreProtocol;\r
import user.jobengine.db.Media;\r
import user.jobengine.server.steps.shared.EscortFiles;\r
private static final Logger logger = LogManager.getLogger();\r
\r
@StepEntry\r
- public Object[] execute(StoreUri sourceStoreUri, String fileName, long expectedFrameNumber, long expectedSize,\r
- String exceptedColorSpace, String escortFile) throws Exception {\r
+ public Object[] execute(StoreUri sourceStoreUri, String fileName, long expectedFrameNumber, long expectedSize, String exceptedColorSpace, String escortFile)\r
+ throws Exception {\r
if (!RemoteStoreProtocol.LOCAL.equals(sourceStoreUri.getProtocol()))\r
throw new Exception("Store URI protocol must be local.");\r
Path filePath = Paths.get(sourceStoreUri.toString(true), fileName);\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.",\r
- fileName);\r
+ Message msg = new ParameterizedMessage("A {} fájl visszatöltése kezelői beavatkozás miatt megszakadt.", fileName);\r
EscortFiles.notifyRecipient(escortFilePath, logger, msg);\r
\r
cancel();\r
if (downloadable != null && expectedFrameNumber == 0)\r
storeCurrentFrames(filePath, downloadable);\r
\r
- if (downloadable != null && downloadable.containsKey("skipValidation")\r
- && downloadable.getBoolean("skipValidation")) {\r
+ if (downloadable != null && downloadable.containsKey("skipValidation") && downloadable.getBoolean("skipValidation")) {\r
logger.info(getMarker(), "Validation skipped for {}", fileName);\r
return null;\r
}\r
}\r
\r
private void storeCurrentFrames(Path filePath, DownloadableMedia downloadable) {\r
- MediaInfo mi = null;\r
+ MediaArea mi = null;\r
try {\r
- mi = new MediaInfo(filePath);\r
+ mi = new MediaArea(filePath);\r
mi.process();\r
- long frames = mi.getFrames();\r
+ long frames = mi.getFrameCount();\r
\r
if (downloadable.containsKey("mediaId")) {\r
Media media = getManager().getMedia(downloadable.getLong("mediaId"));\r
}\r
}\r
\r
- private void validateMedia(Path filePath, long expectedFrameNumber, String exceptedColorSpace, String escortFile)\r
- throws Exception {\r
- MediaInfo mi = null;\r
+ private void validateMedia(Path filePath, long expectedFrameNumber, String exceptedColorSpace, String escortFile) throws Exception {\r
+ MediaArea mi = null;\r
try {\r
- mi = new MediaInfo(filePath);\r
+ mi = new MediaArea(filePath);\r
mi.process();\r
\r
if (expectedFrameNumber > 0) {\r
- long frames = mi.getFrames();\r
+ long frames = mi.getFrameCount();\r
if (Math.abs(frames - expectedFrameNumber) > 3) {\r
- Message msg = new ParameterizedMessage("Validációs hiba miatt a {} fájl másolása nem lehetséges.",\r
- filePath.getFileName());\r
+ Message msg = new ParameterizedMessage("Validációs hiba miatt a {} fájl másolása nem lehetséges.", filePath.getFileName());\r
EscortFiles.notifyRecipient(Paths.get(escortFile), logger, msg);\r
getJobRuntime().setDisableRetry(true);\r
- throw new Exception("Length mismatch in " + filePath + ". Expected: " + expectedFrameNumber\r
- + ", found: " + frames);\r
+ throw new Exception("Length mismatch in " + filePath + ". Expected: " + expectedFrameNumber + ", found: " + frames);\r
}\r
}\r
\r
\r
import user.commons.RemoteFile;\r
import user.commons.StoreUri;\r
-import user.commons.mediatool.MediaInfo;\r
+import user.commons.mediaarea.MediaArea;\r
import user.commons.remotestore.FtpDirectoryLister;\r
import user.commons.remotestore.IProgressEventListener;\r
import user.commons.remotestore.IStatusEventListener;\r
@StepEntry\r
public Object[] execute(int z) throws Exception {\r
try {\r
- // retrieveTest();\r
- // ftpTest();\r
- //((MediaCubeMarker) getJobRuntime().getFinishMarker()).setTo("hering.tamas70@gmail.com");\r
+ // retrieveTest();\r
+ // ftpTest();\r
+ // ((MediaCubeMarker) getJobRuntime().getFinishMarker()).setTo("hering.tamas70@gmail.com");\r
\r
for (int i = 0; i < count; i++) {\r
if (getJobRuntime().isWaitingCancel())\r
sourceUri.addProgressListener(new IProgressEventListener() {\r
@Override\r
public void progressChanged(ProgressEvent evt) {\r
- //logger.info(evt.getProgress());\r
+ // logger.info(evt.getProgress());\r
}\r
});\r
sourceUri.addStatusListener(new IStatusEventListener() {\r
fn = fileName.substring(9);\r
RemoteFile result = sourceUri.transferFrom(targetUri, fileName, fn);\r
\r
- MediaInfo mi = new MediaInfo(Paths.get(targetUri.toString(true), fn));\r
+ MediaArea mi = new MediaArea(Paths.get(targetUri.toString(true), fn));\r
mi.process();\r
- logger.info(MarkerManager.getMarker("MOVTEST"), "Az {} állomány viszatöltve, hossz {}, audio {}", fn, mi.getFrames(), mi.getAudioStreams());\r
+ logger.info(MarkerManager.getMarker("MOVTEST"), "Az {} állomány viszatöltve, hossz {}, audio {}", fn, mi.getFrameCount(), mi.getAudioCount());\r
}\r
} catch (Exception e) {\r
logger.info(MarkerManager.getMarker("MOVTEST"), "Az {} állomány viszatöltése sikertelen. {}", fn, e.getMessage());\r
import user.commons.IEntityBase;\r
import user.commons.RemoteFile;\r
import user.commons.StoreUri;\r
-import user.commons.mediatool.MediaInfo;\r
+import user.commons.mediaarea.MediaArea;\r
import user.commons.remotestore.RemoteStoreProtocol;\r
import user.jobengine.db.Item;\r
import user.jobengine.db.Media;\r
private boolean canReadMediaInfo(Path mediaFilePath) {\r
boolean result = false;\r
try {\r
- MediaInfo mi = new MediaInfo(mediaFilePath);\r
+ MediaArea mi = new MediaArea(mediaFilePath);\r
mi.process();\r
result = true;\r
} catch (Exception e) {\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
\r
-import user.commons.mediatool.MediaInfo;\r
+import user.commons.mediaarea.MediaArea;\r
\r
public class FFMpeg {\r
\r
long[] allFrames = new long[]{0};\r
\r
try {\r
- MediaInfo mi = new MediaInfo(Paths.get(input));\r
+ MediaArea mi = new MediaArea(Paths.get(input));\r
mi.process();\r
- allFrames[0] = mi.getFrames();\r
+ allFrames[0] = mi.getFrameCount();\r
} catch (Exception e ){\r
System.err.println(e);\r
\r
long[] allFrames = new long[]{0};\r
\r
try {\r
- MediaInfo mi = new MediaInfo(Paths.get(input));\r
+ MediaArea mi = new MediaArea(Paths.get(input));\r
mi.process();\r
- allFrames[0] = mi.getFrames();\r
+ allFrames[0] = mi.getFrameCount();\r
} catch (Exception e ){\r
System.err.println(e);\r
\r
\r
if (result.containsKey("exception")) {\r
BasicDBObject e = (BasicDBObject) result.get("exception");\r
- throw new RuntimeException(e.getString("message"));\r
-\r
+ // throw new RuntimeException(e.getString("message"));\r
+ logger.error("Query error: {}", e.getString("message"));\r
+ return null;\r
}\r
return result;\r
}\r
com.fasterxml.jackson.datatype.joda;version="2.4.5",
com.fasterxml.jackson.jaxrs.json;version="2.4.5",
com.sun.jna,
- io.humble.video,
- io.humble.video.awt,
junit.framework,
org.apache.logging.log4j,
org.apache.logging.log4j.message,
private double frameRate;\r
private String format = "";\r
private BasicDBObject inform = null;\r
+ private String colorSpace;\r
+ private int audioCount;\r
\r
public MediaArea(Path filePath) {\r
this.filePath = filePath;\r
width = Integer.parseInt(mi.get(StreamKind.Video, 0, "Width"));\r
displayAspect = mi.get(StreamKind.Video, 0, "DisplayAspectRatio/String");\r
formatProfile = mi.get(StreamKind.Video, 0, "Format_Profile").toUpperCase();\r
+ colorSpace = mi.get(StreamKind.Video, 0, "ColorSpace").toUpperCase();\r
format = mi.get(StreamKind.Video, 0, "Format").toUpperCase();\r
frameRate = Double.parseDouble(mi.get(StreamKind.Video, 0, "FrameRate"));\r
frameCount = Integer.parseInt(mi.get(StreamKind.Video, 0, "FrameCount"));\r
-\r
+ audioCount = Integer.parseInt(mi.get(StreamKind.General, 0, "AudioCount"));\r
inform = new BasicDBObject();\r
\r
getInform().put("fileName", filePath.getFileName().toString());\r
\r
Map<String, MediaMetadata> data = InformParser.parse(mi.inform());\r
for (MediaMetadata md : data.values()) {\r
- getInform().append(md.getType(),\r
- new BasicDBObject(Collections.<String, Object>unmodifiableMap(md.getMetaData())));\r
+ getInform().append(md.getType(), new BasicDBObject(Collections.<String, Object>unmodifiableMap(md.getMetaData())));\r
}\r
} catch (Exception ex) {\r
throw new Exception(ex);\r
public BasicDBObject getInform() {\r
return inform;\r
}\r
+\r
+ public String getColorSpace() {\r
+ return colorSpace;\r
+ }\r
+\r
+ public int getAudioCount() {\r
+ return audioCount;\r
+ }\r
}\r
+++ /dev/null
-package user.commons.mediatool;\r
-\r
-import java.io.IOException;\r
-import java.nio.file.Path;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import io.humble.video.Codec;\r
-import io.humble.video.CodecProfile;\r
-import io.humble.video.Decoder;\r
-import io.humble.video.Demuxer;\r
-import io.humble.video.DemuxerStream;\r
-import io.humble.video.MediaDescriptor;\r
-import io.humble.video.Rational;\r
-\r
-public class MediaInfo {\r
- private static final Logger logger = LogManager.getLogger();\r
- private long frames;\r
- private Path filePath;\r
- private int bitRate;\r
- private String colorSpace;\r
- private int audioStreams;\r
- private int videoStreams;\r
- private int height;\r
- private int width;\r
- private String codecProfileName;\r
- private String displayAspect;\r
-\r
- public MediaInfo(Path filePath) {\r
- this.filePath = filePath;\r
- }\r
-\r
- public int getAudioStreams() {\r
- return audioStreams;\r
- }\r
-\r
- public int getBitRate() {\r
- return bitRate;\r
- }\r
-\r
- /***\r
- * Uppercase codec profile name\r
- *\r
- * @return Name or empty String, never NULL\r
- */\r
- public String getCodecProfileName() {\r
- return codecProfileName;\r
- }\r
-\r
- public String getColorSpace() {\r
- return colorSpace;\r
- }\r
-\r
- public String getDisplayAspect() {\r
- return displayAspect;\r
- }\r
-\r
- public long getFrames() {\r
- return frames;\r
- }\r
-\r
- public int getHeight() {\r
- return height;\r
- }\r
-\r
- public int getVideoStreams() {\r
- return videoStreams;\r
- }\r
-\r
- public int getWidth() {\r
- return width;\r
- }\r
-\r
- public void process() throws InterruptedException, IOException {\r
- Demuxer demuxer = null;\r
- try {\r
- demuxer = Demuxer.make();\r
- demuxer.open(filePath.toString(), null, false, true, null, null);\r
-\r
- bitRate = demuxer.getBitRate();\r
-\r
- int numStreams = demuxer.getNumStreams();\r
- frames = 0;\r
- int videoStreamId = -1;\r
- for (int i = 0; i < numStreams; i++) {\r
- final DemuxerStream stream = demuxer.getStream(i);\r
- final Decoder decoder = stream.getDecoder();\r
-\r
- if (decoder != null) {\r
- if (decoder.getCodecType() == MediaDescriptor.Type.MEDIA_VIDEO) {\r
- videoStreams++;\r
- videoStreamId = i;\r
- frames = stream.getNumFrames();\r
-\r
- if (frames == 0)\r
- frames = stream.getDuration();\r
- colorSpace = decoder.getPixelFormat().toString();\r
-\r
- height = decoder.getHeight();\r
- width = decoder.getWidth();\r
-\r
- codecProfileName = "";\r
-\r
- Codec codec = decoder.getCodec();\r
- CodecProfile profile = codec.getSupportedProfile(decoder.getPropertyAsInt("profile"));\r
- if (profile != null && profile.getName() != null)\r
- codecProfileName = profile.getName().toUpperCase();\r
-\r
- Rational sampleAspectRatio = stream.getSampleAspectRatio();\r
- float dasp = (float) (sampleAspectRatio.getNumerator() * width) / (sampleAspectRatio.getDenominator() * height);\r
- if (dasp == 4f / 3f)\r
- displayAspect = "4:3";\r
-\r
- if (dasp == 16f / 9f)\r
- displayAspect = "16:9";\r
-\r
- }\r
- if (decoder.getCodecType() == MediaDescriptor.Type.MEDIA_AUDIO) {\r
- audioStreams++;\r
- }\r
- }\r
- }\r
- if (videoStreamId == -1)\r
- throw new RuntimeException("Could not find video stream in " + filePath);\r
- } catch (UnsatisfiedLinkError e) {\r
- logger.catching(e);\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- throw e;\r
- } finally {\r
- try {\r
- if (demuxer != null)\r
- demuxer.close();\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- throw e;\r
- }\r
- }\r
- }\r
-\r
-}\r
void truncate(Class<? extends IEntityBase> classInfo);\r
\r
List<ArchivedMedia> getGroupChildren(ArchivedMedia master, String criteria);\r
+\r
+ BasicDBObject simpleSearch(BasicDBObject searchParameters);\r
}
\ No newline at end of file
}\r
}\r
\r
+ @Override\r
+ public BasicDBObject simpleSearch(BasicDBObject searchParameters) {\r
+ MediaFinder finder = new MediaFinder(this);\r
+ return finder.simpleSearch(searchParameters);\r
+ }\r
+\r
}\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
\r
+import com.ibm.nosql.json.api.BasicDBList;\r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
import sqlj.runtime.ref.DefaultContext;\r
import user.jobengine.db.ArchivedMedia;\r
import user.jobengine.db.Item;\r
return resultList;\r
}\r
\r
+ public BasicDBObject simpleSearch(BasicDBObject searchParameters) {\r
+ BasicDBObject result = new BasicDBObject();\r
+ BasicDBList items = new BasicDBList();\r
+ result.put("data", items);\r
+\r
+ String criteria = searchParameters.getString("criteria");\r
+ String criteriasPattern = getCriteriasRegexPattern(criteria);\r
+ String textCriteria = formatSearchValue(criteria);\r
+\r
+ int paginationSize = searchParameters.getInt("size");\r
+ int page = searchParameters.getInt("page");\r
+ if (page == 1) {\r
+ SQL sql = new SQL();\r
+ sql.SELECT("COUNT(*) resultcount");\r
+ sql.FROM("VW_ITEMS_WITH_PATH vi", "MEDIADESCRIPTION md");\r
+ sql.WHERE("vi.mediafileid = md.mediafileid");\r
+ if (textCriteria != null && textCriteria.trim().length() > 0) {\r
+ sql.AND();\r
+ sql.WHERE(String.format("CONTAINS(md.description, '%s') >= 1", textCriteria));\r
+ }\r
+\r
+ String query = sql.toString();\r
+ manager.executeQuery(query, rs -> {\r
+ int resultCount = rs.getInt("resultcount");\r
+ int pageCount = (int) Math.floor(resultCount / paginationSize);\r
+ logger.info("Result count {}, pagecount {}", resultCount, pageCount);\r
+ result.put("last_page", pageCount);\r
+ return false;\r
+ }, st -> {\r
+\r
+ });\r
+ }\r
+ SQL sql = new SQL();\r
+ String relevantField = String.format("HIGHLIGHT(md.description, '<span class=''rhl''>', '</span>', '%s') AS relevant", criteriasPattern);\r
+ sql.SELECT("vi.itemid", "vi.itemtitle", "vi.mediaid", "vi.mediatitle", "vi.mediacreation", "vi.medialength", "vi.mediaitemtypename", "vi.mediahouseid",\r
+ "vi.mediarelativepath", relevantField);\r
+ sql.FROM("VW_ITEMS_WITH_PATH vi", "MEDIADESCRIPTION md");\r
+ sql.WHERE("vi.mediafileid = md.mediafileid");\r
+ if (textCriteria != null && textCriteria.trim().length() > 0) {\r
+ sql.AND();\r
+ sql.WHERE(String.format("CONTAINS(md.description, '%s') >= 1", textCriteria));\r
+ }\r
+ sql.LIMIT(paginationSize);\r
+ int offset = (page - 1) * paginationSize;\r
+ sql.OFFSET(offset);\r
+ sql.ORDER_BY("vi.mediacreation DESC");\r
+ String query = sql.toString();\r
+ logger.info(query);\r
+\r
+ result.put("last_row", offset);\r
+\r
+ manager.executeQuery(query, rs -> {\r
+ BasicDBObject item = new BasicDBObject();\r
+ item.put("itemId", rs.getString("itemid"));\r
+ item.put("itemTitle", rs.getString("itemtitle"));\r
+ item.put("mediaId", rs.getString("mediaid"));\r
+ item.put("mediaTitle", rs.getString("mediatitle"));\r
+ item.put("creation", rs.getString("mediacreation"));\r
+ item.put("length", rs.getInt("medialength"));\r
+ item.put("typeName", rs.getString("mediaitemtypename"));\r
+ item.put("houseId", rs.getString("mediahouseid"));\r
+ item.put("fileName", rs.getString("mediarelativepath"));\r
+ item.put("relevant", rs.getString("relevant"));\r
+ items.add(item);\r
+ result.put("last_row", result.getInt("last_row") + 1);\r
+ return true;\r
+ }, st -> {\r
+\r
+ });\r
+ return result;\r
+ }\r
+\r
}\r
BasicDBList outputs = null;\r
// az inputs és az outputs elemei egyenként vannak hozzáadva, mert csak\r
// String-gé konvertálva tudja a JS oldal feldolgozni (az addAll() nem működne)\r
- List<Parameter> inputParameters = command.getInputParameterSequence().getParameters();\r
- for (int i = 0; i < inputParameters.size(); i++) {\r
- BasicDBObject input = new BasicDBObject();\r
- Expression expression = ((InputParameter) inputParameters.get(i)).getExpression();\r
- input.append("name", expression.getName());\r
-\r
- if (expression instanceof ParameterExpression) {\r
- input.append("type", "param");\r
- } else {\r
- input.append("type", "variable");\r
+ if (command.getInputParameterSequence() != null) {\r
+ List<Parameter> inputParameters = command.getInputParameterSequence().getParameters();\r
+ for (int i = 0; i < inputParameters.size(); i++) {\r
+ BasicDBObject input = new BasicDBObject();\r
+ Expression expression = ((InputParameter) inputParameters.get(i)).getExpression();\r
+ input.append("name", expression.getName());\r
+\r
+ if (expression instanceof ParameterExpression) {\r
+ input.append("type", "param");\r
+ } else {\r
+ input.append("type", "variable");\r
+ }\r
+ inputs.add(input);\r
}\r
- inputs.add(input);\r
}\r
if (command.getOutputParameterSequence() != null) {\r
outputs = new BasicDBList();\r
}\r
\r
newNode.append("name", command.getType().replace(".java", "")).append("y", 75).append("w", 100).append("h", 100)\r
- .append("connectors", "connectorsForStep").append("text", command.getType().replace(".java", ""))\r
- .append("fillStyle", "green").append("figure", "RectangleWithGradient").append("inputs", inputs)\r
- .append("weight", command.getWeight());\r
+ .append("connectors", "connectorsForStep").append("text", command.getType().replace(".java", "")).append("fillStyle", "green")\r
+ .append("figure", "RectangleWithGradient").append("inputs", inputs).append("weight", command.getWeight());\r
if (outputs != null) {\r
newNode.append("outputs", outputs);\r
}\r
\r
BasicDBList links = (BasicDBList) dbo.get("links");\r
BasicDBObject newLink = new BasicDBObject();\r
- newLink.append("from", nodes.size()).append("to", nodes.size() + 1).append("anchorFrom", 0)\r
- .append("anchorTo", 1).append("text", "").append("mode", "straight");\r
+ newLink.append("from", nodes.size()).append("to", nodes.size() + 1).append("anchorFrom", 0).append("anchorTo", 1).append("text", "").append("mode",\r
+ "straight");\r
links.add(newLink);\r
return null;\r
}\r
import user.commons.IEntityBase;\r
import user.commons.ListUtils;\r
import user.commons.StoreUri;\r
-import user.commons.mediatool.MediaInfo;\r
import user.commons.nosql.NoSQLUtils;\r
import user.commons.octopus.IOctopusAPI;\r
import user.commons.octopus.OctopusAPI;\r
\r
@BeforeClass\r
static public void setUpConnection() {\r
- // // System.setProperty("jobengine.octopus.rundowns.name", "test_rundowns");\r
- // // System.setProperty("jobengine.octopus.stories.name", "test_stories");\r
- // // System.setProperty("jobengine.octopus.storyfolders.name", "test_storyfolders");\r
- // System.setProperty("jobengine.octopus.rundowns.name", "rundowns180620");\r
- // System.setProperty("jobengine.octopus.stories.name", "stories180620");\r
- // System.setProperty("jobengine.octopus.storyfolders.name", "storyfolders180620");\r
+ // // System.setProperty("jobengine.octopus.rundowns.name", "test_rundowns");\r
+ // // System.setProperty("jobengine.octopus.stories.name", "test_stories");\r
+ // // System.setProperty("jobengine.octopus.storyfolders.name", "test_storyfolders");\r
+ // System.setProperty("jobengine.octopus.rundowns.name", "rundowns180620");\r
+ // System.setProperty("jobengine.octopus.stories.name", "stories180620");\r
+ // System.setProperty("jobengine.octopus.storyfolders.name", "storyfolders180620");\r
//\r
- // System.setProperty("jobengine.nosql.db.url", "jdbc:db2://10.10.1.29:50000/mc:retrieveMessagesFromServerOnGetMessage=true;");\r
- // System.setProperty("jobengine.nosql.db.user", "db2admin");\r
- // System.setProperty("jobengine.nosql.db.password", "password");\r
- // System.setProperty(ItemManager.DBURL, "jdbc:db2://10.10.1.29:50000/mc:retrieveMessagesFromServerOnGetMessage=true;");\r
- // System.setProperty(ItemManager.DBUSERNAME, "db2admin");\r
- // System.setProperty(ItemManager.DBPASSWORD, "password");\r
+ // System.setProperty("jobengine.nosql.db.url", "jdbc:db2://10.10.1.29:50000/mc:retrieveMessagesFromServerOnGetMessage=true;");\r
+ // System.setProperty("jobengine.nosql.db.user", "db2admin");\r
+ // System.setProperty("jobengine.nosql.db.password", "password");\r
+ // System.setProperty(ItemManager.DBURL, "jdbc:db2://10.10.1.29:50000/mc:retrieveMessagesFromServerOnGetMessage=true;");\r
+ // System.setProperty(ItemManager.DBUSERNAME, "db2admin");\r
+ // System.setProperty(ItemManager.DBPASSWORD, "password");\r
\r
manager = new ItemManager();\r
manager.connect();\r
\r
@Test\r
public void generateMissingRecordingsList() throws Exception {\r
- // select itemtitle, mediafilehouseid from vw_items where itemtitle like '%Echo TV%' and itemtitle like '2%' and mediatitle like '%PGM%' order by itemtitle, mediafilehouseid\r
+ // select itemtitle, mediafilehouseid from vw_items where itemtitle like '%Echo TV%' and itemtitle like '2%' and mediatitle like '%PGM%' order by\r
+ // itemtitle, mediafilehouseid\r
String[] hours = { "07:00", "08:00", "09:00", "10:00", "11:00", "12:00", "13:00", "14:00", "15:00", "16:00", "17:00", "18:00", "19:00", "20:00",\r
"22:00" };\r
\r
for (String hour : hours) {\r
String key = String.format("%s %s", df.format(cal.getTime()), hour);\r
recordings.put(key, "");\r
- // System.out.println(key);\r
+ // System.out.println(key);\r
}\r
cal.add(Calendar.DAY_OF_MONTH, 1);\r
}\r
public List<DBObject> getRundownsByPlaceHolderID(String id) {\r
DB db = NoSQLUtils.getNoSQLDB();\r
DBCollection collection = db.getCollection(IOctopusAPI.STORY_COLLECTION);\r
- BasicDBObject criteria = new BasicDBObject(IOctopusAPI.MOS_OBJECTS, new BasicDBObject(IOctopusAPI.$ELEMMATCH, new BasicDBObject(IOctopusAPI.OBJ_ID, id)));\r
+ BasicDBObject criteria = new BasicDBObject(IOctopusAPI.MOS_OBJECTS,\r
+ new BasicDBObject(IOctopusAPI.$ELEMMATCH, new BasicDBObject(IOctopusAPI.OBJ_ID, id)));\r
DBCursor find = collection.find(criteria, new BasicDBObject(IOctopusAPI.REF_RUNDOWN, 1));\r
List<DBObject> rundowns = NoSQLUtils.asList(find);\r
db.cancelBatch();\r
@Test\r
public void processRecordingsSummertime() throws Exception {\r
\r
- // Item item1 = manager.createItem("Generic", "2018.03.25 19:00 xxx", "", "56607293");\r
- // manager.merge(item1);\r
+ // Item item1 = manager.createItem("Generic", "2018.03.25 19:00 xxx", "", "56607293");\r
+ // manager.merge(item1);\r
\r
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd-HHmm");\r
OctopusAPI octopusAPI = new OctopusAPI();\r
String x1 = rs.getString("x1");\r
String x2 = rs.getString("x2");\r
String time = mediaFileHouseID.substring(9, 13);\r
- //Date scheduleDate = df.parse(mediaFileHouseID.substring(0, 13));\r
+ // Date scheduleDate = df.parse(mediaFileHouseID.substring(0, 13));\r
Date scheduleDate = df.parse("20180308-1900");\r
\r
RundownArchive rundownArchive = RundownHelper.processRundow(octopusAPI, scheduleDate);\r
};\r
\r
manager.executeQuery(query, consumer, null);\r
- //System.out.println("Available will " + duplicateLength[0]);\r
+ // System.out.println("Available will " + duplicateLength[0]);\r
}\r
\r
private List<String> query(Connection con) throws Exception {\r
List<String> result = new ArrayList<>();\r
\r
- // [clIFsp_EC_MAM] @Operation int, @@@Options int, @@ItemID int, @@IntParam1 int=Null, @@IntParam2 int=Null, @@IntParam3 int=Null,\r
- // @@StrParam1 varchar(200)=Null, @@StrParam2 varchar(max)=Null, @@DateParam1 datetime=Null, @@DateParam2 datetime=Null\r
+ // [clIFsp_EC_MAM] @Operation int, @@@Options int, @@ItemID int, @@IntParam1 int=Null, @@IntParam2 int=Null, @@IntParam3 int=Null,\r
+ // @@StrParam1 varchar(200)=Null, @@StrParam2 varchar(max)=Null, @@DateParam1 datetime=Null, @@DateParam2 datetime=Null\r
try (PreparedStatement stmt = con.prepareStatement("{call dbo.clIFsp_EC_MAM(5001, Null, Null)}")) {\r
try (ResultSet rs = stmt.executeQuery()) {\r
while (rs.next()) {\r
continue;\r
names.add(splittedLine[1]);\r
\r
- //lenyeli a duplikalt hozzadast, lekezelni. addig nem futtathato!!!!!!!\r
+ // lenyeli a duplikalt hozzadast, lekezelni. addig nem futtathato!!!!!!!\r
Map<Media, List<String>> existing = getExistingItemHouseIDs(splittedLine[1]);\r
\r
Media media = (Media) existing.keySet().toArray()[0];\r
List<String> archivedFiles = getRundownMedias("2018-03-03", "2018-06-07");\r
int i = 1;\r
for (String file : archivedFiles) {\r
- //lenyeli a duplikalt hozzadast, lekezelni. addig nem futtathato!!!!!!!\r
+ // lenyeli a duplikalt hozzadast, lekezelni. addig nem futtathato!!!!!!!\r
Map<Media, List<String>> existing = getExistingItemHouseIDs(file);\r
\r
Media media = (Media) existing.keySet().toArray()[0];\r
System.out.println(String.format("%d - %s %d: ", i, file, media.getId()));\r
i++;\r
\r
- // if (rundowns == null)\r
- // continue;\r
- // for (BasicDBObject rd : rundowns) {\r
- // String rundownTitle = getRundownTitle(rd);\r
- // if (itemTitles.contains(rundownTitle) || rundownTitle.contains("00:00"))\r
- // continue;\r
+ // if (rundowns == null)\r
+ // continue;\r
+ // for (BasicDBObject rd : rundowns) {\r
+ // String rundownTitle = getRundownTitle(rd);\r
+ // if (itemTitles.contains(rundownTitle) || rundownTitle.contains("00:00"))\r
+ // continue;\r
//\r
- // Item item = getRundownItem(rd);\r
- // if (item == null) {\r
- // item = manager.createItem("Generic", rundownTitle, null, NoSQLUtils.asString(rd, IOctopusAPI.ID));\r
- // item.add();\r
- // System.out.print(String.format("* %s,", rundownTitle));\r
- // } else {\r
- // System.out.print(String.format("%s (%d),", rundownTitle, item.getId()));\r
- // }\r
+ // Item item = getRundownItem(rd);\r
+ // if (item == null) {\r
+ // item = manager.createItem("Generic", rundownTitle, null, NoSQLUtils.asString(rd, IOctopusAPI.ID));\r
+ // item.add();\r
+ // System.out.print(String.format("* %s,", rundownTitle));\r
+ // } else {\r
+ // System.out.print(String.format("%s (%d),", rundownTitle, item.getId()));\r
+ // }\r
//\r
- // List<MediaFile> mediaFiles = media.getMediaFiles();\r
- // if (mediaFiles != null) {\r
- // for (MediaFile mf : mediaFiles) {\r
- // mf.setId(0);\r
- // mf.setMediaId(0);\r
- // }\r
- // }\r
- // media.setId(0);\r
- // media.setItemId(item.getId());\r
- // media.setPersister(manager);\r
- // media.add();\r
+ // List<MediaFile> mediaFiles = media.getMediaFiles();\r
+ // if (mediaFiles != null) {\r
+ // for (MediaFile mf : mediaFiles) {\r
+ // mf.setId(0);\r
+ // mf.setMediaId(0);\r
+ // }\r
+ // }\r
+ // media.setId(0);\r
+ // media.setItemId(item.getId());\r
+ // media.setPersister(manager);\r
+ // media.add();\r
//\r
- // }\r
+ // }\r
}\r
}\r
\r
manager.add(m);\r
}\r
\r
- @Test\r
- public void test3() throws Exception {\r
- MediaInfo mediaInfo = new MediaInfo(Paths.get("\\\\10.10.1.27\\mclowres\\www\\video\\170911TEL_PAKS_IP.mp4"));\r
- mediaInfo.process();\r
- System.out.println("Bitrate: " + mediaInfo.getBitRate());\r
- }\r
-\r
@Test\r
public void test4() throws Exception {\r
String houseid = "133519696_1-001-132654584";\r
String name = c.getString("longnameid");\r
Date recorddate = c.getDate("recorddate");\r
if (name != null && name.toLowerCase().contains("_nodelete")) {\r
- // recorddate.setMonth(2);\r
- // recorddate.setDate(31);\r
+ // recorddate.setMonth(2);\r
+ // recorddate.setDate(31);\r
System.out.println(name + " " + recorddate);\r
- // collection.save(c);\r
+ // collection.save(c);\r
}\r
\r
}\r
Manifest-Version: 1.0
Automatic-Module-Name: user.jobengine.osgi.services
-Bundle-ManifestVersion: 2
-Bundle-Name: Services
Bundle-SymbolicName: user.jobengine.osgi.services;singleton:=true
-Bundle-Version: 1.0.0
+Require-Bundle: org.jboss.resteasy.jaxrs;bundle-version="3.0.11",
+ org.omnifaces;bundle-version="3.4.1"
+Bundle-ManifestVersion: 2
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Service-Component: OSGI-INF/*.xml
Bundle-ActivationPolicy: lazy
-Web-ContextPath: /services
Import-Package: com.fasterxml.jackson.annotation;version="2.4.5",
com.fasterxml.jackson.core;version="2.4.5",
com.fasterxml.jackson.databind;version="2.4.5",
user.commons.rest,
user.jobengine.db,
user.jobengine.server
+Service-Component: OSGI-INF/*.xml
Export-Package: user.jobengine.osgi.rest,
user.jobengine.osgi.rest.octopus,
user.jobengine.osgi.ws.mediacube,
user.jobengine.osgi.ws.nexio
-Require-Bundle: org.jboss.resteasy.jaxrs;bundle-version="3.0.11",
- org.omnifaces;bundle-version="3.4.1"
+Bundle-Name: Services
+Bundle-Version: 1.0.0
+Web-ContextPath: /services
+Build-Jdk-Spec: 1.8
+Created-By: Maven Archiver 3.5.0
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">\r
-<booleanAttribute key="M2_DEBUG_OUTPUT" value="true"/>\r
-<stringAttribute key="M2_GOALS" value="clean install"/>\r
-<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>\r
-<booleanAttribute key="M2_OFFLINE" value="true"/>\r
-<stringAttribute key="M2_PROFILES" value=""/>\r
-<listAttribute key="M2_PROPERTIES"/>\r
-<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>\r
-<booleanAttribute key="M2_SKIP_TESTS" value="true"/>\r
-<intAttribute key="M2_THREADS" value="1"/>\r
-<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>\r
-<stringAttribute key="M2_USER_SETTINGS" value=""/>\r
-<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>\r
-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk"/>\r
-<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:/user.jobengine.osgi.services}"/>\r
+ <booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>\r
+ <stringAttribute key="M2_GOALS" value="clean install"/>\r
+ <booleanAttribute key="M2_NON_RECURSIVE" value="false"/>\r
+ <booleanAttribute key="M2_OFFLINE" value="false"/>\r
+ <stringAttribute key="M2_PROFILES" value=""/>\r
+ <listAttribute key="M2_PROPERTIES"/>\r
+ <stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>\r
+ <booleanAttribute key="M2_SKIP_TESTS" value="true"/>\r
+ <intAttribute key="M2_THREADS" value="1"/>\r
+ <booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>\r
+ <stringAttribute key="M2_USER_SETTINGS" value=""/>\r
+ <booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>\r
+ <stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:/user.jobengine.osgi.services}"/>\r
</launchConfiguration>\r
@Path("/checkmediafile")\r
@Consumes({ MediaType.APPLICATION_JSON })\r
@Produces({ MediaType.APPLICATION_JSON })\r
- public Response checkMediaFile(@QueryParam("mediaFileHouseId") String mediaFileHouseId,\r
- @QueryParam("store") String store) {\r
+ public Response checkMediaFile(@QueryParam("mediaFileHouseId") String mediaFileHouseId, @QueryParam("store") String store) {\r
Response result = null;\r
try {\r
IItemManager itemManager = ComponentBinder.getItemManager();\r
@GET\r
@Path("/notify")\r
@Consumes({ MediaType.APPLICATION_JSON })\r
- public Response notify(@QueryParam("to") String to, @QueryParam("subject") String subject,\r
- @QueryParam("content") String content) {\r
+ public Response notify(@QueryParam("to") String to, @QueryParam("subject") String subject, @QueryParam("content") String content) {\r
Response result = null;\r
try {\r
logger.info(new MediaCubeMarker(to, subject), content);\r
@Path("/startjob")\r
@Consumes({ MediaType.APPLICATION_JSON })\r
@Produces({ MediaType.APPLICATION_JSON })\r
- public Response startJob(@QueryParam("template") String template, @QueryParam("name") String name,\r
- @Context HttpServletRequest request) {\r
+ public Response startJob(@QueryParam("template") String template, @QueryParam("name") String name, @Context HttpServletRequest request) {\r
\r
Response result = null;\r
try {\r
return result;\r
}\r
\r
+ @POST\r
+ @Path("/search")\r
+ @Consumes({ MediaType.APPLICATION_JSON })\r
+ @Produces({ MediaType.APPLICATION_JSON })\r
+ public Response search(BasicDBObject searchParameters) {\r
+ Response result = null;\r
+ logger.info("Request: {}", searchParameters.toPrettyString(""));\r
+ try {\r
+ IItemManager manager = ComponentBinder.getItemManager();\r
+ BasicDBObject searchResult = manager.simpleSearch(searchParameters);\r
+ result = Response.ok(searchResult).build();\r
+ } catch (Exception e) {\r
+ result = Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build();\r
+ }\r
+ return result;\r
+ }\r
}\r
org.apache.commons.lang;bundle-version="2.4.0";visibility:=reexport,
user.commons.zk;bundle-version="1.0.0",
org.apache.servicemix.bundles.quartz;bundle-version="2.3.0",
- user.jobengine.osgi.server
+ user.jobengine.osgi.server,
+ hu.user.zk.theme.userdark;bundle-version="1.0.0"
Export-Package: user.jobengine.gui
DynamicImport-Package: *
Bundle-ClassPath: .
\r
<zk>\r
<!-- \r
--->\r
<library-property>\r
<name>org.zkoss.theme.preferred</name>\r
<value>userdark</value>\r
</library-property>\r
+-->\r
\r
<library-property>\r
<name>org.zkoss.web.preferred.locale</name>\r
width: 100%;
border-bottom: 1px solid #999;
background-color: #e6e6e6;
- color: #555;
+ color: red;
+/* color: #555;*/
font-weight: bold;
white-space: nowrap;
overflow: hidden;
}\r
\r
.tagify{\r
- --tags-border-color:#DDD;\r
+/* --tags-border-color:#DDD;*/\r
+ --tags-border-color: #1d1d1d;\r
--tags-disabled-bg:#F1F1F1;\r
- --tags-hover-border-color:#CCC;\r
- --tags-focus-border-color:#3595f6;\r
- --tag-bg:#E5E5E5;\r
+/* --tags-hover-border-color:#CCC;*/\r
+ --tags-hover-border-color: #1d1d1d;\r
+/* --tags-focus-border-color:#3595f6;*/\r
+ --tags-focus-border-color: #1d1d1d;\r
+ --tag-bg:#1d1d1d;\r
--tag-hover:#D3E2E2;\r
+/*\r
--tag-text-color:black;\r
--tag-text-color--edit:black;\r
- --tag-pad:0.3em 0.5em;\r
+*/ \r
+ --tag-text-color: white;\r
+ --tag-text-color--edit: white;\r
+/* --tag-pad:0.3em 0.5em;*/\r
--tag-inset-shadow-size:1.1em;\r
--tag-invalid-color:#D39494;\r
--tag-invalid-bg:rgba(211, 148, 148, 0.5);\r
display:flex;\r
align-items:flex-start;\r
flex-wrap:wrap;\r
- border:1px solid #ddd;\r
+ border:1px solid lightgray;\r
border:1px solid var(--tags-border-color);\r
+ border-radius: 3px 3px 3px 3px;\r
+ background: white;\r
padding:0;\r
line-height:0;\r
cursor:text;\r
outline:0;position:relative;\r
box-sizing:border-box;\r
- transition:.1s\r
+ transition:.1s;\r
+ font: 12px Verdana;\r
+ margin: 3px;\r
}\r
\r
@keyframes tags--bump{\r
\r
.tagify.tagify--focus{\r
transition:0s;\r
- border-color:#3595f6;\r
+ border: 1px solid ;\r
+/* border-color:#3595f6; */\r
+ border-color: #1d1d1d;\r
border-color:var(--tags-focus-border-color)\r
}\r
\r
.tagify[readonly]:not(.tagify--mix):not(.tagify--select)>.tagify__input{\r
visibility:hidden;\r
width:0;\r
- margin:5px 0\r
+ margin:5px 0;\r
}\r
\r
.tagify[readonly]:not(.tagify--mix):not(.tagify--select) \r
pointer-events:none;\r
transition:120ms ease;\r
animation:tags--bump .3s ease-out 1;\r
- box-shadow:0 0 0 1.1em #e5e5e5 inset;\r
- box-shadow:0 0 0 var(--tag-inset-shadow-size,1.1em) var(--tag-bg,#e5e5e5) inset\r
+ box-shadow:0 0 0 1.1em #1d1d1d inset;\r
+ box-shadow:0 0 0 var(--tag-inset-shadow-size,1.1em) var(--tag-bg,#1d1d1d) inset\r
}\r
\r
.tagify__tag:focus div::before,.tagify__tag:hover:not([readonly]) div::before{\r
justify-content:center;\r
border-radius:50px;\r
cursor:pointer;\r
- font:14px/1 Arial;\r
- background:0 0;\r
- background:var(--tag-remove-btn-bg,none);\r
+ font:14px/1 Verdana;\r
+ background: #FFFFFF;\r
+/* background:0 0;*/\r
+/* background:var(--tag-remove-btn-bg,none);*/\r
color:#000;\r
color:var(--tag-remove-btn-color,#000);\r
width:14px;\r
flex-grow:1;\r
display:inline-block;\r
min-width:110px;\r
- margin:5px;\r
+/* margin:5px;*/\r
padding:.3em .5em;\r
padding:var(--tag-pad,.3em .5em);\r
line-height:normal;\r
</menupopup>\r
</menu>\r
<menuitem label="Mini monitor" onClick="@command('createFloatingJobMonitor')" />\r
+ <menu label="Megjelenés">\r
+ <menupopup>\r
+ <menuitem label="Világos" onClick="@command('applyTheme', name='silvertail')" />\r
+ <menuitem label="Sötét" onClick="@command('applyTheme', action='userdark')" />\r
+ </menupopup>\r
+ </menu>\r
\r
<menuitem id="basketIMenuItem" label="@load(lm.basketMenuLabel)" iconSclass="z-icon-shopping-cart" \r
style="float: right" onClick="@command('showBasket')" disabled="false" />\r
<?component name="search-filters" inline="true" macroURI="searchitems/filters.zul"?>\r
<?component name="search-results" if inline="true" macroURI="searchitems/gridresults.zul"?>\r
<?component name="grouped-search-results" if inline="true" macroURI="searchitems/groupedgridresults.zul"?>\r
+<?component name="tabulator-search-results" if inline="true" macroURI="searchitems/tabulatorresults.zul"?>\r
<?component name="item-details" inline="true" macroURI="searchitems/details.zul"?>\r
\r
<!DOCTYPE xml>\r
<tabbox id="resultsTab" vflex="true" hflex="true" orient="top">\r
<tabs visible="true">\r
<tab id="tab0" label="Lista" />\r
- <tab id="tab1" label="Fa" selected="true" />\r
+ <tab id="tab1" label="Fa" />\r
+ <tab id="tab2" label="Villám" selected="true" />\r
</tabs>\r
<tabpanels>\r
<tabpanel>\r
<tabpanel>\r
<grouped-search-results />\r
</tabpanel> \r
+ <tabpanel>\r
+ <tabulator-search-results />\r
+ </tabpanel> \r
</tabpanels>\r
</tabbox> \r
\r
<zk xmlns:w="http://www.zkoss.org/2005/zk/client" xmlns:h="xhtml" xmlns:c="client">\r
<div height="100%" width="100%">\r
+ <style>\r
+ #detail-tagify-chdex > tags {\r
+ border: 1px solid lightgray;\r
+ background: #303030;\r
+ color: #e3e3e3;\r
+ }\r
+ </style>\r
<toolbar width="100%" style="min-height:40px; border-bottom:1px solid darkgray">\r
<toolbarbutton iconSclass="z-icon-reply" autodisable="self" onClick="@command('showInResults')"\r
disabled="@load(vm.selectedObject eq null)" label="Szinkronizálás" />\r
</toolbar>\r
\r
<vlayout id="mediaDetails" width="100%" vflex="true" style="padding: 4px; overflow:auto">\r
+ <vlayout>\r
+ <h:textarea id="detail-tagify" name='mediaTags'></h:textarea>\r
+ </vlayout>\r
<hlayout style="border-bottom: 1px solid lightgray">\r
<vlayout style="width: 120px; border-right: 1px solid lightgray; padding-right: 10px">\r
<label style="font-size:8pt; color: gray" value="Gyűjtő azonosító" />\r
<label style="font-size:8pt; color: gray" value="Média leírása" />\r
<label multiline="true" value="@load(vm.selectedObject.media.description)" />\r
</vlayout>\r
- <vlayout>\r
- <h:textarea name='mediaTags' placeholder='Címkék'></h:textarea>\r
- </vlayout>\r
</vlayout>\r
\r
</div>\r
<menuitem label="Törlés" value="300" onClick="@command('setCalendar', source=self)" />\r
</menupopup>\r
\r
- <toolbar id="tagsToolbar" width="100%" >\r
+ <vlayout>\r
+ \r
<h:textarea name='filterTags' placeholder='Címkék'/>\r
- </toolbar>\r
+ </vlayout>\r
<toolbar id="filterToolbar" width="100%">\r
<toolbarbutton id="toggleShowTypeFilters" iconSclass="z-icon-caret-down" mode="toggle" onCheck="@command('toggleTypeFiltersCheck')"/> \r
<toolbarbutton iconSclass="z-icon-th" popup="searchSettings, after_start" />\r
height="100%" width="100%">\r
<style src="/css/tabulator.css" />\r
<script src="/js/tabulator.js" />\r
-\r
- <paging totalSize="100" pageSize="20"/>\r
+ <div id="tabulatorListener" onChange="@command('onTabulatorChanged')" />\r
<h:div id="result_table" onTableBuilt="@command('onTableBuilt')" onRowSelectionChanged="@command('onRowSelectionChanged')"></h:div>\r
<h:script>\r
\r
try {\r
- var table = initTable();\r
+ var resultTable = initTable();\r
} catch(error){\r
console.error(error);\r
}\r
\r
function initTable() {\r
var table = new Tabulator("#result_table", {\r
+// ajaxURL:"/services/rest/jobengine/search",\r
+ ajaxConfig:{\r
+ method:"POST",\r
+ headers: {\r
+ "Content-type": 'application/json; charset=utf-8'\r
+ }\r
+ },\r
+ //ajaxParams:{limit:"200", offset:"0"},\r
+// pagination: true,\r
+ paginationCounter:"rows",\r
+ paginationAddRow: "table",\r
+ paginationMode: "remote",\r
+ paginationSize: 100,\r
+<!-- paginationCounter:function(pageSize, currentRow, currentPage, totalRows, totalPages) { -->\r
+<!-- return "Showing " pageSize + " rows of " + totalRows + " total"; -->\r
+<!-- }, -->\r
+ ajaxContentType:"json",\r
+ progressiveLoad:"scroll",\r
layout:"fitDataStretch",\r
height: "100%",\r
- //data:tabledata,\r
- <!-- autoColumns:true, -->\r
+ selectable:1,\r
columns:[\r
- {title:"ID", field:"id", headerSortTristate:true, headerClick:function(e, column){ onSort(column); }},\r
- {title:"Cím", field:"name", headerSortTristate:true, headerClick:function(e, column){ onSort(column); }},\r
+ {title:"Cím", field:"mediaTitle", headerSortTristate:true, headerClick:function(e, column){ onSort(column); }},\r
{title:"Fájlnév", field:"fileName", headerSortTristate:true, headerClick:function(e, column){ onSort(column); }},\r
- {title:"Archiválva", field:"archiveDate", headerSortTristate:true, headerClick:function(e, column){ onSort(column); }},\r
+ {title:"Archiválva", field:"creation", headerSortTristate:true, headerClick:function(e, column){ onSort(column); }},\r
{title:"Hossz", field:"length", headerSortTristate:true, headerClick:function(e, column){ onSort(column); }}\r
],\r
initialSort:[\r
{column:"fileName", dir:"asc"}\r
],\r
sortMode:"remote",\r
- selectable: true,\r
columnDefaults:{\r
resizable:true,\r
}, \r
rowFormatter:function(row){\r
- console.log("Formatting", row);\r
+ //console.log("Formatting", row);\r
\r
var holderEl = document.createElement("div");\r
var tableEl = document.createElement("div");\r
var relevant = row.getData().relevant;\r
if (relevant)\r
tableEl.innerHTML = relevant; \r
- }, \r
+ },\r
+ keybindings:{\r
+ "navUp" : false,\r
+ "navDown" : false,\r
+ }, \r
});\r
\r
function onSort(column){\r
- //console.log("onSort", column);\r
+ console.log("onSort", column);\r
}\r
\r
table.on("headerClick", function(e, column){\r
//row - row component\r
console.log("rowClick", e, row);\r
});\r
+\r
+ table.on("rowSelected", function(row){\r
+ console.log("rowSelected", row.getData().fileName);\r
+ \r
+ zk.Widget.$('$tabulatorListener').fire('onChange',{\r
+ event: 'rowSelected',\r
+ data: row.getData()\r
+ },{\r
+ toServer : true\r
+ });\r
+ });\r
\r
table.on("rowSelectionChanged", function(data, rows){\r
console.log("rowSelectionChanged", data, rows);\r
- zk.Widget.$('$result_table').fire('onRowSelectionChanged', {\r
- meta : data\r
- }, {\r
- toServer : true\r
- });\r
+ \r
});\r
\r
table.on("tableBuilt", function(){\r
console.log("tableBuilt");\r
- zk.Widget.$('$result_table').fire('onTableBuilt', {\r
- meta : null\r
- }, {\r
- toServer : true\r
- });\r
+<!-- zk.Widget.$('$result_table').fire('onTableBuilt', { -->\r
+<!-- meta : null -->\r
+<!-- }, { -->\r
+<!-- toServer : true -->\r
+<!-- }); -->\r
});\r
\r
return table;\r
itemsGrid.setActivePage(0);\r
setSelectedObject(null);\r
\r
- if (resultsTab.getSelectedIndex() == 0)\r
+ switch (resultsTab.getSelectedIndex()) {\r
+ case 0:\r
showExpandedSearchResult();\r
- else\r
+ break;\r
+ case 1:\r
showGroupedSearchResult();\r
-\r
+ break;\r
+ case 2:\r
+ showSimpleSearchResult();\r
+ break;\r
+ }\r
} catch (Exception e) {\r
handleSearchError(e);\r
}\r
\r
}\r
\r
+ private void showSimpleSearchResult() throws Exception {\r
+ String searchValue = search.getText();\r
+ String script = String.format("resultTable.setData('/services/rest/jobengine/search', {criteria:'%s'});", searchValue);\r
+ Clients.evalJavaScript(script);\r
+ }\r
+\r
private void showGroupedSearchResult() throws Exception {\r
String searchValue = search.getText();\r
\r
logger.info(event);\r
}\r
\r
+ @Command\r
+ public void onTabulatorChanged(@ContextParam(ContextType.TRIGGER_EVENT) Event event) {\r
+ JSONObject jsObject = (JSONObject) event.getData();\r
+ logger.info("onTabulatorChanged {}", jsObject.toJSONString());\r
+ }\r
+\r
@Command\r
public void onTcIn(@ContextParam(ContextType.TRIGGER_EVENT) Event event) throws Exception {\r
JSONObject jsObject = (JSONObject) event.getData();\r
private boolean disableStatistics;\r
private boolean disableHelp;\r
private boolean disableEditor;\r
+ private String theme;\r
\r
public MediaCubeAuthentication getAuthentication() {\r
return authentication;\r
this.topTypeFilters = topTypeFilters;\r
}\r
\r
+ public String getTheme() {\r
+ return theme;\r
+ }\r
+\r
+ public void setTheme(String theme) {\r
+ this.theme = theme;\r
+ }\r
+\r
}\r
import org.zkoss.zk.ui.util.Clients;\r
import org.zkoss.zul.Menuitem;\r
import org.zkoss.zul.Window;\r
+import org.zkoss.zul.theme.Themes;\r
\r
import user.jobengine.db.ArchivedMedia;\r
import user.jobengine.zk.util.SessionUtil;\r
window.doModal();\r
}\r
\r
+ @Command\r
+ public void applyTheme(@BindingParam("name") String name) {\r
+ Themes.setTheme(Executions.getCurrent(), name);\r
+ Executions.sendRedirect("");\r
+ }\r
+\r
private void updateBasketLabel() {\r
basketMenuLabel = String.format("(%d)", basketItems.size());\r
BindUtils.postNotifyChange(null, null, this, "basketMenuLabel");\r
\r
import java.util.Map;\r
\r
+import org.zkoss.zk.ui.Executions;\r
import org.zkoss.zk.ui.Page;\r
import org.zkoss.zk.ui.util.Initiator;\r
+import org.zkoss.zul.theme.Themes;\r
\r
/**\r
- * Ellenorzi, hogy van e beloginelt user, ha nincs, akkor -> login.zul Minden oldal belinkeli ezt az ellenorzest.\r
+ * Ellenorzi, hogy van e beloginelt user, ha nincs, akkor -> login.zul Minden\r
+ * oldal belinkeli ezt az ellenorzest.\r
*/\r
public class AuthInitiator implements Initiator {\r
@Override\r
public void doInit(Page page, Map<String, Object> args) throws Exception {\r
- if (!SessionUtil.isAuthenticated())\r
+ if (!SessionUtil.isAuthenticated()) {\r
+ String theme = SessionUtil.getMediaCubeConfig().getTheme();\r
+ if (theme == null)\r
+ Themes.setTheme(Executions.getCurrent(), "silvertail");\r
+ else\r
+ Themes.setTheme(Executions.getCurrent(), theme);\r
+\r
SessionUtil.redirect("/pages/login.zul");\r
+ }\r
}\r
\r
}
\ No newline at end of file