2
Fork 0

[svn r346] WIP, with working x4o and simple ldap backend for listing end editing entries

This commit is contained in:
willemc 2008-11-18 22:04:23 +01:00
parent 5d64bde0bd
commit f401b61a6c
60 changed files with 1756 additions and 585 deletions

View file

@ -1,27 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<eld xmlns:eld="http://x4o.idcanet.com/eld/eld-lang.eld">
<eld:elementRefectionBindingHandler parentClass="com.idcanet.x4o.obj.TestObjectParent" childClass="com.idcanet.x4o.obj.TestObjectChild" method="addTestObjectChild"/>
<eld:elementRefectionBindingHandler parentClass="javax.swing.JComponent" childClass="javax.swing.JComponent" method="add"/>
<eld:elementClass tag="testObjectParent" objectClassName="com.idcanet.x4o.obj.TestObjectParent"/>
<eld:elementClass tag="testObjectChild" objectClassName="com.idcanet.x4o.obj.TestObjectChild"/>
<eld:elementClass tag="testBeanObjectChild" objectClassName="com.idcanet.x4o.obj.TestObjectChild" parentNamespace="http://iets.idcanet.com/eld/iets.eld" elementTag="superObject"/>
<eld:elementClass tag="testBeanObjectChild" objectClassName="com.idcanet.x4o.obj.TestObjectChild">
<eld:elementClassParentElementClass namespace="http://iets.idcanet.com/eld/iets.eld" elementTag="superObject"/>
<eld:elementClassParentElementClass namespace="http://iets.idcanet.com/eld/iets.eld" elementTag="superObject2"/>
</eld:elementClass>
<eld:elementClass tag="JFrame" objectClassName="javax.swing.JFrame">
<eld:elementClassParameterConverter parameterName="bounds" bean.class="com.idcanet.x4o.x4o.BoundsConverter"/>
</eld:elementClass>
<eld:elementClass tag="JFrameContentPane" elementClassName="com.idcanet.x4o.x4o.ContentPaneElement"/>
<eld:elementClass tag="JLabel" objectClassName="javax.swing.JLabel"/>
<eld:elementClass tag="JPanel" objectClassName="javax.swing.JPanel"/>
<eld:elementClass tag="JTextField" objectClassName="javax.swing.JTextField"/>
<eld:elementClass tag="JTextArea" objectClassName="javax.swing.JTextArea"/>
<eld:elementClass tag="JScrollPane" objectClassName="javax.swing.JScrollPane"/>
</eld>

View file

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>
Vasc namespace for x4o vasc state/table/column language
</comment>
<entry key="eld.http://vasc.idcanet.com/eld/vasc-lang.eld">META-INF/vasc-lang.eld</entry>
</properties>

View file

