Search in sources :

Example 26 with Table

use of com.servoy.j2db.persistence.Table in project servoy-client by Servoy.

the class JSSolutionModel method getRelations.

/**
 * @clonedesc getRelations(String)
 * @sampleas getRelations(String)
 * @param servername the specified name of the server for the specified table
 * @param tablename the specified name of the table
 *
 * @return an array of all relations (all elements in the array are of type JSRelation)
 */
@JSFunction
public JSRelation[] getRelations(String servername, String tablename) {
    FlattenedSolution fs = application.getFlattenedSolution();
    try {
        Table primaryTable = null;
        if (servername != null && tablename != null) {
            IServer primaryServer = fs.getSolution().getServer(servername);
            if (primaryServer == null)
                throw new RuntimeException("can't list relations, primary server not found: " + servername);
            primaryTable = (Table) primaryServer.getTable(tablename);
            if (primaryTable == null)
                throw new RuntimeException("can't list relations, primary table not found: " + tablename);
        }
        List<JSRelation> relations = new ArrayList<JSRelation>();
        Iterator<Relation> iterator = fs.getRelations(primaryTable, true, true);
        while (iterator.hasNext()) {
            Relation relation = iterator.next();
            if (((primaryTable == null) == relation.isGlobal()) && !relation.isInternal()) {
                relations.add(new JSRelation(relation, application, false));
            }
        }
        return relations.toArray(new JSRelation[relations.size()]);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}
Also used : IServer(com.servoy.j2db.persistence.IServer) ISMRelation(com.servoy.j2db.solutionmodel.ISMRelation) Relation(com.servoy.j2db.persistence.Relation) Table(com.servoy.j2db.persistence.Table) ArrayList(java.util.ArrayList) FlattenedSolution(com.servoy.j2db.FlattenedSolution) ServoyException(com.servoy.j2db.util.ServoyException) RepositoryException(com.servoy.j2db.persistence.RepositoryException) JSFunction(org.mozilla.javascript.annotations.JSFunction)

Example 27 with Table

use of com.servoy.j2db.persistence.Table in project servoy-client by Servoy.

the class LocalePreferences method fillTableCombo.

// @Override
// public void setVisible(boolean v)
// {
// super.setVisible(v);
// try
// {
// if (_application.isInDeveloper() && v && _cbTable != null && _cbTable.getModel().getSize() <= 1)
// {
// Object selected = _cbTable.getSelectedItem();
// String serverName = (String)_cbServer.getSelectedItem();
// fillTableCombo(SELECTION_NONE.equals(serverName) ? null : _application.getRepository().getServer(serverName));
// _cbTable.setSelectedItem(selected);
// }
// }
// catch (Exception e1)
// {
// Debug.error(e1);
// }
// }
/**
 * @param server
 * @throws RepositoryException
 * @throws RemoteException
 */
private void fillTableCombo(IServer server) throws RepositoryException, RemoteException {
    if (server == null) {
        _cbTable.setModel(new DefaultComboBoxModel(new String[] { SELECTION_NONE }));
    } else {
        List al = new ArrayList();
        al.add(SELECTION_NONE);
        List lst = ((IServerInternal) server).getTableAndViewNames(true, true);
        for (int i = 0; i < lst.size(); i++) {
            String tableName = (String) lst.get(i);
            Table table = (Table) server.getTable(tableName);
            // $NON-NLS-1$
            if (table.getColumnInfoID("message_key") == -1)
                continue;
            // $NON-NLS-1$
            if (table.getColumnInfoID("message_value") == -1)
                continue;
            // $NON-NLS-1$
            if (table.getColumnInfoID("message_language") == -1)
                continue;
            al.add(tableName);
        }
        DefaultComboBoxModel model = new DefaultComboBoxModel(al.toArray());
        _cbTable.setModel(model);
    }
}
Also used : Table(com.servoy.j2db.persistence.Table) IServerInternal(com.servoy.j2db.persistence.IServerInternal) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) JList(javax.swing.JList) List(java.util.List) DefaultComboBoxModel(javax.swing.DefaultComboBoxModel)

Example 28 with Table

use of com.servoy.j2db.persistence.Table in project servoy-client by Servoy.

the class TableView method setSortStatus.

