Search in sources :

Example 31 with VType

use of org.diirt.vtype.VType in project org.csstudio.display.builder by kasemir.

the class SpreadsheetExportJob method performExport.

/**
 * {@inheritDoc}
 */
@Override
protected void performExport(final IProgressMonitor monitor, final PrintStream out) throws Exception {
    // Item header
    for (ModelItem item : model.getItems()) printItemInfo(out, item);
    out.println();
    // Spreadsheet Header
    out.print("# " + Messages.TimeColumn);
    for (ModelItem item : model.getItems()) out.print(Messages.Export_Delimiter + item.getName() + " " + formatter.getHeader());
    out.println();
    // Create speadsheet interpolation
    final List<ValueIterator> iters = new ArrayList<>();
    for (ModelItem item : model.getItems()) {
        monitor.subTask(NLS.bind("Fetching data for {0}", item.getName()));
        iters.add(createValueIterator(item));
    }
    final SpreadsheetIterator sheet = new SpreadsheetIterator(iters.toArray(new ValueIterator[iters.size()]));
    // Dump the spreadsheet lines
    long line_count = 0;
    while (sheet.hasNext() && !monitor.isCanceled()) {
        final Instant time = sheet.getTime();
        final VType[] line = sheet.next();
        out.print(TimestampHelper.format(time));
        for (int i = 0; i < line.length; ++i) out.print(Messages.Export_Delimiter + formatter.format(line[i]));
        out.println();
        ++line_count;
        if ((line_count % PROGRESS_UPDATE_LINES) == 0)
            monitor.subTask(NLS.bind("Wrote {0} samples", line_count));
        if (monitor.isCanceled())
            break;
    }
}
Also used : VType(org.diirt.vtype.VType) SpreadsheetIterator(org.csstudio.archive.reader.SpreadsheetIterator) Instant(java.time.Instant) ArrayList(java.util.ArrayList) ModelItem(org.csstudio.trends.databrowser3.model.ModelItem) ValueIterator(org.csstudio.archive.reader.ValueIterator)

Example 32 with VType

use of org.diirt.vtype.VType in project org.csstudio.display.builder by kasemir.

the class PVItem method doScan.

/**
 * Scan, i.e. add 'current' value to live samples
 */
private void doScan() {
    final VType value = current_value;
    Activator.getLogger().log(Level.FINE, "PV {0} scans {1}", new Object[] { getName(), value });
    if (value == null)
        logDisconnected();
    else
        // Transform value to have 'now' as time stamp
        samples.addLiveSample(VTypeHelper.transformTimestampToNow(value));
}
Also used : VType(org.diirt.vtype.VType)

Example 33 with VType

use of org.diirt.vtype.VType in project org.csstudio.display.builder by kasemir.

the class FormulaInput method next.

/**
 * Iterate over the samples of the input's ModelItem
 *  @return Next value or <code>null</code>
 *  @throws Exception
 */
public VType next() throws Exception {
    if (index < 0)
        return null;
    final VType result;
    final PlotSamples samples = item.getSamples();
    if (!samples.getLock().tryLock(10, TimeUnit.SECONDS))
        throw new TimeoutException("Cannot lock " + samples);
    try {
        if (index < samples.size())
            result = samples.get(index++).getVType();
        else {
            result = null;
            index = -1;
        }
    } finally {
        samples.getLock().unlock();
    }
    return result;
}
Also used : VType(org.diirt.vtype.VType) TimeoutException(java.util.concurrent.TimeoutException)

Example 34 with VType

use of org.diirt.vtype.VType in project org.csstudio.display.builder by kasemir.

the class PVFactoryTest method testPVFactory.

@Test
public void testPVFactory() throws Exception {
    final RuntimePV pv = PVFactory.getPV("loc://test(3.14)");
    try {
        // vtype.pv uses the base name, without initializer
        assertThat(pv.getName(), equalTo("loc://test"));
        final CountDownLatch updates = new CountDownLatch(1);
        final AtomicReference<Number> number = new AtomicReference<>();
        RuntimePVListener listener = new RuntimePVListener() {

            @Override
            public void valueChanged(RuntimePV pv, VType value) {
                System.out.println(pv.getName() + " = " + value);
                number.set(VTypeUtil.getValueNumber(value));
                updates.countDown();
            }
        };
        pv.addListener(listener);
        updates.await();
        assertThat(number.get(), equalTo(3.14));
    } finally {
        PVFactory.releasePV(pv);
    }
}
Also used : RuntimePV(org.csstudio.display.builder.runtime.pv.RuntimePV) VType(org.diirt.vtype.VType) AtomicReference(java.util.concurrent.atomic.AtomicReference) CountDownLatch(java.util.concurrent.CountDownLatch) RuntimePVListener(org.csstudio.display.builder.runtime.pv.RuntimePVListener) Test(org.junit.Test)

Example 35 with VType

use of org.diirt.vtype.VType in project org.csstudio.display.builder by kasemir.

the class ArrayPVDispatcher method updateArrayFromElements.

/**
 * Update the array PV with the current value of all element PVs
 */
private void updateArrayFromElements() throws Exception {
    final List<RuntimePV> pvs = element_pvs.get();
    final int N = pvs.size();
    if (N == 1) {
        // Is 'array' really a scalar?
        final VType array = array_pv.read();
        if (array instanceof VNumber || array instanceof VString) {
            array_pv.write(pvs.get(0).read());
            return;
        }
    }
    if (is_string) {
        final String[] value = new String[N];
        for (int i = 0; i < N; ++i) value[i] = VTypeUtil.getValueString(pvs.get(i).read(), false);
        array_pv.write(value);
    } else {
        final double[] value = new double[N];
        for (int i = 0; i < N; ++i) value[i] = VTypeUtil.getValueNumber(pvs.get(i).read()).doubleValue();
        array_pv.write(value);
    }
}
Also used : VType(org.diirt.vtype.VType) VString(org.diirt.vtype.VString) VNumber(org.diirt.vtype.VNumber) VString(org.diirt.vtype.VString)

Aggregations

VType (org.diirt.vtype.VType)76 Test (org.junit.Test)17 IWidgetPropertyChangeHandler (org.csstudio.opibuilder.properties.IWidgetPropertyChangeHandler)10 IFigure (org.eclipse.draw2d.IFigure)10 IPV (org.csstudio.simplepv.IPV)9 VEnum (org.diirt.vtype.VEnum)8 ArrayList (java.util.ArrayList)7 Display (org.diirt.vtype.Display)7 ListNumber (org.diirt.util.array.ListNumber)6 VNumberArray (org.diirt.vtype.VNumberArray)6 VString (org.diirt.vtype.VString)6 PropertyChangeEvent (java.beans.PropertyChangeEvent)5 PropertyChangeListener (java.beans.PropertyChangeListener)5 Instant (java.time.Instant)5 List (java.util.List)5 ModelItem (org.csstudio.trends.databrowser3.model.ModelItem)5 RuntimePV (org.csstudio.display.builder.runtime.pv.RuntimePV)4 RuntimePVListener (org.csstudio.display.builder.runtime.pv.RuntimePVListener)4 CopyOnWriteArrayList (java.util.concurrent.CopyOnWriteArrayList)3 ValueIterator (org.csstudio.archive.reader.ValueIterator)3