/*
* Decompiled with CFR 0.152.
*
* Could not load the following classes:
* javax.baja.io.ValueDocDecoder
* javax.baja.io.ValueDocEncoder
* javax.baja.nre.util.Array
* javax.baja.sys.BComponent
* javax.baja.sys.BObject
* javax.baja.sys.BValue
*/
package com.tridium.program;
import com.tridium.program.BCode;
import com.tridium.program.BProgram;
import com.tridium.program.BProgramCode;
import com.tridium.program.ui.BProgramEditor;
import com.tridium.program.ui.Compiler;
import com.tridium.program.ui.SourceWriter;
import java.io.File;
import javax.baja.io.ValueDocDecoder;
import javax.baja.io.ValueDocEncoder;
import javax.baja.nre.util.Array;
import javax.baja.sys.BComponent;
import javax.baja.sys.BObject;
import javax.baja.sys.BValue;
public class RecompileTool {
public static void main(String[] stringArray) throws Exception {
if (stringArray.length < 1) {
System.out.println("usage: RecompileTool
");
return;
}
File file = new File(stringArray[0]);
if (!file.exists()) {
System.out.println("File not found: " + file);
return;
}
RecompileTool.process(file);
System.exit(0);
}
public static void process(File file) throws Exception {
if (file.isDirectory()) {
File[] fileArray = file.listFiles();
int n = 0;
while (fileArray != null && n < fileArray.length) {
RecompileTool.process(fileArray[n]);
++n;
}
return;
}
if (file.getName().endsWith(".bog")) {
RecompileTool.processBog(file);
}
}
public static void processBog(File file) throws Exception {
System.out.println("--- Processing " + file + "...");
try {
ValueDocDecoder valueDocDecoder = new ValueDocDecoder(file);
BComponent bComponent = (BComponent)valueDocDecoder.decodeDocument();
boolean bl = valueDocDecoder.isZipped();
valueDocDecoder.close();
RecompileTool.process(bComponent);
ValueDocEncoder valueDocEncoder = new ValueDocEncoder(file);
valueDocEncoder.setZipped(bl);
valueDocEncoder.encodeDocument((BValue)bComponent);
valueDocEncoder.close();
System.out.println("--- Processed " + file + '!');
}
catch (Exception exception) {
System.out.println("ERROR: Cannot process " + file);
exception.printStackTrace();
}
}
public static void process(BComponent bComponent) throws Exception {
if (bComponent instanceof BProgram) {
System.out.println(" Recompiling " + RecompileTool.toString(bComponent));
try {
RecompileTool.recompile((BProgram)bComponent);
}
catch (Exception exception) {
System.out.println("ERROR Recompiling " + RecompileTool.toString(bComponent));
exception.printStackTrace();
}
}
BComponent[] bComponentArray = bComponent.getChildComponents();
int n = 0;
while (n < bComponentArray.length) {
RecompileTool.process(bComponentArray[n]);
++n;
}
}
public static void recompile(BProgram bProgram) throws Exception {
String string = BCode.generateClassName();
BProgramEditor bProgramEditor = new BProgramEditor();
bProgramEditor.loadValue((BObject)bProgram);
char[] cArray = SourceWriter.generateToCharArray(bProgramEditor, string);
BProgramCode bProgramCode = bProgram.getCode();
Compiler compiler = new Compiler(null);
compiler.compile(string, bProgramCode, new String(cArray));
}
static String toString(BComponent bComponent) {
Object object;
Array array = new Array();
while ((object = bComponent.getPropertyInParent()) != null) {
array.add(0, (Object)object.getName());
bComponent = (BComponent)bComponent.getParent();
}
object = new StringBuffer();
int n = 0;
while (n < array.size()) {
((StringBuffer)object).append("/").append(array.get(n));
++n;
}
return ((StringBuffer)object).toString();
}
}