niagara-ax/modules/cfr_output/com/tridium/alarm/print/BLinePrinterRecipient.java
2026-03-17 13:31:18 -07:00

294 lines
12 KiB
Java

/*
* Decompiled with CFR 0.152.
*
* Could not load the following classes:
* javax.baja.data.BIDataValue
* javax.baja.log.Log
* javax.baja.naming.BOrd
* javax.baja.naming.BOrdList
* javax.baja.naming.SlotPath
* javax.baja.nre.util.TextUtil
* javax.baja.sys.Action
* javax.baja.sys.BBoolean
* javax.baja.sys.BDynamicEnum
* javax.baja.sys.BEnum
* javax.baja.sys.BEnumRange
* javax.baja.sys.BFacets
* javax.baja.sys.BIcon
* javax.baja.sys.BInteger
* javax.baja.sys.BString
* javax.baja.sys.BValue
* javax.baja.sys.BajaRuntimeException
* javax.baja.sys.InvalidEnumException
* javax.baja.sys.Property
* javax.baja.sys.Sys
* javax.baja.sys.Topic
* javax.baja.sys.Type
* javax.baja.util.BFormat
* javax.baja.util.Queue
* javax.baja.util.Worker
* javax.baja.util.Worker$ITodo
*/
package com.tridium.alarm.print;
import java.io.ByteArrayInputStream;
import javax.baja.alarm.AlarmSupport;
import javax.baja.alarm.BAlarmRecipient;
import javax.baja.alarm.BAlarmRecord;
import javax.baja.alarm.BAlarmSourceInfo;
import javax.baja.alarm.BIAlarmSource;
import javax.baja.alarm.BSourceState;
import javax.baja.data.BIDataValue;
import javax.baja.log.Log;
import javax.baja.naming.BOrd;
import javax.baja.naming.BOrdList;
import javax.baja.naming.SlotPath;
import javax.baja.nre.util.TextUtil;
import javax.baja.sys.Action;
import javax.baja.sys.BBoolean;
import javax.baja.sys.BDynamicEnum;
import javax.baja.sys.BEnum;
import javax.baja.sys.BEnumRange;
import javax.baja.sys.BFacets;
import javax.baja.sys.BIcon;
import javax.baja.sys.BInteger;
import javax.baja.sys.BString;
import javax.baja.sys.BValue;
import javax.baja.sys.BajaRuntimeException;
import javax.baja.sys.InvalidEnumException;
import javax.baja.sys.Property;
import javax.baja.sys.Sys;
import javax.baja.sys.Topic;
import javax.baja.sys.Type;
import javax.baja.util.BFormat;
import javax.baja.util.Queue;
import javax.baja.util.Worker;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.HashAttributeSet;
import javax.print.attribute.standard.PrinterName;
public class BLinePrinterRecipient
extends BAlarmRecipient
implements BIAlarmSource {
public static final Property printer = BLinePrinterRecipient.newProperty((int)0, (BValue)BDynamicEnum.DEFAULT, (BFacets)BFacets.make((String)"fieldEditor", (BIDataValue)BString.make((String)"alarm:LinePrinterFE")));
public static final Property language = BLinePrinterRecipient.newProperty((int)0, (String)"", (BFacets)BFacets.make((String)"fieldWidth", (BIDataValue)BInteger.make((int)6)));
public static final Property printFormat = BLinePrinterRecipient.newProperty((int)0, (BValue)BLinePrinterRecipient.makeDefaultPrintFormat(), (BFacets)BFacets.make((String)"multiLine", (BIDataValue)BBoolean.make((boolean)true)));
public static final Property alertOnFailure = BLinePrinterRecipient.newProperty((int)0, (boolean)false, null);
public static final Property alarmSourceInfo = BLinePrinterRecipient.newProperty((int)0, (BValue)new BAlarmSourceInfo(), null);
public static final Action ackAlarm = BLinePrinterRecipient.newAction((int)4, (BValue)new BAlarmRecord(), null);
public static final Action loadPrinters = BLinePrinterRecipient.newAction((int)0, null);
public static final Topic printersLoaded = BLinePrinterRecipient.newTopic((int)0, null);
public static final Type TYPE = Sys.loadType((Class)(class$com$tridium$alarm$print$BLinePrinterRecipient == null ? (class$com$tridium$alarm$print$BLinePrinterRecipient = BLinePrinterRecipient.class$("com.tridium.alarm.print.BLinePrinterRecipient")) : class$com$tridium$alarm$print$BLinePrinterRecipient));
private AlarmSupport support;
private Queue printQueue = new Queue();
private Worker printThread = new Worker((Worker.ITodo)this.printQueue);
private static final BIcon icon = BIcon.make((BIcon)BIcon.std((String)"print.png"), (BIcon)BIcon.std((String)"badges/alarm.png"));
private static final Log log = Log.getLog((String)"alarm.printer");
static /* synthetic */ Class class$com$tridium$alarm$print$BLinePrinterRecipient;
public BDynamicEnum getPrinter() {
return (BDynamicEnum)this.get(printer);
}
public void setPrinter(BDynamicEnum bDynamicEnum) {
this.set(printer, (BValue)bDynamicEnum, null);
}
public String getLanguage() {
return this.getString(language);
}
public void setLanguage(String string) {
this.setString(language, string, null);
}
public BFormat getPrintFormat() {
return (BFormat)this.get(printFormat);
}
public void setPrintFormat(BFormat bFormat) {
this.set(printFormat, (BValue)bFormat, null);
}
public boolean getAlertOnFailure() {
return this.getBoolean(alertOnFailure);
}
public void setAlertOnFailure(boolean bl) {
this.setBoolean(alertOnFailure, bl, null);
}
public BAlarmSourceInfo getAlarmSourceInfo() {
return (BAlarmSourceInfo)this.get(alarmSourceInfo);
}
public void setAlarmSourceInfo(BAlarmSourceInfo bAlarmSourceInfo) {
this.set(alarmSourceInfo, (BValue)bAlarmSourceInfo, null);
}
public BBoolean ackAlarm(BAlarmRecord bAlarmRecord) {
return (BBoolean)this.invoke(ackAlarm, (BValue)bAlarmRecord, null);
}
public void loadPrinters() {
this.invoke(loadPrinters, null, null);
}
public void firePrintersLoaded(BValue bValue) {
this.fire(printersLoaded, bValue, null);
}
public Type getType() {
return TYPE;
}
public void started() throws Exception {
this.support = new AlarmSupport((BIAlarmSource)this, this.getAlarmSourceInfo());
this.printThread.start("alarm:printing");
}
public void stopped() throws Exception {
this.printThread.stop();
}
public static BFormat makeDefaultPrintFormat() {
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("Source: %alarmData.sourceName%\n");
stringBuffer.append("Timestamp: %timestamp%\n");
stringBuffer.append("State: %sourceState% / %ackState%\n");
stringBuffer.append("Priority: %priority%\n");
stringBuffer.append("Alarm Class: %alarmClass%\n");
stringBuffer.append("Text: %alarmData.msgText%\n");
stringBuffer.append("\n");
return BFormat.make((String)stringBuffer.toString());
}
/*
* WARNING - Removed try catching itself - possible behaviour change.
*/
public void doLoadPrinters() {
PrintService[] printServiceArray = PrintServiceLookup.lookupPrintServices(DocFlavor.INPUT_STREAM.AUTOSENSE, null);
String[] stringArray = new String[printServiceArray.length];
for (int i = 0; i < printServiceArray.length; ++i) {
stringArray[i] = SlotPath.escape((String)printServiceArray[i].getName());
}
BEnumRange bEnumRange = BEnumRange.make((String[])stringArray);
try {
BDynamicEnum bDynamicEnum;
BDynamicEnum bDynamicEnum2 = this.getPrinter();
if (bDynamicEnum2.equals((Object)BDynamicEnum.DEFAULT)) {
bDynamicEnum = BDynamicEnum.make((int)0, (BEnumRange)bEnumRange);
} else {
BEnum bEnum = bEnumRange.get(bDynamicEnum2.getTag());
bDynamicEnum = BDynamicEnum.make((int)bEnum.getOrdinal(), (BEnumRange)bEnumRange);
}
this.setPrinter(bDynamicEnum);
}
catch (InvalidEnumException invalidEnumException) {
}
finally {
this.firePrintersLoaded(null);
}
}
public void handleAlarm(BAlarmRecord bAlarmRecord) {
if (bAlarmRecord.getSource().equals((Object)BOrdList.make((BOrd)this.getNavOrd()))) {
return;
}
if (log.isTraceOn()) {
log.trace("Enqueue");
}
String string = BFormat.make((String)this.getPrintFormat().format((Object)bAlarmRecord)).format((Object)bAlarmRecord);
this.printQueue.enqueue((Object)new PrintJob(string));
}
public BBoolean doAckAlarm(BAlarmRecord bAlarmRecord) {
try {
return BBoolean.make((boolean)this.support.ackAlarm(bAlarmRecord));
}
catch (Exception exception) {
return BBoolean.FALSE;
}
}
public BIcon getIcon() {
return icon;
}
static /* synthetic */ Class class$(String string) {
try {
return Class.forName(string);
}
catch (ClassNotFoundException classNotFoundException) {
throw new NoClassDefFoundError(classNotFoundException.getMessage());
}
}
private class PrintJob
implements Runnable {
String text;
public PrintJob(String string) {
this.text = string;
}
public void run() {
if (log.isTraceOn()) {
log.trace("Dequeueing print job for " + SlotPath.unescape((String)BLinePrinterRecipient.this.getPrinter().getTag()));
}
try {
HashAttributeSet hashAttributeSet = new HashAttributeSet();
hashAttributeSet.add(new PrinterName(SlotPath.unescape((String)BLinePrinterRecipient.this.getPrinter().getTag()), null));
PrintService[] printServiceArray = PrintServiceLookup.lookupPrintServices(null, hashAttributeSet);
if (printServiceArray.length < 1) {
throw new BajaRuntimeException("Printer '" + SlotPath.unescape((String)BLinePrinterRecipient.this.getPrinter().getTag()) + "' not found.");
}
DocPrintJob docPrintJob = printServiceArray[0].createPrintJob();
String[] stringArray = TextUtil.replace((String)this.text, (String)"\n", (String)"\n\r").split("\n\r");
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < stringArray.length; ++i) {
int n;
if (stringArray[i].length() < 80) {
stringBuffer.append(stringArray[i]);
stringBuffer.append("\n\r");
continue;
}
for (int j = 0; j < stringArray[i].length(); j += n) {
n = Math.min(80, stringArray[i].length() - j);
int n2 = n;
if (j + n2 < stringArray[i].length()) {
while (stringArray[i].charAt(j + n2 - 1) != ' ' && n2 > 1) {
--n2;
}
if (n2 > 1) {
n = n2;
}
}
stringBuffer.append(stringArray[i].substring(j, j + n));
stringBuffer.append("\n\r");
}
}
docPrintJob.print(new SimpleDoc(new ByteArrayInputStream(stringBuffer.toString().getBytes()), DocFlavor.INPUT_STREAM.AUTOSENSE, null), null);
}
catch (Exception exception) {
BFacets bFacets = BLinePrinterRecipient.this.getAlarmSourceInfo().makeAlarmData(BSourceState.offnormal);
bFacets = BFacets.make((BFacets)bFacets, (String)"msgText", (BIDataValue)BString.make((String)(SlotPath.unescape((String)BLinePrinterRecipient.this.getPrinter().getTag()) + " print error.")));
try {
if (BLinePrinterRecipient.this.getAlertOnFailure()) {
BLinePrinterRecipient.this.support.newAlert(bFacets);
}
}
catch (Exception exception2) {
// empty catch block
}
log.error("Print error", (Throwable)exception);
}
}
}
}