use of com.servoy.j2db.persistence.ITable in project servoy-client by Servoy.
the class JSDataSource method getTable.
/**
* Get the table of a datasource.
*
* @return JSTable table
*/
@JSFunction
public JSTable getTable() {
try {
ITable table = application.getFoundSetManager().getTable(datasource);
IServer server = application.getSolution().getServer(table.getServerName());
if (server != null) {
return new JSTable(table, server);
}
} catch (RepositoryException e) {
Debug.log(e);
}
return null;
}
use of com.servoy.j2db.persistence.ITable in project servoy-client by Servoy.
the class JSSecurity method js_setSecuritySettings.
/**
* Sets the security settings; the entries contained in the given dataset will override those contained in the current security settings.
*
* NOTE: The security.getElementUUIDs and security.setSecuritySettings functions can be used to define custom security that overrides Servoy security.
* For additional information see the function security.getElementUUIDs.
*
* @sample
* var colNames = new Array();
* colNames[0] = 'uuid';
* colNames[1] = 'flags';
* var dataset = databaseManager.createEmptyDataSet(0,colNames);
*
* var row = new Array();
* row[0] = '413a4d69-becb-4ae4-8fdd-980755d6a7fb';//normally retreived via security.getElementUUIDs(...)
* row[1] = JSSecurity.VIEWABLE|JSSecurity.ACCESSIBLE; // use bitwise 'or' for both
* dataset.addRow(row);//setting element security
*
* row = new Array();
* row[0] = 'example_data.orders';
* row[1] = JSSecurity.READ|JSSecurity.INSERT|JSSecurity.UPDATE|JSSecurity.DELETE|JSSecurity.TRACKING; //use bitwise 'or' for multiple flags
* dataset.addRow(row);//setting table security
*
* security.setSecuritySettings(dataset);//to be called in solution startup method
*
* @param dataset the dataset with security settings
*/
public // uuid/server.tablename , integer(flags)
void js_setSecuritySettings(// uuid/server.tablename , integer(flags)
Object dataset) {
if (dataset instanceof JSDataSet) {
dataset = ((JSDataSet) dataset).getDataSet();
}
if (dataset instanceof IDataSet) {
application.getFoundSetManager().getEditRecordList().clearSecuritySettings();
Map<Object, Integer> sp = new HashMap<Object, Integer>();
IDataSet ds = (IDataSet) dataset;
if (ds.getColumnCount() < 2)
return;
for (int i = 0; i < ds.getRowCount(); i++) {
Object[] row = ds.getRow(i);
if (row[0] != null && row[1] != null) {
Integer val = new Integer(Utils.getAsInteger(row[1]));
try {
boolean matched = false;
if (row[0] instanceof UUID) {
sp.put(row[0], val);
matched = true;
} else if (row[0].toString().indexOf('-') > 0) {
UUID uuid = UUID.fromString(row[0].toString());
sp.put(uuid, val);
matched = true;
} else {
String datasource = row[0].toString();
if (datasource.indexOf('.') != -1) {
String[] server_table = datasource.split("\\.");
if (server_table.length == 2) {
IServer server = application.getSolution().getServer(server_table[0]);
if (server != null) {
ITable table = server.getTable(server_table[1]);
if (table != null) {
Iterator<String> it = table.getRowIdentColumnNames();
if (it.hasNext()) {
sp.put(Utils.getDotQualitfied(table.getServerName(), table.getName(), it.next()), val);
matched = true;
}
}
}
}
}
}
if (!matched) {
Debug.error("security.setSecuritySettings: could not apply security settings for '" + row[0] + "'");
}
} catch (Exception e) {
Debug.error(e);
}
}
}
application.getFlattenedSolution().overrideSecurityAccess(sp);
}
}
use of com.servoy.j2db.persistence.ITable in project servoy-client by Servoy.
the class ImportTransactable method processPostRollBack.
public void processPostRollBack() {
Iterator<Map.Entry<IServerInternal, List<ITable>>> iterator = tablesByServer.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<IServerInternal, List<ITable>> entry = iterator.next();
IServerInternal server = entry.getKey();
List<ITable> tableList = entry.getValue();
try {
server.flushTables(tableList);
} catch (Exception e) {
Debug.error(e);
}
}
}
use of com.servoy.j2db.persistence.ITable in project servoy-client by Servoy.
the class BasicFormController method initForJSUsage.
/**
* Initialize this FormController(or related classes/methods) to be used in javascript
*/
public synchronized JSForm initForJSUsage(CreationalPrototype creationalPrototype) {
if (formScope == null) {
try {
// make scope for state delegation via prototype mechanism
List<Form> forms = application.getFlattenedSolution().getFormHierarchy(form);
List<ISupportScriptProviders> scriptProviders = new ArrayList<ISupportScriptProviders>();
for (Form frm : forms) {
scriptProviders.add(new RuntimeSupportScriptProviders(application, frm));
}
formScope = new FormScope(this, scriptProviders.toArray(new ISupportScriptProviders[scriptProviders.size()]));
if (formModel != null) {
ITable formTable = application.getFoundSetManager().getTable(form.getDataSource());
formScope.setPrototype(new SelectedRecordScope(this, formTable == null ? null : application.getScriptEngine().getTableScope(formTable)));
// $NON-NLS-1$
formScope.putWithoutFireChange("foundset", formModel);
}
// create JS place holder for this object
scriptableForm = new BasicFormController.JSForm(this);
// set parent scope
NativeJavaObject formObject = new NativeJavaObject(formScope, scriptableForm, ScriptObjectRegistry.getJavaMembers(FormController.JSForm.class, formScope));
// $NON-NLS-1$
formScope.putWithoutFireChange("controller", formObject);
// register the place holder 'scriptableForm' in CreationalPrototype scope
creationalPrototype.setLocked(false);
// $NON-NLS-1$
creationalPrototype.put(((Integer) creationalPrototype.get("length", creationalPrototype)).intValue(), creationalPrototype, formScope);
creationalPrototype.put(getName(), creationalPrototype, formScope);
creationalPrototype.setLocked(true);
formScope.createVars();
} catch (Exception ex) {
// $NON-NLS-1$
application.reportError(application.getI18NMessage("servoy.formPanel.error.initFormScope") + ": " + getName(), ex);
return null;
}
}
return scriptableForm;
}
use of com.servoy.j2db.persistence.ITable in project servoy-client by Servoy.
the class ValueListTypeSabloValue method getTableForDp.
/**
* If this valuelist is for a dataprovider and that dataprovider is for a foundset (or even from form's foundset) then this method gives the correct table to search in for that DP.
* The DP might not be from this table though, it could still be a global variable or form variable.
*
* @return the table to search DP in
*/
private ITable getTableForDp() {
ITable table;
if (foundsetPropertySabloValue != null)
table = foundsetPropertyTable;
else {
IWebFormUI formUI = ((WebFormComponent) webObjectContext.getUnderlyingWebObject()).findParent(WebFormUI.class);
table = formUI.getController().getTable();
}
return table;
}
Aggregations