public boolean setSortStatus(IFoundSetInternal foundset) {
    if (foundset != null) {
        List<SortColumn> sortCols = foundset.getSortColumns();
        if (sortCols != null && sortCols.size() > 0) {
            boolean found = false;
            for (SortColumn sc : sortCols) {
                for (int i = 0; (i < getColumnModel().getColumnCount()); i++) {
                    TableColumn tc = getColumnModel().getColumn(i);
                    if (tc instanceof CellAdapter) {
                        CellAdapter ca = (CellAdapter) tc;
                        if (ca.getDataProviderID() != null) {
                            List<String> sortingProviders = null;
                            Component renderer = ca.getRenderer();
                            if (renderer instanceof ISupportValueList && ((ISupportValueList) renderer).getValueList() != null) {
                                try {
                                    sortingProviders = DBValueList.getShowDataproviders(((ISupportValueList) renderer).getValueList().getValueList(), (Table) foundset.getTable(), ca.getDataProviderID(), application.getFoundSetManager());
                                } catch (RepositoryException ex) {
                                    Debug.error(ex);
                                }
                            }
                            if (sortingProviders == null) {
                                // no related sort, use sort on dataProviderID instead
                                sortingProviders = Collections.singletonList(ca.getDataProviderID());
                            }
                            for (String sortingProvider : sortingProviders) {
                                SortColumn existingSc;
                                try {
                                    FoundSetManager fsm = (FoundSetManager) foundset.getFoundSetManager();
                                    existingSc = fsm.getSortColumn(foundset.getTable(), sortingProvider, false);
                                } catch (Exception e) {
                                    Debug.error(e);
                                    continue;
                                }
                                if (sc.equalsIgnoreSortorder(existingSc)) {
                                    if (!found) {
                                        // clear old sort
                                        updateSortStatus(-1, true);
                                    }
                                    found = true;
                                    updateSortStatus(ca.getModelIndex(), sc.getSortOrder() == SortColumn.ASCENDING);
                                }
                            }
                        }
                    }
                }
            }
            return found;
        }
    }
    return false;
}
Also used : FoundSetManager(com.servoy.j2db.dataprocessing.FoundSetManager) Table(com.servoy.j2db.persistence.Table) FixedJTable(com.servoy.j2db.gui.FixedJTable) ITable(com.servoy.j2db.persistence.ITable) JTable(javax.swing.JTable) ISupportValueList(com.servoy.j2db.ui.ISupportValueList) RepositoryException(com.servoy.j2db.persistence.RepositoryException) SortColumn(com.servoy.j2db.dataprocessing.SortColumn) TableColumn(javax.swing.table.TableColumn) Point(java.awt.Point) RepositoryException(com.servoy.j2db.persistence.RepositoryException) CellAdapter(com.servoy.j2db.smart.dataui.CellAdapter) IComponent(com.servoy.j2db.ui.IComponent) Component(java.awt.Component) GraphicalComponent(com.servoy.j2db.persistence.GraphicalComponent) IFieldComponent(com.servoy.j2db.ui.IFieldComponent) JComponent(javax.swing.JComponent) JTextComponent(javax.swing.text.JTextComponent) IRuntimeComponent(com.servoy.j2db.ui.runtime.IRuntimeComponent)

Example 29 with Table

use of com.servoy.j2db.persistence.Table in project servoy-client by Servoy.

the class ScrollResponseHeaderContainer method tableChanged.

/**
 * @see javax.swing.event.TableModelListener#tableChanged(javax.swing.event.TableModelEvent)
 */
public void tableChanged(TableModelEvent e) {
    // as changed, as it will be faster on the client the component replace
    if ((e.getType() == TableModelEvent.UPDATE) && (e.getFirstRow() == e.getLastRow()) && (nrUpdatedListItems < 20)) {
        Component component = table.get(Integer.toString(e.getFirstRow()));
        if (component instanceof ListItem) {
            ((ListItem) component).visitChildren(IProviderStylePropertyChanges.class, new IVisitor<Component>() {

                public Object component(Component comp) {
                    if ((comp instanceof IDisplayData) || !(comp instanceof ILabel)) {
                        if (comp instanceof ISupportsNeedEntireState && ((ISupportsNeedEntireState) comp).needEntireState()) {
                            // it if has tags - mark as changed; it could be enhanced further by also know what was last-rendered on tags, not just simple dataproviders
                            ((IProviderStylePropertyChanges) comp).getStylePropertyChanges().setChanged();
                        } else {
                            // try to mark cells as changed only if there was a real value change; otherwise there is no use to replace the whole row...
                            checkForValueChanges(comp);
                        }
                    }
                    // else labels/buttons that don't display data are not changed
                    return CONTINUE_TRAVERSAL_BUT_DONT_GO_DEEPER;
                }
            });
            nrUpdatedListItems++;
            IModel<IRecordInternal> newModel = table.getListItemModel(table.getModel(), e.getFirstRow());
            IModel oldModel = ((ListItem) component).getModel();
            if (newModel != null && oldModel != null && newModel.getObject() != null && !newModel.getObject().equals(oldModel.getObject())) {
                // refresh model if it changed
                ((ListItem) component).setModel(newModel);
            }
        }
    } else {
        if (!isRendering && (!isScrollMode() || !(scrollBehavior != null && scrollBehavior.isGettingRows()))) {
            if (isScrollMode())
                resetScrollParams();
            getStylePropertyChanges().setValueChanged();
        }
    }
    // This is just an heuristic for filtering out the sort event from all table changed events that are raised.
    if (currentData != null && e.getColumn() == TableModelEvent.ALL_COLUMNS && e.getFirstRow() == 0 && elementToColumnHeader.size() > 0) {
        List<SortColumn> sortCols = currentData.getSortColumns();
        if (sortCols != null && sortCols.size() > 0) {
            Map<String, Boolean> sortMap = new HashMap<String, Boolean>();
            for (IPersist persist : elementToColumnHeader.keySet()) {
                SortableCellViewHeader sortableCellViewHeader = (SortableCellViewHeader) elementToColumnHeader.get(persist);
                sortableCellViewHeader.setResizeImage(R_ARROW_OFF);
            }
            for (SortColumn sc : sortCols) {
                for (IPersist persist : elementToColumnHeader.keySet()) {
                    Component comp = elementToColumnIdentifierComponent.get(persist);
                    SortableCellViewHeader sortableCellViewHeader = (SortableCellViewHeader) elementToColumnHeader.get(persist);
                    if (comp instanceof IDisplayData && ((IDisplayData) comp).getDataProviderID() != null) {
                        IDisplayData dispComp = (IDisplayData) comp;
                        List<String> sortingProviders = null;
                        if (dispComp instanceof ISupportValueList && ((ISupportValueList) dispComp).getValueList() != null) {
                            try {
                                sortingProviders = DBValueList.getShowDataproviders(((ISupportValueList) dispComp).getValueList().getValueList(), (Table) currentData.getTable(), dispComp.getDataProviderID(), currentData.getFoundSetManager());
                            } catch (RepositoryException ex) {
                                Debug.error(ex);
                            }
                        }
                        if (sortingProviders == null) {
                            // no related sort, use sort on dataProviderID instead
                            sortingProviders = Collections.singletonList(dispComp.getDataProviderID());
                        }
                        for (String sortingProvider : sortingProviders) {
                            SortColumn existingSc;
                            try {
                                FoundSetManager fsm = (FoundSetManager) currentData.getFoundSetManager();
                                existingSc = fsm.getSortColumn(currentData.getTable(), sortingProvider, false);
                            } catch (RepositoryException ex) {
                                Debug.error(ex);
                                continue;
                            }
                            if (sc.equalsIgnoreSortorder(existingSc)) {
                                boolean descending = sc.getSortOrder() == SortColumn.DESCENDING;
                                sortableCellViewHeader.setResizeImage(descending ? R_ARROW_UP : R_ARROW_DOWN);
                                sortMap.put(sortableCellViewHeader.getId(), Boolean.valueOf(!descending));
                            }
                        }
                    }
                }
            }
            headers.recordSort(sortMap);
        }
    }
    MainPage mp = table.findParent(MainPage.class);
    if (mp != null)
        mp.triggerBrowserRequestIfNeeded();
}
Also used : ISupportsNeedEntireState(com.servoy.j2db.dataprocessing.ISupportsNeedEntireState) ILabel(com.servoy.j2db.ui.ILabel) LinkedHashMap(java.util.LinkedHashMap) HashMap(java.util.HashMap) ISupportValueList(com.servoy.j2db.ui.ISupportValueList) SortColumn(com.servoy.j2db.dataprocessing.SortColumn) IProviderStylePropertyChanges(com.servoy.j2db.ui.IProviderStylePropertyChanges) IComponent(com.servoy.j2db.ui.IComponent) AbstractRuntimeBaseComponent(com.servoy.j2db.ui.scripting.AbstractRuntimeBaseComponent) BaseComponent(com.servoy.j2db.persistence.BaseComponent) GraphicalComponent(com.servoy.j2db.persistence.GraphicalComponent) IFieldComponent(com.servoy.j2db.ui.IFieldComponent) Component(org.apache.wicket.Component) IPortalComponent(com.servoy.j2db.ui.IPortalComponent) IRuntimeComponent(com.servoy.j2db.ui.runtime.IRuntimeComponent) MainPage(com.servoy.j2db.server.headlessclient.MainPage) IModel(org.apache.wicket.model.IModel) FoundSetManager(com.servoy.j2db.dataprocessing.FoundSetManager) Table(com.servoy.j2db.persistence.Table) IRecordInternal(com.servoy.j2db.dataprocessing.IRecordInternal) RepositoryException(com.servoy.j2db.persistence.RepositoryException) IPersist(com.servoy.j2db.persistence.IPersist) IDisplayData(com.servoy.j2db.dataprocessing.IDisplayData) ListItem(org.apache.wicket.markup.html.list.ListItem)

Example 30 with Table

use of com.servoy.j2db.persistence.Table in project servoy-client by Servoy.

the class FoundsetTest method setupData.

@Override
protected void setupData() throws ServoyException {
    BufferedDataSet ds = new BufferedDataSet(new String[] { "pk", "test1", "test2" }, new int[] { IColumnTypes.INTEGER, IColumnTypes.TEXT, IColumnTypes.TEXT });
    ds.addRow(new Object[] { Integer.valueOf(1), "value1", "value2" });
    ds.addRow(new Object[] { Integer.valueOf(2), "value3", "value4" });
    ds.addRow(new Object[] { Integer.valueOf(3), "value1", "value2" });
    ds.addRow(new Object[] { Integer.valueOf(4), "value3", "value4" });
    ds.addRow(new Object[] { Integer.valueOf(5), "value1", "value2" });
    ds.addRow(new Object[] { Integer.valueOf(6), "value3", "value4" });
    ds.addRow(new Object[] { Integer.valueOf(7), "value1", "value2" });
    ds.addRow(new Object[] { Integer.valueOf(8), "value3", "value4" });
    ds.addRow(new Object[] { Integer.valueOf(9), "value1", "value2" });
    ds.addRow(new Object[] { Integer.valueOf(10), "value3", "value4" });
    ds.addRow(new Object[] { Integer.valueOf(11), "value1", "value2" });
    ds.addRow(new Object[] { Integer.valueOf(12), "value3", "value4" });
    ds.addRow(new Object[] { Integer.valueOf(13), "value1", "value2" });
    ds.addRow(new Object[] { Integer.valueOf(14), "value3", "value4" });
    ds.addRow(new Object[] { Integer.valueOf(15), "value1", "value2" });
    ds.addRow(new Object[] { Integer.valueOf(16), "value3", "value4" });
    ds.addRow(new Object[] { Integer.valueOf(17), "value1", "value2" });
    ds.addRow(new Object[] { Integer.valueOf(18), "value3", "value4" });
    client.getFoundSetManager().insertToDataSource("test", ds, null, new WrappedObjectReference<String[]>(new String[] { "pk" }), true, false);
    BufferedDataSet separateDSs = new BufferedDataSet(new String[] { "pk", "test1", "test2" }, new int[] { IColumnTypes.INTEGER, IColumnTypes.TEXT, IColumnTypes.TEXT });
    for (int i = 0; i < 943; i++) {
        separateDSs.addRow(new Object[] { Integer.valueOf(i), "value" + i + "0", "value" + i + "1" });
    }
    client.getFoundSetManager().insertToDataSource("testseparatefoundset", separateDSs, null, new WrappedObjectReference<String[]>(new String[] { "pk" }), true, false);
    BufferedDataSet relatedDS = new BufferedDataSet(new String[] { "relatedtestpk", "testpk", "relatedtest1", "relatedtest2" }, new int[] { IColumnTypes.INTEGER, IColumnTypes.INTEGER, IColumnTypes.TEXT, IColumnTypes.TEXT });
    relatedDS.addRow(new Object[] { Integer.valueOf(1), Integer.valueOf(1), "relatedvalue111", "relatedvalue112" });
    relatedDS.addRow(new Object[] { Integer.valueOf(2), Integer.valueOf(1), "relatedvalue121", "relatedvalue122" });
    relatedDS.addRow(new Object[] { Integer.valueOf(3), Integer.valueOf(1), "relatedvalue131", "relatedvalue132" });
    relatedDS.addRow(new Object[] { Integer.valueOf(4), Integer.valueOf(2), "relatedvalue241", "relatedvalue242" });
    relatedDS.addRow(new Object[] { Integer.valueOf(5), Integer.valueOf(1), "relatedvalue111", "relatedvalue112" });
    relatedDS.addRow(new Object[] { Integer.valueOf(6), Integer.valueOf(1), "relatedvalue121", "relatedvalue122" });
    relatedDS.addRow(new Object[] { Integer.valueOf(7), Integer.valueOf(1), "relatedvalue131", "relatedvalue132" });
    relatedDS.addRow(new Object[] { Integer.valueOf(8), Integer.valueOf(2), "relatedvalue241", "relatedvalue242" });
    relatedDS.addRow(new Object[] { Integer.valueOf(9), Integer.valueOf(1), "relatedvalue111", "relatedvalue112" });
    relatedDS.addRow(new Object[] { Integer.valueOf(10), Integer.valueOf(1), "relatedvalue121", "relatedvalue122" });
    relatedDS.addRow(new Object[] { Integer.valueOf(11), Integer.valueOf(1), "relatedvalue131", "relatedvalue132" });
    relatedDS.addRow(new Object[] { Integer.valueOf(12), Integer.valueOf(2), "relatedvalue241", "relatedvalue242" });
    relatedDS.addRow(new Object[] { Integer.valueOf(13), Integer.valueOf(1), "relatedvalue111", "relatedvalue112" });
    relatedDS.addRow(new Object[] { Integer.valueOf(14), Integer.valueOf(1), "relatedvalue121", "relatedvalue122" });
    relatedDS.addRow(new Object[] { Integer.valueOf(15), Integer.valueOf(1), "relatedvalue131", "relatedvalue132" });
    relatedDS.addRow(new Object[] { Integer.valueOf(16), Integer.valueOf(2), "relatedvalue241", "relatedvalue242" });
    client.getFoundSetManager().insertToDataSource("relatedtest", relatedDS, null, new WrappedObjectReference<String[]>(new String[] { "relatedtestpk" }), true, false);
    ConcurrentHashMap<String, IServer> serverProxies = new ConcurrentHashMap<String, IServer>();
    serverProxies.put("_sv_inmem", DUMMY_ISERVER);
    solution.setServerProxies(serverProxies);
    Relation relation = solution.createNewRelation(validator, "test_to_relatedtest", "mem:test", "mem:relatedtest", LEFT_OUTER_JOIN);
    Column primaryColumn = ((Table) client.getFoundSetManager().getTable(relation.getPrimaryDataSource())).getColumn("pk");
    Column foreignColumn = ((Table) client.getFoundSetManager().getTable(relation.getForeignDataSource())).getColumn("testpk");
    relation.createNewRelationItem(client.getFoundSetManager(), primaryColumn, IBaseSQLCondition.EQUALS_OPERATOR, foreignColumn);
}
Also used : IServer(com.servoy.j2db.persistence.IServer) Relation(com.servoy.j2db.persistence.Relation) Table(com.servoy.j2db.persistence.Table) BufferedDataSet(com.servoy.j2db.dataprocessing.BufferedDataSet) Column(com.servoy.j2db.persistence.Column) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap)

