Search in sources :

Example 86 with Attribute

use of com.ramussoft.common.Attribute in project ramus by Vitaliy-Yakovchuk.

the class CreateAttributeCommand method readBody.

@Override
public void readBody(BinaryDataInput input) throws IOException {
    attribute = new Attribute();
    loadAttribute(input, attribute);
}
Also used : Attribute(com.ramussoft.common.Attribute)

Example 87 with Attribute

use of com.ramussoft.common.Attribute in project ramus by Vitaliy-Yakovchuk.

the class TransactionStorageCommand method setAttribute.

private void setAttribute(Transaction transaction, IEngine iEngine) {
    Element element = iEngine.getElement(elementId);
    Attribute attribute = iEngine.getAttribute(attributeId);
    Object oldValue = engine.getAttribute(element, attribute);
    iEngine.setBinaryAttribute(elementId, attributeId, transaction);
    Object newValue = engine.getAttribute(element, attribute);
    if (element != null) {
        long qId = engine.getQualifierIdForElement(elementId);
        Qualifier q = engine.getQualifier(qId);
        if (q.getAttributeForName() == attributeId) {
            element.setName((newValue == null) ? "" : newValue.toString());
        }
    }
    AttributeEvent event = new AttributeEvent(engine, element, attribute, oldValue, newValue, true);
    engine.attributeChanged(event);
}
Also used : Attribute(com.ramussoft.common.Attribute) Element(com.ramussoft.common.Element) Qualifier(com.ramussoft.common.Qualifier) AttributeEvent(com.ramussoft.common.event.AttributeEvent)

Example 88 with Attribute

use of com.ramussoft.common.Attribute in project ramus by Vitaliy-Yakovchuk.

the class DeleteAttributeCommand method readBody.

@Override
public void readBody(BinaryDataInput input) throws IOException {
    attribute = new Attribute();
    properties = new Transaction();
    int c = input.readInt();
    for (int i = 0; i < c; i++) try {
        properties.getSave().add(TransactionStorageCommand.loadPersistent(engine, input));
    } catch (InstantiationException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    }
    loadAttribute(input, attribute);
}
Also used : Transaction(com.ramussoft.common.persistent.Transaction) Attribute(com.ramussoft.common.Attribute)

Example 89 with Attribute

use of com.ramussoft.common.Attribute in project ramus by Vitaliy-Yakovchuk.

the class ElementListPlugin method init.

@Override
public void init(Engine engine, AccessRules accessor) {
    super.init(engine, accessor);
    if (!StandardAttributesPlugin.isDisableAutoupdate(engine))
        engine.addElementListener(null, new ElementAdapter() {

            @Override
            public void beforeElementDeleted(ElementEvent event) {
                if (event.isJournaled())
                    return;
                long id = event.getQualifierId();
                Qualifier q = event.getEngine().getQualifier(id);
                cleanAttribute(q.getAttributes(), event);
                cleanAttribute(q.getSystemAttributes(), event);
                super.beforeElementDeleted(event);
            }

            private void cleanAttribute(List<Attribute> attributes, ElementEvent event) {
                for (Attribute a : attributes) {
                    if (isMyType(a)) {
                        event.getEngine().setAttribute(event.getOldElement(), a, new ArrayList<Persistent>(0));
                    }
                }
            }
        });
}
Also used : ElementAdapter(com.ramussoft.common.event.ElementAdapter) Attribute(com.ramussoft.common.Attribute) Qualifier(com.ramussoft.common.Qualifier) ArrayList(java.util.ArrayList) List(java.util.List) Persistent(com.ramussoft.common.persistent.Persistent) ElementEvent(com.ramussoft.common.event.ElementEvent)

Example 90 with Attribute

use of com.ramussoft.common.Attribute in project ramus by Vitaliy-Yakovchuk.

the class TablePlugin method getAttributePreferenciesEditor.

