/**
* Copyright (C) 2010-14 diirt developers. See COPYRIGHT.TXT
* All rights reserved. Use is subject to license terms. See LICENSE.TXT
*/
package org.diirt.support.ca;
import gov.aps.jca.dbr.TIME;
import org.diirt.vtype.Alarm;
import org.diirt.vtype.AlarmSeverity;
import org.diirt.vtype.Time;
import java.time.Instant;
/**
*
* @author carcassi
*/
class VMetadata<TValue extends TIME> implements Alarm, Time {
final TValue dbrValue;
private final boolean disconnected;
private final Instant timestamp;
VMetadata(TValue dbrValue, JCAConnectionPayload connPayload) {
this.dbrValue = dbrValue;
this.disconnected = !connPayload.isChannelConnected();
if (disconnected) {
timestamp = connPayload.getEventTime();
} else {
timestamp = DataUtils.timestampOf(dbrValue.getTimeStamp());
}
}
@Override
public AlarmSeverity getAlarmSeverity() {
if (disconnected)
return AlarmSeverity.UNDEFINED;
return DataUtils.fromEpics(dbrValue.getSeverity());
}
@Override
public String getAlarmName() {
if (disconnected)
return "Disconnected";
return dbrValue.getStatus().getName();
}
@Override
public Instant getTimestamp() {
return timestamp;
}
@Override
public Integer getTimeUserTag() {
return null;
}
@Override
public boolean isTimeValid() {
return DataUtils.isTimeValid(dbrValue.getTimeStamp());
}
}