All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.epics.pvdatabase.RemoveRecord Maven / Gradle / Ivy

// Copyright information and license terms for this software can be
// found in the file LICENSE that is included with the distribution

/**
 * @author mrk
 * @date 2013.07.24
 */


package org.epics.pvdatabase;

import org.epics.pvdata.factory.FieldFactory;
import org.epics.pvdata.factory.PVDataFactory;
import org.epics.pvdata.pv.FieldBuilder;
import org.epics.pvdata.pv.FieldCreate;
import org.epics.pvdata.pv.PVDataCreate;
import org.epics.pvdata.pv.PVString;
import org.epics.pvdata.pv.PVStructure;
import org.epics.pvdata.pv.ScalarType;
import org.epics.pvdata.pv.Structure;

/**
 * Remove another record in the same database.
 * It is meant to be used via a channelPutGet request.
 * The argument has one field: recordName. The result has a field named status.
 * @author mrk
 * @since 2016.07
 *
 */
public class RemoveRecord extends PVRecord {
    PVDatabase pvDatabase;
    PVString pvRecordName;
    PVString pvResult;

    public static PVRecord create(String recordName)
    {
        FieldCreate fieldCreate = FieldFactory.getFieldCreate();
        PVDataCreate pvDataCreate = PVDataFactory.getPVDataCreate();
        FieldBuilder fb = fieldCreate.createFieldBuilder();
        Structure structure = 
                fb.addNestedStructure("argument").
                add("recordName",ScalarType.pvString).
                endNested().
                addNestedStructure("result").
                add("status",ScalarType.pvString).
                endNested().
                createStructure();
        PVRecord pvRecord = new RemoveRecord(recordName,pvDataCreate.createPVStructure(structure));
        PVDatabase master = PVDatabaseFactory.getMaster();
        master.addRecord(pvRecord);
        return pvRecord;
    }
    private RemoveRecord(String recordName,PVStructure pvStructure) {
        super(recordName,pvStructure);
        pvRecordName = pvStructure.getSubField(PVString.class,"argument.recordName");
        pvResult = pvStructure.getSubField(PVString.class,"result.status");
        pvDatabase = PVDatabaseFactory.getMaster();
    }

    public void process()
    {
        String name = pvRecordName.get();
        PVRecord pvRecord = pvDatabase.findRecord(name);
        if(pvRecord==null) {
            pvResult.put(name + " not found");
            return;
        }
        pvRecord.destroy();
        pvResult.put("success");
        super.process();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy