!7 set flag DynModule. concept Entry { S name; S description; S codeToProduce; transient O data; long sizeInRAM; bool autoLoad; Map moreInfo; } module InformationDatabases > DynCRUD { *() { super(Entry); } afterVisualize { add(crud.buttons, tableDependentButton(table(), "Load", rThread { loadEntry(selected()) })); } SimpleCRUD makeCRUD() { ret setAndReturn(super.makeCRUD(), excludeFields := litset('moreInfo, 'sizeInRAM, 'data)); } void loadEntry(Entry e) { cset(e, codeToProduce := trim(e.codeToProduce)); O data = null; if (anyJavaTokens(e.codeToProduce)) loading "Loading data" { if (isIdentifier(e.codeToProduce)) data = callAndMake(e.codeToProduce); else data = dm_javaEval(); } cset(e, +data); cset(e, sizeInRAM := retainedObjectSize(data)); //cset(e, moreInfo := mapPlus(e.more, +loadingTime)); } }