Search in sources :

Example 31 with ITable

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;
}
Also used : IServer(com.servoy.j2db.persistence.IServer) JSTable(com.servoy.j2db.dataprocessing.JSTable) ITable(com.servoy.j2db.persistence.ITable) RepositoryException(com.servoy.j2db.persistence.RepositoryException) JSFunction(org.mozilla.javascript.annotations.JSFunction)

Example 32 with ITable

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);
    }
}
Also used : IServer(com.servoy.j2db.persistence.IServer) HashMap(java.util.HashMap) JSDataSet(com.servoy.j2db.dataprocessing.JSDataSet) ServoyException(com.servoy.j2db.util.ServoyException) ApplicationException(com.servoy.j2db.ApplicationException) RepositoryException(com.servoy.j2db.persistence.RepositoryException) Iterator(java.util.Iterator) ITable(com.servoy.j2db.persistence.ITable) IDataSet(com.servoy.j2db.dataprocessing.IDataSet) UUID(com.servoy.j2db.util.UUID)

Example 33 with ITable

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);
        }
    }
}
Also used : IServerInternal(com.servoy.j2db.persistence.IServerInternal) ITable(com.servoy.j2db.persistence.ITable) List(java.util.List) ArrayList(java.util.ArrayList) Map(java.util.Map) HashMap(java.util.HashMap)

Example 34 with ITable

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;
}
Also used : Form(com.servoy.j2db.persistence.Form) ArrayList(java.util.ArrayList) ServoyException(com.servoy.j2db.util.ServoyException) RepositoryException(com.servoy.j2db.persistence.RepositoryException) FormScope(com.servoy.j2db.scripting.FormScope) ISupportScriptProviders(com.servoy.j2db.persistence.ISupportScriptProviders) RuntimeSupportScriptProviders(com.servoy.j2db.FormController.RuntimeSupportScriptProviders) SelectedRecordScope(com.servoy.j2db.scripting.SelectedRecordScope) ITable(com.servoy.j2db.persistence.ITable) NativeJavaObject(org.mozilla.javascript.NativeJavaObject) ITwoNativeJavaObject(com.servoy.j2db.scripting.ITwoNativeJavaObject)

Example 35 with ITable

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;
}
Also used : IWebFormUI(com.servoy.j2db.server.ngclient.IWebFormUI) WebFormComponent(com.servoy.j2db.server.ngclient.WebFormComponent) ITable(com.servoy.j2db.persistence.ITable)

Aggregations

ITable (com.servoy.j2db.persistence.ITable)51 RepositoryException (com.servoy.j2db.persistence.RepositoryException)23 BaseQueryTable (com.servoy.base.query.BaseQueryTable)15 QueryTable (com.servoy.j2db.query.QueryTable)15 Column (com.servoy.j2db.persistence.Column)14 ServoyException (com.servoy.j2db.util.ServoyException)14 ArrayList (java.util.ArrayList)14 RemoteException (java.rmi.RemoteException)13 ApplicationException (com.servoy.j2db.ApplicationException)11 IColumn (com.servoy.j2db.persistence.IColumn)9 Relation (com.servoy.j2db.persistence.Relation)9 Table (com.servoy.j2db.persistence.Table)9 QueryColumn (com.servoy.j2db.query.QueryColumn)8 Form (com.servoy.j2db.persistence.Form)7 QuerySelect (com.servoy.j2db.query.QuerySelect)7 IBaseColumn (com.servoy.base.persistence.IBaseColumn)6 IServer (com.servoy.j2db.persistence.IServer)6 SQLException (java.sql.SQLException)6 ISQLTableJoin (com.servoy.j2db.query.ISQLTableJoin)5 IOException (java.io.IOException)5