@ -26,10 +26,15 @@
package com.idcanet.vasc;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.InputStream;
import java.util.logging.LogManager;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import com.idcanet.vasc.core.VascEntry;
@ -57,16 +62,43 @@ public class SwingTest extends TestCase {
public void testAll() throws Exception {
JFrame.setDefaultLookAndFeelDecorated(false);
VascEntry entry = TestTable.getVascTable();
JFrame frame = viewEntry(entry);
while (frame.isVisible()) {
Thread.sleep(1000);
}
}
public JFrame viewEntry(final VascEntry entry) throws Exception {
// get GUI
JFrame frame = new JFrame();
frame.setTitle("Vasc Test - Swing");
frame.setTitle("Vasc Test - Swing - "+entry.getName());
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setLocationRelativeTo(null);
// get table
VascEntry entry = TestTable.getVascTable();
JMenuBar menubar = new JMenuBar();
JMenu vascMenu = new JMenu("Vasc Entries");
for (final String id:entry.getVascFrontendData().getVascController().getVascEntryControllerResolver().getVascEntryController().getVascEntryIds()) {
JMenuItem item = new JMenuItem(id);
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
VascEntry ee = entry.getVascFrontendData().getVascController().getVascEntryControllerResolver().getVascEntryController().getVascEntryById(id);
TestTable.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);
@ -74,18 +106,12 @@ public class SwingTest extends TestCase {
// render
render.initEntry(entry);
//table.getTableColumns().get(0).set
//render.renderEdit(table.getTableData().get(0));
render.renderView();
// view
frame.pack();
frame.setVisible(true);
while (frame.isVisible()) {
Thread.sleep(1000);
}
return frame;
}
}

View file

@ -32,7 +32,6 @@ import java.util.Date;
import com.idcanet.vasc.core.VascController;
import com.idcanet.vasc.core.VascEntry;
import com.idcanet.vasc.core.VascEntryField;
import com.idcanet.vasc.core.ui.VascList;
import com.idcanet.vasc.impl.DefaultVascBackedEntryFinalizer;
import com.idcanet.vasc.impl.DefaultVascBackendController;
import com.idcanet.vasc.impl.DefaultVascBackendControllerResolver;
@ -50,12 +49,9 @@ import com.idcanet.vasc.impl.actions.DeleteRowAction;
import com.idcanet.vasc.impl.actions.EditRowAction;
import com.idcanet.vasc.impl.actions.RefreshDataGlobalAction;
import com.idcanet.vasc.impl.actions.XMLExportGlobalAction;
import com.idcanet.vasc.impl.entry.BeanVascEntryRecordCreator;
import com.idcanet.vasc.impl.entry.BeanPropertyVascEntryFieldValue;
import com.idcanet.vasc.impl.entry.DefaultVascEntryResourceResolver;
import com.idcanet.vasc.impl.type.DefaultVascEntryFieldTypeController;
import com.idcanet.vasc.impl.type.DefaultVascEntryFieldTypeControllerResolver;
import com.idcanet.vasc.models.TestModel;
import com.idcanet.vasc.impl.x4o.VascParser;
/**
@ -69,7 +65,7 @@ public class TestTable {
// for test
TestModelVascDataSource backend = new TestModelVascDataSource();
backend.setId("testBackend");
backend.setId("testBackend1");
// config full controller for local jvm use
DefaultVascController c = new DefaultVascController();
@ -87,6 +83,7 @@ public class TestTable {
DefaultVascEntryFieldTypeControllerResolver vascEntryFieldTypeControllerResolver = new DefaultVascEntryFieldTypeControllerResolver();
DefaultVascEntryFieldTypeController vascEntryFieldTypeController = new DefaultVascEntryFieldTypeController();
//vascEntryFieldTypeController.
vascEntryFieldTypeControllerResolver.setVascEntryFieldTypeController(vascEntryFieldTypeController);
c.setVascEntryFieldTypeControllerResolver(vascEntryFieldTypeControllerResolver);
@ -94,19 +91,10 @@ public class TestTable {
}
static public VascEntry getVascTable() throws Exception {
VascController c = getDefaultVascController();
// config table
VascEntry entry = new DefaultVascEntry();
entry.setId("test1");
entry.setBackendId("testBackend");
static public void fill(VascEntry entry,VascController c) {
DefaultVascFrontendData vascFrontendData = new DefaultVascFrontendData();
vascFrontendData.setVascBackend(c.getVascBackendControllerResolver().getVascBackendController().getVascBackendById("testBackend"));
vascFrontendData.setVascController(c);
VascI18nTextValue vascEntryResourceResolver = new VascI18nTextValue();// new DefaultVascEntryResourceResolver();
vascFrontendData.setVascEntryResourceResolver(vascEntryResourceResolver);
@ -114,7 +102,7 @@ public class TestTable {
vascFrontendData.setVascFrontendHelper(vascFrontendHelper);
entry.setVascFrontendData(vascFrontendData);
entry.addRowAction(new AddRowAction());
entry.addRowAction(new EditRowAction());
entry.addRowAction(new DeleteRowAction());
@ -122,7 +110,28 @@ public class TestTable {
entry.addGlobalAction(new XMLExportGlobalAction());
entry.addGlobalAction(new CSVExportGlobalAction());
entry.addGlobalAction(new RefreshDataGlobalAction());
}
static public VascEntry getVascTable() throws Exception {
VascController c = getDefaultVascController();
VascParser parser = new VascParser(c);
parser.parseResource("resources/vasc/tables.xml");
VascEntry entry = parser.getVascController().getVascEntryControllerResolver().getVascEntryController().getVascEntryById("test1");
fill(entry,c);
// config table
//VascEntry entry = new DefaultVascEntry();
//entry.setId("test1");
//entry.setBackendId("testBackend");
/*
//table.addUserOptions(userOption);
//table.addColumnActions(new GraphColumnAction());
@ -131,6 +140,7 @@ public class TestTable {
entry.addVascEntryField(field);
field = new DefaultVascEntryField("description");
field.setVascEntryFieldType(c.getVascEntryFieldTypeControllerResolver().getVascEntryFieldTypeController().getVascEntryFieldTypeById("EmailField"));
entry.addVascEntryField(field);
field = new DefaultVascEntryField("active");
@ -142,19 +152,14 @@ public class TestTable {
entry.addVascEntryField(field);
field = new DefaultVascEntryField("testModel");
//field.setVascEntryFieldType(c.getVascEntryFieldTypeControllerResolver().getVascEntryFieldTypeController().getVascEntryFieldTypeById("TextField"));
//field.getVascEntryFieldType()
VascList list = new VascList();
list.setVascSelectItemModel((TestModelVascDataSource)c.getVascBackendControllerResolver().getVascBackendController().getVascBackendById("testBackend"));
//field.setVascUIComponent(list);
field.setVascEntryFieldType(c.getVascEntryFieldTypeControllerResolver().getVascEntryFieldTypeController().getVascEntryFieldTypeById("ListField"));
field.getVascEntryFieldType().setDataObject(c.getVascBackendControllerResolver().getVascBackendController().getVascBackendById("testBackend"));
entry.addVascEntryField(field);
field = new DefaultVascEntryField("hexColor");
field.setVascEntryFieldType(c.getVascEntryFieldTypeControllerResolver().getVascEntryFieldTypeController().getVascEntryFieldTypeById("ColorField"));
field.setDefaultValue("#FF3355");
//VascColorChooser ui = new VascColorChooser();
//ui.setHexSwingEncoding(true);
//field.setVascUIComponent(ui);
entry.addVascEntryField(field);
printEntry(entry);
@ -165,6 +170,7 @@ public class TestTable {
DefaultVascFrontendEntryFinalizer f2 = new DefaultVascFrontendEntryFinalizer();
entry = f2.finalizeVascEntry(entry,c);
//printEntry(entry);
*/
return entry;
}

