From 33a67f98627d40da95bfb83b7c9d6d148bccf338 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1s=C3=A1ry=20D=C3=A1niel?= Date: Sun, 26 Nov 2017 14:29:45 +0000 Subject: [PATCH] git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C30769 --- client/AudioRecorder/FileNameForm.Designer.cs | 25 +- client/AudioRecorder/FileNameForm.cs | 28 +-- client/AudioRecorder/MainForm.Designer.cs | 16 +- client/AudioRecorder/MainForm.cs | 76 ++---- .../Configuration/configuration-studio.json | 4 +- client/Maestro/MaestroForm.Source.cs | 4 +- client/Maestro/Sources/NexioRESTSource.cs | 16 +- client/Maestro/Sources/NexioSourceItem.cs | 9 + client/Maestro/StringResources.Designer.cs | 9 + client/Maestro/StringResources.resx | 3 + .../MaestroShared/Resources/MaestroColors.cs | 3 +- .../src/user/commons/Job.java | 5 +- .../nexio/NexioClipEventDispatcher.java | 12 +- .../src/user/commons/nexio/api/Clip.java | 2 + .../src/user/commons/nexio/api/ClipImpl.java | 8 +- .../pages/joblist.zul | 14 +- .../pages/jobselector.zul | 2 +- .../pages/retrieveselector.zul | 2 +- .../src/user/jobengine/server/JobRuntime.java | 17 ++ .../server/actions/FinishRunableAction.java | 1 + .../user/jobengine/zk/model/JobListModel.java | 216 +++++++++--------- 21 files changed, 253 insertions(+), 219 deletions(-) diff --git a/client/AudioRecorder/FileNameForm.Designer.cs b/client/AudioRecorder/FileNameForm.Designer.cs index 81933833..0a36f7f3 100644 --- a/client/AudioRecorder/FileNameForm.Designer.cs +++ b/client/AudioRecorder/FileNameForm.Designer.cs @@ -26,7 +26,7 @@ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FileNameForm)); this.octopusIDSelector1 = new OctopusClient.OctopusIDSelector(); this.buttonCancel = new System.Windows.Forms.Button(); - this.buttonRendben = new System.Windows.Forms.Button(); + this.buttonOK = new System.Windows.Forms.Button(); this.SuspendLayout(); // // octopusIDSelector1 @@ -53,25 +53,25 @@ // // buttonRendben // - this.buttonRendben.Enabled = false; - this.buttonRendben.Location = new System.Drawing.Point(195, 356); - this.buttonRendben.Name = "buttonRendben"; - this.buttonRendben.Size = new System.Drawing.Size(75, 23); - this.buttonRendben.TabIndex = 7; - this.buttonRendben.Text = "Rendben"; - this.buttonRendben.UseVisualStyleBackColor = true; - this.buttonRendben.Click += new System.EventHandler(this.buttonRendben_Click); + this.buttonOK.Enabled = false; + this.buttonOK.Location = new System.Drawing.Point(195, 356); + this.buttonOK.Name = "buttonRendben"; + this.buttonOK.Size = new System.Drawing.Size(75, 23); + this.buttonOK.TabIndex = 7; + this.buttonOK.Text = "Rendben"; + this.buttonOK.UseVisualStyleBackColor = true; + this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click); // // FileNameForm // - this.AcceptButton = this.buttonRendben; + this.AcceptButton = this.buttonOK; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.Color.White; this.CancelButton = this.buttonCancel; this.ClientSize = new System.Drawing.Size(276, 383); this.ControlBox = false; - this.Controls.Add(this.buttonRendben); + this.Controls.Add(this.buttonOK); this.Controls.Add(this.buttonCancel); this.Controls.Add(this.octopusIDSelector1); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; @@ -81,7 +81,6 @@ this.Name = "FileNameForm"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "File Name"; - this.Load += new System.EventHandler(this.FileNameForm_Load); this.ResumeLayout(false); } @@ -89,6 +88,6 @@ #endregion private OctopusClient.OctopusIDSelector octopusIDSelector1; private System.Windows.Forms.Button buttonCancel; - private System.Windows.Forms.Button buttonRendben; + private System.Windows.Forms.Button buttonOK; } } \ No newline at end of file diff --git a/client/AudioRecorder/FileNameForm.cs b/client/AudioRecorder/FileNameForm.cs index 74392add..d332f58e 100644 --- a/client/AudioRecorder/FileNameForm.cs +++ b/client/AudioRecorder/FileNameForm.cs @@ -7,7 +7,7 @@ namespace AudioRecorder { public partial class FileNameForm : Form { private String result; private MainForm mainForm; - private String id; + public string ID { get; internal set; } public FileNameForm(MainForm mainForm, AudioRecorderSettings settings) { InitializeComponent(); @@ -27,27 +27,19 @@ namespace AudioRecorder { } private void IdChangedEvent(string id, string name, string text) { - //TODO - this.id = name; - buttonRendben.Enabled = !String.IsNullOrEmpty(id); + buttonOK.Enabled = !String.IsNullOrEmpty(id); + ID = name; } - private void FileNameForm_Load(object sender, EventArgs e) - { - - } - - private void cancelButton_Click(object sender, EventArgs e) - { - Dispose(); + + private void cancelButton_Click(object sender, EventArgs e) { + DialogResult = DialogResult.Cancel; + Close(); } - private void buttonRendben_Click(object sender, EventArgs e) { - result = String.Format("{0}.wav", id); - if (!result.EndsWith(".wav")) - result = String.Format("{0}{1}", result, StringResources.DOT_WAV); - mainForm.recordFireEvent(result, id); - Dispose(); + private void buttonOK_Click(object sender, EventArgs e) { + DialogResult = DialogResult.OK; + Close(); } } } diff --git a/client/AudioRecorder/MainForm.Designer.cs b/client/AudioRecorder/MainForm.Designer.cs index f87baebf..a565f469 100644 --- a/client/AudioRecorder/MainForm.Designer.cs +++ b/client/AudioRecorder/MainForm.Designer.cs @@ -34,7 +34,7 @@ namespace AudioRecorder { this.pauseButton = new System.Windows.Forms.Button(); this.groupBox2 = new System.Windows.Forms.GroupBox(); this.pmVolume = new Ernzo.WinForms.Controls.PeakMeterCtrl(); - this.fileNameLabel = new System.Windows.Forms.Label(); + this.txtRecordFilePath = new System.Windows.Forms.Label(); this.playButton = new System.Windows.Forms.Button(); this.groupBox3 = new System.Windows.Forms.GroupBox(); this.tbVolume = new System.Windows.Forms.TrackBar(); @@ -158,11 +158,11 @@ namespace AudioRecorder { // // fileNameLabel // - this.fileNameLabel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.fileNameLabel.Location = new System.Drawing.Point(8, 45); - this.fileNameLabel.Name = "fileNameLabel"; - this.fileNameLabel.Size = new System.Drawing.Size(233, 23); - this.fileNameLabel.TabIndex = 8; + this.txtRecordFilePath.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtRecordFilePath.Location = new System.Drawing.Point(8, 45); + this.txtRecordFilePath.Name = "fileNameLabel"; + this.txtRecordFilePath.Size = new System.Drawing.Size(233, 23); + this.txtRecordFilePath.TabIndex = 8; // // playButton // @@ -183,7 +183,7 @@ namespace AudioRecorder { // this.groupBox3.Controls.Add(this.btnSelectAudio); this.groupBox3.Controls.Add(this.playButton); - this.groupBox3.Controls.Add(this.fileNameLabel); + this.groupBox3.Controls.Add(this.txtRecordFilePath); this.groupBox3.Location = new System.Drawing.Point(15, 258); this.groupBox3.Name = "groupBox3"; this.groupBox3.Size = new System.Drawing.Size(332, 86); @@ -239,7 +239,7 @@ namespace AudioRecorder { private System.Windows.Forms.Button btnSelectAudio; private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.GroupBox groupBox2; - private System.Windows.Forms.Label fileNameLabel; + private System.Windows.Forms.Label txtRecordFilePath; private System.Windows.Forms.Button playButton; private System.Windows.Forms.Button pauseButton; private System.Windows.Forms.GroupBox groupBox3; diff --git a/client/AudioRecorder/MainForm.cs b/client/AudioRecorder/MainForm.cs index ad857351..b14e058e 100644 --- a/client/AudioRecorder/MainForm.cs +++ b/client/AudioRecorder/MainForm.cs @@ -22,8 +22,6 @@ namespace AudioRecorder { private AudioRecorderSettings parameters; private ITimeCodeWorker timeCodeWorker; private IFileWorker fileWorker; - private String currentFileName; - private String currentFilePath; private bool recording; private Timer countDownTimer; private int countDown = 3; @@ -143,37 +141,20 @@ namespace AudioRecorder { } void AudioEndpointVolume_OnVolumeNotification(AudioVolumeNotificationData data) { - //customTrackBar1.SetValue((int)CurrentDevice.AudioEndpointVolume.MasterVolumeLevel); + this.BeginInvoke(new Action(() => { + tbVolume.Value = (int)Math.Round(CurrentDevice.AudioEndpointVolume.MasterVolumeLevel); + })); } - //private void RefreshVolumePanel() { - // try { - // if (recording) { - // if (volumeHeight >= parameters.loud_percent) - // //SendMessage(verticalProgressBar1.Handle, 1040, 2, 0); - // verticalProgressBar1.ForeColor = Color.Red; - // else - // // SendMessage(verticalProgressBar1.Handle, 1040, 1, 0); - // verticalProgressBar1.ForeColor = Color.Green; - // verticalProgressBar1.Value = (int)volumeHeight; - // } - // } catch (Exception e) { - // Console.WriteLine(e.Message); - // } - //} - - private void stop_Click(object sender, EventArgs e) { stopRecording(); } - private void startRecord() { try { recording = true; - currentFilePath = Path.Combine(parameters.working_dir, "1.wav"); - recorder.StartRecording(currentFilePath); + recorder.StartRecording(txtRecordFilePath.Text); timeCodeWorker.Start(); pauseButton.Enabled = true; recordButton.Enabled = false; @@ -232,34 +213,34 @@ namespace AudioRecorder { } private void OnRecordClick(object sender, EventArgs e) { - //FileNameForm nameForm = new FileNameForm(this, parameters); - //nameForm.ShowDialog(); - - startRecord(); + FileNameForm idSelectorForm = new FileNameForm(this, parameters); + if (idSelectorForm.ShowDialog() == DialogResult.Cancel) + return; + //string fileName = String.Format("{0}{1}", StringResources.DOT_WAV); + //currentFilePath = Path.Combine(parameters.working_dir, fileName); + recordFireEvent(idSelectorForm.ID); + //startRecord(); } - public void recordFireEvent(String currentFileName, string id) { + public void recordFireEvent(String id) { recordButton.Enabled = false; - String path = String.Format("{0}\\{1}", parameters.working_dir, id); - if (!Directory.Exists(path)) - Directory.CreateDirectory(path); - SetCurrentFileNameAndPath(currentFileName, path); - fileNameLabel.Text = currentFileName; - setToolTipToFileNameLabel(currentFilePath); + if (!Directory.Exists(parameters.working_dir)) + Directory.CreateDirectory(parameters.working_dir); + + txtRecordFilePath.Text = GetCurrentFileNameAndPath(parameters.working_dir, id); ; countDownTimer.Start(); } - private void SetCurrentFileNameAndPath(string currentFileName, string path) { - String filePath = String.Format("{0}\\{1}", path, currentFileName); - int i = 0; - this.currentFileName = currentFileName; - currentFilePath = String.Format("{0}\\{1}", path, currentFileName); - while (File.Exists(this.currentFilePath)) { - this.currentFileName = File.Exists(filePath) ? currentFileName.Insert(currentFileName.IndexOf("."), String.Format("-{0}", i)) : currentFileName; - currentFilePath = String.Format("{0}\\{1}", path, this.currentFileName); + private string GetCurrentFileNameAndPath(string path, string id) { + string fileName = String.Format("{0}{1}", id, ".WAV"); + int i = 1; + string fullPath = Path.Combine(path, fileName); + while (File.Exists(fullPath)) { + fileName = String.Format("{0}-{1}{2}", id, i, ".WAV"); + fullPath = Path.Combine(path, fileName); i++; } - + return fileName; } void timer_Tick(object sender, EventArgs e) { @@ -273,13 +254,6 @@ namespace AudioRecorder { } } - private void setToolTipToFileNameLabel(String filePath) { - ToolTip toolTip = new ToolTip(); - String uncPath = String.Format("{0}{1}{2}", parameters.unc_path, Path.DirectorySeparatorChar, currentFileName); - String tip = String.Format("{0}\n{1}", filePath, uncPath); - toolTip.SetToolTip(fileNameLabel, tip); - } - private void selectAudioButton_Click(object sender, EventArgs e) { ShowAudioDeviceSelectorForm(true); } @@ -313,7 +287,7 @@ namespace AudioRecorder { private void OnPlayClick(object sender, EventArgs e) { Process process = new Process(); ProcessStartInfo startInfo = new ProcessStartInfo(); - startInfo.FileName = new FileInfo(currentFilePath).FullName; + startInfo.FileName = new FileInfo(txtRecordFilePath.Text).FullName; process.StartInfo = startInfo; process.Start(); } diff --git a/client/Maestro/Configuration/configuration-studio.json b/client/Maestro/Configuration/configuration-studio.json index a3db7e94..d1b924fe 100644 --- a/client/Maestro/Configuration/configuration-studio.json +++ b/client/Maestro/Configuration/configuration-studio.json @@ -1,6 +1,6 @@ { "title": "Stúdió", - "active": false, + "active": true, "startInTray": false, "enableCustomMetadataId": true, "filter": "avi", @@ -12,7 +12,7 @@ "address": "ws://10.10.1.28/services/nexio" }, "remote": { - "address": "ftp://10.10.1.56:2098", + "address": "ftp://10.10.1.55:2098", "userName": "administrator", "password": "+QtkeQdCTiOvZOgK/kUND4pO4/D+//r7ZIyluwMMdiqMEgO8iJErAG10ooWhPfiljQeXrdeyMzo7gWEZtcWpNSomGeDIbdMyQwtpqmMo1VEM3A27ZfzigY09YD46ECRh" } diff --git a/client/Maestro/MaestroForm.Source.cs b/client/Maestro/MaestroForm.Source.cs index 64c140ef..16ff98b1 100644 --- a/client/Maestro/MaestroForm.Source.cs +++ b/client/Maestro/MaestroForm.Source.cs @@ -343,8 +343,8 @@ namespace Maestro { return; DataGridViewRow row = dgSource.Rows[e.RowIndex]; if (item.IsHighlighted) { - row.DefaultCellStyle.BackColor = MaestroColors.Green200; - row.DefaultCellStyle.ForeColor = Color.White; + row.DefaultCellStyle.BackColor = MaestroColors.LightGreen100; + row.DefaultCellStyle.ForeColor = Color.Black; } else row.DefaultCellStyle = null; } diff --git a/client/Maestro/Sources/NexioRESTSource.cs b/client/Maestro/Sources/NexioRESTSource.cs index 5fc1e3df..2a74a9a1 100644 --- a/client/Maestro/Sources/NexioRESTSource.cs +++ b/client/Maestro/Sources/NexioRESTSource.cs @@ -12,6 +12,7 @@ using System.Drawing; using NLog; using System.Collections.Generic; using MaestroShared.Commons; +using MaestroShared.Metadata; namespace Maestro.Sources { class NexioRESTSource : BindingList, ISource { @@ -48,6 +49,11 @@ namespace Maestro.Sources { HeaderText = StringResources.UGYNOKSEG, AutoSizeMode = DataGridViewAutoSizeColumnMode.None }, + new DataGridViewTextBoxColumn(){ + DataPropertyName = "Duration", + HeaderText = StringResources.HOSSZ, + AutoSizeMode = DataGridViewAutoSizeColumnMode.None + }, new DataGridViewTextBoxColumn() { DataPropertyName = "Created", HeaderText = StringResources.FELVETEL_DATUMA, @@ -128,6 +134,9 @@ namespace Maestro.Sources { case "Created": result = i.Created; break; + case "Duration": + result = i.Duration; + break; } return result; } @@ -198,10 +207,14 @@ namespace Maestro.Sources { private void SetItem(ref NexioSourceItem item, JToken token) { item.ID = token[ID].ToString(); - item.Name = token[LONGNAMEID].ToString() + ".mxf"; + item.Name = token[LONGNAMEID].ToString() + ".MXF"; item.Agency = token[EXTAGENCY]?.ToString(); item.Created = DateTime.Parse(token[RECORDDATE]?.ToString()); item.Modified = DateTime.Parse(token[MODIFIED]?.ToString()); + int d = token.Value(DURATION); + if (d < 0) + d = d * -1; + item.Duration = new Timecode(d).ToString(); } @@ -230,6 +243,7 @@ namespace Maestro.Sources { } else { parent.SafeCall(() => { SetItem(ref item, token); + item.IsHighlighted = true; if (item.CanHandle(acceptableAgencies)) return; Remove(item); diff --git a/client/Maestro/Sources/NexioSourceItem.cs b/client/Maestro/Sources/NexioSourceItem.cs index 19308822..80d0ce53 100644 --- a/client/Maestro/Sources/NexioSourceItem.cs +++ b/client/Maestro/Sources/NexioSourceItem.cs @@ -12,6 +12,7 @@ namespace Maestro.Sources { private DateTime modified; private string agency; private string id; + private string duration; public event PropertyChangedEventHandler PropertyChanged; @@ -85,6 +86,14 @@ namespace Maestro.Sources { } } + public string Duration { + get => duration; + set { + duration = value; + NotifyPropertyChanged(); + } + } + public bool CanHandle(List extensions) { if (extensions == null || extensions.Count < 1) return true; diff --git a/client/Maestro/StringResources.Designer.cs b/client/Maestro/StringResources.Designer.cs index f9070afa..5185848e 100644 --- a/client/Maestro/StringResources.Designer.cs +++ b/client/Maestro/StringResources.Designer.cs @@ -186,6 +186,15 @@ namespace Maestro { } } + /// + /// Looks up a localized string similar to Hossz. + /// + internal static string HOSSZ { + get { + return ResourceManager.GetString("HOSSZ", resourceCulture); + } + } + /// /// Looks up a localized string similar to Idő. /// diff --git a/client/Maestro/StringResources.resx b/client/Maestro/StringResources.resx index d0cfc282..9d5c831c 100644 --- a/client/Maestro/StringResources.resx +++ b/client/Maestro/StringResources.resx @@ -159,6 +159,9 @@ Hibás reference configuráció a(z) {0} targetba + + Hossz + Idő diff --git a/client/MaestroShared/Resources/MaestroColors.cs b/client/MaestroShared/Resources/MaestroColors.cs index 32497ac4..13788600 100644 --- a/client/MaestroShared/Resources/MaestroColors.cs +++ b/client/MaestroShared/Resources/MaestroColors.cs @@ -2,7 +2,8 @@ namespace MaestroShared.Resources { public class MaestroColors { - public static readonly Color Green200 = Color.FromArgb(0xFF, 0xC5, 0xE1, 0xA5); + public static readonly Color LightGreen200 = Color.FromArgb(0xFF, 0xC5, 0xE1, 0xA5); + public static readonly Color LightGreen100 = Color.FromArgb(0xFF, 0xDC, 0xED, 0xC8); public static readonly Color Yellow200 = Color.FromArgb(0xFF, 0xE6, 0xEE, 0x9C); public static readonly Color Orange200 = Color.FromArgb(0xFF, 0xFF, 0xCC, 0x80); public static readonly Color Red200 = Color.FromArgb(0xFF, 0xEF, 0x9A, 0x9A); diff --git a/server/user.jobengine.osgi.commons/src/user/commons/Job.java b/server/user.jobengine.osgi.commons/src/user/commons/Job.java index d0f18f66..a076568c 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/Job.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/Job.java @@ -26,7 +26,7 @@ public class Job extends Syncable implements IJob, Comparable { priority = 0; } - /* + /* @Override public int compareTo(IJob other) { int res = 0; @@ -38,8 +38,7 @@ public class Job extends Syncable implements IJob, Comparable { } */ /** - * 1. szempont prioritas - * 2. szempont azonos prioritasnal a rogzites datuma + * 1. szempont prioritas 2. szempont azonos prioritasnal a rogzites datuma */ @Override public int compareTo(IJob job0) { diff --git a/server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioClipEventDispatcher.java b/server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioClipEventDispatcher.java index 78a9f920..a0a11137 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioClipEventDispatcher.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioClipEventDispatcher.java @@ -256,11 +256,6 @@ public class NexioClipEventDispatcher implements ClipEventListener { } catch (Exception e) { // System.out.println(e); } - try { - jsClip.put(DURATION, clip.getDuration()); - } catch (Exception e) { - // System.out.println(e); - } //jsClip.put(RECORDDATE, new DateTime(rs.getString(i++)).toDate()); //jsClip.put(EXTAGENCY, rs.getString(i++)); //jsClip.put(START, rs.getString(i++)); @@ -284,8 +279,9 @@ public class NexioClipEventDispatcher implements ClipEventListener { BasicDBObject jsonClip = convertClipToJSON(clip); String fileName = jsonClip.getString(LONGNAMEID); String agency = jsonClip.getString(EXTAGENCY); + int duration = jsonClip.getInt(DURATION); if (fileName != null && !"".equals(fileName)) { - logger.debug("Found NEXIO clip: {} {} {}", clip.getId(), fileName, agency); + logger.debug("Found NEXIO clip: {} duration: {} agency: {}", fileName, duration, agency); this.saveClipIntoMongo(jsonClip, emptyMap, emptyMap); } else { logger.debug("Found NEXIO clip: {} XID IS MISSING!!", clip.getId()); @@ -342,14 +338,14 @@ public class NexioClipEventDispatcher implements ClipEventListener { } /* - + int c = connection.read(buffer, 0, 2); //2 bytes hosszan az idokozben hozzaadott id-k szamossaga if (c < 2) { throw new ProtocolException("c, 2, 2"); } //MSB, LSB - + return nofIds; */ return ret; diff --git a/server/user.jobengine.osgi.commons/src/user/commons/nexio/api/Clip.java b/server/user.jobengine.osgi.commons/src/user/commons/nexio/api/Clip.java index 114fb300..cfebc0a6 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/nexio/api/Clip.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/nexio/api/Clip.java @@ -18,6 +18,8 @@ public interface Clip { public Calendar getKillDate() throws ClipNotFoundException, IOException, ProtocolException; + byte[] getMetadata(); + public Calendar getModifiedTimestamp() throws ClipNotFoundException, IOException, ProtocolException; Calendar getRecordDateTimestamp() throws ClipNotFoundException, IOException, ProtocolException; diff --git a/server/user.jobengine.osgi.commons/src/user/commons/nexio/api/ClipImpl.java b/server/user.jobengine.osgi.commons/src/user/commons/nexio/api/ClipImpl.java index ece5fd4b..f490640d 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/nexio/api/ClipImpl.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/nexio/api/ClipImpl.java @@ -65,7 +65,8 @@ class ClipImpl implements Clip { metadata = protocol.executeGetIDMetadata(id); checkClipExists(metadata); } - return metadata[16] + (metadata[17] << 8) + (metadata[18] << 16) + (metadata[19] << 24); + //return metadata[16] + (metadata[17] << 8) + (metadata[18] << 16) + (metadata[19] << 24); + return metadata[19] << 24 | (metadata[18] & 0xFF) << 16 | (metadata[17] & 0xFF) << 8 | (metadata[16] & 0xFF); } @Override @@ -116,6 +117,11 @@ class ClipImpl implements Clip { return result; } + @Override + public byte[] getMetadata() { + return metadata; + } + @Override public Calendar getModifiedTimestamp() throws ClipNotFoundException, IOException, ProtocolException { if (timestamp == null) { diff --git a/server/user.jobengine.osgi.server/pages/joblist.zul b/server/user.jobengine.osgi.server/pages/joblist.zul index 03191576..cfbc89fb 100644 --- a/server/user.jobengine.osgi.server/pages/joblist.zul +++ b/server/user.jobengine.osgi.server/pages/joblist.zul @@ -33,20 +33,24 @@
- - + + + - - - + + + -     +            Â