2026-03-17 13:31:18 -07:00

219 lines
6.8 KiB
Java

/*
* Decompiled with CFR 0.152.
*/
package javax.baja.file;
import java.util.HashMap;
import javax.baja.file.BDataFile;
import javax.baja.file.BIFileStore;
import javax.baja.log.Log;
import javax.baja.naming.BOrd;
import javax.baja.nav.BINavNode;
import javax.baja.nav.BNavRoot;
import javax.baja.nav.NavEvent;
import javax.baja.space.BSpace;
import javax.baja.sys.BBoolean;
import javax.baja.sys.BFacets;
import javax.baja.sys.Context;
import javax.baja.sys.Sys;
import javax.baja.sys.Type;
/*
* Illegal identifiers - consider using --renameillegalidents true
*/
public abstract class BSubSpaceFile
extends BDataFile {
public static final Type TYPE;
public static final Log log;
private static HashMap cache;
static /* synthetic */ Class class$javax$baja$file$BSubSpaceFile;
public boolean isOpen() {
boolean bl = false;
if (cache.get(this.getAbsoluteOrd()) != null) {
bl = true;
}
return bl;
}
public BSpace getSubSpace() {
CacheItem cacheItem = (CacheItem)cache.get(this.getAbsoluteOrd());
return cacheItem != null ? cacheItem.space : null;
}
/*
* WARNING - Removed try catching itself - possible behaviour change.
* Enabled aggressive block sorting
* Enabled unnecessary exception pruning
* Enabled aggressive exception aggregation
*/
public static BSubSpaceFile[] listOpen() {
HashMap hashMap = cache;
synchronized (hashMap) {
CacheItem[] cacheItemArray = cache.values().toArray(new CacheItem[cache.size()]);
BSubSpaceFile[] bSubSpaceFileArray = new BSubSpaceFile[cacheItemArray.length];
int n = 0;
while (n < bSubSpaceFileArray.length) {
log.trace("ListIsOpen[" + n + "]: " + cacheItemArray[n].file.getAbsoluteOrd());
bSubSpaceFileArray[n] = cacheItemArray[n].file;
++n;
}
return bSubSpaceFileArray;
}
}
/*
* WARNING - Removed try catching itself - possible behaviour change.
* Enabled aggressive block sorting
* Enabled unnecessary exception pruning
* Enabled aggressive exception aggregation
*/
public BSpace open() {
HashMap hashMap = cache;
synchronized (hashMap) {
BOrd bOrd = this.getAbsoluteOrd();
CacheItem cacheItem = (CacheItem)cache.get(bOrd);
if (cacheItem != null) {
if (cacheItem.openTimestamp == cacheItem.file.getLastModified().getMillis()) {
return cacheItem.space;
}
log.warning("File has been modified: " + cacheItem.file);
this.close(false);
}
log.trace("Open: " + bOrd);
cacheItem = new CacheItem();
cacheItem.space = this.doOpen();
cacheItem.file = this;
cacheItem.openTimestamp = this.getLastModified().getMillis();
cache.put(bOrd, cacheItem);
return cacheItem.space;
}
}
/*
* WARNING - Removed try catching itself - possible behaviour change.
* Enabled aggressive block sorting
* Enabled unnecessary exception pruning
* Enabled aggressive exception aggregation
*/
public void save() throws Exception {
block3: {
CacheItem cacheItem = null;
HashMap hashMap = cache;
synchronized (hashMap) {
BOrd bOrd = this.getAbsoluteOrd();
log.trace("Save: " + bOrd);
cacheItem = (CacheItem)cache.get(bOrd);
// MONITOREXIT @DISABLED, blocks:[0, 1] lbl8 : MonitorExitStatement: MONITOREXIT : var2_2
if (cacheItem == null) break block3;
}
cacheItem.file.doSave();
cacheItem.openTimestamp = cacheItem.file.getLastModified().getMillis();
}
}
public void reload() throws Exception {
this.close(false);
this.open();
}
public void close() {
this.close(true);
}
/*
* WARNING - Removed try catching itself - possible behaviour change.
* Enabled aggressive block sorting
* Enabled unnecessary exception pruning
* Enabled aggressive exception aggregation
*/
void close(boolean bl) {
block4: {
BOrd bOrd;
CacheItem cacheItem = null;
HashMap hashMap = cache;
synchronized (hashMap) {
bOrd = this.getAbsoluteOrd();
log.trace("Close: " + bOrd);
cacheItem = (CacheItem)cache.get(bOrd);
if (cacheItem != null) {
log.trace("isModified: " + cacheItem.file.isModified());
cacheItem.file.doClose();
cacheItem.openTimestamp = 0L;
cache.remove(bOrd);
}
// MONITOREXIT @DISABLED, blocks:[0, 1] lbl14 : MonitorExitStatement: MONITOREXIT : var3_3
if (cacheItem == null) break block4;
bOrd = cacheItem.file.getNavParent().getNavOrd();
}
String string = cacheItem.file.getFileName();
BFacets bFacets = bl ? BFacets.make("close", BBoolean.TRUE) : BFacets.NULL;
BNavRoot.INSTANCE.fireNavEvent(NavEvent.makeReplaced(bOrd, string, (Context)bFacets));
}
}
public abstract boolean isModified();
protected abstract BSpace doOpen();
protected abstract void doSave() throws Exception;
protected abstract void doClose();
public boolean hasNavChildren() {
return true;
}
public BINavNode getNavChild(String string) {
return this.open().getNavChild(string);
}
public BINavNode[] getNavChildren() {
return this.open().getNavChildren();
}
public Type getType() {
return TYPE;
}
static /* synthetic */ Class class(String string, boolean bl) {
try {
Class<?> clazz = Class.forName(string);
if (!bl) {
clazz = clazz.getComponentType();
}
return clazz;
}
catch (ClassNotFoundException classNotFoundException) {
throw new NoClassDefFoundError(classNotFoundException.getMessage());
}
}
public BSubSpaceFile(BIFileStore bIFileStore) {
super(bIFileStore);
}
public BSubSpaceFile() {
}
static {
Class clazz = class$javax$baja$file$BSubSpaceFile;
if (clazz == null) {
clazz = class$javax$baja$file$BSubSpaceFile = BSubSpaceFile.class("[Ljavax.baja.file.BSubSpaceFile;", false);
}
TYPE = Sys.loadType(clazz);
log = Log.getLog("subSpaceFile");
cache = new HashMap();
}
static class CacheItem {
public long openTimestamp;
public BSubSpaceFile file;
public BSpace space;
CacheItem() {
}
}
}