OpenConcerto

Dépôt officiel du code source de l'ERP OpenConcerto
sonarqube

svn://code.openconcerto.org/openconcerto

Rev

Rev 93 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 93 Rev 174
Line 11... Line 11...
11
 * When distributing the software, include this License Header Notice in each file.
11
 * When distributing the software, include this License Header Notice in each file.
12
 */
12
 */
13
 
13
 
14
 package org.openconcerto.sql.users.rights;
14
 package org.openconcerto.sql.users.rights;
15
 
15
 
-
 
16
import org.openconcerto.sql.Log;
16
import org.openconcerto.sql.TM;
17
import org.openconcerto.sql.TM;
17
import org.openconcerto.sql.element.SQLElement;
18
import org.openconcerto.sql.element.SQLElement;
18
import org.openconcerto.sql.element.SQLElementDirectory;
19
import org.openconcerto.sql.element.SQLElementDirectory;
19
import org.openconcerto.sql.model.DBRoot;
20
import org.openconcerto.sql.model.DBRoot;
20
import org.openconcerto.sql.model.SQLName;
21
import org.openconcerto.sql.model.SQLName;
Line 25... Line 26...
25
 
26
 
26
import java.beans.PropertyChangeEvent;
27
import java.beans.PropertyChangeEvent;
27
import java.beans.PropertyChangeListener;
28
import java.beans.PropertyChangeListener;
28
import java.util.ArrayList;
29
import java.util.ArrayList;
29
import java.util.List;
30
import java.util.List;
30
import java.util.Set;
-
 
31
 
31
 
32
import javax.swing.JComponent;
32
import javax.swing.JComponent;
33
import javax.swing.JTextField;
33
import javax.swing.JTextField;
34
 
34
 
35
public class SQLTableRightEditor implements RightEditor {
35
public class SQLTableRightEditor implements RightEditor {
Line 39... Line 39...
39
        ((ISearchableCombo<SQLTableComboItem>) editorComponent).setValue(SQLTableComboItem.createFromString(object, root, directory));
39
        ((ISearchableCombo<SQLTableComboItem>) editorComponent).setValue(SQLTableComboItem.createFromString(object, root, directory));
40
    }
40
    }
41
 
41
 
42
    @Override
42
    @Override
43
    public JComponent getRightEditor(final String right, final DBRoot root, final SQLElementDirectory directory, final JTextField fieldObject) {
43
    public JComponent getRightEditor(final String right, final DBRoot root, final SQLElementDirectory directory, final JTextField fieldObject) {
44
        final ISearchableCombo<SQLTableComboItem> comboMenu = new ISearchableCombo<SQLTableComboItem>();
44
        final ISearchableCombo<SQLTableComboItem> comboMenu = new ISearchableCombo<>();
45
        DefaultIMutableListModel<SQLTableComboItem> comboItems = new DefaultIMutableListModel<SQLTableComboItem>();
45
        final DefaultIMutableListModel<SQLTableComboItem> comboItems = new DefaultIMutableListModel<>();
46
        Set<SQLTable> set = root.getTables();
-
 
47
 
-
 
48
        List<SQLTableComboItem> result = new ArrayList<SQLTableComboItem>(set.size());
46
        final List<SQLTableComboItem> result = new ArrayList<>();
49
        result.add(SQLTableComboItem.createFromTable(null));
47
        result.add(SQLTableComboItem.createFromTable(null));
50
        for (SQLTable table : set) {
-
 
51
            final SQLElement elt = directory.getElement(table);
48
        for (SQLElement elt : directory.getElements()) {
52
            result.add(SQLTableComboItem.create(table, elt));
49
            result.add(SQLTableComboItem.create(elt.getTable(), elt));
53
        }
50
        }
54
        comboItems.addAll(result);
51
        comboItems.addAll(result);
55
        comboMenu.initCache(comboItems);
52
        comboMenu.initCache(comboItems);
56
        comboMenu.addValueListener(new PropertyChangeListener() {
53
        comboMenu.addValueListener(new PropertyChangeListener() {
57
 
54
 
58
            @Override
55
            @Override
59
            public void propertyChange(PropertyChangeEvent evt) {
56
            public void propertyChange(PropertyChangeEvent evt) {
60
                final SQLTableComboItem selectedItem = (SQLTableComboItem) comboMenu.getSelectedItem();
57
                final SQLTableComboItem selectedItem = comboMenu.getSelectedItem();
61
                if (selectedItem != null) {
58
                if (selectedItem != null) {
62
                    fieldObject.setText(selectedItem.getValue());
59
                    fieldObject.setText(selectedItem.getValue());
63
                }
60
                }
64
            }
61
            }
65
        });
62
        });
Line 70... Line 67...
70
        final SQLTableRightEditor editor = new SQLTableRightEditor();
67
        final SQLTableRightEditor editor = new SQLTableRightEditor();
71
        for (final String code : TableAllRights.getCodes())
68
        for (final String code : TableAllRights.getCodes())
72
            RightEditorManager.getInstance().register(code, editor);
69
            RightEditorManager.getInstance().register(code, editor);
73
    }
70
    }