View file

@ -2,6 +2,55 @@
<vasc xmlns:v="http://vasc.idcanet.com/eld/vasc-lang.eld"
xmlns:x4o="http://x4o.idcanet.com/eld/x4o-lang.eld"
>
<v:simpleLdapConnectionProvider
el.id="ldapSudoers"
ldapHost="ldap2.lan.mbuyu.nl"
bindUser="uid=admin-sudo,ou=services,dc=m4n,dc=nl"
bindPass="adminSudo"
/>
<v:ldapBackend
id="ldapBackendSudoers"
ldapConnectionProvider="${ldapSudoers}"
baseDN="ou=sudoers,dc=m4n,dc=nl"
keyAttribute="cn"
ldapFilter="(&amp;(objectClass=sudoRole))"
/>
<v:entry id="sudoers" backendId="ldapBackendSudoers">
<v:field id="user" backendName="cn" readOnly="true"/>
<v:field id="description" rolesEdit="admin" rolesList="all"/>
<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"/>
<v:listeners hook="post_create">
<etc:loginToFtpServer/>
</v:listeners>
<v:link fieldName="user" viewController="ldapUsers" parameterName="user_cn"/>
<v:link fieldName="gidNumber" viewController="ldapGroups" parameterName="group_key,${baseDn}"/>
<v:detail fieldName="gidNumber" detailController="${ldapGroups}"/>
-->
</v:entry>
<v:entry id="test1" backendId="testBackend1">
<v:field id="name" defaultValue=""/>
<v:field id="description" vascEntryFieldType="EmailField" defaultValue="email@address.nl"/>
<v:field id="active" defaultValue="true"/>
<v:field id="date" vascEntryFieldType="DateField" defaultValue="$myBean.newDate"/>
<v:field id="hexColor" vascEntryFieldType="ColorField" defaultValue="#FF3355"/>
<v:field id="testModel" vascEntryFieldType="ListField" dataObject="$myBean.testBackend1"
vascEntryFieldType.dataObject="#{vascController.vascBackendControllerResolver.vascBackendController.vascBackendById('testBackend1')}"
/>
</v:entry>
<!--
- View
@ -87,15 +136,16 @@ Master
-->
<v:entry id="test1" backendId="testBackend1">
<v:entry id="test2" backendId="testBackend1">
<v:field id="name"/>
<v:field id="description"/>
<v:field id="active"/>
<v:field id="model" vascEntryFieldType="ListField" selectItemId="testBackend1"/>
<v:field id="testModel" vascEntryFieldType="ListField"/>
</v:entry>
<v:entry
id="test2"
id="test3"
name="iets"
description="ietsdescrip"
helpId="someHelpKey"
@ -126,8 +176,8 @@ Master
defaultValue="true"
sizeList="styleClass"
sizeEdit="styleClass"
sizeList="100"
sizeEdit="80"
styleList="styleClass"
styleEdit="styleClass"
@ -168,145 +218,5 @@ Master
optional="false"
/>
</v:entry>
<v:entry id="sudoers">
<v:field name="user" backendName="cn" readOnly="true"/>
<v:field name="description" backendName="description">
<v:roles edit="admin" list="all"/>
</v:field>
<v:field name="sudoCommand" fieldType="listField"/>
<v:field name="sudoHost" fieldType="listField"/>
<v:field name="sudoUser" fieldType="listField">
<v:fieldType>
<vasc:fieldHint key="timeout" default="200"/>
</v:fieldType>
</v:field>
<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="sambaGroupType" v.defaultValue="2"/>
<v:field name="gidNumber" v.defaultValue="nextUidNumber();"/>
<v:field name="objectclass" v.defaultValue="{posixGroup,sambaGroupMapping,top}"/>
<v:fieldSet name="extraOptions" optional="true">
<v:field name="sudoHost" defaultValue="localhost"/>
</v:fieldSet>
<v:ldapNextIdFunction name="nextUidNumber" ldapFilter="(&(objectClass=posixGroup))" ldapAttribute="gidnumber"/>
<v:listeners hook="post_create">
<etc:loginToFtpServer/>
</v:listeners>
<v:link fieldName="user" viewController="ldapUsers" parameterName="user_cn"/>
<v:link fieldName="gidNumber" viewController="ldapGroups" parameterName="group_key,${baseDn}"/>
<v:detail fieldName="gidNumber" detailController="${ldapGroups}"/>
<v:ldapBackend ldapConnection="${sudoers}">
<x4o:property name="list_filter">(&(objectClass=sudoRole))</x4o:property>
<x4o:property name="delete">${baseDn},cn=%s</x4o:property>
<x4o:property name="new_classes">sudoRole,top</x4o:property>
</v:ldapBackend>
</v:entry>
<!--
<jsf-vasc:viewManager controller="${sudoers}">
</jsf-vasc:viewManager>
<table
name = "myTable1"
vascDataSource = "${dataSource}"
vascRecordBeanCreatorClass="com.id.models.User"
vascTextValue="${vascI18nController}"
vascTableController = "${tableController}"
UIIdentifierVascTableColomn = "${idColumn}"
>
<actions:addRowAction/>
<actions:DeleteRowAction/>
<actions:editRowAction/>
<action:csvExportAction/>
<action:xmlExportAction/>
<action:refreshDataAction/>
<option:comboBoxOption />
<colum el.id="idColumn"
name="test"
toolTip="test"
defaultValue="true"
width="30"
helpId="test"
image="ergens"
editDisplay="true"
editReadonly="false"
listDisplay="true"
>
<bind:beanColumnValue />
<ui:vascToggle />
</colum>
</table>
<view>
</view>
-->
<!--
<xslt>
# Convert from xml -> csv and html or xitext
</xslt>
-->
<!--
<query name="limit">
<sql>
LIMIT <parameter name="limit"/>
</sql>
<parameterValue name="limit" value="10" defaultValue="200" type="parameter"/>
</query>
<query name="paging" type="hql">
<sql>
OFFSET <parameter name="offset"/>
<include name="limit"/>
</sql>
<parameterValue name="offset" value="0" defaultValue="0" type="parameter"/>
</query>
<query name="baseSelect">
<x4o:property name="executionTimeout" value="200"/>
<x4o:property name="cacheTimeout" value="99"/>
<x4o:property name="jdniConnection" value="somewhere"/>
<sql>
SELECT
USERS.USERNAME AS USERNAME
USERS.PASSWD AS PASSWORD
FROM
USERS
</sql>
<comment>Bla bla</comment>
<comment>Also see this site http://www.google.com</comment>
</query>
<query name="testUsers2" type="hql">
<x4o:property name="persistanceSession" value="sessionName"/>
<sql>
<include name="baseSelect"/>
<parameter name="extra_where"/>
AND role is in <parameter name="roles"/>
<include name="paging"/>
</sql>
<parameterValue name="extra_where" defaultValue="WHERE true=true" type="raw"/>
<parameterValue name="roles" value="1,12,99,200" type="parameterList"/>
<parameterValue name="limit" value="15"/>
<parameterValue name="offset" value="25"/>
</query>
-->
</vasc>