Made unittest data backend for frontends and improved swing frontend.
Worked on metamodel backend and some other fixes.
This commit is contained in:
parent
1c308a684a
commit
a25e98f5d5
65 changed files with 2820 additions and 499 deletions
|
|
@ -21,12 +21,12 @@
|
|||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||
<name>org.eclipse.wst.validation.validationbuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.wst.validation.validationbuilder</name>
|
||||
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@
|
|||
<relativePath>..</relativePath>
|
||||
</parent>
|
||||
<artifactId>vasc-demo-swing</artifactId>
|
||||
<groupId>net.forwardfire.vasc.demo</groupId>
|
||||
<name>vasc-demo-swing</name>
|
||||
<description>vasc-demo-swing</description>
|
||||
<dependencies>
|
||||
|
|
@ -31,6 +30,11 @@
|
|||
<artifactId>vasc-backend-mongodb</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.forwardfire.vasc</groupId>
|
||||
<artifactId>vasc-backend-metamodel</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.forwardfire.vasc</groupId>
|
||||
<artifactId>vasc-backend-jdbc</artifactId>
|
||||
|
|
@ -41,5 +45,15 @@
|
|||
<artifactId>juel</artifactId>
|
||||
<version>${juel.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>postgresql</groupId>
|
||||
<artifactId>postgresql</artifactId>
|
||||
<version>9.1-901.jdbc4</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
<version>5.1.19</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,640 @@
|
|||
/*
|
||||
* Copyright 2007-2012 forwardfire.net All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.forwardfire.vasc.demo.swing;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Frame;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.WindowAdapter;
|
||||
import java.awt.event.WindowEvent;
|
||||
import java.io.File;
|
||||
|
||||
import javax.swing.BorderFactory;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JComboBox;
|
||||
import javax.swing.JDialog;
|
||||
import javax.swing.JFileChooser;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JMenu;
|
||||
import javax.swing.JMenuBar;
|
||||
import javax.swing.JMenuItem;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JTabbedPane;
|
||||
import javax.swing.JTextField;
|
||||
import javax.swing.JTree;
|
||||
import javax.swing.SpringLayout;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.event.TreeModelListener;
|
||||
import javax.swing.tree.DefaultMutableTreeNode;
|
||||
import javax.swing.tree.DefaultTreeModel;
|
||||
import javax.swing.tree.TreeNode;
|
||||
|
||||
import org.eobjects.metamodel.DataContext;
|
||||
import org.eobjects.metamodel.schema.Column;
|
||||
import org.eobjects.metamodel.schema.Table;
|
||||
|
||||
import net.forwardfire.vasc.backend.VascBackendControllerLocal;
|
||||
import net.forwardfire.vasc.backend.VascBackendFilter;
|
||||
import net.forwardfire.vasc.backend.metamodel.MetaModelDataContextCsv;
|
||||
import net.forwardfire.vasc.backend.metamodel.MetaModelDataContextMongodb;
|
||||
import net.forwardfire.vasc.backend.metamodel.MetaModelDataContextProvider;
|
||||
import net.forwardfire.vasc.backend.metamodel.MetaModelVascBackend;
|
||||
import net.forwardfire.vasc.core.VascController;
|
||||
import net.forwardfire.vasc.core.VascEntry;
|
||||
import net.forwardfire.vasc.core.VascEntryController;
|
||||
import net.forwardfire.vasc.core.VascEntryControllerLocal;
|
||||
import net.forwardfire.vasc.core.VascEntryField;
|
||||
import net.forwardfire.vasc.core.VascEntryFieldSet;
|
||||
import net.forwardfire.vasc.core.VascLinkEntry;
|
||||
import net.forwardfire.vasc.frontends.swing.SwingPanelIntegration;
|
||||
import net.forwardfire.vasc.frontends.swing.SwingPanelTabbed;
|
||||
import net.forwardfire.vasc.impl.DefaultVascEntry;
|
||||
import net.forwardfire.vasc.impl.DefaultVascEntryField;
|
||||
import net.forwardfire.vasc.impl.DefaultVascFactory;
|
||||
import net.forwardfire.vasc.validators.VascValidator;
|
||||
|
||||
public class JMainFrame extends JFrame {
|
||||
|
||||
VascManager vascManager = null;
|
||||
SwingPanelIntegration spi = null;
|
||||
JTabbedPane tabPane = null;
|
||||
JTree vascTree = null;
|
||||
JMenu fileMenu = new JMenu("File");
|
||||
JMenu connMenu = new JMenu("Connection");
|
||||
JMenu vascMenu = new JMenu("Entries");
|
||||
|
||||
public JMainFrame(VascManager vascManager ) {
|
||||
this.vascManager=vascManager;
|
||||
setTitle("Vasc Swing Demo");
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
setLocationRelativeTo(null);
|
||||
|
||||
setLayout(new BorderLayout());
|
||||
add(createTreePane(), BorderLayout.LINE_START);
|
||||
add(createContentPane(), BorderLayout.LINE_END);
|
||||
add(createLogPane(), BorderLayout.PAGE_END);
|
||||
|
||||
createMenuItems();
|
||||
JMenuBar menubar = new JMenuBar();
|
||||
menubar.add(fileMenu);
|
||||
menubar.add(connMenu);
|
||||
menubar.add(vascMenu);
|
||||
|
||||
// view
|
||||
setJMenuBar(menubar);
|
||||
setMinimumSize(new Dimension(1111,888));
|
||||
pack();
|
||||
//setVisible(true);
|
||||
|
||||
//spi.createNewVascView(ve);
|
||||
}
|
||||
|
||||
class VascTreeModel extends DefaultTreeModel {
|
||||
public VascTreeModel(TreeNode root) {
|
||||
super(root);
|
||||
}
|
||||
|
||||
private static final long serialVersionUID = -7436681803506994277L;
|
||||
|
||||
@Override
|
||||
public void addTreeModelListener(TreeModelListener l) {
|
||||
super.addTreeModelListener(l);
|
||||
}
|
||||
}
|
||||
|
||||
private JPanel createTreePane() {
|
||||
|
||||
DefaultMutableTreeNode root = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.NONE,null));
|
||||
|
||||
vascTree = new JTree(new VascTreeModel(root));
|
||||
vascTree.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
super.mouseClicked(e);
|
||||
if (e.getClickCount() == 2 && vascTree.getSelectionModel().isSelectionEmpty()==false) {
|
||||
try {
|
||||
DefaultMutableTreeNode node = (DefaultMutableTreeNode)vascTree.getSelectionModel().getSelectionPath().getLastPathComponent();
|
||||
if (node.getUserObject() instanceof String) {
|
||||
return;
|
||||
}
|
||||
VascTreeNode vascNode = (VascTreeNode)node.getUserObject();
|
||||
if (vascNode != null) {
|
||||
if (vascNode.type == VascTreeNodeType.ENTRY) {
|
||||
VascEntry ee = vascManager.getVascController().getVascEntryController().getVascEntryById(vascNode.id).clone();
|
||||
DefaultVascFactory.fillVascEntryFrontend(ee, vascManager.getVascController(), DefaultVascFactory.getDefaultVascFrontendData(null));
|
||||
spi.createNewVascView(ee);
|
||||
} else if (vascNode.type == VascTreeNodeType.ENTRY_FIELD) {
|
||||
VascEntryField vef = vascManager.getVascController().getVascEntryController().getVascEntryById(vascNode.entryId).getVascEntryFieldById(vascNode.id);
|
||||
JDialogVascEntryField d = new JDialogVascEntryField(JMainFrame.this,vef);
|
||||
d.setVisible(true);
|
||||
}
|
||||
}
|
||||
} catch (Exception ee) {
|
||||
ee.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
JPanel treePanel = new JPanel();
|
||||
treePanel.setBorder(BorderFactory.createLineBorder(Color.PINK));
|
||||
treePanel.add(vascTree);
|
||||
return treePanel;
|
||||
}
|
||||
|
||||
private JPanel createContentPane() {
|
||||
JPanel contentPane = new JPanel();
|
||||
tabPane = new JTabbedPane();
|
||||
spi = new SwingPanelTabbed(tabPane);
|
||||
contentPane.add(tabPane);
|
||||
return contentPane;
|
||||
}
|
||||
|
||||
private JPanel createLogPane() {
|
||||
JPanel logPanel = new JPanel();
|
||||
logPanel.add(new JLabel("log"));
|
||||
return logPanel;
|
||||
}
|
||||
|
||||
class VascTreeNode {
|
||||
public VascTreeNode() {}
|
||||
public VascTreeNode(VascTreeNodeType type,String id) { this.type=type;this.id=id; }
|
||||
public VascTreeNode(VascTreeNodeType type,String id,String entryId) { this.type=type;this.id=id;this.entryId=entryId; }
|
||||
VascTreeNodeType type;
|
||||
String id;
|
||||
String entryId;
|
||||
@Override
|
||||
public String toString() {
|
||||
return id;
|
||||
}
|
||||
|
||||
}
|
||||
enum VascTreeNodeType {
|
||||
NONE,
|
||||
BACKEND,
|
||||
ENTRY,
|
||||
ENTRY_FIELD,
|
||||
ENTRY_FIELD_SET
|
||||
}
|
||||
|
||||
private void rebuildTree() {
|
||||
|
||||
DefaultMutableTreeNode root = (DefaultMutableTreeNode)vascTree.getModel().getRoot();
|
||||
root.removeAllChildren();
|
||||
|
||||
DefaultMutableTreeNode backends = new DefaultMutableTreeNode("VascBackends");
|
||||
for (String id:vascManager.getVascController().getVascBackendController().getVascBackendIds()) {
|
||||
DefaultMutableTreeNode backendNode = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.BACKEND,id));
|
||||
backends.add(backendNode);
|
||||
}
|
||||
root.add(backends);
|
||||
|
||||
DefaultMutableTreeNode entries = new DefaultMutableTreeNode("VascEntries");
|
||||
for (String id:vascManager.getVascController().getVascEntryController().getVascEntryIds()) {
|
||||
VascEntry ve = vascManager.getVascController().getVascEntryController().getVascEntryById(id);
|
||||
DefaultMutableTreeNode entryNode = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.ENTRY,id));
|
||||
entries.add(entryNode);
|
||||
|
||||
DefaultMutableTreeNode fields = new DefaultMutableTreeNode("Fields");
|
||||
for (VascEntryField vef:ve.getVascEntryFields()) {
|
||||
DefaultMutableTreeNode vefNode = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.ENTRY_FIELD,vef.getId(),id));
|
||||
fields.add(vefNode);
|
||||
|
||||
/*
|
||||
DefaultMutableTreeNode validators = new DefaultMutableTreeNode("Validators");
|
||||
for (VascValidator vv:vef.getVascValidators()) {
|
||||
DefaultMutableTreeNode vNode = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.ENTRY_FIELD,vv.getClass().getSimpleName()));
|
||||
validators.add(vNode);
|
||||
}
|
||||
vefNode.add(validators);
|
||||
*/
|
||||
}
|
||||
entryNode.add(fields);
|
||||
|
||||
DefaultMutableTreeNode fieldSets = new DefaultMutableTreeNode("FieldSets");
|
||||
for (VascEntryFieldSet vefs:ve.getVascEntryFieldSets()) {
|
||||
DefaultMutableTreeNode vefsNode = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.ENTRY_FIELD_SET,vefs.getId(),id));
|
||||
fieldSets.add(vefsNode);
|
||||
}
|
||||
entryNode.add(fieldSets);
|
||||
|
||||
DefaultMutableTreeNode links = new DefaultMutableTreeNode("Links");
|
||||
for (VascLinkEntry vle:ve.getVascLinkEntries()) {
|
||||
DefaultMutableTreeNode vefsNode = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.ENTRY_FIELD_SET,vle.getId()));
|
||||
links.add(vefsNode);
|
||||
}
|
||||
entryNode.add(links);
|
||||
|
||||
DefaultMutableTreeNode filters = new DefaultMutableTreeNode("Backend Filters");
|
||||
for (VascBackendFilter vbf:ve.getVascBackendFilters()) {
|
||||
DefaultMutableTreeNode vefsNode = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.ENTRY_FIELD_SET,vbf.getClass().getSimpleName()));
|
||||
filters.add(vefsNode);
|
||||
}
|
||||
entryNode.add(links);
|
||||
|
||||
DefaultMutableTreeNode param = new DefaultMutableTreeNode("Backend Parameters");
|
||||
for (String key:ve.getEntryParameterKeys()) {
|
||||
DefaultMutableTreeNode vefsNode = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.ENTRY_FIELD_SET,key));
|
||||
param.add(vefsNode);
|
||||
}
|
||||
entryNode.add(param);
|
||||
|
||||
|
||||
DefaultMutableTreeNode options = new DefaultMutableTreeNode("List Options");
|
||||
for (VascEntryField vef:ve.getListOptions()) {
|
||||
DefaultMutableTreeNode vefsNode = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.ENTRY_FIELD_SET,vef.getId()));
|
||||
options.add(vefsNode);
|
||||
}
|
||||
entryNode.add(options);
|
||||
}
|
||||
root.add(entries);
|
||||
|
||||
SwingUtilities.updateComponentTreeUI(vascTree);
|
||||
}
|
||||
|
||||
private void createMenuItems() {
|
||||
JMenuItem openXmlItem = new JMenuItem("Open Xml");
|
||||
openXmlItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
try {
|
||||
final JFileChooser fc = new JFileChooser();
|
||||
//fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
|
||||
int returnVal = fc.showOpenDialog((JMenuItem)e.getSource());
|
||||
if (returnVal == JFileChooser.APPROVE_OPTION) {
|
||||
File file = fc.getSelectedFile();
|
||||
vascManager.openFile(file);
|
||||
rebuildTree();
|
||||
}
|
||||
} catch (Exception e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
fileMenu.add(openXmlItem);
|
||||
JMenuItem closeXmlItem = new JMenuItem("Close");
|
||||
fileMenu.add(closeXmlItem);
|
||||
fileMenu.addSeparator();
|
||||
JMenuItem exitItem = new JMenuItem("Exit");
|
||||
fileMenu.add(exitItem);
|
||||
|
||||
JMenuItem connectVascItem = new JMenuItem("Add Vasc");
|
||||
connectVascItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
|
||||
}
|
||||
});
|
||||
connMenu.add(connectVascItem);
|
||||
|
||||
JMenuItem connectMongoItem = new JMenuItem("Connect Mongo");
|
||||
connectMongoItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
try {
|
||||
|
||||
} catch (Exception e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
connMenu.add(connectMongoItem);
|
||||
|
||||
JMenuItem connectPgItem = new JMenuItem("Add Postgres");
|
||||
connMenu.add(connectPgItem);
|
||||
JMenuItem connectMysqlItem = new JMenuItem("Add Mysql");
|
||||
connMenu.add(connectMysqlItem);
|
||||
JMenuItem connectLdapItem = new JMenuItem("Add Ldap");
|
||||
connMenu.add(connectLdapItem);
|
||||
connMenu.addSeparator();
|
||||
JMenuItem connectMetaCsvItem = new JMenuItem("Add meta csv");
|
||||
connectMetaCsvItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
JDialogMetaCsv d = new JDialogMetaCsv(JMainFrame.this);
|
||||
d.setVisible(true);
|
||||
}
|
||||
});
|
||||
connMenu.add(connectMetaCsvItem);
|
||||
JMenuItem connectMetaXmlItem = new JMenuItem("Add meta xml");
|
||||
connMenu.add(connectMetaXmlItem);
|
||||
JMenuItem connectMetaMongoItem = new JMenuItem("Add meta mongo");
|
||||
connectMetaMongoItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
JDialogMetaMongodb d = new JDialogMetaMongodb(JMainFrame.this);
|
||||
d.setVisible(true);
|
||||
}
|
||||
});
|
||||
connMenu.add(connectMetaMongoItem);
|
||||
JMenuItem connectMetaJdbcItem = new JMenuItem("Add meta jdbc");
|
||||
connMenu.add(connectMetaJdbcItem);
|
||||
|
||||
/*
|
||||
for (final String id:ve.getVascFrontendData().getVascController().getVascEntryController().getVascEntryIds()) {
|
||||
JMenuItem item = new JMenuItem(id);
|
||||
item.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
try {
|
||||
VascEntry ee = ve.getVascFrontendData().getVascController().getVascEntryController().getVascEntryById(id).clone();
|
||||
DefaultVascFactory.fillVascEntryFrontend(ee, ve.getVascFrontendData().getVascController(), DefaultVascFactory.getDefaultVascFrontendData(null));
|
||||
spi.createNewVascView(ee);
|
||||
} catch (Exception e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
vascMenu.add(item);
|
||||
}
|
||||
*/
|
||||
|
||||
JMenuItem item = new JMenuItem("Close tab.");
|
||||
item.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if (tabPane.getSelectedIndex()>=0) {
|
||||
tabPane.removeTabAt(tabPane.getSelectedIndex()); // todo release vasc frontend
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
vascMenu.add(item);
|
||||
}
|
||||
|
||||
public class JDialogMetaCsv extends JDialog implements ActionListener {
|
||||
|
||||
private static final long serialVersionUID = -8638394652416472734L;
|
||||
|
||||
public JDialogMetaCsv(Frame aFrame) {
|
||||
setTitle("Add csv file");
|
||||
setMinimumSize(new Dimension(640,480));
|
||||
setPreferredSize(new Dimension(999,666));
|
||||
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
|
||||
addWindowListener(new WindowAdapter() {
|
||||
public void windowClosing(WindowEvent we) {
|
||||
clearAndHide();
|
||||
}
|
||||
});
|
||||
JPanel mainPanel = new JPanel();
|
||||
mainPanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
|
||||
mainPanel.setLayout(new BorderLayout());
|
||||
//mainPanel.add(createPanelTop(),BorderLayout.NORTH);
|
||||
mainPanel.add(createPanelCenter(),BorderLayout.CENTER);
|
||||
//mainPanel.add(createPanelBottom(),BorderLayout.SOUTH);
|
||||
getContentPane().add(mainPanel);
|
||||
pack();
|
||||
setLocationRelativeTo(aFrame);
|
||||
}
|
||||
|
||||
public void clearAndHide() {
|
||||
setVisible(false);
|
||||
}
|
||||
|
||||
public JPanel createPanelCenter() {
|
||||
JPanel result = new JPanel();
|
||||
//result.setLayout(new SpringLayout());
|
||||
|
||||
result.add(new JLabel("File"));
|
||||
JButton fileButton = new JButton("Open");
|
||||
fileButton.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
final JFileChooser fc = new JFileChooser();
|
||||
int returnVal = fc.showOpenDialog((JButton)e.getSource());
|
||||
if (returnVal == JFileChooser.APPROVE_OPTION) {
|
||||
File file = fc.getSelectedFile();
|
||||
MetaModelDataContextCsv ds = new MetaModelDataContextCsv();
|
||||
ds.setFile(file.getAbsolutePath());
|
||||
createMetaEntry(ds,file.getName(),null);
|
||||
}
|
||||
}
|
||||
});
|
||||
result.add(fileButton);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public class JDialogMetaMongodb extends JDialog implements ActionListener {
|
||||
|
||||
private static final long serialVersionUID = -8638394652416472734L;
|
||||
private JTextField hostname = null;
|
||||
private JTextField database = null;
|
||||
|
||||
public JDialogMetaMongodb(Frame aFrame) {
|
||||
setTitle("Add mongodb");
|
||||
setMinimumSize(new Dimension(800,600));
|
||||
setPreferredSize(new Dimension(999,666));
|
||||
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
|
||||
addWindowListener(new WindowAdapter() {
|
||||
public void windowClosing(WindowEvent we) {
|
||||
clearAndHide();
|
||||
}
|
||||
});
|
||||
JPanel mainPanel = new JPanel();
|
||||
mainPanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
|
||||
mainPanel.setLayout(new BorderLayout());
|
||||
//mainPanel.add(createPanelTop(),BorderLayout.NORTH);
|
||||
mainPanel.add(createPanelCenter(),BorderLayout.CENTER);
|
||||
//mainPanel.add(createPanelBottom(),BorderLayout.SOUTH);
|
||||
getContentPane().add(mainPanel);
|
||||
pack();
|
||||
setLocationRelativeTo(aFrame);
|
||||
}
|
||||
|
||||
public void clearAndHide() {
|
||||
setVisible(false);
|
||||
}
|
||||
|
||||
public JPanel createPanelCenter() {
|
||||
JPanel result = new JPanel();
|
||||
//result.setLayout(new SpringLayout());
|
||||
|
||||
result.add(new JLabel("Hostname"));
|
||||
hostname = new JTextField("localhost");
|
||||
result.add(hostname);
|
||||
|
||||
result.add(new JLabel("Database"));
|
||||
database = new JTextField("lefiona");
|
||||
result.add(database);
|
||||
|
||||
JButton fileButton = new JButton("Connect");
|
||||
fileButton.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
MetaModelDataContextMongodb ds = new MetaModelDataContextMongodb();
|
||||
ds.setHostname(hostname.getText());
|
||||
ds.setDatabase(database.getText());
|
||||
DataContext metaDs = ds.getDataContext();
|
||||
for (String table:metaDs.getDefaultSchema().getTableNames()) {
|
||||
createMetaEntry(ds,table,table);
|
||||
}
|
||||
}
|
||||
});
|
||||
result.add(fileButton);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class JDialogVascEntryField extends JDialog implements ActionListener {
|
||||
|
||||
private static final long serialVersionUID = -8638394652416472734L;
|
||||
private JButton okButton = null;
|
||||
private JButton cancelButton = null;
|
||||
private JTextField idField = null;
|
||||
private JTextField backendNameField = null;
|
||||
private JComboBox fieldTypeBox = null;
|
||||
private VascEntryField field = null;
|
||||
|
||||
public JDialogVascEntryField(Frame aFrame,VascEntryField field) {
|
||||
this.field = field;
|
||||
setTitle("Vasc Entry Field");
|
||||
setMinimumSize(new Dimension(800,600));
|
||||
setPreferredSize(new Dimension(999,666));
|
||||
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
|
||||
addWindowListener(new WindowAdapter() {
|
||||
public void windowClosing(WindowEvent we) {
|
||||
clearAndHide();
|
||||
}
|
||||
});
|
||||
JPanel mainPanel = new JPanel();
|
||||
mainPanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
|
||||
mainPanel.setLayout(new BorderLayout());
|
||||
//mainPanel.add(createPanelTop(),BorderLayout.NORTH);
|
||||
mainPanel.add(createPanelCenter(),BorderLayout.CENTER);
|
||||
mainPanel.add(createPanelBottom(),BorderLayout.SOUTH);
|
||||
getContentPane().add(mainPanel);
|
||||
pack();
|
||||
setLocationRelativeTo(aFrame);
|
||||
}
|
||||
|
||||
public void clearAndHide() {
|
||||
setVisible(false);
|
||||
}
|
||||
|
||||
public JPanel createPanelCenter() {
|
||||
JPanel result = new JPanel();
|
||||
//result.setLayout(new SpringLayout());
|
||||
|
||||
result.add(new JLabel("id"));
|
||||
idField = new JTextField(field.getId());
|
||||
result.add(idField);
|
||||
|
||||
result.add(new JLabel("backendName"));
|
||||
backendNameField = new JTextField(field.getBackendName());
|
||||
result.add(backendNameField);
|
||||
|
||||
result.add(new JLabel("type"));
|
||||
fieldTypeBox = new JComboBox(vascManager.getVascController().getVascEntryFieldTypeController().getVascEntryFieldTypeIds().toArray());
|
||||
fieldTypeBox.setSelectedItem(field.getVascEntryFieldType().getId());
|
||||
result.add(fieldTypeBox);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private JPanel createPanelBottom() {
|
||||
JPanel result = new JPanel();
|
||||
okButton = new JButton("ok");
|
||||
okButton.addActionListener(this);
|
||||
cancelButton = new JButton("cancel");
|
||||
cancelButton.addActionListener(this);
|
||||
result.add(okButton);
|
||||
result.add(cancelButton);
|
||||
return result;
|
||||
}
|
||||
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if (e.getSource()==cancelButton) {
|
||||
clearAndHide();
|
||||
return;
|
||||
}
|
||||
if (e.getSource()==okButton) {
|
||||
|
||||
VascEntryField vef = ((VascEntryControllerLocal)vascManager.getVascController().getVascEntryController()).getMasterVascEntryById(field.getVascEntry().getId()).getVascEntryFieldById(field.getId());
|
||||
vef.setVascEntryFieldType(vascManager.getVascController().getVascEntryFieldTypeController().getVascEntryFieldTypeById((String)fieldTypeBox.getSelectedItem()));
|
||||
|
||||
clearAndHide();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void createMetaEntry(MetaModelDataContextProvider ds,String id,String tableName) {
|
||||
DataContext metaDs = ds.getDataContext();
|
||||
Table metaTable = null;
|
||||
if (tableName==null) {
|
||||
metaTable = metaDs.getDefaultSchema().getTable(0);
|
||||
} else {
|
||||
metaTable = metaDs.getDefaultSchema().getTableByName(tableName);
|
||||
}
|
||||
Column[] keys = metaTable.getPrimaryKeys();
|
||||
Column[] cols = metaTable.getColumns();
|
||||
if (cols.length==0) {
|
||||
return; // vasc needs at least one column
|
||||
}
|
||||
|
||||
MetaModelVascBackend backend = new MetaModelVascBackend();
|
||||
backend.setId(id+"_backend");
|
||||
backend.setDataContextProvider(ds);
|
||||
backend.setTable(metaTable.getName());
|
||||
if (keys.length>0) {
|
||||
backend.setTableId(keys[0].getName());
|
||||
} else {
|
||||
backend.setTableId(cols[0].getName());
|
||||
//TODO backend.setRequestReadOnly(true);
|
||||
}
|
||||
|
||||
VascEntry ve = new DefaultVascEntry();
|
||||
ve.setId(id);
|
||||
ve.setBackendId(id+"_backend");
|
||||
for (Column c:cols) {
|
||||
VascEntryField vef = new DefaultVascEntryField(c.getName());
|
||||
vef.setVascEntryFieldType(vascManager.getVascController().getVascEntryFieldTypeController().getVascEntryFieldTypeByClass(c.getType().getJavaEquivalentClass()));
|
||||
ve.addVascEntryField(vef);
|
||||
}
|
||||
|
||||
try {
|
||||
((VascBackendControllerLocal)vascManager.getVascController().getVascBackendController()).addVascBackend(backend);
|
||||
((VascEntryControllerLocal)vascManager.getVascController().getVascEntryController()).addVascEntry(ve, vascManager.getVascController());
|
||||
|
||||
// mm TODO rm this fill which adds the global actions ... and show updated tree in editor
|
||||
DefaultVascFactory.fillVascControllerLocalEntries((VascEntryControllerLocal) vascManager.getVascController().getVascEntryController(), vascManager.getVascController());
|
||||
rebuildTree();
|
||||
} catch (Exception ee) {
|
||||
ee.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -22,115 +22,38 @@
|
|||
|
||||
package net.forwardfire.vasc.demo.swing;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JMenu;
|
||||
import javax.swing.JMenuBar;
|
||||
import javax.swing.JMenuItem;
|
||||
import javax.swing.JPanel;
|
||||
|
||||
import net.forwardfire.vasc.core.VascController;
|
||||
import net.forwardfire.vasc.core.VascEntry;
|
||||
import net.forwardfire.vasc.core.VascEntryControllerLocal;
|
||||
import net.forwardfire.vasc.core.VascEntryField;
|
||||
import net.forwardfire.vasc.frontends.swing.SwingVascFrontend;
|
||||
import net.forwardfire.vasc.impl.DefaultVascFactory;
|
||||
import net.forwardfire.vasc.impl.x4o.VascParser;
|
||||
|
||||
public class SwingStartup {
|
||||
|
||||
private JMainFrame mainFrame = null;
|
||||
private VascManager vascManager = null;
|
||||
|
||||
|
||||
public static void main(String[] argu){
|
||||
JFrame.setDefaultLookAndFeelDecorated(false);
|
||||
try {
|
||||
VascEntry entry = getVascTable();
|
||||
|
||||
SwingStartup s = new SwingStartup();
|
||||
JFrame frame = s.viewEntry(entry);
|
||||
|
||||
while (frame.isVisible()) {
|
||||
Thread.sleep(100000);
|
||||
}
|
||||
SwingStartup s = new SwingStartup();
|
||||
s.init();
|
||||
s.open();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public JFrame viewEntry(final VascEntry entry) throws Exception {
|
||||
// get GUI
|
||||
JFrame frame = new JFrame();
|
||||
frame.setTitle("Vasc Test - Swing - "+entry.getName());
|
||||
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
||||
frame.setLocationRelativeTo(null);
|
||||
|
||||
JMenuBar menubar = new JMenuBar();
|
||||
JMenu vascMenu = new JMenu("Vasc Entries");
|
||||
|
||||
for (final String id:entry.getVascFrontendData().getVascController().getVascEntryController().getVascEntryIds()) {
|
||||
JMenuItem item = new JMenuItem(id);
|
||||
item.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
try {
|
||||
VascEntry ee = entry.getVascFrontendData().getVascController().getVascEntryController().getVascEntryById(id);
|
||||
fill(ee,entry.getVascFrontendData().getVascController());
|
||||
viewEntry(ee);
|
||||
} catch (Exception e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
vascMenu.add(item);
|
||||
}
|
||||
menubar.add(vascMenu);
|
||||
frame.setJMenuBar(menubar);
|
||||
|
||||
// define redering
|
||||
JPanel panel = new JPanel();
|
||||
SwingVascFrontend render = new SwingVascFrontend(panel);
|
||||
frame.add(panel);
|
||||
public void init() throws Exception {
|
||||
vascManager = new VascManager();
|
||||
vascManager.start();
|
||||
|
||||
// render
|
||||
render.initEntry(entry);
|
||||
render.renderView();
|
||||
|
||||
// get data
|
||||
entry.getVascFrontendData().getVascFrontendActions().refreshData();
|
||||
|
||||
// view
|
||||
frame.pack();
|
||||
frame.setVisible(true);
|
||||
|
||||
return frame;
|
||||
mainFrame = new JMainFrame(vascManager);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static public void fill(VascEntry entry,VascController vascController) {
|
||||
DefaultVascFactory.fillVascEntryFrontend(entry, vascController, DefaultVascFactory.getDefaultVascFrontendData(null));
|
||||
entry.getVascFrontendData().getVascEntryState().getVascBackendState().setPageSize(0);
|
||||
}
|
||||
|
||||
static public VascEntry getVascTable() throws Exception {
|
||||
|
||||
VascController c = DefaultVascFactory.getDefaultVascController(2288L,"forwarddire.net","user","admin");
|
||||
|
||||
VascParser parser = new VascParser(c);
|
||||
File f = File.createTempFile("test-vasc", ".xml");
|
||||
parser.setDebugOutputStream(new FileOutputStream(f));
|
||||
parser.parseResource("net/forwardfire/vasc/demo/swing/example/tables.xml");
|
||||
|
||||
DefaultVascFactory.fillVascControllerLocalEntries((VascEntryControllerLocal) c.getVascEntryController(), c);
|
||||
|
||||
VascEntry entry = parser.getVascController().getVascEntryController().getVascEntryById("users");
|
||||
fill(entry,c);
|
||||
return entry;
|
||||
|
||||
public void open() throws Exception {
|
||||
mainFrame.setVisible(true);
|
||||
}
|
||||
|
||||
|
||||
static void printEntry(VascEntry e) throws Exception {
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,62 @@
|
|||
package net.forwardfire.vasc.demo.swing;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
|
||||
import net.forwardfire.vasc.core.VascController;
|
||||
import net.forwardfire.vasc.core.VascEntryControllerLocal;
|
||||
import net.forwardfire.vasc.core.VascException;
|
||||
import net.forwardfire.vasc.impl.DefaultVascFactory;
|
||||
import net.forwardfire.vasc.impl.x4o.VascParser;
|
||||
|
||||
public class VascManager {
|
||||
|
||||
VascController vascController = null;
|
||||
|
||||
public VascManager() {
|
||||
|
||||
}
|
||||
|
||||
public void start() {
|
||||
try {
|
||||
vascController = DefaultVascFactory.getDefaultVascController(2288L,"forwardfire.net","user","admin");
|
||||
initEditor();
|
||||
} catch (VascException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
}
|
||||
|
||||
private void initEditor() {
|
||||
try {
|
||||
VascParser parser = new VascParser(vascController);
|
||||
parser.addGlobalELBean("vascController", vascController);
|
||||
parser.parseResource("net/forwardfire/vasc/demo/swing/example/vasc-edit.xml");
|
||||
|
||||
DefaultVascFactory.fillVascControllerLocalEntries((VascEntryControllerLocal) vascController.getVascEntryController(), vascController);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void openFile(File file) {
|
||||
try {
|
||||
VascParser parser = new VascParser(vascController);
|
||||
File f = File.createTempFile("test-vasc", ".xml");
|
||||
parser.setDebugOutputStream(new FileOutputStream(f));
|
||||
parser.parseFile(file.getAbsolutePath());
|
||||
|
||||
DefaultVascFactory.fillVascControllerLocalEntries((VascEntryControllerLocal) vascController.getVascEntryController(), vascController);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public VascController getVascController() {
|
||||
return vascController;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<x4o:root xmlns:v="http://vasc.forwardfire.net/eld/vasc-lang.eld"
|
||||
xmlns:mm="http://vasc.forwardfire.net/eld/vasc-backend-metamodel.eld"
|
||||
xmlns:m="http://vasc.forwardfire.net/eld/vasc-backend-mongodb.eld"
|
||||
xmlns:l="http://vasc.forwardfire.net/eld/vasc-backend-ldap.eld"
|
||||
xmlns:j="http://vasc.forwardfire.net/eld/vasc-backend-jdbc.eld"
|
||||
|
|
@ -7,6 +8,54 @@
|
|||
>
|
||||
|
||||
|
||||
<mm:csvDataContext
|
||||
el.id="metaDS_csv"
|
||||
file="/tmp/csv_people.csv"
|
||||
/>
|
||||
<mm:metaModelBackend
|
||||
id="meta_people_backend"
|
||||
dataContextProvider="${metaDS_csv}"
|
||||
table="csv_people"
|
||||
tableId="id"
|
||||
/>
|
||||
<v:entry id="meta_people" backendId="meta_people_backend">
|
||||
<v:field id="id" list="false"/>
|
||||
<v:field id="name"/>
|
||||
<v:field id="age"/>
|
||||
<v:field id="gender" vascEntryFieldType="ListField">
|
||||
<v:vascSelectItemModelString data="male,female,unknown"/>
|
||||
</v:field>
|
||||
</v:entry>
|
||||
|
||||
|
||||
|
||||
<mm:mongodbDataContext
|
||||
el.id="metaDS_mongodb"
|
||||
hostname="localhost"
|
||||
database="lefiona"
|
||||
/>
|
||||
<mm:metaModelBackend
|
||||
id="meta_profiles_backend"
|
||||
dataContextProvider="${metaDS_mongodb}"
|
||||
table="dg2_profiles"
|
||||
tableId="_id"
|
||||
/>
|
||||
<v:entry id="meta_profiles" backendId="meta_profiles_backend">
|
||||
<v:field id="_id" readOnly="true" list="false"/>
|
||||
<v:field id="url"/>
|
||||
<v:field id="name"/>
|
||||
<v:field id="active" vascEntryFieldType="BooleanField"/>
|
||||
<v:field id="body_text" list="false" vascEntryFieldType="TextAreaField"/>
|
||||
<v:field id="profile_type" vascEntryFieldType="ListField">
|
||||
<v:vascSelectItemModelString data="MALE,FEMALE,BOTH"/>
|
||||
</v:field>
|
||||
<v:field id="send_jokers" vascEntryFieldType="IntegerField"/>
|
||||
<v:field id="run_date" vascEntryFieldType="DateField"/>
|
||||
</v:entry>
|
||||
|
||||
|
||||
|
||||
|
||||
<m:mongodbConnectionProvider
|
||||
el.id="lefiona_connection"
|
||||
hostname="localhost"
|
||||
|
|
@ -51,23 +100,23 @@
|
|||
|
||||
|
||||
<j:jdbcConnectionProvider
|
||||
el.id="dbDatafeeds"
|
||||
el.id="dbRssFeeds"
|
||||
driverClassName="org.postgresql.Driver"
|
||||
dbUrl="jdbc:postgresql://localhost/datafeeds_dev"
|
||||
dbUrl="jdbc:postgresql://localhost/vasc_testpg"
|
||||
dbUser="test"
|
||||
dbPassword="eephoh2O"
|
||||
dbPassword="test"
|
||||
/>
|
||||
<j:jdbcBackend
|
||||
id="dbStreams"
|
||||
jdbcConnectionProvider="${dbDatafeeds}"
|
||||
id="rssChannelDB"
|
||||
jdbcConnectionProvider="${dbRssFeeds}"
|
||||
idColumnName="id"
|
||||
sqlList="SELECT * FROM stream LIMIT 100"
|
||||
sqlDelete="DELETE FROM stream WHERE id = ?0"
|
||||
sqlPersist="INSERT INTO stream (name,url,importing,etc) VALUES (?0,?1,?2,?3,?4)"
|
||||
sqlMerge="UPDATE stream (name,url) VALUE (?0,?1)"
|
||||
sqlList="SELECT * FROM channel LIMIT 100"
|
||||
sqlDelete="DELETE FROM channel WHERE id = ?0"
|
||||
sqlPersist="INSERT INTO channel (name,url,importing,etc) VALUES (?0,?1,?2,?3,?4)"
|
||||
sqlMerge="UPDATE channel (name,url) VALUE (?0,?1)"
|
||||
/>
|
||||
|
||||
<v:entry id="streams" backendId="dbStreams">
|
||||
<v:entry id="rssChannel" backendId="rssChannelDB">
|
||||
<v:field id="id" readOnly="true"/>
|
||||
<v:field id="name"/>
|
||||
<v:field id="url"/>
|
||||
|
|
@ -79,13 +128,13 @@
|
|||
<v:field id="column_mapping" list="false"/>
|
||||
</v:entry>
|
||||
|
||||
|
||||
<!--
|
||||
|
||||
<l:ldapConnectionProvider
|
||||
el.id="ldapSudoers"
|
||||
ldapHost="localhost"
|
||||
bindUser="uid=admin-sudo,ou=services,dc=example,dc=nl"
|
||||
bindPass="adminSudo"
|
||||
bindPass="test"
|
||||
/>
|
||||
<l:ldapBackend
|
||||
id="ldapBackendSudoers"
|
||||
|
|
@ -100,6 +149,8 @@
|
|||
<v:field id="sudoCommand" vascEntryFieldType="MultiTextField"/>
|
||||
<v:field id="sudoHost" vascEntryFieldType="MultiTextField"/>
|
||||
<v:field id="sudoUser" vascEntryFieldType="MultiTextField"/>
|
||||
|
||||
-->
|
||||
|
||||
<!--
|
||||
<v:ldapNextIdFunction name="nextUidNumber" ldapFilter="(&(objectClass=posixGroup))" ldapAttribute="gidnumber"/>
|
||||
|
|
@ -112,19 +163,22 @@
|
|||
<v:link fieldName="gidNumber" viewController="ldapGroups" parameterName="group_key,${baseDn}"/>
|
||||
|
||||
<v:detail fieldName="gidNumber" detailController="${ldapGroups}"/>
|
||||
-->
|
||||
-->
|
||||
|
||||
|
||||
<!--
|
||||
</v:entry>
|
||||
|
||||
<l:ldapConnectionProvider
|
||||
el.id="ldapUsers"
|
||||
ldapHost="10.11.12.96"
|
||||
bindUser="uid=libnss,ou=services,dc=dutchworks,dc=nl"
|
||||
bindPass="superN"
|
||||
bindUser="uid=libnss,ou=services,dc=example,dc=nl"
|
||||
bindPass="test"
|
||||
/>
|
||||
<l:ldapBackend
|
||||
id="ldapBackendUsers"
|
||||
ldapConnectionProvider="${ldapUsers}"
|
||||
baseDN="ou=users,dc=dutchworks,dc=nl"
|
||||
baseDN="ou=users,dc=example,dc=nl"
|
||||
keyAttribute="uid"
|
||||
ldapFilter="(&(objectClass=posixAccount))"
|
||||
/>
|
||||
|
|
@ -155,7 +209,7 @@
|
|||
el.id="ldapMachines"
|
||||
ldapHost="localhost"
|
||||
bindUser="uid=samba,ou=services,dc=example,dc=nl"
|
||||
bindPass="superS"
|
||||
bindPass="test"
|
||||
/>
|
||||
<l:ldapBackend
|
||||
id="ldapBackendMachines"
|
||||
|
|
@ -170,7 +224,7 @@
|
|||
<v:field id="sambaSID" />
|
||||
<v:field id="uidNumber" />
|
||||
</v:entry>
|
||||
|
||||
-->
|
||||
|
||||
|
||||
<!--
|
||||
|
|
@ -221,7 +275,7 @@ Master
|
|||
|
||||
<v:ldapConnection el.id="sudoers" x4o.templates="ldapServerTemplate">
|
||||
<x4o:property name="user" value="uid=admin-sudo,ou=services,dc=example,dc=nl"/>
|
||||
<x4o:property name="pass" value="adminSudo"/>
|
||||
<x4o:property name="pass" value="test"/>
|
||||
<x4o:property name="baseDn" value="ou=sudoers,dc=example,dc=nl"/>
|
||||
</v:ldapConnection>
|
||||
|
||||
|
|
@ -234,7 +288,7 @@ Master
|
|||
</x4o:template>
|
||||
|
||||
<x4o:template el.id="sambaUserSchema">
|
||||
<v:field name="sambaSID" fieldEditor="textField" edit="false" list="false" view="false" create="false" defaultValue="S-1-5-21-1200182392-965607725-1867741125-514"/>
|
||||
<v:field name="sambaSID" fieldEditor="textField" edit="false" list="false" view="false" create="false" defaultValue="S-1-5-21-123523482392-923323723-12323323235-514"/>
|
||||
<v:field name="sambaGroupType" v.defaultValue="2"/>
|
||||
</x4o:template>
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,189 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<x4o:root xmlns:v="http://vasc.forwardfire.net/eld/vasc-lang.eld"
|
||||
xmlns:x4o="http://eld.x4o.org/eld/x4o-lang.eld"
|
||||
>
|
||||
<v:virtualVascBackend id="vascEntryBackend" vascController="${vascController}" vascType="entry"/>
|
||||
<v:entry id="vascEntry" backendId="vascEntryBackend">
|
||||
<v:field id="id"/>
|
||||
<v:field id="backendId"/>
|
||||
<v:field id="name"/>
|
||||
<v:field id="helpId" list="false"/>
|
||||
<v:field id="image" list="false"/>
|
||||
|
||||
<v:field id="listDescription" list="false"/>
|
||||
<v:field id="listImage" list="false"/>
|
||||
<v:field id="editDescription" list="false"/>
|
||||
<v:field id="editImage" list="false"/>
|
||||
<v:field id="deleteDescription" list="false"/>
|
||||
<v:field id="deleteImage" list="false"/>
|
||||
<v:field id="createDescription" list="false"/>
|
||||
<v:field id="createImage" list="false"/>
|
||||
|
||||
<v:field id="primaryKeyFieldId" list="false"/>
|
||||
<v:field id="displayNameFieldId" list="false"/>
|
||||
|
||||
<v:field id="vascDisplayOnly" list="false" vascEntryFieldType="BooleanField"/>
|
||||
<v:field id="vascAdminList" list="false" vascEntryFieldType="BooleanField"/>
|
||||
<v:field id="vascAdminEdit" list="false" vascEntryFieldType="BooleanField"/>
|
||||
<v:field id="vascAdminCreate" list="false" vascEntryFieldType="BooleanField"/>
|
||||
<v:field id="vascAdminDelete" list="false" vascEntryFieldType="BooleanField"/>
|
||||
|
||||
<v:link id="VascEntryField" vascEntryId="VascEntryFieldLink">
|
||||
<v:linkEntryCreateFieldValue valueFieldId="vascEntry"/>
|
||||
<v:linkEntryParameter name="entry_id" valueFieldId="id"/>
|
||||
</v:link>
|
||||
<v:link id="VascEntryFieldSet" vascEntryId="VascEntryFieldSetLink">
|
||||
<v:linkEntryParameter name="entry_id" valueFieldId="id"/>
|
||||
</v:link>
|
||||
<v:link id="VascLinkEntry" vascEntryId="VascLinkEntryLink">
|
||||
<v:linkEntryCreateFieldValue valueFieldId="vascEntry"/>
|
||||
<v:linkEntryParameter name="entry_id" valueFieldId="id"/>
|
||||
</v:link>
|
||||
<v:link id="VascListOption" vascEntryId="VascListOptionLink">
|
||||
<v:linkEntryCreateFieldValue valueFieldId="vascEntry"/>
|
||||
<v:linkEntryParameter name="entry_id" valueFieldId="id"/>
|
||||
</v:link>
|
||||
</v:entry>
|
||||
|
||||
<v:virtualVascBackend id="VascEntryFieldLinkBackend" vascController="${vascController}" vascType="field" />
|
||||
<v:entry id="VascEntryFieldLink" backendId="VascEntryFieldLinkBackend">
|
||||
<v:field id="id"/>
|
||||
<v:field id="backendName" list="false"/>
|
||||
<v:field id="displayName" list="false"/>
|
||||
|
||||
<v:field id="vascEntryFieldType" list="false" editReadOnly="true"/>
|
||||
<v:field id="vascEntryFieldValue" list="false" editReadOnly="true"/>
|
||||
|
||||
<v:field id="name"/>
|
||||
<v:field id="description" list="false"/>
|
||||
<v:field id="helpId" list="false"/>
|
||||
<v:field id="image" list="false"/>
|
||||
<v:field id="orderIndex" vascEntryFieldType="IntegerField"/>
|
||||
<v:field id="defaultValue"/>
|
||||
|
||||
<v:field id="sizeList" list="false" vascEntryFieldType="IntegerField"/>
|
||||
<v:field id="sizeEdit" list="false" vascEntryFieldType="IntegerField"/>
|
||||
<v:field id="styleList" list="false"/>
|
||||
<v:field id="styleEdit" list="false"/>
|
||||
|
||||
<v:field id="choices" list="false"/>
|
||||
<v:field id="choicesAsRadio" list="false" vascEntryFieldType="BooleanField"/>
|
||||
|
||||
<v:field id="view" list="false" vascEntryFieldType="BooleanField"/>
|
||||
<v:field id="optional" list="false" vascEntryFieldType="BooleanField"/>
|
||||
<v:field id="create" list="false" vascEntryFieldType="BooleanField"/>
|
||||
<v:field id="edit" list="false" vascEntryFieldType="BooleanField"/>
|
||||
<v:field id="editReadOnly" list="false" vascEntryFieldType="BooleanField"/>
|
||||
<v:field id="editBlank" list="false" vascEntryFieldType="BooleanField"/>
|
||||
<v:field id="list" list="false" vascEntryFieldType="BooleanField"/>
|
||||
|
||||
<v:field id="rolesCreate" list="false"/>
|
||||
<v:field id="rolesEdit" list="false"/>
|
||||
<v:field id="rolesEditReadOnly" list="false"/>
|
||||
<v:field id="rolesList" list="false"/>
|
||||
|
||||
<v:field id="sortable" list="false" vascEntryFieldType="BooleanField"/>
|
||||
<v:field id="sumable" list="false" vascEntryFieldType="BooleanField"/>
|
||||
<v:field id="graphable" list="false" vascEntryFieldType="BooleanField"/>
|
||||
|
||||
<!-- private List<VascValidator> vascValidators = null; -->
|
||||
</v:entry>
|
||||
|
||||
|
||||
<v:virtualVascBackend id="VascEntryFieldSetLinkBackend" vascController="${vascController}" vascType="fieldset" />
|
||||
<v:entry id="VascEntryFieldSetLink" backendId="VascEntryFieldSetLinkBackend">
|
||||
<v:field id="id"/>
|
||||
<v:field id="name"/>
|
||||
<v:field id="description" list="false"/>
|
||||
|
||||
<v:field id="helpId" list="false"/>
|
||||
<v:field id="image" list="false"/>
|
||||
|
||||
<v:field id="styleList" list="false"/>
|
||||
<v:field id="styleEdit" list="false"/>
|
||||
<v:field id="collapsed" list="false" vascEntryFieldType="BooleanField"/>
|
||||
<v:field id="optional" list="false" vascEntryFieldType="BooleanField"/>
|
||||
|
||||
<!-- private List<String> vascEntryFieldIds = null; -->
|
||||
</v:entry>
|
||||
|
||||
<v:virtualVascBackend id="VascLinkEntryLinkBackend" vascController="${vascController}" vascType="linkentries" />
|
||||
<v:entry id="VascLinkEntryLink" backendId="VascLinkEntryLinkBackend">
|
||||
<v:field id="id"/>
|
||||
<v:field id="vascEntryId"/>
|
||||
<v:field id="vascLinkEntryType" list="false" vascEntryFieldType="ListField">
|
||||
<v:vascSelectItemModelEnum enumClass="net.forwardfire.vasc.core.VascLinkEntryType"/>
|
||||
</v:field>
|
||||
|
||||
<v:field id="doActionId" list="false"/>
|
||||
<v:field id="name" list="false"/>
|
||||
|
||||
<!--
|
||||
private Map<String,String> entryParameterFieldIds = new HashMap<String,String>(3);
|
||||
private Map<String,String> entryCreateFieldValues = new HashMap<String,String>(3);
|
||||
-->
|
||||
</v:entry>
|
||||
|
||||
|
||||
<v:virtualVascBackend id="VascListOptionLinkBackend" vascController="${vascController}" vascType="listoptions" />
|
||||
<v:entry id="VascListOptionLink" backendId="VascListOptionLinkBackend">
|
||||
<v:field id="id"/>
|
||||
<v:field id="name"/>
|
||||
<v:field id="description" list="false"/>
|
||||
|
||||
<v:field id="helpId" list="false"/>
|
||||
<v:field id="image" list="false"/>
|
||||
|
||||
<v:field id="styleList" list="false"/>
|
||||
<v:field id="styleEdit" list="false"/>
|
||||
<v:field id="collapsed" list="false" vascEntryFieldType="BooleanField"/>
|
||||
<v:field id="optional" list="false" vascEntryFieldType="BooleanField"/>
|
||||
|
||||
<!-- private List<String> vascEntryFieldIds = null; -->
|
||||
</v:entry>
|
||||
|
||||
<!--
|
||||
<m:mongodbConnectionProvider
|
||||
el.id="lefiona_connection"
|
||||
hostname="localhost"
|
||||
database="lefiona"
|
||||
/>
|
||||
<m:mongodbBackend
|
||||
id="dg2_smiles_backend"
|
||||
connectionProvider="${lefiona_connection}"
|
||||
collection="dg2_smiles"
|
||||
/>
|
||||
<v:entry id="dg2_smiles" backendId="dg2_smiles_backend">
|
||||
<v:field id="_id" readOnly="true" list="false"/>
|
||||
<v:field id="text" vascEntryFieldType="TextAreaField"/>
|
||||
<v:field id="profile_type" vascEntryFieldType="ListField">
|
||||
<v:vascSelectItemModelString data="MALE,FEMALE,BOTH"/>
|
||||
</v:field>
|
||||
<v:field id="cron_type" vascEntryFieldType="ListField">
|
||||
<v:vascSelectItemModelString data="BASE,DAILY,WEEKLY,MONTLY"/>
|
||||
</v:field>
|
||||
<v:field id="group"/>
|
||||
<v:field id="active" vascEntryFieldType="BooleanField"/>
|
||||
</v:entry>
|
||||
|
||||
|
||||
<m:mongodbBackend
|
||||
id="dg2_profiles_backend"
|
||||
connectionProvider="${lefiona_connection}"
|
||||
collection="dg2_profiles"
|
||||
/>
|
||||
<v:entry id="dg2_profiles" backendId="dg2_profiles_backend">
|
||||
<v:field id="_id" readOnly="true" list="false"/>
|
||||
<v:field id="url"/>
|
||||
<v:field id="name"/>
|
||||
<v:field id="active" vascEntryFieldType="BooleanField"/>
|
||||
<v:field id="body_text" list="false" vascEntryFieldType="TextAreaField"/>
|
||||
<v:field id="profile_type" vascEntryFieldType="ListField">
|
||||
<v:vascSelectItemModelString data="MALE,FEMALE,BOTH"/>
|
||||
</v:field>
|
||||
<v:field id="send_jokers" vascEntryFieldType="IntegerField"/>
|
||||
<v:field id="run_date" vascEntryFieldType="DateField"/>
|
||||
</v:entry>
|
||||
-->
|
||||
|
||||
</x4o:root>
|
||||
Loading…
Add table
Add a link
Reference in a new issue