@Override
public AttributePreferenciesEditor getAttributePreferenciesEditor() {
    return new AttributePreferenciesEditor() {

        private SelectableTableView view;

        private AttributeOrderEditPanel attributeOrderEditPanel = new AttributeOrderEditPanel(new ArrayList<Attribute>(), true);

        private Action createAttributeAction = new AbstractAction() {

            /**
             */
            private static final long serialVersionUID = -2190162251129929137L;

            {
                this.putValue(ACTION_COMMAND_KEY, "CreateAttribute");
                this.putValue(SMALL_ICON, new ImageIcon(getClass().getResource("/com/ramussoft/gui/table/add.png")));
                this.putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_ADD, KeyEvent.CTRL_MASK));
            }

            @Override
            public void actionPerformed(ActionEvent e) {
                new AttributePreferenciesDialog(framework).setVisible(true);
            }
        };

        private Action deleteAttributeAction = new AbstractAction() {

            {
                this.putValue(ACTION_COMMAND_KEY, "DeleteAttribute");
                this.putValue(SMALL_ICON, new ImageIcon(getClass().getResource("/com/ramussoft/gui/table/delete.png")));
                this.putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0));
            }

            /**
             */
            private static final long serialVersionUID = 895892525217269346L;

            @Override
            public void actionPerformed(ActionEvent e) {
                if (JOptionPane.showConfirmDialog(framework.getMainFrame(), GlobalResourcesManager.getString("DeleteActiveElementsDialog.Warning"), UIManager.getString("OptionPane.titleText"), JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
                    TreePath[] paths = view.getComponent().getTable().getTreeSelectionModel().getSelectionPaths();
                    if (paths.length == 0) {
                        System.err.println("Trying to delete element, but no elements are selected");
                        return;
                    }
                    for (TreePath path : paths) {
                        Row row = ((TreeTableNode) path.getLastPathComponent()).getRow();
                        if (row == null) {
                            System.err.println("Trying to delete node, which conatain no row");
                            return;
                        }
                        long attrId = (Long) row.getAttribute((Attribute) view.getComponent().getRowSet().getEngine().getPluginProperty("Core", StandardAttributesPlugin.ATTRIBUTE_ID));
                        view.getComponent().getRowSet().startUserTransaction();
                        view.getComponent().getRowSet().getEngine().deleteAttribute(attrId);
                        view.getComponent().getRowSet().commitUserTransaction();
                    }
                }
            }
        };

        @Override
        public void apply(Attribute attribute, Engine engine, AccessRules accessRules) {
            String qualifierName = StandardAttributesPlugin.getTableQualifeirName(attribute);
            Qualifier qualifier = engine.getSystemQualifier(qualifierName);
            if (qualifier == null) {
                qualifier = engine.createSystemQualifier();
                qualifier.setName(qualifierName);
            }
            List<Attribute> attributes = attributeOrderEditPanel.getAttributes();
            fillAttributes(engine, attributes);
            qualifier.setAttributes(attributes);
            qualifier.getSystemAttributes().clear();
            qualifier.getSystemAttributes().add(StandardAttributesPlugin.getTableElementIdAttribute(engine));
            engine.updateQualifier(qualifier);
            List<TableGroupablePropertyPersistent> list = new ArrayList<TableGroupablePropertyPersistent>();
            int i = 0;
            for (String group : attributeOrderEditPanel.getAttributeGroups()) {
                if (group != null) {
                    TableGroupablePropertyPersistent p = new TableGroupablePropertyPersistent();
                    p.setAttribute(attribute.getId());
                    p.setName(group);
                    p.setOtherAttribute(attributes.get(i).getId());
                    list.add(p);
                }
                i++;
            }
            engine.setAttribute(null, attribute, list);
        }

        private void fillAttributes(Engine engine, List<Attribute> attributes) {
            List<Row> rows = view.getSelectedRows();
            ArrayList<Attribute> toRemove = new ArrayList<Attribute>(attributes);
            for (Row row : rows) {
                Attribute attr = StandardAttributesPlugin.getAttribute(engine, row.getElement());
                toRemove.remove(attr);
                if (attributes.indexOf(attr) < 0)
                    attributes.add(attr);
            }
            for (Attribute attribute : toRemove) attributes.remove(attribute);
        }

        @Override
        public boolean canApply() {
            return view.getSelectedRows().size() > 0;
        }

        @SuppressWarnings("unchecked")
        @Override
        public JComponent createComponent(Attribute attribute, final Engine engine, AccessRules accessRules) {
            view = new SelectableTableView(framework, engine, accessRules, StandardAttributesPlugin.getAttributesQualifier(engine)) {

                @Override
                protected Attribute[] getAttributes() {
                    return new Attribute[] { StandardAttributesPlugin.getAttributeNameAttribute(engine), StandardAttributesPlugin.getAttributeTypeNameAttribute(engine) };
                }
            };
            JComponent component = view.createComponent();
            view.getComponent().getModel().setEditable(0, false);
            view.getComponent().getModel().setEditable(1, false);
            JTabbedPane pane = new JTabbedPane();
            pane.addTab(GlobalResourcesManager.getString("attributes"), component);
            pane.addTab(GlobalResourcesManager.getString("AttributesOrder"), attributeOrderEditPanel);
            pane.addChangeListener(new ChangeListener() {

                @Override
                public void stateChanged(ChangeEvent e) {
                    fillAttributes(engine, attributeOrderEditPanel.getAttributes());
                    attributeOrderEditPanel.refresh();
                }
            });
            if (attribute != null) {
                Qualifier qualifier = StandardAttributesPlugin.getTableQualifierForAttribute(engine, attribute);
                attributeOrderEditPanel.setAttributes(qualifier.getAttributes());
                Hashtable<Attribute, String> groups = new Hashtable<Attribute, String>();
                List<TableGroupablePropertyPersistent> pList = (List) engine.getAttribute(null, attribute);
                for (TableGroupablePropertyPersistent p : pList) for (Attribute attribute2 : qualifier.getAttributes()) {
                    if ((p.getOtherAttribute() == attribute2.getId()) && (p.getName() != null))
                        groups.put(attribute2, p.getName());
                }
                attributeOrderEditPanel.setGroups(groups);
                List<Row> list = view.getComponent().getRowSet().getAllRows();
                for (Row row : list) {
                    Attribute attr = StandardAttributesPlugin.getAttribute(engine, row.getElement());
                    if (qualifier.getAttributes().indexOf(attr) >= 0) {
                        view.setSelectedRow(row, true);
                    }
                }
            }
            view.getComponent().getTable().setComponentPopupMenu(createPopupMenu());
            return pane;
        }

        private JPopupMenu createPopupMenu() {
            JPopupMenu menu = new JPopupMenu();
            for (Action action : getActions()) {
                if (action == null)
                    menu.addSeparator();
                else {
                    action.putValue(Action.NAME, GlobalResourcesManager.getString((String) action.getValue(Action.ACTION_COMMAND_KEY)));
                    menu.add(action);
                }
            }
            return menu;
        }

        private Action[] getActions() {
            return new Action[] { createAttributeAction, new AbstractAction() {

                /**
                 */
                private static final long serialVersionUID = 3284967628905643862L;

                {
                    this.putValue(ACTION_COMMAND_KEY, "Action.SortByName");
                    this.putValue(SMALL_ICON, new ImageIcon(getClass().getResource("/com/ramussoft/gui/table/sort-incr.png")));
                }

                @Override
                public void actionPerformed(ActionEvent e) {
                    view.getComponent().getRowSet().startUserTransaction();
                    view.getComponent().getRowSet().sortByName();
                    view.getComponent().getRowSet().commitUserTransaction();
                }
            }, deleteAttributeAction };
        }
    };
}
Also used : ImageIcon(javax.swing.ImageIcon) Action(javax.swing.Action) AbstractAction(javax.swing.AbstractAction) Attribute(com.ramussoft.common.Attribute) ActionEvent(java.awt.event.ActionEvent) JTabbedPane(javax.swing.JTabbedPane) ArrayList(java.util.ArrayList) AttributePreferenciesEditor(com.ramussoft.gui.common.AttributePreferenciesEditor) AttributeOrderEditPanel(com.ramussoft.gui.qualifier.AttributeOrderEditPanel) Qualifier(com.ramussoft.common.Qualifier) ArrayList(java.util.ArrayList) List(java.util.List) ChangeListener(javax.swing.event.ChangeListener) TableGroupablePropertyPersistent(com.ramussoft.core.attribute.simple.TableGroupablePropertyPersistent) AbstractAction(javax.swing.AbstractAction) SelectableTableView(com.ramussoft.gui.qualifier.table.SelectableTableView) Engine(com.ramussoft.common.Engine) Hashtable(java.util.Hashtable) JComponent(javax.swing.JComponent) JPopupMenu(javax.swing.JPopupMenu) TreePath(javax.swing.tree.TreePath) ChangeEvent(javax.swing.event.ChangeEvent) AccessRules(com.ramussoft.common.AccessRules) Row(com.ramussoft.database.common.Row)

Aggregations

Attribute (com.ramussoft.common.Attribute)203 Qualifier (com.ramussoft.common.Qualifier)72 Element (com.ramussoft.common.Element)70 ArrayList (java.util.ArrayList)53 Engine (com.ramussoft.common.Engine)32 List (java.util.List)20 Row (com.ramussoft.database.common.Row)19 Hashtable (java.util.Hashtable)19 SQLException (java.sql.SQLException)16 AttributeType (com.ramussoft.common.AttributeType)15 FindObject (com.ramussoft.common.attribute.FindObject)11 AttributeEvent (com.ramussoft.common.event.AttributeEvent)11 ResultSet (java.sql.ResultSet)11 AttributePlugin (com.ramussoft.gui.common.AttributePlugin)10 AccessRules (com.ramussoft.common.AccessRules)9 Transaction (com.ramussoft.common.persistent.Transaction)9 HierarchicalPersistent (com.ramussoft.core.attribute.simple.HierarchicalPersistent)9 RowMapper (com.ramussoft.jdbc.RowMapper)9 Row (com.ramussoft.pb.Row)9 ImageIcon (javax.swing.ImageIcon)9