Warning: session_start(): open(/var/lib/php/sessions/sess_1o7q8rmr4um8vpaqlikar4u6lv, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
sclass BEAUtils {
Map> beaClasses = calcBEAClasses();
Map> beaClasses() {
ret beaClasses if null = calcBEAClasses();
}
// e.g. "Input" => BInput
Map> calcBEAClasses() {
ret ciMapToKeys(c -> dropPrefix("B", shortClassName(c)),
listMinusItem(BEAObject, myNonAbstractClassesImplementing(BEAObject)));
}
Class extends BEAObject> defaultCustomClass(BEAObject o) {
ret beaClasses().get(o.type());
}
A migrateConceptToClass(Class c, BEAObject in) {
A out = unlisted(c);
for (S field : conceptFields(in)) try {
continue if eq(field, "type");
cset(out, field, cget(in, field));
// TODO: check Ref types
} catch e {
fail("Can't convert field " + field, e);
}
ret out;
}
void autoMigrate(BEAObject o) pcall {
Class extends BEAObject> targetClass = defaultCustomClass(o);
if (targetClass != null && targetClass != _getClass(o))
replaceConceptAndUpdateRefs(o, migrateConceptToClass(targetClass, o));
}
}