74
 
71
 
75
    static public class SQLTableComboItem {
72
    public static class SQLTableComboItem {
76
 
73
 
77
        static public SQLTableComboItem create(final SQLTable t, final SQLElement elt) {
74
        public static SQLTableComboItem create(final SQLTable t, final SQLElement elt) {
78
            assert elt == null || elt.getTable() == t;
75
            assert elt == null || elt.getTable() == t;
79
            return elt != null ? createFromElement(elt) : createFromTable(t);
76
            return elt != null ? createFromElement(elt) : createFromTable(t);
80
        }
77
        }
81
 
78
 
82
        static public SQLTableComboItem createFromElement(final SQLElement elt) {
79
        public static SQLTableComboItem createFromElement(final SQLElement elt) {
-
 
80
            String variant = elt.getName().getVariant(Grammar.SINGULAR);
-
 
81
            if (variant.contains("_")) {
-
 
82
                // quick patch for not translated tables
-
 
83
                Log.get().warning(elt.getName() + " not translated");
-
 
84
                variant = variant.replace('_', ' ').toLowerCase();
-
 
85
            }
83
            return new SQLTableComboItem(elt.getTable(), elt.getName().getVariant(Grammar.SINGULAR));
86
            return new SQLTableComboItem(elt.getTable(), variant);
84
        }
87
        }
85
 
88
 
86
        static public SQLTableComboItem createFromTable(final SQLTable t) {
89
        public static SQLTableComboItem createFromTable(final SQLTable t) {
87
            return new SQLTableComboItem(t, t == null ? TM.tr("rights.allTables") : t.getName());
90
            return new SQLTableComboItem(t, t == null ? TM.tr("rights.allTables") : t.getName().toLowerCase().replace('_', ' '));
88
        }
91
        }
89
 
92
 
90
        static public SQLTableComboItem createFromString(final String s, final DBRoot r, final SQLElementDirectory dir) {
93
        public static SQLTableComboItem createFromString(final String s, final DBRoot r, final SQLElementDirectory dir) {
91
            if (s == null)
94
            if (s == null)
92
                return createFromTable(null);
95
                return createFromTable(null);
93
            final SQLName n = SQLName.parse(s);
96
            final SQLName n = SQLName.parse(s);
94
            if (n.getItemCount() != 1)
97
            if (n.getItemCount() != 1)
95
                throw new IllegalArgumentException("Not 1 item : " + n);
98
                throw new IllegalArgumentException("Not 1 item : " + n);
96
            final SQLTable t = r.findTable(n.getName());
99
            final SQLTable t = r.findTable(n.getName());
97
            if (t == null)
100
            if (t == null)
98
                // allow to use unknown table (e.g. not yet created)
101
                // allow to use unknown table (e.g. not yet created)
99
                return new SQLTableComboItem(s, n.getName());
102
                return new SQLTableComboItem(s, n.getName().toLowerCase().replace('_', ' '));
100
            else
103
            else
101
                return create(t, dir.getElement(t));
104
                return create(t, dir.getElement(t));
102
        }
105
        }
103
 
106
 
104
        private final String value;
107
        private final String value;