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;
|