Aggregations

Table (com.servoy.j2db.persistence.Table)43 ITable (com.servoy.j2db.persistence.ITable)27 QueryTable (com.servoy.j2db.query.QueryTable)26 RepositoryException (com.servoy.j2db.persistence.RepositoryException)23 BaseQueryTable (com.servoy.base.query.BaseQueryTable)22 Column (com.servoy.j2db.persistence.Column)21 ServoyException (com.servoy.j2db.util.ServoyException)17 QueryColumn (com.servoy.j2db.query.QueryColumn)16 QuerySelect (com.servoy.j2db.query.QuerySelect)16 ArrayList (java.util.ArrayList)16 RemoteException (java.rmi.RemoteException)14 ApplicationException (com.servoy.j2db.ApplicationException)13 IColumn (com.servoy.j2db.persistence.IColumn)10 IBaseColumn (com.servoy.base.persistence.IBaseColumn)9 IServer (com.servoy.j2db.persistence.IServer)7 Relation (com.servoy.j2db.persistence.Relation)7 HashMap (java.util.HashMap)7 SortColumn (com.servoy.j2db.dataprocessing.SortColumn)6 SafeArrayList (com.servoy.j2db.util.SafeArrayList)6 ColumnInfo (com.servoy.j2db.persistence.ColumnInfo)5