From 7c044adb1f4bba00098876a55d1d5acbcc9f9594 Mon Sep 17 00:00:00 2001 From: Willem Cazander Date: Sun, 13 May 2012 17:25:50 +0200 Subject: [PATCH] Clean demo directory layout --- .gitignore | 4 +- todo.txt | 19 +- .../META-INF/vasc/vasc-backend-jdbc.eld | 4 +- .../META-INF/vasc/vasc-backend-jpa.eld | 10 - .../META-INF/vasc/vasc-backend-ldap.eld | 8 +- .../metamodel/MetaModelDataContextCsv.java | 28 + .../metamodel/MetaModelDataContextJdbc.java | 37 +- .../MetaModelDataContextMongodb.java | 28 + .../MetaModelDataContextProvider.java | 2 +- .../metamodel/MetaModelSchemaAutoEntry.java | 166 ++- .../metamodel/MetaModelVascBackend.java | 34 +- .../SchemaAutoEntryElementConfigurator.java | 56 + .../META-INF/vasc/vasc-backend-metamodel.eld | 14 +- .../backend/mongodb/MongodbVascBackend.java | 30 +- .../mongodb/MongodbVascEntryFieldValue.java | 9 +- .../META-INF/vasc/vasc-backend-mongodb.eld | 4 +- .../vasc/backend/AbstractVascBackend.java | 12 + .../forwardfire/vasc/backend/VascBackend.java | 5 +- .../backend/VascBackendControllerLocal.java | 4 + .../proxy/AbstractVascBackendProxy.java | 14 + .../backend/proxy/VascBackendProxyCache.java | 45 + .../vasc/frontend/VascFrontendActions.java | 2 + .../impl/DefaultVascBackendController.java | 50 +- .../vasc/impl/DefaultVascFrontendActions.java | 23 +- .../resources/META-INF/vasc/vasc-lang.eld | 11 +- .../src/main/assembly/bin.xml | 24 +- .../main/directory/config/logging.properties | 4 + .../{ => directory}/demo/csv/csv-vasc.xml | 0 .../{ => directory}/demo/csv/meta-people.csv | 0 .../{ => directory}/demo/csv/meta-project.csv | 0 .../{ => directory}/demo/csv/meta-todo.csv | 0 .../demo/ldap/ldap-example.ldif | 0 .../{ => directory}/demo/ldap/ldap-vasc.xml | 0 .../{ => directory}/demo/postgres/pg-data.sql | 0 .../demo/postgres/pg-schema.sql | 0 .../{ => directory}/demo/postgres/pg-vasc.xml | 0 .../src/main/directory/deploy/readme.txt | 1 + .../src/main/scripts/run.bat | 2 +- .../src/main/scripts/run.sh | 2 +- .../vasc/demo/tech/core/DemoVascManager.java | 11 +- .../net/forwardfire/vasc/editor/vasc-edit.xml | 4 +- .../auto/data/vasc-bundle.properties | 1234 +++++++++++++++++ .../vasc-demo-tech/vasc-demo-tech-ui/pom.xml | 8 - .../vasc/demo/tech/ui/DeployManager.java | 158 +++ .../forwardfire/vasc/demo/tech/ui/TechUI.java | 118 +- .../vasc/demo/tech/ui/TomcatManager.java | 74 +- .../demo/tech/ui/actions/JDialogMetaCsv.java | 9 +- .../demo/tech/ui/actions/JDialogMetaJdbc.java | 13 +- .../tech/ui/actions/JDialogMetaMongodb.java | 12 +- .../demo/tech/ui/components/JMainPanel.java | 6 +- .../tech/ui/components/JMainPanelMenuBar.java | 69 +- .../vasc-demo-tech/vasc-demo-tech-web/pom.xml | 11 +- .../demo/tech/web/beans/ExportController.java | 106 ++ .../src/main/webapp/WEB-INF/faces.xml | 7 + .../src/main/webapp/jsp/admin/index.xhtml | 61 +- .../cxf/server/web/VascCXFServlet.java | 4 +- .../frontend/swing/SwingVascEditDialog.java | 11 +- .../frontend/swing/SwingVascFrontend.java | 2 + .../AbstractJSFVascFacesControllerEJB.java | 7 +- .../web/jsf/JSFVascEntrySupportBean.java | 7 +- .../lib/i18n/config/BundleConfigParser.java | 2 +- 61 files changed, 2334 insertions(+), 252 deletions(-) rename vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/VascAutoSchemaMetaModel.java => vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelSchemaAutoEntry.java (53%) create mode 100644 vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/x4o/SchemaAutoEntryElementConfigurator.java create mode 100644 vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/config/logging.properties rename vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/{ => directory}/demo/csv/csv-vasc.xml (100%) rename vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/{ => directory}/demo/csv/meta-people.csv (100%) rename vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/{ => directory}/demo/csv/meta-project.csv (100%) rename vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/{ => directory}/demo/csv/meta-todo.csv (100%) rename vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/{ => directory}/demo/ldap/ldap-example.ldif (100%) rename vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/{ => directory}/demo/ldap/ldap-vasc.xml (100%) rename vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/{ => directory}/demo/postgres/pg-data.sql (100%) rename vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/{ => directory}/demo/postgres/pg-schema.sql (100%) rename vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/{ => directory}/demo/postgres/pg-vasc.xml (100%) create mode 100644 vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/deploy/readme.txt create mode 100644 vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/auto/data/vasc-bundle.properties create mode 100644 vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/DeployManager.java create mode 100644 vasc-demo/vasc-demo-tech/vasc-demo-tech-web/src/main/java/net/forwardfire/vasc/demo/tech/web/beans/ExportController.java diff --git a/.gitignore b/.gitignore index a6fcc0a..26d57f9 100644 --- a/.gitignore +++ b/.gitignore @@ -10,8 +10,8 @@ */*/*/*/target # Inore some artifact dirs; -vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/auto -vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/tomcat.* +vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/deploy +vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/workdir # Ignore leftovers of really failed release build release.properties diff --git a/todo.txt b/todo.txt index a525125..3e5a891 100644 --- a/todo.txt +++ b/todo.txt @@ -8,11 +8,24 @@ - demo menu - demo wiki +- hotdeploy +- null list option mongo query +- sql conn limit +- mongo backend limit + +Build layout: +lib/ +demo/ +deploy/ +config/ +workdir/ +logs/ + + - encodeing select model - lcoale select model - x4o template -- swing readonly field editor - order by list and edit. - vasc AUTO ID - new NULL vs "" setting global+per entity @@ -25,15 +38,13 @@ - mongo missing field == string gives; VascBackendProxySort$1.compare(VascBackendProxySort.java:102) - make event channels work - auto text converts -- Plugin validation - Plugin Role Parser - Finalizer plugins - Check user roles in frontend - Default/Full Table and templating - Ckeck all validators -- Bind to x18n - MetaQuery support - create JSF-extJS frontend - create XML-RPC frontend - export interface + exports -- graphs of numeric value columns \ No newline at end of file +- graphs of numeric value columns diff --git a/vasc-backend/vasc-backend-jdbc/src/main/resources/META-INF/vasc/vasc-backend-jdbc.eld b/vasc-backend/vasc-backend-jdbc/src/main/resources/META-INF/vasc/vasc-backend-jdbc.eld index 97ab68b..4480d02 100644 --- a/vasc-backend/vasc-backend-jdbc/src/main/resources/META-INF/vasc/vasc-backend-jdbc.eld +++ b/vasc-backend/vasc-backend-jdbc/src/main/resources/META-INF/vasc/vasc-backend-jdbc.eld @@ -1,9 +1,7 @@ - - - + diff --git a/vasc-backend/vasc-backend-jpa/src/main/resources/META-INF/vasc/vasc-backend-jpa.eld b/vasc-backend/vasc-backend-jpa/src/main/resources/META-INF/vasc/vasc-backend-jpa.eld index 2486703..33c6597 100644 --- a/vasc-backend/vasc-backend-jpa/src/main/resources/META-INF/vasc/vasc-backend-jpa.eld +++ b/vasc-backend/vasc-backend-jpa/src/main/resources/META-INF/vasc/vasc-backend-jpa.eld @@ -1,23 +1,13 @@ - - - - - diff --git a/vasc-backend/vasc-backend-ldap/src/main/resources/META-INF/vasc/vasc-backend-ldap.eld b/vasc-backend/vasc-backend-ldap/src/main/resources/META-INF/vasc/vasc-backend-ldap.eld index e5cb687..93ab8c7 100644 --- a/vasc-backend/vasc-backend-ldap/src/main/resources/META-INF/vasc/vasc-backend-ldap.eld +++ b/vasc-backend/vasc-backend-ldap/src/main/resources/META-INF/vasc/vasc-backend-ldap.eld @@ -1,9 +1,5 @@ - - - - - + + - diff --git a/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelDataContextCsv.java b/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelDataContextCsv.java index 030abe9..ef3ae10 100644 --- a/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelDataContextCsv.java +++ b/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelDataContextCsv.java @@ -1,3 +1,25 @@ +/* + * 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.backend.metamodel; import java.io.File; @@ -7,6 +29,12 @@ import org.eobjects.metamodel.DataContext; import org.eobjects.metamodel.csv.CsvConfiguration; import org.eobjects.metamodel.csv.CsvDataContext; +/** + * MetaModelDataContextCsv provides csv file/url backend. + * + * @author Willem Cazander + * @version 1.0 May 3, 2012 + */ public class MetaModelDataContextCsv implements MetaModelDataContextProvider { private String file = null; diff --git a/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelDataContextJdbc.java b/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelDataContextJdbc.java index 56334c9..4c341d7 100644 --- a/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelDataContextJdbc.java +++ b/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelDataContextJdbc.java @@ -1,3 +1,25 @@ +/* + * 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.backend.metamodel; import java.sql.Connection; @@ -6,7 +28,12 @@ import java.sql.DriverManager; import org.eobjects.metamodel.DataContext; import org.eobjects.metamodel.jdbc.JdbcDataContext; - +/** + * MetaModelDataContextJdbc provides basic jdbc connection for meta model data context. + * + * @author Willem Cazander + * @version 1.0 May 3, 2012 + */ public class MetaModelDataContextJdbc implements MetaModelDataContextProvider { private String driverClass = null; @@ -22,7 +49,13 @@ public class MetaModelDataContextJdbc implements MetaModelDataContextProvider { public Connection getConnection() { synchronized (this) { try { - Class.forName(getDriverClass()); + if (getDriverClass()!=null) { + ClassLoader cl = Thread.currentThread().getContextClassLoader(); + if (cl==null) { + cl = this.getClass().getClassLoader(); + } + cl.loadClass(getDriverClass()); + } Connection connection = DriverManager.getConnection(getConnectUrl(),getUsername(),getPassword()); return connection; } catch (Exception e) { diff --git a/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelDataContextMongodb.java b/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelDataContextMongodb.java index ac91599..fc24a07 100644 --- a/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelDataContextMongodb.java +++ b/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelDataContextMongodb.java @@ -1,3 +1,25 @@ +/* + * 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.backend.metamodel; import java.net.UnknownHostException; @@ -10,6 +32,12 @@ import com.mongodb.Mongo; import com.mongodb.MongoOptions; import com.mongodb.ServerAddress; +/** + * MetaModelDataContextMongodb provides basic mongo connection support for data context. + * + * @author Willem Cazander + * @version 1.0 May 2, 2012 + */ public class MetaModelDataContextMongodb implements MetaModelDataContextProvider { private String hostname = "localhost"; diff --git a/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelDataContextProvider.java b/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelDataContextProvider.java index 6b22836..7497aab 100644 --- a/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelDataContextProvider.java +++ b/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelDataContextProvider.java @@ -25,7 +25,7 @@ package net.forwardfire.vasc.backend.metamodel; import org.eobjects.metamodel.DataContext; /** - * Provides an metamodel datacontext object to the metamodel backend. + * MetaModelDataContextProvider provides an meta model data context object to the meta model back-end. * * @author Willem Cazander * @version 1.0 Apr 25, 2012 diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/VascAutoSchemaMetaModel.java b/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelSchemaAutoEntry.java similarity index 53% rename from vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/VascAutoSchemaMetaModel.java rename to vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelSchemaAutoEntry.java index 36898a9..e0af677 100644 --- a/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/VascAutoSchemaMetaModel.java +++ b/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelSchemaAutoEntry.java @@ -1,4 +1,26 @@ -package net.forwardfire.vasc.demo.tech.ui; +/* + * 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.backend.metamodel; import java.util.logging.Logger; @@ -8,8 +30,6 @@ import org.eobjects.metamodel.schema.Relationship; import org.eobjects.metamodel.schema.Table; import net.forwardfire.vasc.backend.VascBackendControllerLocal; -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.VascEntryControllerLocal; @@ -23,28 +43,59 @@ import net.forwardfire.vasc.impl.DefaultVascFactory; import net.forwardfire.vasc.impl.DefaultVascLinkEntry; import net.forwardfire.vasc.impl.ui.VascSelectItemModelEntry; -public class VascAutoSchemaMetaModel { +/** + * MetaModelSchemaAutoEntry + * + * @author Willem Cazander + * @version 1.0 May 2, 2012 + */ +public class MetaModelSchemaAutoEntry { private Logger logger = null; private VascController vascController = null; + private MetaModelDataContextProvider dataContextProvider = null; + private String tableInclude = null; + private String tableExclude = null; + private String entryPrefix = null; - public VascAutoSchemaMetaModel(VascController vascController) { - logger = Logger.getLogger(VascAutoSchemaMetaModel.class.getName()); + public MetaModelSchemaAutoEntry() { + logger = Logger.getLogger(MetaModelSchemaAutoEntry.class.getName()); + } + + public void autoCreateEntries(VascController vascController) { + if (getDataContextProvider()==null) { + throw new NullPointerException("Can't auto create entries with null dataContextProvider."); + } + if (getEntryPrefix()==null) { + throw new NullPointerException("Can't auto create with null entryPrefix."); + } this.vascController=vascController; + + DataContext ds = getDataContextProvider().getDataContext(); + for (String table:ds.getDefaultSchema().getTableNames()) { + if (getTableInclude()!=null && table.matches(getTableInclude())==false) { + logger.fine("Excluding table: "+table+" from include rule."); + continue; + } + if (getTableExclude()!=null && table.matches(getTableExclude())) { + logger.fine("Excluding table: "+table+" from exclude rule."); + continue; + } + createMetaEntry(ds,getEntryPrefix()+"_"+table,table); + } } private VascController getVascController() { return vascController; } - public void createMetaEntry(MetaModelDataContextProvider ds,String id,String tableName) { + private void createMetaEntry(DataContext ds,String id,String tableName) { logger.info("Creating entry id: "+id+" of table: "+tableName); - DataContext metaDs = ds.getDataContext(); Table metaTable = null; if (tableName==null) { - metaTable = metaDs.getDefaultSchema().getTable(0); + metaTable = ds.getDefaultSchema().getTable(0); } else { - metaTable = metaDs.getDefaultSchema().getTableByName(tableName); + metaTable = ds.getDefaultSchema().getTableByName(tableName); } Column[] keys = metaTable.getPrimaryKeys(); Column[] cols = metaTable.getColumns(); @@ -54,7 +105,7 @@ public class VascAutoSchemaMetaModel { MetaModelVascBackend backend = new MetaModelVascBackend(); backend.setId(id+"_backend"); - backend.setDataContextProvider(ds); + backend.setDataContextProvider(getDataContextProvider()); backend.setTable(metaTable.getName()); if (keys.length>0) { backend.setTableId(keys[0].getName()); @@ -73,10 +124,10 @@ public class VascAutoSchemaMetaModel { logger.finer("Found relation FT: "+rs.getForeignTable().getName()+" PT: "+rs.getPrimaryTable().getName()); if (tableName.equals(rs.getForeignTable().getName())==false) { logger.info("Creating Link entry for: "+rs.getForeignColumns()[0].getName()+" of table: "+rs.getForeignTable().getName()); - createLinkEntry(ds,rs,ve,metaTable,id+"_"+rs.getForeignTable().getName()+"_"+rs.getForeignColumns()[0].getName()+"_link"); + createLinkEntry(rs,ve,metaTable,id+"_"+rs.getForeignTable().getName()+"_"+rs.getForeignColumns()[0].getName()+"_link"); } else { logger.info("Creating List entry for: "+rs.getPrimaryColumns()[0].getName()+" of table: "+rs.getPrimaryTable().getName()); - createListEntry(ds,rs,ve,metaTable,id+"_"+rs.getPrimaryTable().getName()+"_"+rs.getPrimaryColumns()[0].getName()+"_list"); + createListEntry(rs,ve,metaTable,id+"_"+rs.getPrimaryTable().getName()+"_"+rs.getPrimaryColumns()[0].getName()+"_list"); } } @@ -91,10 +142,10 @@ public class VascAutoSchemaMetaModel { } } - private void createLinkEntry(MetaModelDataContextProvider ds,Relationship rs2,VascEntry ve,Table metaTable,String id) { + private void createLinkEntry(Relationship rs2,VascEntry ve,Table metaTable,String id) { MetaModelVascBackend backendLink = new MetaModelVascBackend(); backendLink.setId(id+"_backend"); - backendLink.setDataContextProvider(ds); + backendLink.setDataContextProvider(getDataContextProvider()); backendLink.setTable(rs2.getForeignTable().getName()); Column[] keys = rs2.getForeignTable().getPrimaryKeys(); @@ -118,10 +169,10 @@ public class VascAutoSchemaMetaModel { logger.finer("Found relation FT: "+rs.getForeignTable().getName()+" PT: "+rs.getPrimaryTable().getName()); if (rs2.getForeignTable().getName().equals(rs.getForeignTable().getName())==false) { //logger.info("Creating Link entry for: "+rs.getForeignColumns()[0].getName()+" of table: "+rs.getForeignTable().getName()); - //createLinkEntry(ds,rs,ve,rs2.getForeignTable(),id+"_"+rs.getForeignTable().getName()+"_"+rs.getForeignColumns()[0].getName()+"_link"); + //createLinkEntry(rs,ve,rs2.getForeignTable(),id+"_"+rs.getForeignTable().getName()+"_"+rs.getForeignColumns()[0].getName()+"_link"); } else { logger.info("Creating List entry for: "+rs.getPrimaryColumns()[0].getName()+" of table: "+rs.getPrimaryTable().getName()); - createListEntry(ds,rs,veLink,rs2.getForeignTable(),id+"_"+rs.getPrimaryTable().getName()+"_"+rs.getPrimaryColumns()[0].getName()+"_list"); + createListEntry(rs,veLink,rs2.getForeignTable(),id+"_"+rs.getPrimaryTable().getName()+"_"+rs.getPrimaryColumns()[0].getName()+"_list"); } } @@ -142,10 +193,10 @@ public class VascAutoSchemaMetaModel { } } - private void createListEntry(MetaModelDataContextProvider ds,Relationship rs,VascEntry ve,Table metaTable,String id) { + private void createListEntry(Relationship rs,VascEntry ve,Table metaTable,String id) { MetaModelVascBackend backendLink = new MetaModelVascBackend(); backendLink.setId(id+"_backend"); - backendLink.setDataContextProvider(ds); + backendLink.setDataContextProvider(getDataContextProvider()); backendLink.setTable(rs.getPrimaryTable().getName()); Column[] keys = rs.getPrimaryTable().getPrimaryKeys(); @@ -187,8 +238,25 @@ public class VascAutoSchemaMetaModel { for (Column c:cols) { VascEntryField vef = new DefaultVascEntryField(c.getName()); vef.setVascEntryFieldType(getVascController().getVascEntryFieldTypeController().getVascEntryFieldTypeByClass(c.getType().getJavaEquivalentClass())); - if (c.getName().toLowerCase().contains("desc") || c.getName().toLowerCase().contains("text")) { - vef.setVascEntryFieldType(getVascController().getVascEntryFieldTypeController().getVascEntryFieldTypeById("TextAreaField")); + + if (vef.getId().equals(ve.getPrimaryKeyFieldId())) { + vef.setEditReadOnly(true); + // vef.setCreate(false); mmm + } + + if (vef.getVascEntryFieldType()==null || "TextField".equals(vef.getVascEntryFieldType().getId())) { + if (c.getName().toLowerCase().contains("desc") || c.getName().toLowerCase().contains("text")) { + vef.setVascEntryFieldType(getVascController().getVascEntryFieldTypeController().getVascEntryFieldTypeById("TextAreaField")); + } + if (c.getName().toLowerCase().contains("active")) { + vef.setVascEntryFieldType(getVascController().getVascEntryFieldTypeController().getVascEntryFieldTypeById("BooleanField")); + } /* todo + if (c.getName().toLowerCase().contains("email")) { + vef.setVascEntryFieldType(getVascController().getVascEntryFieldTypeController().getVascEntryFieldTypeById("EmailField")); + } + if (c.getName().toLowerCase().contains("url")) { + vef.setVascEntryFieldType(getVascController().getVascEntryFieldTypeController().getVascEntryFieldTypeById("URLField")); + } */ } ve.addVascEntryField(vef); if (ve.getDisplayNameFieldId()==null && c.getName().equals(ve.getPrimaryKeyFieldId())==false && c.getType().getJavaEquivalentClass()==String.class) { @@ -196,4 +264,60 @@ public class VascAutoSchemaMetaModel { } } } + + /** + * @return the dataContextProvider + */ + public MetaModelDataContextProvider getDataContextProvider() { + return dataContextProvider; + } + + /** + * @param dataContextProvider the dataContextProvider to set + */ + public void setDataContextProvider(MetaModelDataContextProvider dataContextProvider) { + this.dataContextProvider = dataContextProvider; + } + + /** + * @return the tableInclude + */ + public String getTableInclude() { + return tableInclude; + } + + /** + * @param tableInclude the tableInclude to set + */ + public void setTableInclude(String tableInclude) { + this.tableInclude = tableInclude; + } + + /** + * @return the tableExclude + */ + public String getTableExclude() { + return tableExclude; + } + + /** + * @param tableExclude the tableExclude to set + */ + public void setTableExclude(String tableExclude) { + this.tableExclude = tableExclude; + } + + /** + * @return the entryPrefix + */ + public String getEntryPrefix() { + return entryPrefix; + } + + /** + * @param entryPrefix the entryPrefix to set + */ + public void setEntryPrefix(String entryPrefix) { + this.entryPrefix = entryPrefix; + } } diff --git a/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelVascBackend.java b/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelVascBackend.java index 8c693d1..7a3c0fc 100644 --- a/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelVascBackend.java +++ b/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/MetaModelVascBackend.java @@ -54,7 +54,7 @@ import net.forwardfire.vasc.core.entry.VascEntryFieldValue; import net.forwardfire.vasc.core.entry.VascEntryRecordCreator; /** - * Provides backend for metamodel. + * MetaModelVascBackend provides vasc backend for metamodel. * * @author Willem Cazander * @version 1.0 Dec 31, 2011 @@ -65,15 +65,23 @@ public class MetaModelVascBackend extends AbstractVascBackend { private UpdateableDataContext dataContext = null; private String table = null; private String tableId = null; - - private UpdateableDataContext getUpdateableDataContext() { - if (dataContext!=null) { - return dataContext; - } + + /** + * @see net.forwardfire.vasc.backend.AbstractVascBackend#startBackend() + */ + @Override + public void startBackend() { dataContext = (UpdateableDataContext)dataContextProvider.getDataContext(); - return dataContext; } - + + /** + * @see net.forwardfire.vasc.backend.AbstractVascBackend#stopBackend() + */ + @Override + public void stopBackend() { + dataContext = null; + } + /** * @see net.forwardfire.vasc.backend.AbstractVascBackend#isPageable() */ @@ -87,7 +95,6 @@ public class MetaModelVascBackend extends AbstractVascBackend { */ @Override public long fetchTotalExecuteSize(VascBackendState state) { - UpdateableDataContext dataContext = getUpdateableDataContext(); Schema schema = dataContext.getDefaultSchema(); Table t = schema.getTableByName(table); Query q = createFilterQuery(state,t,true); @@ -105,9 +112,9 @@ public class MetaModelVascBackend extends AbstractVascBackend { private Query createFilterQuery(VascBackendState state,Table t,boolean count) { Object qWhere = null; if (count==false) { - qWhere = getUpdateableDataContext().query().from(t).select(t.getColumns()); + qWhere = dataContext.query().from(t).select(t.getColumns()); } else { - qWhere = getUpdateableDataContext().query().from(t).selectCount(); + qWhere = dataContext.query().from(t).selectCount(); } Iterator keys = state.getDataParameterKeys().iterator(); boolean first = true; @@ -154,7 +161,6 @@ public class MetaModelVascBackend extends AbstractVascBackend { } public List execute(VascBackendState state) throws VascException { - UpdateableDataContext dataContext = getUpdateableDataContext(); Schema schema = dataContext.getDefaultSchema(); Table t = schema.getTableByName(table); Query q = createFilterQuery(state,t,false); @@ -182,7 +188,6 @@ public class MetaModelVascBackend extends AbstractVascBackend { @SuppressWarnings("unchecked") public void persist(Object object) throws VascException { final Map map = (Map)object; - UpdateableDataContext dataContext = getUpdateableDataContext(); dataContext.executeUpdate(new UpdateScript() { public void run(UpdateCallback backendImpl) { RowInsertionBuilder query = backendImpl.insertInto(table); @@ -193,12 +198,12 @@ public class MetaModelVascBackend extends AbstractVascBackend { query.execute(); } }); + } @SuppressWarnings("unchecked") public Object merge(Object object) throws VascException { final Map map = (Map)object; - UpdateableDataContext dataContext = getUpdateableDataContext(); dataContext.executeUpdate(new UpdateScript() { public void run(UpdateCallback backendImpl) { @@ -224,7 +229,6 @@ public class MetaModelVascBackend extends AbstractVascBackend { @SuppressWarnings("unchecked") public void delete(Object object) throws VascException { final Map map = (Map)object; - UpdateableDataContext dataContext = getUpdateableDataContext(); dataContext.executeUpdate(new UpdateScript() { public void run(UpdateCallback backendImpl) { if (map.get(tableId) instanceof Number) { diff --git a/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/x4o/SchemaAutoEntryElementConfigurator.java b/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/x4o/SchemaAutoEntryElementConfigurator.java new file mode 100644 index 0000000..04be424 --- /dev/null +++ b/vasc-backend/vasc-backend-metamodel/src/main/java/net/forwardfire/vasc/backend/metamodel/x4o/SchemaAutoEntryElementConfigurator.java @@ -0,0 +1,56 @@ +/* + * 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.backend.metamodel.x4o; + +import net.forwardfire.vasc.backend.metamodel.MetaModelSchemaAutoEntry; +import net.forwardfire.vasc.core.VascController; +import net.forwardfire.vasc.impl.x4o.VascParser; + +import org.x4o.xml.element.AbstractElementConfigurator; +import org.x4o.xml.element.Element; +import org.x4o.xml.element.ElementConfiguratorException; + +/** + * SchemaAutoEntryElementConfigurator runs the autoCreateEntries method the MetaModelSchemaAutoEntry bean. + * + * @author Willem Cazander + * @version 1.0 May 12, 2012 + */ +public class SchemaAutoEntryElementConfigurator extends AbstractElementConfigurator { + + /** + * @see org.x4o.xml.element.AbstractElementConfigurator#doConfigEndTag(org.x4o.xml.element.Element) + */ + public void doConfigElement(Element element) throws ElementConfiguratorException { + + if (element.getElementObject()==null) { + throw new ElementConfiguratorException(this,"ElementObject is null"); + } + if ((element.getElementObject() instanceof MetaModelSchemaAutoEntry)==false) { + throw new ElementConfiguratorException(this,"ElementObject is not MetaModelSchemaAutoEntry object."); + } + MetaModelSchemaAutoEntry autoEntry = (MetaModelSchemaAutoEntry)element.getElementObject(); + VascController vascController = VascParser.getVascController(element.getElementContext()); + autoEntry.autoCreateEntries(vascController); + } +} diff --git a/vasc-backend/vasc-backend-metamodel/src/main/resources/META-INF/vasc/vasc-backend-metamodel.eld b/vasc-backend/vasc-backend-metamodel/src/main/resources/META-INF/vasc/vasc-backend-metamodel.eld index 648e9d8..b4ae26e 100644 --- a/vasc-backend/vasc-backend-metamodel/src/main/resources/META-INF/vasc/vasc-backend-metamodel.eld +++ b/vasc-backend/vasc-backend-metamodel/src/main/resources/META-INF/vasc/vasc-backend-metamodel.eld @@ -1,8 +1,12 @@ - - - - + + + - + + + + + + diff --git a/vasc-backend/vasc-backend-mongodb/src/main/java/net/forwardfire/vasc/backend/mongodb/MongodbVascBackend.java b/vasc-backend/vasc-backend-mongodb/src/main/java/net/forwardfire/vasc/backend/mongodb/MongodbVascBackend.java index 88d8b87..358259b 100644 --- a/vasc-backend/vasc-backend-mongodb/src/main/java/net/forwardfire/vasc/backend/mongodb/MongodbVascBackend.java +++ b/vasc-backend/vasc-backend-mongodb/src/main/java/net/forwardfire/vasc/backend/mongodb/MongodbVascBackend.java @@ -44,7 +44,7 @@ import com.mongodb.WriteConcern; import com.mongodb.WriteResult; /** - * Provides backend for mongodb. + * MongodbVascBackend Provides backend for mongodb. * * @author Willem Cazander * @version 1.0 Dec 30, 2011 @@ -60,6 +60,25 @@ public class MongodbVascBackend extends AbstractVascBackend { logger = Logger.getLogger(MongodbVascBackend.class.getName()); } + /** + * @see net.forwardfire.vasc.backend.AbstractVascBackend#startBackend() + */ + @Override + public void startBackend() { + if (connectionProvider==null) { + throw new NullPointerException("Can't start backend with null connectionProvider."); + } + database = connectionProvider.getMongodbConnection(); + } + + /** + * @see net.forwardfire.vasc.backend.AbstractVascBackend#stopBackend() + */ + @Override + public void stopBackend() { + database = null; + } + /** * @see net.forwardfire.vasc.backend.AbstractVascBackend#isPageable() */ @@ -136,15 +155,6 @@ public class MongodbVascBackend extends AbstractVascBackend { } private DBCollection getDBCollection() { - if (database!=null) { - return database.getCollection(collection); - } - if (connectionProvider==null) { - throw new RuntimeException("Can't get DBCollection from null connectionProvider."); - } - synchronized (connectionProvider) { - database = connectionProvider.getMongodbConnection(); - } return database.getCollection(collection); } diff --git a/vasc-backend/vasc-backend-mongodb/src/main/java/net/forwardfire/vasc/backend/mongodb/MongodbVascEntryFieldValue.java b/vasc-backend/vasc-backend-mongodb/src/main/java/net/forwardfire/vasc/backend/mongodb/MongodbVascEntryFieldValue.java index a86b63d..5b97c9c 100644 --- a/vasc-backend/vasc-backend-mongodb/src/main/java/net/forwardfire/vasc/backend/mongodb/MongodbVascEntryFieldValue.java +++ b/vasc-backend/vasc-backend-mongodb/src/main/java/net/forwardfire/vasc/backend/mongodb/MongodbVascEntryFieldValue.java @@ -41,15 +41,12 @@ public class MongodbVascEntryFieldValue implements VascEntryFieldValue { public Object getValue(VascEntryField field, Object record) throws VascException { BasicDBObject row = (BasicDBObject)record; - Object r = row.get(field.getBackendName()); - if (r==null) { - return ""; // create new value, TODO - } - return r; + Object data = row.get(field.getBackendName()); + return data; } public String getDisplayValue(VascEntryField field, Object record) throws VascException { - return ""+getValue(field,record); // not supported TODO + return ""+getValue(field,record); } public void setValue(VascEntryField field, Object record, Object value) throws VascException { diff --git a/vasc-backend/vasc-backend-mongodb/src/main/resources/META-INF/vasc/vasc-backend-mongodb.eld b/vasc-backend/vasc-backend-mongodb/src/main/resources/META-INF/vasc/vasc-backend-mongodb.eld index 60386c0..69f1b16 100644 --- a/vasc-backend/vasc-backend-mongodb/src/main/resources/META-INF/vasc/vasc-backend-mongodb.eld +++ b/vasc-backend/vasc-backend-mongodb/src/main/resources/META-INF/vasc/vasc-backend-mongodb.eld @@ -1,7 +1,5 @@ - - - + diff --git a/vasc-core/src/main/java/net/forwardfire/vasc/backend/AbstractVascBackend.java b/vasc-core/src/main/java/net/forwardfire/vasc/backend/AbstractVascBackend.java index 80b41d5..ad61c35 100644 --- a/vasc-core/src/main/java/net/forwardfire/vasc/backend/AbstractVascBackend.java +++ b/vasc-core/src/main/java/net/forwardfire/vasc/backend/AbstractVascBackend.java @@ -53,6 +53,18 @@ abstract public class AbstractVascBackend implements VascBackend { this.id=id; } + /** + * @see net.forwardfire.vasc.backend.VascBackend#startBackend() + */ + public void startBackend() { + } + + /** + * @see net.forwardfire.vasc.backend.VascBackend#stopBackend() + */ + public void stopBackend() { + } + /** * @see net.forwardfire.vasc.backend.VascBackend#isReadOnly() */ diff --git a/vasc-core/src/main/java/net/forwardfire/vasc/backend/VascBackend.java b/vasc-core/src/main/java/net/forwardfire/vasc/backend/VascBackend.java index d0d6474..84c71c5 100644 --- a/vasc-core/src/main/java/net/forwardfire/vasc/backend/VascBackend.java +++ b/vasc-core/src/main/java/net/forwardfire/vasc/backend/VascBackend.java @@ -41,7 +41,10 @@ public interface VascBackend { public String getId(); public void setId(String id); - + + public void startBackend(); + public void stopBackend(); + public List execute(VascBackendState state) throws VascException; public boolean isReadOnly(); diff --git a/vasc-core/src/main/java/net/forwardfire/vasc/backend/VascBackendControllerLocal.java b/vasc-core/src/main/java/net/forwardfire/vasc/backend/VascBackendControllerLocal.java index 0cb6aa5..06d2f71 100644 --- a/vasc-core/src/main/java/net/forwardfire/vasc/backend/VascBackendControllerLocal.java +++ b/vasc-core/src/main/java/net/forwardfire/vasc/backend/VascBackendControllerLocal.java @@ -31,4 +31,8 @@ package net.forwardfire.vasc.backend; public interface VascBackendControllerLocal extends VascBackendController { public void addVascBackend(VascBackend backend); + + public void removeVascBackendById(String backendId); + + public void clearAndStopBackends(); } \ No newline at end of file diff --git a/vasc-core/src/main/java/net/forwardfire/vasc/backend/proxy/AbstractVascBackendProxy.java b/vasc-core/src/main/java/net/forwardfire/vasc/backend/proxy/AbstractVascBackendProxy.java index 1589381..f4cfd13 100644 --- a/vasc-core/src/main/java/net/forwardfire/vasc/backend/proxy/AbstractVascBackendProxy.java +++ b/vasc-core/src/main/java/net/forwardfire/vasc/backend/proxy/AbstractVascBackendProxy.java @@ -68,6 +68,20 @@ abstract public class AbstractVascBackendProxy implements VascBackendProxy { return true; } + /** + * @see net.forwardfire.vasc.backend.VascBackend#startBackend() + */ + public void startBackend() { + backend.startBackend(); + } + + /** + * @see net.forwardfire.vasc.backend.VascBackend#stopBackend() + */ + public void stopBackend() { + backend.stopBackend(); + } + /** * @see net.forwardfire.vasc.backend.VascBackend#isReadOnly() */ diff --git a/vasc-core/src/main/java/net/forwardfire/vasc/backend/proxy/VascBackendProxyCache.java b/vasc-core/src/main/java/net/forwardfire/vasc/backend/proxy/VascBackendProxyCache.java index 78ed2c6..2bded1f 100644 --- a/vasc-core/src/main/java/net/forwardfire/vasc/backend/proxy/VascBackendProxyCache.java +++ b/vasc-core/src/main/java/net/forwardfire/vasc/backend/proxy/VascBackendProxyCache.java @@ -46,6 +46,7 @@ public class VascBackendProxyCache extends AbstractVascBackendProxy { private int pageSizeMax = 0; private String sortField = null; private boolean sortDir = true; + private boolean requestFlush = false; public VascBackendProxyCache() { dataState = new HashMap(10); @@ -105,9 +106,26 @@ public class VascBackendProxyCache extends AbstractVascBackendProxy { changed = true; } searchString = state.getSearchString(); + + if (requestFlush) { + requestFlush = false; + changed = true; + } + return changed; } + /** + * @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#stopBackend() + */ + @Override + public void stopBackend() { + super.stopBackend(); + data.clear(); + dataState.clear(); + requestFlush = true; + } + /** * @see net.forwardfire.vasc.backend.VascBackend#execute(VascBackendState state) */ @@ -128,4 +146,31 @@ public class VascBackendProxyCache extends AbstractVascBackendProxy { } return records; } + + /** + * @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#delete(java.lang.Object) + */ + @Override + public void delete(Object object) throws VascException { + requestFlush = true; + super.delete(object); + } + + /** + * @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#merge(java.lang.Object) + */ + @Override + public Object merge(Object object) throws VascException { + requestFlush = true; + return super.merge(object); + } + + /** + * @see net.forwardfire.vasc.backend.proxy.AbstractVascBackendProxy#persist(java.lang.Object) + */ + @Override + public void persist(Object object) throws VascException { + requestFlush = true; + super.persist(object); + } } \ No newline at end of file diff --git a/vasc-core/src/main/java/net/forwardfire/vasc/frontend/VascFrontendActions.java b/vasc-core/src/main/java/net/forwardfire/vasc/frontend/VascFrontendActions.java index d949e13..5f20aa2 100644 --- a/vasc-core/src/main/java/net/forwardfire/vasc/frontend/VascFrontendActions.java +++ b/vasc-core/src/main/java/net/forwardfire/vasc/frontend/VascFrontendActions.java @@ -38,6 +38,8 @@ public interface VascFrontendActions { public void deleteObject(); + public void persistObject(); + public Object mergeObject(); public void sortAction(VascEntryField field); diff --git a/vasc-core/src/main/java/net/forwardfire/vasc/impl/DefaultVascBackendController.java b/vasc-core/src/main/java/net/forwardfire/vasc/impl/DefaultVascBackendController.java index cf52099..cca077f 100644 --- a/vasc-core/src/main/java/net/forwardfire/vasc/impl/DefaultVascBackendController.java +++ b/vasc-core/src/main/java/net/forwardfire/vasc/impl/DefaultVascBackendController.java @@ -33,7 +33,7 @@ import net.forwardfire.vasc.backend.VascBackendControllerLocal; /** - * + * DefaultVascBackendController stores the vasc backends. * * @author Willem Cazander * @version 1.0 Sep 18, 2008 @@ -54,18 +54,8 @@ public class DefaultVascBackendController implements VascBackendControllerLocal } /** - * Local + * @see net.forwardfire.vasc.backend.VascBackendController#getVascBackendIds() */ - public void addVascBackend(VascBackend backend) { - if (backend==null) { - throw new NullPointerException("backend must not be null."); - } - if (backend.getId()==null) { - throw new IllegalArgumentException("The backend must have an id."); - } - backends.put(backend.getId(), backend); - } - public List getVascBackendIds() { List result = new ArrayList(50); for (String id:backends.keySet()) { @@ -74,5 +64,39 @@ public class DefaultVascBackendController implements VascBackendControllerLocal Collections.sort(result); // lets do abc for consistance behauvior. return result; } - + + /** + * @see net.forwardfire.vasc.backend.VascBackendControllerLocal#addVascBackend(net.forwardfire.vasc.backend.VascBackend) + */ + public void addVascBackend(VascBackend backend) { + if (backend==null) { + throw new NullPointerException("backend must not be null."); + } + if (backend.getId()==null) { + throw new IllegalArgumentException("The backend must have an id."); + } + backend.startBackend(); + backends.put(backend.getId(), backend); + } + + /** + * @see net.forwardfire.vasc.backend.VascBackendControllerLocal#removeVascBackendById(java.lang.String) + */ + public void removeVascBackendById(String backendId) { + VascBackend backend = getVascBackendById(backendId); + if (backend==null) { + throw new NullPointerException("Could not find backend to remove with id: "+backendId); + } + backend.stopBackend(); + backends.remove(backendId); + } + + /** + * @see net.forwardfire.vasc.backend.VascBackendControllerLocal#clearAndStopBackends() + */ + public void clearAndStopBackends() { + for (String backendId:getVascBackendIds()) { + removeVascBackendById(backendId); + } + } } \ No newline at end of file diff --git a/vasc-core/src/main/java/net/forwardfire/vasc/impl/DefaultVascFrontendActions.java b/vasc-core/src/main/java/net/forwardfire/vasc/impl/DefaultVascFrontendActions.java index 0a23317..9dbd089 100644 --- a/vasc-core/src/main/java/net/forwardfire/vasc/impl/DefaultVascFrontendActions.java +++ b/vasc-core/src/main/java/net/forwardfire/vasc/impl/DefaultVascFrontendActions.java @@ -120,17 +120,32 @@ public class DefaultVascFrontendActions implements VascFrontendActions { } /** - * @see net.forwardfire.vasc.frontend.VascFrontendHelper#mergeObject(net.forwardfire.vasc.core.VascEntry) + * @see net.forwardfire.vasc.frontend.VascFrontendActions#persistObject() + */ + public void persistObject() { + saveObject(true); + } + + /** + * @see net.forwardfire.vasc.frontend.VascFrontendActions#mergeObject() */ public Object mergeObject() { + return saveObject(false); + } + + protected Object saveObject(boolean persist) { Object object = entry.getVascFrontendData().getVascEntryState().getEntryDataObject(); Object result = null; try { entry.getVascFrontendData().fireVascFrontendEvent(entry,VascEntryFrontendEventListener.VascFrontendEventType.PRE_UPDATE,object); int index = removeObjectFromDataList(object); - // merge object on backend - result = entry.getVascFrontendData().getVascEntryState().getVascBackend().merge(object); + // save object on backend + if (persist) { + entry.getVascFrontendData().getVascEntryState().getVascBackend().persist(object); + } else { + result = entry.getVascFrontendData().getVascEntryState().getVascBackend().merge(object); + } // put object thrue the filters for (VascBackendFilter filter:entry.getVascBackendFilters()) { @@ -148,7 +163,7 @@ public class DefaultVascFrontendActions implements VascFrontendActions { } /** - * Deletes the selected row object from the list and fires event. + * Deletes the selected row object from the back-end and list and fires events. * @param entry * @param object */ diff --git a/vasc-core/src/main/resources/META-INF/vasc/vasc-lang.eld b/vasc-core/src/main/resources/META-INF/vasc/vasc-lang.eld index b648583..ee4f028 100644 --- a/vasc-core/src/main/resources/META-INF/vasc/vasc-lang.eld +++ b/vasc-core/src/main/resources/META-INF/vasc/vasc-lang.eld @@ -4,19 +4,22 @@ Fake root tag - + - - - + + + + + + diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/assembly/bin.xml b/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/assembly/bin.xml index 2010fbc..829fa74 100644 --- a/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/assembly/bin.xml +++ b/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/assembly/bin.xml @@ -26,10 +26,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> bin - zip true @@ -40,11 +36,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. false false runtime - @@ -62,17 +53,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. / 755 - - ${project.basedir}/src/main/files/ - /auto - - auto-readme.txt - - - - ${project.basedir}/src/main/demo/ - /demo - ${project.basedir}/src/main/files/ / @@ -80,5 +60,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. readme.txt + + ${project.basedir}/src/main/directory/ + / + \ No newline at end of file diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/config/logging.properties b/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/config/logging.properties new file mode 100644 index 0000000..7262f15 --- /dev/null +++ b/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/config/logging.properties @@ -0,0 +1,4 @@ +# +# +# + diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/demo/csv/csv-vasc.xml b/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/demo/csv/csv-vasc.xml similarity index 100% rename from vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/demo/csv/csv-vasc.xml rename to vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/demo/csv/csv-vasc.xml diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/demo/csv/meta-people.csv b/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/demo/csv/meta-people.csv similarity index 100% rename from vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/demo/csv/meta-people.csv rename to vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/demo/csv/meta-people.csv diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/demo/csv/meta-project.csv b/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/demo/csv/meta-project.csv similarity index 100% rename from vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/demo/csv/meta-project.csv rename to vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/demo/csv/meta-project.csv diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/demo/csv/meta-todo.csv b/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/demo/csv/meta-todo.csv similarity index 100% rename from vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/demo/csv/meta-todo.csv rename to vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/demo/csv/meta-todo.csv diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/demo/ldap/ldap-example.ldif b/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/demo/ldap/ldap-example.ldif similarity index 100% rename from vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/demo/ldap/ldap-example.ldif rename to vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/demo/ldap/ldap-example.ldif diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/demo/ldap/ldap-vasc.xml b/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/demo/ldap/ldap-vasc.xml similarity index 100% rename from vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/demo/ldap/ldap-vasc.xml rename to vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/demo/ldap/ldap-vasc.xml diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/demo/postgres/pg-data.sql b/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/demo/postgres/pg-data.sql similarity index 100% rename from vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/demo/postgres/pg-data.sql rename to vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/demo/postgres/pg-data.sql diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/demo/postgres/pg-schema.sql b/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/demo/postgres/pg-schema.sql similarity index 100% rename from vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/demo/postgres/pg-schema.sql rename to vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/demo/postgres/pg-schema.sql diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/demo/postgres/pg-vasc.xml b/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/demo/postgres/pg-vasc.xml similarity index 100% rename from vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/demo/postgres/pg-vasc.xml rename to vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/demo/postgres/pg-vasc.xml diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/deploy/readme.txt b/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/deploy/readme.txt new file mode 100644 index 0000000..1262c52 --- /dev/null +++ b/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/directory/deploy/readme.txt @@ -0,0 +1 @@ +All *.xml in this dir are automaticly started. \ No newline at end of file diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/scripts/run.bat b/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/scripts/run.bat index 98faaaa..417ce0e 100644 --- a/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/scripts/run.bat +++ b/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/scripts/run.bat @@ -32,7 +32,7 @@ set MAIN_CLASS=net.forwardfire.vasc.demo.tech.ui.TechUI set CP=lib\* :: Launch application -java %JAVA_OPTS% -cp "%CP%" %MAIN_CLASS% +java %JAVA_OPTS% -cp "%CP%" %MAIN_CLASS% -gui endlocal :: EOF diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/scripts/run.sh b/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/scripts/run.sh index 237670d..be32aef 100644 --- a/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/scripts/run.sh +++ b/vasc-demo/vasc-demo-tech/vasc-demo-tech-build/src/main/scripts/run.sh @@ -32,7 +32,7 @@ MAIN_CLASS="net.forwardfire.vasc.demo.tech.ui.TechUI"; CP=`echo lib/*.jar | sed 's/ /:/g'`; # Launch application -$JAVA $JAVA_OPTS -cp $CP $MAIN_CLASS; +$JAVA $JAVA_OPTS -cp $CP $MAIN_CLASS -gui; # EOF diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-core/src/main/java/net/forwardfire/vasc/demo/tech/core/DemoVascManager.java b/vasc-demo/vasc-demo-tech/vasc-demo-tech-core/src/main/java/net/forwardfire/vasc/demo/tech/core/DemoVascManager.java index a2ae5de..a49abe6 100644 --- a/vasc-demo/vasc-demo-tech/vasc-demo-tech-core/src/main/java/net/forwardfire/vasc/demo/tech/core/DemoVascManager.java +++ b/vasc-demo/vasc-demo-tech/vasc-demo-tech-core/src/main/java/net/forwardfire/vasc/demo/tech/core/DemoVascManager.java @@ -26,6 +26,7 @@ import java.io.File; import java.io.FileOutputStream; import java.util.logging.Logger; +import net.forwardfire.vasc.backend.VascBackendControllerLocal; import net.forwardfire.vasc.core.VascController; import net.forwardfire.vasc.core.VascEntryConfigController; import net.forwardfire.vasc.core.VascEntryControllerLocal; @@ -82,6 +83,12 @@ public class DemoVascManager { } public void stop() { + if (vascController==null) { + return; + } + VascBackendControllerLocal backends = (VascBackendControllerLocal)vascController.getVascBackendController(); + backends.clearAndStopBackends(); + vascController = null; logger.info("Stop manager, cleared all."); } @@ -103,8 +110,8 @@ public class DemoVascManager { logger.info("Vasc open file: "+file.getAbsoluteFile()); try { VascParser parser = new VascParser(vascController); - File f = File.createTempFile("test-vasc", ".xml"); - parser.setDebugOutputStream(new FileOutputStream(f)); + //File f = File.createTempFile("test-vasc", ".xml"); + //parser.setDebugOutputStream(new FileOutputStream(f)); parser.parseFile(file); DefaultVascFactory.fillVascControllerLocalEntries((VascEntryControllerLocal) vascController.getVascEntryController(), vascController); diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-editor/src/main/resources/net/forwardfire/vasc/editor/vasc-edit.xml b/vasc-demo/vasc-demo-tech/vasc-demo-tech-editor/src/main/resources/net/forwardfire/vasc/editor/vasc-edit.xml index 7553195..2a41109 100644 --- a/vasc-demo/vasc-demo-tech/vasc-demo-tech-editor/src/main/resources/net/forwardfire/vasc/editor/vasc-edit.xml +++ b/vasc-demo/vasc-demo-tech/vasc-demo-tech-editor/src/main/resources/net/forwardfire/vasc/editor/vasc-edit.xml @@ -2,8 +2,8 @@ - - + + diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/auto/data/vasc-bundle.properties b/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/auto/data/vasc-bundle.properties new file mode 100644 index 0000000..570cfaa --- /dev/null +++ b/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/auto/data/vasc-bundle.properties @@ -0,0 +1,1234 @@ +#Saved by vasc auto i18n. +#Sun May 13 17:05:45 CEST 2012 +vasc.entry.VascEntryFieldLink.sizeList.name=sizeList +vasc.entry.alef_dg2_run_log.html_body.name=html_body +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.address2.image=address2 +vasc.entry.pagila_reorder.date_reordered.image=date_reordered +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.country.name=country +vasc.entry.VascEntry.deleteDescription.name=deleteDescription +vasc.entry.meta_profiles.body_text.description=body_text +vasc.entry.VascEntry.createImage.name=createImage +vasc.entry.pagila_orders_customers_customerid_list.zip.name=zip +vasc.entry.meta_profiles.profile_type.image=profile_type +vasc.entry.alef_dg2_profiles.createImage=resources/images/models/alef_dg2_profiles.png +vasc.entry.VascListOptionLink.optional.description=optional +vasc.entry.alef_dg2_smiles.profile_type.name=profile_type +vasc.entry.alef_dg2_profiles.cron_type.name=cron_type +vasc.entry.pagila_cust_hist_customers_customerid_list.editImage=resources/images/models/pagila_cust_hist_customers_customerid_list.png +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.phone.description=phone +vasc.entry.VascEntry.vascAdminCreate.name=vascAdminCreate +vasc.entry.alef_dg2_profiles.send_jokers.name=send_jokers +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.gender.image=gender +vasc.entry.pagila_cust_hist.listImage=resources/images/models/pagila_cust_hist.png +vasc.entry.VascEntry.displayNameFieldId.image=displayNameFieldId +vasc.entry.VascEntryFieldLink.choices.image=choices +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.city.name=city +vasc.entry.pagila_cust_hist_customers_customerid_list.creditcardtype.name=creditcardtype +vasc.entry.pagila_customers.editDescription=pagila_customers +vasc.entry.pagila_orders_customers_customerid_list.firstname.name=firstname +vasc.entry.pagila_orders_orderlines_orderid_link.image=pagila_orders_orderlines_orderid_link +vasc.entry.VascEntry.vascAdminEdit.description=vascAdminEdit +vasc.entry.alef_dg2_smiles.deleteDescription=alef_dg2_smiles +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.listImage=resources/images/models/pagila_customers_orders_customerid_link_customers_customerid_list.png +vasc.entry.pagila_customers.gender.name=gender +vasc.entry.pagila_cust_hist_customers_customerid_list.address1.name=address1 +vasc.entry.VascEntryFieldLink.create.name=create +vasc.entry.alef_dg2_run_log._id.description=_id +vasc.entry.VascEntryFieldSetLink.editDescription=VascEntryFieldSetLink +vasc.entry.VascListOptionLink.collapsed.image=collapsed +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.zip.description=zip +vasc.entry.alef_dg2_stats.pictures.image=pictures +vasc.entry.VascListOptionLink.listImage=resources/images/models/VascListOptionLink.png +vasc.entry.pagila_products.price.name=price +vasc.entry.alef_dg2_run._id.description=_id +vasc.entry.pagila_customers.age.image=age +vasc.entry.pagila_products.image=pagila_products +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.gender.description=gender +vasc.entry.dg2_profiles.editDescription=dg2_profiles +vasc.action.editRowAction.image=editRowAction +vasc.entry.pagila_orders_orderlines_orderid_link.orderlineid.name=orderlineid +vasc.entry.alef_dg2_run.thread_id.image=thread_id +vasc.entry.pagila_customers_orders_customerid_link.totalamount.image=totalamount +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.address1.name=address1 +vasc.entry.alef_dg2_stats.pictures.description=pictures +vasc.entry.pagila_orderlines.orderdate.image=orderdate +vasc.entry.VascEntryFieldLink.sumable.description=sumable +vasc.entry.pagila_inventory.prod_id.name=prod_id +vasc.entry.pagila_reorder.createDescription=pagila_reorder +vasc.entry.VascEntry.vascAdminList.description=vascAdminList +vasc.entry.VascEntry.createDescription.name=createDescription +vasc.entry.pagila_orders_customers_customerid_list.region.name=region +vasc.entry.VascEntry.createDescription.description=createDescription +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.createImage=resources/images/models/pagila_customers_orders_customerid_link_customers_customerid_list.png +vasc.entry.alef_dg2_stats.pictures.name=pictures +vasc.entry.meta_profiles.profile_type.name=profile_type +vasc.entry.pagila_products.title.description=title +vasc.entry.VascEntryFieldSetLink.styleEdit.name=styleEdit +vasc.entry.VascEntry.listDescription.description=listDescription +vasc.entry.pagila_categories.editDescription=pagila_categories +vasc.entry.pagila_orderlines.deleteImage=resources/images/models/pagila_orderlines.png +vasc.entry.pagila_orderlines.editDescription=pagila_orderlines +vasc.entry.pagila_inventory.editDescription=pagila_inventory +vasc.entry.VascEntryFieldLink.id.image=id +vasc.entry.pagila_cust_hist_customers_customerid_list.zip.name=zip +vasc.entry.pagila_customers.username.description=username +vasc.entry.alef_dg2_run.thread_id.description=thread_id +vasc.entry.pagila_customers.creditcardexpiration.name=creditcardexpiration +vasc.entry.pagila_customers.phone.image=phone +vasc.entry.alef_dg2_run.image=alef_dg2_run +vasc.entry.alef_app_settings.editDescription=alef_app_settings +vasc.entry.pagila_products.actor.image=actor +vasc.entry.pagila_orders_customers_customerid_list.address2.description=address2 +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.age.description=age +vasc.entry.alef_dg2_run_log.profile_path.image=profile_path +vasc.entry.pagila_reorder.date_low.image=date_low +vasc.entry.VascEntryFieldSetLink.editImage=resources/images/models/VascEntryFieldSetLink.png +vasc.entry.VascEntryFieldLink.vascEntryFieldType.name=vascEntryFieldType +vasc.entry.VascEntryFieldLink.image.image=image +vasc.entry.VascLinkEntryLink.doActionId.description=doActionId +vasc.entry.pagila_products.category.description=category +vasc.entry.alef_dg2_stats.name=alef_dg2_stats +vasc.entry.pagila_reorder.prod_id.description=prod_id +vasc.entry.pagila_cust_hist_customers_customerid_list.age.image=age +vasc.entry.pagila_customers.city.name=city +vasc.entry.VascListOptionLink.helpId.description=helpId +vasc.entry.alef_dg2_run_log.run_date.description=run_date +vasc.entry.VascEntry.createImage.description=createImage +vasc.entry.pagila_categories.createImage=resources/images/models/pagila_categories.png +vasc.entry.alef_dg2_smiles.listDescription=alef_dg2_smiles +vasc.entry.pagila_reorder.editImage=resources/images/models/pagila_reorder.png +vasc.entry.pagila_customers.listImage=resources/images/models/pagila_customers.png +vasc.entry.VascEntryFieldLink.sizeEdit.image=sizeEdit +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.income.name=income +vasc.entry.alef_dg2_parser.argu_extra.name=argu_extra +vasc.entry.pagila_orders_customers_customerid_list.age.description=age +vasc.entry.pagila_cust_hist.listDescription=pagila_cust_hist +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.username.name=username +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.creditcardtype.image=creditcardtype +vasc.entry.VascListOptionLink.name=VascListOptionLink +vasc.entry.pagila_customers_cust_hist_customerid_link.orderid.image=orderid +vasc.entry.VascEntryFieldLink.view.name=view +vasc.entry.VascListOptionLink.styleEdit.name=styleEdit +vasc.entry.VascEntryFieldLink.optional.image=optional +vasc.entry.pagila_orders_orderlines_orderid_link.orderdate.image=orderdate +vasc.entry.pagila_orders_orderlines_orderid_link.deleteImage=resources/images/models/pagila_orders_orderlines_orderid_link.png +vasc.entry.pagila_reorder.quan_low.name=quan_low +vasc.entry.meta_profiles.profile_type.description=profile_type +vasc.entry.dg2_profiles.send_jokers.description=send_jokers +vasc.entry.VascEntryFieldLink.description.description=description +vasc.entry.pagila_orders_customers_customerid_list.state.name=state +vasc.entry.pagila_orders_orderlines_orderid_link.orderdate.name=orderdate +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.email.image=email +vasc.entry.meta_profiles.run_date.name=run_date +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.password.description=password +vasc.entry.alef_dg2_stats.date.description=date +vasc.entry.alef_dg2_stats.guestbook.description=guestbook +vasc.entry.VascLinkEntryLink.id.name=id +vasc.entry.alef_dg2_profiles.name.description=name +vasc.entry.pagila_cust_hist_customers_customerid_list.income.image=income +vasc.entry.alef_dg2_stats.editDescription=alef_dg2_stats +vasc.entry.VascEntryFieldLink.helpId.description=helpId +vasc.entry.pagila_cust_hist_customers_customerid_list.username.description=username +vasc.entry.pagila_orders_customers_customerid_list.zip.image=zip +vasc.entry.alef_dg2_parser.column_name.image=column_name +vasc.entry.alef_dg2_run.editImage=resources/images/models/alef_dg2_run.png +vasc.entry.pagila_cust_hist.orderid.description=orderid +vasc.entry.VascEntryFieldLink.rolesCreate.description=rolesCreate +vasc.entry.meta_profiles.body_text.name=body_text +vasc.entry.pagila_cust_hist.prod_id.name=prod_id +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.editImage=resources/images/models/pagila_orders_orderlines_orderid_link_orders_orderid_list.png +vasc.entry.pagila_categories.categoryname.image=categoryname +vasc.entry.pagila_cust_hist_customers_customerid_list.address2.description=address2 +vasc.entry.VascLinkEntryLink.name.description=name +vasc.entry.pagila_customers.username.image=username +vasc.entry.pagila_customers.city.description=city +vasc.entry.dg2_profiles.active.image=active +vasc.entry.VascEntryFieldLink.orderIndex.description=orderIndex +vasc.entry.pagila_orderlines.name=pagila_orderlines +vasc.entry.pagila_customers_orders_customerid_link.createDescription=pagila_customers_orders_customerid_link +vasc.entry.VascEntry.deleteImage.image=deleteImage +vasc.action.refreshDataAction.name=refreshDataAction +vasc.entry.VascEntry.createDescription.image=createDescription +vasc.entry.pagila_customers_orders_customerid_link.orderdate.name=orderdate +vasc.entry.dg2_smiles.deleteDescription=dg2_smiles +vasc.entry.pagila_orders_customers_customerid_list.password.image=password +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.listDescription=pagila_customers_cust_hist_customerid_link_customers_customerid_list +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.creditcardtype.name=creditcardtype +vasc.entry.pagila_reorder.image=pagila_reorder +vasc.entry.VascEntryFieldLink.rolesEdit.name=rolesEdit +vasc.entry.VascLinkEntryLink.deleteImage=resources/images/models/VascLinkEntryLink.png +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.image=pagila_orders_orderlines_orderid_link_orders_orderid_list +vasc.entry.dg2_smiles.active.image=active +vasc.entry.pagila_cust_hist_customers_customerid_list.city.name=city +vasc.entry.alef_dg2_run.total_jokers.description=total_jokers +vasc.entry.alef_dg2_run._id.image=_id +vasc.entry.pagila_customers.zip.name=zip +vasc.entry.alef_dg2_stats.deleteDescription=alef_dg2_stats +vasc.entry.alef_dg2_profiles.send_jokers.description=send_jokers +vasc.entry.VascEntryFieldSetLink.styleList.image=styleList +vasc.entry.pagila_cust_hist_customers_customerid_list.listImage=resources/images/models/pagila_cust_hist_customers_customerid_list.png +vasc.entry.pagila_cust_hist_customers_customerid_list.gender.description=gender +vasc.entry.VascEntry.listImage.name=listImage +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.region.image=region +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.image=pagila_customers_cust_hist_customerid_link_customers_customerid_list +vasc.entry.pagila_orderlines_orders_orderid_list.listDescription=pagila_orderlines_orders_orderid_list +vasc.entry.VascEntry.helpId.image=helpId +vasc.entry.pagila_categories.deleteDescription=pagila_categories +vasc.entry.VascEntryFieldLink.description.name=description +vasc.entry.VascEntryFieldLink.rolesList.description=rolesList +vasc.entry.VascLinkEntryLink.vascLinkEntryType.description=vascLinkEntryType +vasc.entry.pagila_orderlines_orders_orderid_list.totalamount.name=totalamount +vasc.entry.VascLinkEntryLink.name.image=name +vasc.entry.alef_dg2_run_log.send_smile.name=send_smile +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.creditcard.name=creditcard +vasc.entry.VascEntry.listDescription=VascEntry +vasc.entry.pagila_orders_orderlines_orderid_link.prod_id.description=prod_id +vasc.entry.alef_dg2_parser.stats_type.image=stats_type +vasc.entry.alef_dg2_stats.friends.description=friends +vasc.entry.pagila_orders.deleteImage=resources/images/models/pagila_orders.png +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.creditcardexpiration.name=creditcardexpiration +vasc.entry.VascEntry.createImage=resources/images/models/VascEntry.png +vasc.entry.pagila_customers_orders_customerid_link.orderid.image=orderid +vasc.entry.dg2_profiles.profile_type.name=profile_type +vasc.entry.alef_dg2_parser._id.name=_id +vasc.entry.pagila_reorder.quan_reordered.description=quan_reordered +vasc.entry.alef_dg2_profiles.editImage=resources/images/models/alef_dg2_profiles.png +vasc.entry.pagila_categories.categoryname.description=categoryname +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.lastname.description=lastname +vasc.entry.alef_dg2_profiles.send_jokers.image=send_jokers +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.age.name=age +vasc.entry.pagila_customers_cust_hist_customerid_link.deleteImage=resources/images/models/pagila_customers_cust_hist_customerid_link.png +vasc.entry.dg2_profiles.run_date.image=run_date +vasc.entry.pagila_customers_cust_hist_customerid_link.editImage=resources/images/models/pagila_customers_cust_hist_customerid_link.png +vasc.entry.VascLinkEntryLink.editDescription=VascLinkEntryLink +vasc.entry.alef_dg2_stats.guestbook.image=guestbook +vasc.entry.pagila_cust_hist_customers_customerid_list.creditcard.description=creditcard +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.country.name=country +vasc.entry.pagila_orders_customers_customerid_list.address1.description=address1 +vasc.entry.alef_dg2_parser.listDescription=alef_dg2_parser +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.age.name=age +vasc.entry.alef_dg2_stats.buddies.image=buddies +vasc.entry.pagila_orders_customers_customerid_list.customerid.description=customerid +vasc.entry.dg2_smiles.name=dg2_smiles +vasc.entry.VascEntryFieldSetLink.styleList.name=styleList +vasc.entry.meta_profiles._id.description=_id +vasc.entry.pagila_orderlines_orders_orderid_list.customerid.description=customerid +vasc.entry.pagila_customers.creditcardtype.image=creditcardtype +vasc.entry.pagila_customers.country.description=country +vasc.entry.VascEntryFieldSetLink.name=VascEntryFieldSetLink +vasc.entry.VascEntryFieldSetLink.optional.name=optional +vasc.entry.VascEntryFieldLink.list.image=list +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.orderdate.name=orderdate +vasc.entry.pagila_reorder.listDescription=pagila_reorder +vasc.entry.VascEntryFieldLink.rolesCreate.name=rolesCreate +vasc.entry.pagila_reorder.date_low.description=date_low +vasc.entry.VascEntry.editImage=resources/images/models/VascEntry.png +vasc.entry.pagila_orderlines.prod_id.image=prod_id +vasc.entry.VascListOptionLink.image.name=image +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.email.name=email +vasc.entry.pagila_customers.password.description=password +vasc.entry.pagila_orders_customers_customerid_list.deleteDescription=pagila_orders_customers_customerid_list +vasc.entry.VascEntryFieldSetLink.listImage=resources/images/models/VascEntryFieldSetLink.png +vasc.entry.alef_dg2_smiles.createImage=resources/images/models/alef_dg2_smiles.png +vasc.entry.pagila_orders_customers_customerid_list.creditcardtype.name=creditcardtype +vasc.entry.alef_dg2_run_log.deleteImage=resources/images/models/alef_dg2_run_log.png +vasc.entry.VascEntry.vascAdminEdit.name=vascAdminEdit +vasc.entry.pagila_orders_customers_customerid_list.email.description=email +vasc.entry.VascEntry.vascAdminDelete.description=vascAdminDelete +vasc.entry.dg2_profiles.editImage=resources/images/models/dg2_profiles.png +vasc.entry.pagila_customers.income.image=income +vasc.entry.pagila_customers_orders_customerid_link.name=pagila_customers_orders_customerid_link +vasc.entry.VascLinkEntryLink.vascLinkEntryType.image=vascLinkEntryType +vasc.entry.VascEntryFieldLink.edit.name=edit +vasc.entry.pagila_products.title.name=title +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.income.name=income +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.deleteDescription=pagila_customers_cust_hist_customerid_link_customers_customerid_list +vasc.entry.dg2_smiles.text.image=text +vasc.entry.alef_dg2_parser.active.name=active +vasc.entry.alef_dg2_parser.deleteImage=resources/images/models/alef_dg2_parser.png +vasc.entry.VascEntryFieldLink.optional.description=optional +vasc.entry.VascEntryFieldLink.sortable.image=sortable +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.deleteImage=resources/images/models/pagila_orders_orderlines_orderid_link_orders_orderid_list.png +vasc.entry.dg2_profiles.createImage=resources/images/models/dg2_profiles.png +vasc.entry.alef_dg2_run_log.deleteDescription=alef_dg2_run_log +vasc.entry.alef_dg2_profiles.editDescription=alef_dg2_profiles +vasc.entry.VascEntryFieldSetLink.id.image=id +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.email.description=email +vasc.entry.pagila_cust_hist_customers_customerid_list.email.name=email +vasc.entry.pagila_customers_orders_customerid_link.netamount.image=netamount +vasc.entry.pagila_orders.customerid.description=customerid +vasc.entry.VascListOptionLink.styleList.name=styleList +vasc.entry.dg2_profiles._id.image=_id +vasc.entry.pagila_orders.editImage=resources/images/models/pagila_orders.png +vasc.entry.alef_dg2_run.stop_date.description=stop_date +vasc.entry.pagila_cust_hist_customers_customerid_list.address1.description=address1 +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.phone.name=phone +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.state.image=state +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.deleteDescription=pagila_orders_orderlines_orderid_link_orders_orderid_list +vasc.entry.dg2_smiles.editImage=resources/images/models/dg2_smiles.png +vasc.entry.VascEntryFieldLink.editBlank.image=editBlank +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.email.image=email +vasc.entry.pagila_customers_orders_customerid_link.customerid.image=customerid +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.region.name=region +vasc.entry.VascEntryFieldLink.displayName.name=displayName +vasc.entry.alef_dg2_profiles.profile_type.description=profile_type +vasc.entry.alef_dg2_run_log._id.image=_id +vasc.entry.pagila_customers.deleteDescription=pagila_customers +vasc.entry.dg2_profiles.url.image=url +vasc.entry.pagila_orderlines_orders_orderid_list.listImage=resources/images/models/pagila_orderlines_orders_orderid_list.png +vasc.entry.pagila_orders.orderdate.description=orderdate +vasc.entry.pagila_customers.customerid.image=customerid +vasc.entry.dg2_profiles.active.description=active +vasc.entry.pagila_customers.creditcard.image=creditcard +vasc.entry.pagila_orders_orderlines_orderid_link.orderid.description=orderid +vasc.entry.pagila_orderlines_orders_orderid_list.image=pagila_orderlines_orders_orderid_list +vasc.entry.VascEntryFieldLink.edit.image=edit +vasc.entry.alef_dg2_profiles.body_text.name=body_text +vasc.entry.VascEntryFieldLink.backendName.image=backendName +vasc.entry.pagila_customers_orders_customerid_link.tax.image=tax +vasc.entry.pagila_orders_customers_customerid_list.address2.image=address2 +vasc.entry.pagila_customers.email.description=email +vasc.entry.pagila_orders_customers_customerid_list.phone.name=phone +vasc.entry.alef_dg2_run.listImage=resources/images/models/alef_dg2_run.png +vasc.entry.pagila_cust_hist_customers_customerid_list.creditcardexpiration.image=creditcardexpiration +vasc.entry.VascListOptionLink.helpId.name=helpId +vasc.entry.alef_dg2_run_log.listDescription=alef_dg2_run_log +vasc.entry.dg2_smiles._id.image=_id +vasc.entry.pagila_orders_customers_customerid_list.firstname.description=firstname +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.phone.description=phone +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.listImage=resources/images/models/pagila_orders_orderlines_orderid_link_orders_orderid_list.png +vasc.entry.VascEntry.primaryKeyFieldId.name=primaryKeyFieldId +vasc.entry.dg2_smiles.createImage=resources/images/models/dg2_smiles.png +vasc.entry.pagila_cust_hist_customers_customerid_list.creditcard.name=creditcard +vasc.entry.alef_dg2_smiles.text.description=text +vasc.entry.alef_dg2_smiles.profile_type.description=profile_type +vasc.entry.alef_dg2_run.listDescription=alef_dg2_run +vasc.entry.pagila_cust_hist_customers_customerid_list.address1.image=address1 +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.zip.description=zip +vasc.entry.pagila_cust_hist_customers_customerid_list.password.description=password +vasc.entry.pagila_products.prod_id.name=prod_id +vasc.entry.pagila_cust_hist_customers_customerid_list.phone.name=phone +vasc.entry.pagila_orderlines.orderlineid.name=orderlineid +vasc.entry.VascEntryFieldLink.createImage=resources/images/models/VascEntryFieldLink.png +vasc.entry.pagila_customers.lastname.name=lastname +vasc.entry.VascEntryFieldLink.choices.name=choices +vasc.entry.VascEntry.deleteImage.name=deleteImage +vasc.entry.VascEntryFieldLink.rolesList.name=rolesList +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.customerid.description=customerid +vasc.entry.VascEntry.helpId.name=helpId +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.netamount.image=netamount +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.address1.description=address1 +vasc.entry.VascEntry.id.image=id +vasc.entry.alef_dg2_profiles.name.name=name +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.address2.image=address2 +vasc.entry.pagila_customers.state.image=state +vasc.entry.alef_dg2_run_log.send_jokers.name=send_jokers +vasc.entry.VascEntryFieldLink.styleEdit.name=styleEdit +vasc.entry.alef_dg2_run.total_profiles.name=total_profiles +vasc.entry.meta_profiles.active.name=active +vasc.entry.meta_profiles.deleteImage=resources/images/models/meta_profiles.png +vasc.entry.meta_profiles.body_text.image=body_text +vasc.entry.pagila_orderlines_orders_orderid_list.netamount.description=netamount +vasc.entry.pagila_customers.username.name=username +vasc.entry.pagila_customers.address1.image=address1 +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.address2.description=address2 +vasc.entry.VascEntry.createImage.image=createImage +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.creditcard.description=creditcard +vasc.entry.pagila_cust_hist.customerid.name=customerid +vasc.entry.dg2_smiles._id.name=_id +vasc.entry.alef_dg2_smiles._id.name=_id +vasc.entry.dg2_smiles.createDescription=dg2_smiles +vasc.entry.pagila_orders_customers_customerid_list.deleteImage=resources/images/models/pagila_orders_customers_customerid_list.png +vasc.entry.alef_dg2_smiles.used.description=used +vasc.entry.meta_profiles.name.image=name +vasc.entry.pagila_customers.age.description=age +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.address1.image=address1 +vasc.entry.pagila_orderlines_orders_orderid_list.createImage=resources/images/models/pagila_orderlines_orders_orderid_list.png +vasc.entry.pagila_customers_cust_hist_customerid_link.customerid.description=customerid +vasc.entry.alef_dg2_run_log.send_smile.description=send_smile +vasc.entry.alef_dg2_stats.createDescription=alef_dg2_stats +vasc.entry.alef_app_settings.createDescription=alef_app_settings +vasc.entry.pagila_orders.tax.description=tax +vasc.entry.pagila_customers.state.name=state +vasc.entry.pagila_customers.address2.name=address2 +vasc.entry.pagila_customers.income.description=income +vasc.entry.alef_app_settings.deleteImage=resources/images/models/alef_app_settings.png +vasc.entry.pagila_cust_hist.createDescription=pagila_cust_hist +vasc.entry.VascEntryFieldLink.displayName.image=displayName +vasc.entry.alef_dg2_profiles.url.description=url +vasc.entry.dg2_smiles.text.name=text +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.totalamount.image=totalamount +vasc.entry.pagila_orderlines.quantity.image=quantity +vasc.entry.VascLinkEntryLink.id.description=id +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.netamount.name=netamount +vasc.entry.alef_dg2_stats.friends.image=friends +vasc.entry.pagila_customers.country.image=country +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.orderid.image=orderid +vasc.entry.VascEntry.name.name=name +vasc.entry.alef_dg2_profiles.image=alef_dg2_profiles +vasc.entry.pagila_customers.creditcardtype.description=creditcardtype +vasc.action.deleteRowAction.image=deleteRowAction +vasc.entry.pagila_cust_hist_customers_customerid_list.deleteDescription=pagila_cust_hist_customers_customerid_list +vasc.entry.VascEntry.vascAdminEdit.image=vascAdminEdit +vasc.entry.pagila_customers_cust_hist_customerid_link.listImage=resources/images/models/pagila_customers_cust_hist_customerid_link.png +vasc.entry.alef_dg2_profiles.run_date.name=run_date +vasc.entry.pagila_orders_customers_customerid_list.income.description=income +vasc.entry.alef_dg2_parser.name=alef_dg2_parser +vasc.entry.pagila_cust_hist_customers_customerid_list.email.description=email +vasc.entry.pagila_orders.image=pagila_orders +vasc.entry.VascLinkEntryLink.doActionId.image=doActionId +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.username.name=username +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.customerid.name=customerid +vasc.entry.alef_dg2_stats.editImage=resources/images/models/alef_dg2_stats.png +vasc.entry.dg2_profiles.name.name=name +vasc.entry.pagila_cust_hist_customers_customerid_list.firstname.name=firstname +vasc.entry.pagila_reorder.prod_id.name=prod_id +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.creditcardexpiration.image=creditcardexpiration +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.state.description=state +vasc.entry.pagila_orders.editDescription=pagila_orders +vasc.entry.alef_dg2_smiles.image=alef_dg2_smiles +vasc.entry.pagila_orders_customers_customerid_list.creditcardtype.description=creditcardtype +vasc.entry.dg2_profiles.image=dg2_profiles +vasc.entry.alef_dg2_stats.profile.name=profile +vasc.entry.VascEntry.vascDisplayOnly.image=vascDisplayOnly +vasc.entry.VascEntry.editImage.image=editImage +vasc.entry.pagila_inventory.editImage=resources/images/models/pagila_inventory.png +vasc.entry.pagila_orderlines_orders_orderid_list.orderid.description=orderid +vasc.entry.VascEntry.name=VascEntry +vasc.entry.pagila_customers.password.name=password +vasc.entry.VascEntry.listImage=resources/images/models/VascEntry.png +vasc.entry.pagila_orders_customers_customerid_list.address1.name=address1 +vasc.entry.pagila_customers.firstname.name=firstname +vasc.entry.pagila_customers_cust_hist_customerid_link.prod_id.description=prod_id +vasc.entry.alef_app_settings.image=alef_app_settings +vasc.entry.VascEntry.vascAdminCreate.description=vascAdminCreate +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.lastname.image=lastname +vasc.entry.VascEntry.vascAdminDelete.image=vascAdminDelete +vasc.entry.pagila_orders.customerid.name=customerid +vasc.entry.pagila_products.price.image=price +vasc.entry.pagila_customers.name=pagila_customers +vasc.entry.VascEntryFieldLink.styleList.image=styleList +vasc.entry.VascListOptionLink.editDescription=VascListOptionLink +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.firstname.name=firstname +vasc.entry.VascListOptionLink.description.description=description +vasc.entry.VascEntry.vascAdminList.name=vascAdminList +vasc.entry.alef_dg2_parser.data_type.description=data_type +vasc.entry.VascEntryFieldLink.create.description=create +vasc.entry.dg2_profiles.listImage=resources/images/models/dg2_profiles.png +vasc.entry.pagila_reorder.date_expected.name=date_expected +vasc.action.addRowAction.image=addRowAction +vasc.entry.pagila_cust_hist.orderid.image=orderid +vasc.entry.VascEntryFieldLink.view.description=view +vasc.entry.alef_dg2_profiles.profile_type.image=profile_type +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.firstname.image=firstname +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.region.description=region +vasc.entry.VascEntryFieldLink.sumable.image=sumable +vasc.entry.pagila_orders_customers_customerid_list.createDescription=pagila_orders_customers_customerid_list +vasc.entry.alef_dg2_smiles.used.image=used +vasc.entry.VascLinkEntryLink.createDescription=VascLinkEntryLink +vasc.entry.pagila_cust_hist_customers_customerid_list.zip.description=zip +vasc.entry.pagila_reorder.date_low.name=date_low +vasc.entry.VascEntryFieldSetLink.deleteImage=resources/images/models/VascEntryFieldSetLink.png +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.creditcardtype.name=creditcardtype +vasc.entry.alef_dg2_run_log.listImage=resources/images/models/alef_dg2_run_log.png +vasc.entry.alef_dg2_parser.stats_type.name=stats_type +vasc.entry.VascListOptionLink.name.image=name +vasc.entry.pagila_orders_orderlines_orderid_link.prod_id.image=prod_id +vasc.entry.VascEntry.primaryKeyFieldId.description=primaryKeyFieldId +vasc.entry.VascEntryFieldLink.helpId.name=helpId +vasc.entry.pagila_reorder.editDescription=pagila_reorder +vasc.entry.pagila_orderlines.orderid.name=orderid +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.listDescription=pagila_customers_orders_customerid_link_customers_customerid_list +vasc.entry.pagila_customers.creditcard.name=creditcard +vasc.entry.pagila_orders.listImage=resources/images/models/pagila_orders.png +vasc.entry.pagila_cust_hist_customers_customerid_list.gender.image=gender +vasc.entry.pagila_customers.customerid.description=customerid +vasc.entry.pagila_orders_customers_customerid_list.income.image=income +vasc.entry.alef_dg2_smiles.active.description=active +vasc.entry.VascEntryFieldLink.image.name=image +vasc.entry.dg2_smiles.listImage=resources/images/models/dg2_smiles.png +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.createDescription=pagila_customers_cust_hist_customerid_link_customers_customerid_list +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.region.name=region +vasc.entry.meta_profiles.deleteDescription=meta_profiles +vasc.entry.pagila_orders_orderlines_orderid_link.listDescription=pagila_orders_orderlines_orderid_link +vasc.entry.VascEntryFieldLink.editReadOnly.name=editReadOnly +vasc.entry.pagila_customers.address2.description=address2 +vasc.entry.alef_dg2_run_log.createDescription=alef_dg2_run_log +vasc.entry.pagila_customers_orders_customerid_link.image=pagila_customers_orders_customerid_link +vasc.entry.pagila_orders_orderlines_orderid_link.deleteDescription=pagila_orders_orderlines_orderid_link +vasc.entry.alef_dg2_parser.editImage=resources/images/models/alef_dg2_parser.png +vasc.entry.VascEntryFieldLink.editBlank.name=editBlank +vasc.entry.VascEntryFieldSetLink.collapsed.name=collapsed +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.city.image=city +vasc.entry.VascEntry.listImage.description=listImage +vasc.entry.pagila_customers_orders_customerid_link.editImage=resources/images/models/pagila_customers_orders_customerid_link.png +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.createDescription=pagila_orders_orderlines_orderid_link_orders_orderid_list +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.creditcardexpiration.image=creditcardexpiration +vasc.entry.alef_dg2_profiles.last_seen_date.name=last_seen_date +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.address1.description=address1 +vasc.entry.VascEntryFieldSetLink.deleteDescription=VascEntryFieldSetLink +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.lastname.name=lastname +vasc.entry.alef_dg2_stats.image=alef_dg2_stats +vasc.entry.VascEntryFieldLink.displayName.description=displayName +vasc.entry.pagila_orders_customers_customerid_list.gender.name=gender +vasc.entry.pagila_customers.createImage=resources/images/models/pagila_customers.png +vasc.entry.pagila_customers.createDescription=pagila_customers +vasc.entry.pagila_orders.orderid.description=orderid +vasc.entry.pagila_orders_customers_customerid_list.lastname.description=lastname +vasc.entry.pagila_products.name=pagila_products +vasc.entry.alef_dg2_parser._id.image=_id +vasc.entry.pagila_products.editDescription=pagila_products +vasc.entry.VascEntryFieldLink.image=VascEntryFieldLink +vasc.entry.pagila_cust_hist_customers_customerid_list.country.description=country +vasc.entry.alef_app_settings.key.image=key +vasc.entry.pagila_reorder.name=pagila_reorder +vasc.entry.pagila_orderlines_orders_orderid_list.name=pagila_orderlines_orders_orderid_list +vasc.entry.VascEntry.vascAdminCreate.image=vascAdminCreate +vasc.entry.VascLinkEntryLink.id.image=id +vasc.entry.pagila_orders_orderlines_orderid_link.orderdate.description=orderdate +vasc.entry.dg2_profiles.body_text.name=body_text +vasc.entry.VascEntryFieldLink.styleList.name=styleList +vasc.entry.pagila_orderlines_orders_orderid_list.netamount.name=netamount +vasc.entry.pagila_cust_hist_customers_customerid_list.city.image=city +vasc.entry.dg2_profiles.url.description=url +vasc.entry.meta_profiles.active.description=active +vasc.entry.pagila_reorder.date_reordered.name=date_reordered +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.state.name=state +vasc.entry.pagila_inventory.sales.name=sales +vasc.entry.VascEntryFieldSetLink.helpId.description=helpId +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.address2.name=address2 +vasc.entry.pagila_orders_orderlines_orderid_link.editImage=resources/images/models/pagila_orders_orderlines_orderid_link.png +vasc.entry.pagila_customers_cust_hist_customerid_link.orderid.description=orderid +vasc.entry.alef_dg2_smiles.active.image=active +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.income.description=income +vasc.entry.alef_dg2_profiles.active.image=active +vasc.entry.meta_profiles.listDescription=meta_profiles +vasc.entry.alef_dg2_smiles.cron_type.image=cron_type +vasc.entry.alef_dg2_stats.buddies.name=buddies +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.country.image=country +vasc.entry.VascListOptionLink.collapsed.name=collapsed +vasc.entry.pagila_cust_hist_customers_customerid_list.creditcardexpiration.description=creditcardexpiration +vasc.entry.alef_dg2_run_log.name=alef_dg2_run_log +vasc.entry.pagila_customers_orders_customerid_link.createImage=resources/images/models/pagila_customers_orders_customerid_link.png +vasc.entry.pagila_orders_customers_customerid_list.name=pagila_orders_customers_customerid_list +vasc.entry.dg2_smiles.editDescription=dg2_smiles +vasc.entry.VascEntryFieldSetLink.description.description=description +vasc.entry.pagila_cust_hist_customers_customerid_list.city.description=city +vasc.entry.alef_dg2_parser.active.description=active +vasc.entry.pagila_orderlines_orders_orderid_list.customerid.image=customerid +vasc.entry.pagila_cust_hist_customers_customerid_list.password.image=password +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.country.description=country +vasc.entry.pagila_products.actor.description=actor +vasc.entry.VascEntryFieldLink.orderIndex.image=orderIndex +vasc.entry.pagila_customers_cust_hist_customerid_link.customerid.image=customerid +vasc.entry.VascEntry.vascDisplayOnly.name=vascDisplayOnly +vasc.entry.VascEntry.deleteDescription=VascEntry +vasc.entry.VascEntryFieldLink.edit.description=edit +vasc.entry.alef_dg2_stats._id.description=_id +vasc.entry.pagila_customers.phone.name=phone +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.zip.image=zip +vasc.entry.pagila_customers_orders_customerid_link.orderdate.description=orderdate +vasc.entry.pagila_orders.deleteDescription=pagila_orders +vasc.entry.pagila_cust_hist_customers_customerid_list.lastname.description=lastname +vasc.entry.alef_app_settings.key.name=key +vasc.entry.alef_dg2_smiles.text.image=text +vasc.entry.dg2_smiles.profile_type.description=profile_type +vasc.entry.pagila_customers.password.image=password +vasc.entry.pagila_orders.orderid.image=orderid +vasc.entry.pagila_cust_hist_customers_customerid_list.createDescription=pagila_cust_hist_customers_customerid_list +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.password.name=password +vasc.entry.pagila_customers_orders_customerid_link.customerid.description=customerid +vasc.entry.alef_dg2_run.createImage=resources/images/models/alef_dg2_run.png +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.password.image=password +vasc.entry.VascEntry.editDescription.name=editDescription +vasc.entry.VascListOptionLink.createImage=resources/images/models/VascListOptionLink.png +vasc.entry.VascListOptionLink.styleList.image=styleList +vasc.entry.alef_dg2_run_log.html_body.image=html_body +vasc.entry.VascEntryFieldLink.editImage=resources/images/models/VascEntryFieldLink.png +vasc.entry.VascEntryFieldLink.deleteDescription=VascEntryFieldLink +vasc.entry.pagila_orderlines_orders_orderid_list.deleteDescription=pagila_orderlines_orders_orderid_list +vasc.entry.pagila_cust_hist_customers_customerid_list.listDescription=pagila_cust_hist_customers_customerid_list +vasc.entry.VascEntryFieldLink.list.description=list +vasc.entry.meta_profiles.name=meta_profiles +vasc.entry.pagila_cust_hist_customers_customerid_list.region.description=region +vasc.entry.alef_dg2_profiles.name.image=name +vasc.entry.pagila_customers.zip.description=zip +vasc.entry.pagila_inventory.sales.image=sales +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.deleteImage=resources/images/models/pagila_customers_cust_hist_customerid_link_customers_customerid_list.png +vasc.entry.alef_dg2_stats.createImage=resources/images/models/alef_dg2_stats.png +vasc.entry.alef_dg2_smiles.createDescription=alef_dg2_smiles +vasc.entry.pagila_customers.gender.image=gender +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.creditcardexpiration.description=creditcardexpiration +vasc.entry.VascEntryFieldLink.defaultValue.description=defaultValue +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.income.image=income +vasc.entry.VascLinkEntryLink.image=VascLinkEntryLink +vasc.entry.alef_dg2_run.total_jokers.name=total_jokers +vasc.entry.alef_dg2_run_log.profile_path.description=profile_path +vasc.entry.pagila_orders_customers_customerid_list.creditcard.name=creditcard +vasc.entry.dg2_profiles.deleteDescription=dg2_profiles +vasc.entry.pagila_customers.address1.description=address1 +vasc.entry.pagila_categories.name=pagila_categories +vasc.entry.dg2_smiles.profile_type.image=profile_type +vasc.entry.alef_dg2_parser.argu.description=argu +vasc.entry.alef_dg2_stats.guestbook.name=guestbook +vasc.entry.pagila_products.common_prod_id.image=common_prod_id +vasc.entry.VascEntryFieldLink.backendName.name=backendName +vasc.entry.alef_dg2_profiles.age.description=age +vasc.entry.alef_dg2_profiles._id.image=_id +vasc.entry.VascEntryFieldLink.sizeEdit.description=sizeEdit +vasc.entry.pagila_orders_customers_customerid_list.editImage=resources/images/models/pagila_orders_customers_customerid_list.png +vasc.entry.alef_dg2_parser.argu_extra.description=argu_extra +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.firstname.description=firstname +vasc.entry.VascEntryFieldSetLink.styleEdit.image=styleEdit +vasc.entry.alef_dg2_run.start_date.image=start_date +vasc.entry.pagila_products.editImage=resources/images/models/pagila_products.png +vasc.entry.VascEntryFieldSetLink.id.description=id +vasc.entry.pagila_orderlines.orderlineid.description=orderlineid +vasc.entry.VascListOptionLink.id.name=id +vasc.entry.pagila_orders.totalamount.image=totalamount +vasc.entry.alef_dg2_profiles.url.image=url +vasc.entry.VascListOptionLink.optional.name=optional +vasc.entry.VascEntryFieldLink.backendName.description=backendName +vasc.entry.alef_dg2_profiles.name=alef_dg2_profiles +vasc.entry.pagila_inventory.sales.description=sales +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.orderid.name=orderid +vasc.entry.alef_dg2_parser.listImage=resources/images/models/alef_dg2_parser.png +vasc.entry.VascEntryFieldLink.rolesList.image=rolesList +vasc.entry.pagila_cust_hist.customerid.image=customerid +vasc.entry.pagila_products.category.name=category +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.country.description=country +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.netamount.description=netamount +vasc.entry.alef_dg2_parser.column_name.name=column_name +vasc.entry.alef_dg2_stats.profile.image=profile +vasc.entry.meta_profiles.createDescription=meta_profiles +vasc.entry.VascEntryFieldLink.sizeList.description=sizeList +vasc.entry.pagila_orderlines_orders_orderid_list.totalamount.image=totalamount +vasc.entry.pagila_customers_orders_customerid_link.listDescription=pagila_customers_orders_customerid_link +vasc.entry.pagila_orders.name=pagila_orders +vasc.entry.pagila_products.prod_id.image=prod_id +vasc.entry.VascLinkEntryLink.vascEntryId.name=vascEntryId +vasc.entry.pagila_orders_orderlines_orderid_link.createDescription=pagila_orders_orderlines_orderid_link +vasc.entry.pagila_reorder.listImage=resources/images/models/pagila_reorder.png +vasc.entry.pagila_orders_customers_customerid_list.email.name=email +vasc.entry.VascEntryFieldLink.name.image=name +vasc.entry.meta_profiles.name.name=name +vasc.entry.VascEntry.deleteDescription.description=deleteDescription +vasc.entry.pagila_customers_cust_hist_customerid_link.listDescription=pagila_customers_cust_hist_customerid_link +vasc.entry.VascEntry.deleteImage.description=deleteImage +vasc.entry.pagila_orders_customers_customerid_list.username.image=username +vasc.entry.pagila_cust_hist_customers_customerid_list.deleteImage=resources/images/models/pagila_cust_hist_customers_customerid_list.png +vasc.entry.dg2_profiles.send_jokers.name=send_jokers +vasc.entry.alef_app_settings._id.name=_id +vasc.entry.VascEntryFieldSetLink.createDescription=VascEntryFieldSetLink +vasc.entry.pagila_products.common_prod_id.description=common_prod_id +vasc.entry.pagila_orderlines.createImage=resources/images/models/pagila_orderlines.png +vasc.entry.alef_dg2_profiles.profile_type.name=profile_type +vasc.entry.VascEntryFieldLink.sortable.name=sortable +vasc.entry.pagila_orders_orderlines_orderid_link.prod_id.name=prod_id +vasc.entry.VascListOptionLink.id.description=id +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.zip.image=zip +vasc.entry.pagila_categories.category.image=category +vasc.entry.pagila_orders_customers_customerid_list.phone.description=phone +vasc.entry.VascEntryFieldLink.rolesEditReadOnly.name=rolesEditReadOnly +vasc.entry.pagila_orderlines_orders_orderid_list.totalamount.description=totalamount +vasc.entry.alef_app_settings.editImage=resources/images/models/alef_app_settings.png +vasc.entry.alef_dg2_profiles.age.image=age +vasc.entry.pagila_customers_orders_customerid_link.totalamount.description=totalamount +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.name=pagila_customers_cust_hist_customerid_link_customers_customerid_list +vasc.entry.pagila_orders_orderlines_orderid_link.listImage=resources/images/models/pagila_orders_orderlines_orderid_link.png +vasc.entry.pagila_inventory.quan_in_stock.image=quan_in_stock +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.customerid.name=customerid +vasc.entry.alef_dg2_profiles.deleteDescription=alef_dg2_profiles +vasc.entry.pagila_orders_customers_customerid_list.state.description=state +vasc.entry.pagila_cust_hist_customers_customerid_list.customerid.image=customerid +vasc.entry.pagila_cust_hist_customers_customerid_list.address2.image=address2 +vasc.entry.pagila_cust_hist_customers_customerid_list.creditcard.image=creditcard +vasc.entry.pagila_reorder.date_expected.image=date_expected +vasc.entry.alef_dg2_profiles._id.description=_id +vasc.entry.alef_app_settings.key.description=key +vasc.entry.alef_dg2_profiles.active.name=active +vasc.entry.alef_dg2_profiles.deleteImage=resources/images/models/alef_dg2_profiles.png +vasc.entry.VascEntry.image.name=image +vasc.entry.pagila_orders_orderlines_orderid_link.name=pagila_orders_orderlines_orderid_link +vasc.entry.VascEntryFieldLink.choicesAsRadio.image=choicesAsRadio +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.listDescription=pagila_orders_orderlines_orderid_link_orders_orderid_list +vasc.entry.alef_dg2_smiles.editDescription=alef_dg2_smiles +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.phone.name=phone +vasc.entry.pagila_customers.income.name=income +vasc.entry.VascEntryFieldLink.name.name=name +vasc.entry.meta_profiles.image=meta_profiles +vasc.entry.VascEntry.vascAdminDelete.name=vascAdminDelete +vasc.entry.alef_app_settings._id.image=_id +vasc.entry.alef_dg2_parser.data_type.name=data_type +vasc.entry.pagila_orders_customers_customerid_list.age.image=age +vasc.entry.pagila_cust_hist.editDescription=pagila_cust_hist +vasc.entry.VascLinkEntryLink.name=VascLinkEntryLink +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.state.description=state +vasc.entry.VascLinkEntryLink.vascEntryId.description=vascEntryId +vasc.entry.pagila_customers.address2.image=address2 +vasc.entry.pagila_customers.listDescription=pagila_customers +vasc.entry.alef_dg2_run_log.send_jokers.image=send_jokers +vasc.entry.pagila_orderlines.prod_id.name=prod_id +vasc.entry.VascEntry.deleteDescription.image=deleteDescription +vasc.entry.pagila_customers.email.image=email +vasc.entry.pagila_products.createImage=resources/images/models/pagila_products.png +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.zip.name=zip +vasc.entry.pagila_orders_orderlines_orderid_link.createImage=resources/images/models/pagila_orders_orderlines_orderid_link.png +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.gender.name=gender +vasc.entry.VascEntryFieldSetLink.listDescription=VascEntryFieldSetLink +vasc.entry.VascLinkEntryLink.editImage=resources/images/models/VascLinkEntryLink.png +vasc.entry.pagila_customers.phone.description=phone +vasc.entry.VascEntryFieldLink.graphable.image=graphable +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.username.image=username +vasc.entry.pagila_orders_customers_customerid_list.zip.description=zip +vasc.entry.VascEntry.createDescription=VascEntry +vasc.action.refreshDataAction.description=refreshDataAction +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.firstname.image=firstname +vasc.entry.pagila_orderlines.deleteDescription=pagila_orderlines +vasc.entry.VascEntryFieldLink.name.description=name +vasc.entry.pagila_cust_hist_customers_customerid_list.customerid.description=customerid +vasc.entry.VascEntryFieldSetLink.image=VascEntryFieldSetLink +vasc.entry.meta_profiles.send_jokers.description=send_jokers +vasc.entry.pagila_orderlines_orders_orderid_list.tax.description=tax +vasc.entry.pagila_orders_customers_customerid_list.lastname.image=lastname +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.customerid.image=customerid +vasc.entry.pagila_orders.createDescription=pagila_orders +vasc.entry.pagila_orders_customers_customerid_list.country.description=country +vasc.entry.dg2_profiles.run_date.description=run_date +vasc.entry.pagila_cust_hist_customers_customerid_list.lastname.name=lastname +vasc.entry.pagila_customers_cust_hist_customerid_link.orderid.name=orderid +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.lastname.description=lastname +vasc.entry.pagila_orders_customers_customerid_list.city.description=city +vasc.entry.pagila_categories.editImage=resources/images/models/pagila_categories.png +vasc.entry.pagila_orders_customers_customerid_list.lastname.name=lastname +vasc.entry.dg2_profiles.url.name=url +vasc.entry.pagila_orderlines.prod_id.description=prod_id +vasc.entry.VascEntry.name.description=name +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.deleteImage=resources/images/models/pagila_customers_orders_customerid_link_customers_customerid_list.png +vasc.entry.pagila_categories.createDescription=pagila_categories +vasc.entry.meta_profiles._id.name=_id +vasc.entry.pagila_cust_hist_customers_customerid_list.username.name=username +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.editDescription=pagila_customers_cust_hist_customerid_link_customers_customerid_list +vasc.entry.pagila_orders.tax.name=tax +vasc.entry.pagila_cust_hist.editImage=resources/images/models/pagila_cust_hist.png +vasc.entry.pagila_orders.orderdate.image=orderdate +vasc.entry.alef_dg2_profiles.listImage=resources/images/models/alef_dg2_profiles.png +vasc.entry.dg2_profiles._id.name=_id +vasc.entry.dg2_profiles.body_text.description=body_text +vasc.entry.VascEntryFieldLink.vascEntryFieldType.image=vascEntryFieldType +vasc.entry.VascEntryFieldLink.createDescription=VascEntryFieldLink +vasc.entry.pagila_orders_customers_customerid_list.username.name=username +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.income.description=income +vasc.entry.pagila_cust_hist.customerid.description=customerid +vasc.entry.pagila_orderlines_orders_orderid_list.createDescription=pagila_orderlines_orders_orderid_list +vasc.entry.pagila_orderlines_orders_orderid_list.orderdate.name=orderdate +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.lastname.name=lastname +vasc.entry.pagila_customers.zip.image=zip +vasc.entry.VascListOptionLink.helpId.image=helpId +vasc.entry.VascLinkEntryLink.createImage=resources/images/models/VascLinkEntryLink.png +vasc.entry.pagila_orders_customers_customerid_list.creditcardtype.image=creditcardtype +vasc.entry.dg2_smiles.image=dg2_smiles +vasc.entry.alef_dg2_parser.argu_extra.image=argu_extra +vasc.entry.pagila_orderlines.listDescription=pagila_orderlines +vasc.entry.pagila_orders_customers_customerid_list.city.name=city +vasc.entry.pagila_orders.customerid.image=customerid +vasc.entry.pagila_cust_hist_customers_customerid_list.address2.name=address2 +vasc.entry.pagila_orderlines_orders_orderid_list.orderid.name=orderid +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.totalamount.name=totalamount +vasc.entry.pagila_orderlines_orders_orderid_list.editDescription=pagila_orderlines_orders_orderid_list +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.firstname.description=firstname +vasc.entry.VascEntryFieldLink.view.image=view +vasc.entry.pagila_orders_customers_customerid_list.listImage=resources/images/models/pagila_orders_customers_customerid_list.png +vasc.entry.alef_dg2_run.thread_id.name=thread_id +vasc.entry.pagila_orders_customers_customerid_list.gender.image=gender +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.phone.image=phone +vasc.entry.pagila_cust_hist_customers_customerid_list.region.image=region +vasc.entry.pagila_cust_hist_customers_customerid_list.country.image=country +vasc.entry.VascEntryFieldLink.styleEdit.description=styleEdit +vasc.entry.pagila_orders_customers_customerid_list.age.name=age +vasc.entry.VascEntryFieldSetLink.helpId.name=helpId +vasc.entry.pagila_cust_hist_customers_customerid_list.editDescription=pagila_cust_hist_customers_customerid_list +vasc.entry.alef_dg2_parser.class_name.name=class_name +vasc.entry.pagila_cust_hist_customers_customerid_list.image=pagila_cust_hist_customers_customerid_list +vasc.entry.pagila_customers_cust_hist_customerid_link.prod_id.image=prod_id +vasc.entry.pagila_orders_customers_customerid_list.country.image=country +vasc.entry.dg2_profiles.createDescription=dg2_profiles +vasc.entry.alef_dg2_parser.column_name.description=column_name +vasc.entry.VascEntry.editDescription=VascEntry +vasc.entry.dg2_profiles.name.description=name +vasc.entry.pagila_customers_orders_customerid_link.tax.name=tax +vasc.entry.pagila_categories.deleteImage=resources/images/models/pagila_categories.png +vasc.entry.alef_dg2_smiles.cron_type.description=cron_type +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.address2.name=address2 +vasc.entry.pagila_orderlines_orders_orderid_list.customerid.name=customerid +vasc.entry.pagila_products.deleteDescription=pagila_products +vasc.entry.alef_dg2_stats._id.image=_id +vasc.entry.pagila_orders_orderlines_orderid_link.orderid.name=orderid +vasc.entry.alef_dg2_profiles.body_text.image=body_text +vasc.entry.VascEntryFieldLink.graphable.name=graphable +vasc.entry.VascEntryFieldLink.rolesCreate.image=rolesCreate +vasc.entry.pagila_cust_hist_customers_customerid_list.gender.name=gender +vasc.entry.pagila_orderlines.quantity.name=quantity +vasc.entry.VascEntryFieldLink.vascEntryFieldValue.name=vascEntryFieldValue +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.country.image=country +vasc.entry.VascEntryFieldSetLink.image.description=image +vasc.entry.pagila_cust_hist_customers_customerid_list.phone.description=phone +vasc.entry.pagila_cust_hist_customers_customerid_list.customerid.name=customerid +vasc.entry.alef_dg2_stats._id.name=_id +vasc.entry.VascEntry.backendId.description=backendId +vasc.entry.VascEntryFieldSetLink.image.image=image +vasc.entry.pagila_orders.totalamount.name=totalamount +vasc.entry.pagila_inventory.prod_id.image=prod_id +vasc.entry.pagila_customers_cust_hist_customerid_link.createImage=resources/images/models/pagila_customers_cust_hist_customerid_link.png +vasc.entry.pagila_customers_cust_hist_customerid_link.name=pagila_customers_cust_hist_customerid_link +vasc.entry.pagila_cust_hist_customers_customerid_list.firstname.description=firstname +vasc.entry.alef_dg2_parser.editDescription=alef_dg2_parser +vasc.entry.alef_dg2_smiles.editImage=resources/images/models/alef_dg2_smiles.png +vasc.entry.VascEntryFieldLink.list.name=list +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.image=pagila_customers_orders_customerid_link_customers_customerid_list +vasc.entry.VascEntryFieldLink.rolesEditReadOnly.description=rolesEditReadOnly +vasc.entry.pagila_reorder.prod_id.image=prod_id +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.income.image=income +vasc.entry.pagila_cust_hist_customers_customerid_list.password.name=password +vasc.entry.pagila_cust_hist_customers_customerid_list.country.name=country +vasc.entry.pagila_cust_hist_customers_customerid_list.creditcardexpiration.name=creditcardexpiration +vasc.entry.pagila_cust_hist_customers_customerid_list.zip.image=zip +vasc.entry.VascEntry.listDescription.name=listDescription +vasc.entry.dg2_profiles._id.description=_id +vasc.entry.alef_dg2_smiles.group.image=group +vasc.entry.pagila_cust_hist_customers_customerid_list.name=pagila_cust_hist_customers_customerid_list +vasc.entry.alef_dg2_stats.profile.description=profile +vasc.entry.alef_dg2_stats.listDescription=alef_dg2_stats +vasc.entry.VascEntryFieldLink.optional.name=optional +vasc.entry.alef_dg2_smiles._id.image=_id +vasc.entry.pagila_customers_orders_customerid_link.deleteImage=resources/images/models/pagila_customers_orders_customerid_link.png +vasc.entry.VascListOptionLink.description.name=description +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.password.name=password +vasc.entry.meta_profiles.send_jokers.name=send_jokers +vasc.entry.VascEntryFieldSetLink.optional.description=optional +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.city.description=city +vasc.entry.VascListOptionLink.deleteDescription=VascListOptionLink +vasc.entry.pagila_cust_hist_customers_customerid_list.firstname.image=firstname +vasc.entry.VascLinkEntryLink.name.name=name +vasc.entry.pagila_products.special.name=special +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.customerid.description=customerid +vasc.entry.pagila_orderlines.orderdate.name=orderdate +vasc.entry.VascEntryFieldLink.id.name=id +vasc.entry.pagila_cust_hist_customers_customerid_list.age.name=age +vasc.entry.pagila_cust_hist_customers_customerid_list.phone.image=phone +vasc.entry.pagila_customers_cust_hist_customerid_link.deleteDescription=pagila_customers_cust_hist_customerid_link +vasc.entry.alef_dg2_run_log.createImage=resources/images/models/alef_dg2_run_log.png +vasc.entry.VascEntryFieldSetLink.description.image=description +vasc.entry.pagila_customers_orders_customerid_link.editDescription=pagila_customers_orders_customerid_link +vasc.entry.pagila_orders_customers_customerid_list.listDescription=pagila_orders_customers_customerid_list +vasc.entry.VascEntry.helpId.description=helpId +vasc.entry.VascEntry.image.description=image +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.name=pagila_customers_orders_customerid_link_customers_customerid_list +vasc.entry.pagila_customers.lastname.description=lastname +vasc.entry.VascEntryFieldLink.helpId.image=helpId +vasc.entry.VascEntryFieldLink.styleEdit.image=styleEdit +vasc.entry.pagila_orderlines.orderid.image=orderid +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.creditcardtype.image=creditcardtype +vasc.entry.alef_dg2_parser.createImage=resources/images/models/alef_dg2_parser.png +vasc.entry.pagila_orders_customers_customerid_list.city.image=city +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.deleteDescription=pagila_customers_orders_customerid_link_customers_customerid_list +vasc.entry.alef_app_settings._id.description=_id +vasc.entry.pagila_orderlines_orders_orderid_list.tax.image=tax +vasc.entry.alef_dg2_run.deleteImage=resources/images/models/alef_dg2_run.png +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.createImage=resources/images/models/pagila_orders_orderlines_orderid_link_orders_orderid_list.png +vasc.entry.VascListOptionLink.deleteImage=resources/images/models/VascListOptionLink.png +vasc.entry.pagila_customers_orders_customerid_link.customerid.name=customerid +vasc.entry.alef_dg2_profiles.last_seen_date.description=last_seen_date +vasc.entry.pagila_orderlines.editImage=resources/images/models/pagila_orderlines.png +vasc.entry.VascEntryFieldLink.name=VascEntryFieldLink +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.email.description=email +vasc.entry.pagila_customers.region.name=region +vasc.entry.alef_dg2_run_log.send_jokers.description=send_jokers +vasc.entry.pagila_reorder.quan_low.image=quan_low +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.gender.name=gender +vasc.entry.dg2_smiles.group.image=group +vasc.entry.pagila_customers.email.name=email +vasc.entry.pagila_customers_cust_hist_customerid_link.customerid.name=customerid +vasc.entry.pagila_reorder.createImage=resources/images/models/pagila_reorder.png +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.tax.image=tax +vasc.entry.VascEntry.name.image=name +vasc.entry.alef_dg2_smiles.text.name=text +vasc.entry.VascEntryFieldLink.id.description=id +vasc.entry.dg2_smiles.text.description=text +vasc.entry.pagila_orders_customers_customerid_list.customerid.image=customerid +vasc.entry.meta_profiles.send_jokers.image=send_jokers +vasc.entry.pagila_orders_orderlines_orderid_link.quantity.description=quantity +vasc.entry.pagila_orders_customers_customerid_list.creditcard.image=creditcard +vasc.entry.VascEntryFieldLink.image.description=image +vasc.entry.VascEntry.deleteImage=resources/images/models/VascEntry.png +vasc.entry.pagila_reorder.date_reordered.description=date_reordered +vasc.entry.VascListOptionLink.name.name=name +vasc.entry.pagila_cust_hist_customers_customerid_list.income.description=income +vasc.entry.alef_dg2_run._id.name=_id +vasc.entry.VascEntryFieldLink.vascEntryFieldValue.description=vascEntryFieldValue +vasc.entry.pagila_customers.address1.name=address1 +vasc.entry.pagila_customers.creditcardexpiration.image=creditcardexpiration +vasc.entry.VascEntryFieldLink.sortable.description=sortable +vasc.entry.alef_dg2_run_log.editDescription=alef_dg2_run_log +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.editDescription=pagila_orders_orderlines_orderid_link_orders_orderid_list +vasc.entry.pagila_reorder.quan_reordered.image=quan_reordered +vasc.entry.meta_profiles.editImage=resources/images/models/meta_profiles.png +vasc.entry.pagila_orders_orderlines_orderid_link.orderlineid.image=orderlineid +vasc.entry.pagila_categories.listImage=resources/images/models/pagila_categories.png +vasc.entry.VascEntryFieldLink.editReadOnly.image=editReadOnly +vasc.entry.VascEntry.listDescription.image=listDescription +vasc.entry.alef_dg2_run.editDescription=alef_dg2_run +vasc.entry.pagila_categories.category.name=category +vasc.entry.pagila_customers.region.image=region +vasc.entry.VascLinkEntryLink.listDescription=VascLinkEntryLink +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.address1.image=address1 +vasc.entry.pagila_orderlines.createDescription=pagila_orderlines +vasc.entry.pagila_inventory.quan_in_stock.description=quan_in_stock +vasc.entry.VascEntryFieldSetLink.collapsed.image=collapsed +vasc.entry.pagila_customers_orders_customerid_link.netamount.description=netamount +vasc.entry.pagila_orders_customers_customerid_list.phone.image=phone +vasc.entry.pagila_cust_hist.createImage=resources/images/models/pagila_cust_hist.png +vasc.entry.alef_dg2_run.stop_date.image=stop_date +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.customerid.name=customerid +vasc.entry.VascLinkEntryLink.vascEntryId.image=vascEntryId +vasc.entry.pagila_customers.gender.description=gender +vasc.entry.alef_dg2_run.start_date.name=start_date +vasc.entry.pagila_categories.category.description=category +vasc.entry.alef_dg2_profiles.run_date.image=run_date +vasc.entry.pagila_orders_orderlines_orderid_link.quantity.image=quantity +vasc.entry.pagila_inventory.image=pagila_inventory +vasc.entry.meta_profiles._id.image=_id +vasc.entry.pagila_orders_customers_customerid_list.creditcardexpiration.image=creditcardexpiration +vasc.entry.alef_dg2_run_log.run_date.name=run_date +vasc.entry.alef_dg2_run_log.image=alef_dg2_run_log +vasc.entry.pagila_categories.categoryname.name=categoryname +vasc.entry.dg2_profiles.body_text.image=body_text +vasc.entry.alef_dg2_run.name=alef_dg2_run +vasc.entry.pagila_inventory.createImage=resources/images/models/pagila_inventory.png +vasc.entry.meta_profiles.createImage=resources/images/models/meta_profiles.png +vasc.entry.alef_dg2_stats.listImage=resources/images/models/alef_dg2_stats.png +vasc.entry.pagila_customers.customerid.name=customerid +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.phone.image=phone +vasc.entry.alef_dg2_profiles.active.description=active +vasc.entry.dg2_smiles._id.description=_id +vasc.entry.meta_profiles.url.image=url +vasc.entry.pagila_orders_customers_customerid_list.createImage=resources/images/models/pagila_orders_customers_customerid_list.png +vasc.entry.dg2_smiles.group.name=group +vasc.entry.pagila_customers.region.description=region +vasc.entry.alef_dg2_smiles.deleteImage=resources/images/models/alef_dg2_smiles.png +vasc.entry.pagila_inventory.deleteDescription=pagila_inventory +vasc.entry.alef_dg2_smiles.active.name=active +vasc.entry.pagila_orders_customers_customerid_list.gender.description=gender +vasc.entry.pagila_customers_orders_customerid_link.orderid.description=orderid +vasc.entry.pagila_customers.age.name=age +vasc.entry.VascEntryFieldLink.sizeList.image=sizeList +vasc.entry.VascEntryFieldLink.description.image=description +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.totalamount.description=totalamount +vasc.entry.pagila_products.actor.name=actor +vasc.entry.pagila_cust_hist.prod_id.description=prod_id +vasc.entry.pagila_inventory.listImage=resources/images/models/pagila_inventory.png +vasc.entry.pagila_customers.country.name=country +vasc.entry.alef_app_settings.createImage=resources/images/models/alef_app_settings.png +vasc.entry.meta_profiles.name.description=name +vasc.entry.alef_dg2_run.total_profiles.description=total_profiles +vasc.entry.alef_dg2_parser.class_name.image=class_name +vasc.entry.dg2_profiles.active.name=active +vasc.entry.dg2_profiles.deleteImage=resources/images/models/dg2_profiles.png +vasc.entry.pagila_orders_customers_customerid_list.region.description=region +vasc.entry.pagila_orderlines.orderdate.description=orderdate +vasc.entry.alef_dg2_run_log.send_smile.image=send_smile +vasc.entry.VascEntryFieldLink.listDescription=VascEntryFieldLink +vasc.entry.alef_dg2_profiles.listDescription=alef_dg2_profiles +vasc.entry.alef_dg2_parser.deleteDescription=alef_dg2_parser +vasc.entry.pagila_products.createDescription=pagila_products +vasc.entry.pagila_cust_hist.image=pagila_cust_hist +vasc.entry.pagila_orders_customers_customerid_list.username.description=username +vasc.entry.alef_dg2_smiles.listImage=resources/images/models/alef_dg2_smiles.png +vasc.entry.VascEntryFieldSetLink.image.name=image +vasc.entry.pagila_customers.firstname.image=firstname +vasc.entry.pagila_orderlines.image=pagila_orderlines +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.firstname.name=firstname +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.customerid.description=customerid +vasc.entry.VascEntry.editImage.name=editImage +vasc.entry.pagila_customers_cust_hist_customerid_link.image=pagila_customers_cust_hist_customerid_link +vasc.entry.pagila_orders.netamount.name=netamount +vasc.entry.pagila_customers_orders_customerid_link.orderid.name=orderid +vasc.entry.pagila_orders_orderlines_orderid_link.quantity.name=quantity +vasc.entry.alef_dg2_run_log.html_body.description=html_body +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.customerid.image=customerid +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.creditcard.image=creditcard +vasc.entry.pagila_customers_cust_hist_customerid_link.prod_id.name=prod_id +vasc.entry.VascListOptionLink.name.description=name +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.city.description=city +vasc.entry.alef_dg2_smiles.name=alef_dg2_smiles +vasc.entry.VascLinkEntryLink.vascLinkEntryType.name=vascLinkEntryType +vasc.entry.dg2_smiles.active.name=active +vasc.entry.dg2_smiles.deleteImage=resources/images/models/dg2_smiles.png +vasc.entry.pagila_orders_customers_customerid_list.creditcard.description=creditcard +vasc.entry.VascEntryFieldLink.rolesEditReadOnly.image=rolesEditReadOnly +vasc.entry.dg2_profiles.name=dg2_profiles +vasc.entry.VascListOptionLink.id.image=id +vasc.entry.VascEntryFieldSetLink.description.name=description +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.state.name=state +vasc.entry.alef_dg2_profiles.cron_type.image=cron_type +vasc.entry.VascListOptionLink.styleEdit.image=styleEdit +vasc.entry.VascEntryFieldLink.choicesAsRadio.description=choicesAsRadio +vasc.entry.VascEntryFieldLink.deleteImage=resources/images/models/VascEntryFieldLink.png +vasc.entry.pagila_products.special.description=special +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.editImage=resources/images/models/pagila_customers_cust_hist_customerid_link_customers_customerid_list.png +vasc.entry.pagila_orderlines_orders_orderid_list.orderid.image=orderid +vasc.entry.pagila_reorder.quan_reordered.name=quan_reordered +vasc.entry.pagila_customers_orders_customerid_link.listImage=resources/images/models/pagila_customers_orders_customerid_link.png +vasc.entry.alef_dg2_profiles.cron_type.description=cron_type +vasc.entry.VascEntryFieldSetLink.styleEdit.description=styleEdit +vasc.entry.alef_dg2_profiles.age.name=age +vasc.entry.pagila_products.deleteImage=resources/images/models/pagila_products.png +vasc.entry.pagila_orders.tax.image=tax +vasc.entry.pagila_orderlines.quantity.description=quantity +vasc.entry.alef_dg2_profiles.url.name=url +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.state.image=state +vasc.entry.VascListOptionLink.createDescription=VascListOptionLink +vasc.entry.VascEntry.displayNameFieldId.name=displayNameFieldId +vasc.entry.dg2_profiles.send_jokers.image=send_jokers +vasc.entry.pagila_cust_hist_customers_customerid_list.username.image=username +vasc.entry.VascLinkEntryLink.doActionId.name=doActionId +vasc.entry.meta_profiles.run_date.description=run_date +vasc.entry.VascEntryFieldLink.editReadOnly.description=editReadOnly +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.email.name=email +vasc.entry.pagila_orderlines_orders_orderid_list.deleteImage=resources/images/models/pagila_orderlines_orders_orderid_list.png +vasc.entry.VascEntryFieldSetLink.createImage=resources/images/models/VascEntryFieldSetLink.png +vasc.entry.pagila_customers_cust_hist_customerid_link.createDescription=pagila_customers_cust_hist_customerid_link +vasc.entry.alef_dg2_profiles._id.name=_id +vasc.entry.alef_app_settings.value.name=value +vasc.entry.alef_dg2_run.stop_date.name=stop_date +vasc.entry.pagila_orderlines_orders_orderid_list.editImage=resources/images/models/pagila_orderlines_orders_orderid_list.png +vasc.entry.pagila_cust_hist_customers_customerid_list.state.name=state +vasc.entry.pagila_products.special.image=special +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.editDescription=pagila_customers_orders_customerid_link_customers_customerid_list +vasc.entry.alef_app_settings.value.description=value +vasc.entry.pagila_orderlines.listImage=resources/images/models/pagila_orderlines.png +vasc.entry.pagila_customers.creditcardtype.name=creditcardtype +vasc.entry.pagila_reorder.date_expected.description=date_expected +vasc.entry.alef_dg2_run.total_jokers.image=total_jokers +vasc.entry.VascEntry.displayNameFieldId.description=displayNameFieldId +vasc.entry.VascEntry.backendId.name=backendId +vasc.entry.VascEntryFieldSetLink.collapsed.description=collapsed +vasc.entry.pagila_orders.netamount.description=netamount +vasc.entry.dg2_smiles.profile_type.name=profile_type +vasc.entry.VascEntry.id.description=id +vasc.entry.VascEntry.backendId.image=backendId +vasc.action.refreshDataAction.image=refreshDataAction +vasc.entry.pagila_orders_orderlines_orderid_link.editDescription=pagila_orders_orderlines_orderid_link +vasc.entry.alef_dg2_parser.active.image=active +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.address1.name=address1 +vasc.entry.VascEntryFieldLink.sumable.name=sumable +vasc.entry.dg2_profiles.profile_type.description=profile_type +vasc.entry.alef_app_settings.name=alef_app_settings +vasc.entry.alef_dg2_run_log._id.name=_id +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.createDescription=pagila_customers_orders_customerid_link_customers_customerid_list +vasc.entry.VascEntryFieldSetLink.styleList.description=styleList +vasc.entry.VascEntryFieldLink.rolesEdit.description=rolesEdit +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.tax.name=tax +vasc.entry.VascEntryFieldLink.defaultValue.image=defaultValue +vasc.entry.alef_dg2_run.deleteDescription=alef_dg2_run +vasc.entry.pagila_products.category.image=category +vasc.entry.VascEntryFieldLink.choicesAsRadio.name=choicesAsRadio +vasc.entry.pagila_orders_orderlines_orderid_link.orderid.image=orderid +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.username.image=username +vasc.entry.pagila_orders_customers_customerid_list.editDescription=pagila_orders_customers_customerid_list +vasc.entry.pagila_cust_hist_customers_customerid_list.creditcardtype.description=creditcardtype +vasc.entry.VascListOptionLink.styleEdit.description=styleEdit +vasc.entry.VascEntryFieldLink.graphable.description=graphable +vasc.entry.meta_profiles.listImage=resources/images/models/meta_profiles.png +vasc.entry.VascEntryFieldLink.rolesEdit.image=rolesEdit +vasc.entry.alef_app_settings.deleteDescription=alef_app_settings +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.gender.description=gender +vasc.entry.pagila_cust_hist.deleteDescription=pagila_cust_hist +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.age.description=age +vasc.entry.dg2_profiles.profile_type.image=profile_type +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.name=pagila_orders_orderlines_orderid_link_orders_orderid_list +vasc.entry.VascListOptionLink.image=VascListOptionLink +vasc.entry.VascEntry.editDescription.description=editDescription +vasc.entry.VascEntryFieldSetLink.id.name=id +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.username.description=username +vasc.entry.pagila_orders_customers_customerid_list.customerid.name=customerid +vasc.entry.pagila_cust_hist_customers_customerid_list.income.name=income +vasc.entry.pagila_inventory.prod_id.description=prod_id +vasc.entry.pagila_orders.listDescription=pagila_orders +vasc.entry.VascEntryFieldLink.create.image=create +vasc.entry.pagila_categories.image=pagila_categories +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.address2.description=address2 +vasc.entry.VascListOptionLink.collapsed.description=collapsed +vasc.entry.pagila_products.common_prod_id.name=common_prod_id +vasc.entry.pagila_orderlines_orders_orderid_list.tax.name=tax +vasc.entry.VascEntry.listImage.image=listImage +vasc.entry.pagila_cust_hist.prod_id.image=prod_id +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.region.description=region +vasc.entry.pagila_orders_customers_customerid_list.region.image=region +vasc.entry.VascEntryFieldLink.choices.description=choices +vasc.entry.pagila_orderlines_orders_orderid_list.netamount.image=netamount +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.creditcardexpiration.description=creditcardexpiration +vasc.entry.alef_dg2_smiles._id.description=_id +vasc.entry.VascListOptionLink.styleList.description=styleList +vasc.entry.VascEntryFieldLink.orderIndex.name=orderIndex +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.creditcard.description=creditcard +vasc.entry.alef_dg2_run_log.profile_path.name=profile_path +vasc.entry.pagila_customers.city.image=city +vasc.entry.pagila_cust_hist.name=pagila_cust_hist +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.age.image=age +vasc.entry.pagila_customers.creditcardexpiration.description=creditcardexpiration +vasc.entry.pagila_cust_hist_customers_customerid_list.state.image=state +vasc.entry.VascEntry.editImage.description=editImage +vasc.entry.pagila_orders.netamount.image=netamount +vasc.entry.pagila_cust_hist_customers_customerid_list.lastname.image=lastname +vasc.entry.meta_profiles.editDescription=meta_profiles +vasc.entry.pagila_cust_hist_customers_customerid_list.email.image=email +vasc.entry.VascEntryFieldLink.sizeEdit.name=sizeEdit +vasc.entry.dg2_smiles.active.description=active +vasc.entry.pagila_customers.state.description=state +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.zip.name=zip +vasc.entry.pagila_cust_hist_customers_customerid_list.age.description=age +vasc.entry.dg2_profiles.listDescription=dg2_profiles +vasc.entry.VascEntryFieldLink.listImage=resources/images/models/VascEntryFieldLink.png +vasc.entry.VascListOptionLink.listDescription=VascListOptionLink +vasc.entry.alef_dg2_run_log.run_date.image=run_date +vasc.entry.alef_dg2_smiles.group.description=group +vasc.entry.meta_profiles.url.name=url +vasc.entry.VascEntryFieldSetLink.name.name=name +vasc.entry.dg2_profiles.run_date.name=run_date +vasc.entry.pagila_orderlines_orders_orderid_list.orderdate.image=orderdate +vasc.entry.pagila_orders.totalamount.description=totalamount +vasc.entry.alef_dg2_stats.date.name=date +vasc.entry.dg2_profiles.name.image=name +vasc.entry.VascEntryFieldLink.vascEntryFieldType.description=vascEntryFieldType +vasc.entry.alef_dg2_parser.stats_type.description=stats_type +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.password.image=password +vasc.entry.pagila_customers.lastname.image=lastname +vasc.entry.pagila_inventory.createDescription=pagila_inventory +vasc.entry.pagila_orders_customers_customerid_list.firstname.image=firstname +vasc.entry.alef_dg2_smiles.used.name=used +vasc.entry.pagila_inventory.quan_in_stock.name=quan_in_stock +vasc.entry.alef_dg2_parser.data_type.image=data_type +vasc.entry.VascEntryFieldSetLink.optional.image=optional +vasc.entry.VascEntry.id.name=id +vasc.entry.alef_dg2_profiles.body_text.description=body_text +vasc.entry.alef_dg2_smiles.cron_type.name=cron_type +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.lastname.image=lastname +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.gender.image=gender +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.editImage=resources/images/models/pagila_customers_orders_customerid_link_customers_customerid_list.png +vasc.entry.pagila_orders_customers_customerid_list.country.name=country +vasc.entry.pagila_categories.listDescription=pagila_categories +vasc.entry.meta_profiles.run_date.image=run_date +vasc.entry.pagila_orders_customers_customerid_list.creditcardexpiration.name=creditcardexpiration +vasc.entry.pagila_inventory.listDescription=pagila_inventory +vasc.entry.VascListOptionLink.editImage=resources/images/models/VascListOptionLink.png +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.customerid.image=customerid +vasc.entry.dg2_smiles.cron_type.description=cron_type +vasc.entry.alef_dg2_parser.argu.name=argu +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.creditcard.image=creditcard +vasc.entry.VascEntry.vascDisplayOnly.description=vascDisplayOnly +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.creditcardtype.description=creditcardtype +vasc.entry.dg2_smiles.cron_type.name=cron_type +vasc.entry.pagila_orders_customers_customerid_list.income.name=income +vasc.entry.pagila_reorder.deleteDescription=pagila_reorder +vasc.entry.pagila_reorder.quan_low.description=quan_low +vasc.entry.pagila_orders_customers_customerid_list.address2.name=address2 +vasc.entry.alef_app_settings.listDescription=alef_app_settings +vasc.entry.VascLinkEntryLink.deleteDescription=VascLinkEntryLink +vasc.entry.alef_dg2_parser.createDescription=alef_dg2_parser +vasc.entry.pagila_orders_customers_customerid_list.password.description=password +vasc.entry.pagila_products.listImage=resources/images/models/pagila_products.png +vasc.entry.VascEntry.editDescription.image=editDescription +vasc.entry.VascListOptionLink.image.description=image +vasc.entry.pagila_orderlines.orderlineid.image=orderlineid +vasc.entry.pagila_customers.deleteImage=resources/images/models/pagila_customers.png +vasc.entry.VascEntryFieldSetLink.name.description=name +vasc.entry.pagila_cust_hist.orderid.name=orderid +vasc.entry.pagila_orders_customers_customerid_list.state.image=state +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.city.name=city +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.orderdate.description=orderdate +vasc.entry.pagila_customers.firstname.description=firstname +vasc.entry.pagila_orders_customers_customerid_list.email.image=email +vasc.entry.VascEntryFieldSetLink.name.image=name +vasc.entry.VascEntryFieldLink.editDescription=VascEntryFieldLink +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.createImage=resources/images/models/pagila_customers_cust_hist_customerid_link_customers_customerid_list.png +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.listImage=resources/images/models/pagila_customers_cust_hist_customerid_link_customers_customerid_list.png +vasc.entry.pagila_orders.createImage=resources/images/models/pagila_orders.png +vasc.entry.alef_dg2_run_log.editImage=resources/images/models/alef_dg2_run_log.png +vasc.entry.alef_dg2_parser.argu.image=argu +vasc.entry.pagila_products.listDescription=pagila_products +vasc.entry.pagila_products.title.image=title +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.creditcard.name=creditcard +vasc.entry.pagila_customers_orders_customerid_link.netamount.name=netamount +vasc.entry.pagila_inventory.name=pagila_inventory +vasc.entry.VascListOptionLink.optional.image=optional +vasc.entry.pagila_orders.orderid.name=orderid +vasc.entry.pagila_cust_hist_customers_customerid_list.state.description=state +vasc.entry.meta_profiles.url.description=url +vasc.entry.VascEntryFieldLink.styleList.description=styleList +vasc.entry.pagila_reorder.deleteImage=resources/images/models/pagila_reorder.png +vasc.entry.alef_app_settings.value.image=value +vasc.entry.VascEntry.primaryKeyFieldId.image=primaryKeyFieldId +vasc.entry.pagila_customers_orders_customerid_link.tax.description=tax +vasc.entry.pagila_customers.image=pagila_customers +vasc.entry.pagila_orders_customers_customerid_list.password.name=password +vasc.entry.pagila_cust_hist_customers_customerid_list.creditcardtype.image=creditcardtype +vasc.entry.VascEntry.image=VascEntry +vasc.entry.pagila_products.prod_id.description=prod_id +vasc.entry.pagila_customers_orders_customerid_link.orderdate.image=orderdate +vasc.entry.meta_profiles.active.image=active +vasc.entry.pagila_orders_customers_customerid_list.image=pagila_orders_customers_customerid_list +vasc.entry.VascEntry.vascAdminList.image=vascAdminList +vasc.entry.alef_dg2_profiles.run_date.description=run_date +vasc.entry.alef_dg2_parser.class_name.description=class_name +vasc.entry.VascEntryFieldLink.editBlank.description=editBlank +vasc.entry.alef_dg2_parser._id.description=_id +vasc.entry.VascListOptionLink.description.image=description +vasc.entry.pagila_products.price.description=price +vasc.entry.alef_app_settings.listImage=resources/images/models/alef_app_settings.png +vasc.entry.pagila_customers.editImage=resources/images/models/pagila_customers.png +vasc.entry.pagila_cust_hist.deleteImage=resources/images/models/pagila_cust_hist.png +vasc.entry.pagila_orders_customers_customerid_list.address1.image=address1 +vasc.entry.dg2_smiles.listDescription=dg2_smiles +vasc.entry.pagila_orderlines.orderid.description=orderid +vasc.entry.alef_dg2_smiles.group.name=group +vasc.entry.pagila_customers.creditcard.description=creditcard +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.age.image=age +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.creditcardtype.description=creditcardtype +vasc.entry.VascEntryFieldLink.vascEntryFieldValue.image=vascEntryFieldValue +vasc.entry.pagila_customers_orders_customerid_link.totalamount.name=totalamount +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.username.description=username +vasc.entry.alef_dg2_profiles.last_seen_date.image=last_seen_date +vasc.entry.alef_dg2_stats.friends.name=friends +vasc.entry.alef_dg2_smiles.profile_type.image=profile_type +vasc.entry.pagila_customers_orders_customerid_link_customers_customerid_list.region.image=region +vasc.entry.VascListOptionLink.image.image=image +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.creditcardexpiration.name=creditcardexpiration +vasc.entry.pagila_inventory.deleteImage=resources/images/models/pagila_inventory.png +vasc.entry.alef_dg2_run.createDescription=alef_dg2_run +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.tax.description=tax +vasc.entry.pagila_customers_cust_hist_customerid_link.editDescription=pagila_customers_cust_hist_customerid_link +vasc.entry.pagila_orders.orderdate.name=orderdate +vasc.entry.alef_dg2_profiles.createDescription=alef_dg2_profiles +vasc.entry.alef_dg2_run.total_profiles.image=total_profiles +vasc.entry.pagila_orderlines_orders_orderid_list.orderdate.description=orderdate +vasc.entry.pagila_customers_orders_customerid_link.deleteDescription=pagila_customers_orders_customerid_link +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.city.image=city +vasc.entry.pagila_cust_hist_customers_customerid_list.createImage=resources/images/models/pagila_cust_hist_customers_customerid_list.png +vasc.entry.pagila_orders_orderlines_orderid_link.orderlineid.description=orderlineid +vasc.entry.VascEntry.image.image=image +vasc.entry.dg2_smiles.group.description=group +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.orderdate.image=orderdate +vasc.entry.alef_dg2_run.start_date.description=start_date +vasc.entry.VascEntryFieldLink.defaultValue.name=defaultValue +vasc.entry.dg2_smiles.cron_type.image=cron_type +vasc.entry.pagila_customers_cust_hist_customerid_link_customers_customerid_list.password.description=password +vasc.entry.alef_dg2_stats.buddies.description=buddies +vasc.entry.VascLinkEntryLink.listImage=resources/images/models/VascLinkEntryLink.png +vasc.entry.pagila_orders_orderlines_orderid_link_orders_orderid_list.orderid.description=orderid +vasc.entry.alef_dg2_stats.date.image=date +vasc.entry.alef_dg2_parser.image=alef_dg2_parser +vasc.entry.alef_dg2_stats.deleteImage=resources/images/models/alef_dg2_stats.png +vasc.entry.VascEntryFieldSetLink.helpId.image=helpId +vasc.entry.pagila_orders_customers_customerid_list.creditcardexpiration.description=creditcardexpiration +vasc.entry.pagila_cust_hist_customers_customerid_list.region.name=region diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/pom.xml b/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/pom.xml index a01901b..bcc855a 100644 --- a/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/pom.xml +++ b/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/pom.xml @@ -31,19 +31,11 @@ vasc-demo-tech-editor ${project.version} - - net.forwardfire.vasc.demo - vasc-demo-tech-web - ${project.version} - war - compile - net.forwardfire.vasc.demo vasc-demo-tech-web ${project.version} jar - compile net.forwardfire.vasc diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/DeployManager.java b/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/DeployManager.java new file mode 100644 index 0000000..8de95b2 --- /dev/null +++ b/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/DeployManager.java @@ -0,0 +1,158 @@ +package net.forwardfire.vasc.demo.tech.ui; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.math.BigInteger; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.HashMap; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +import net.forwardfire.vasc.demo.tech.ui.components.JMainPanel; + +public class DeployManager { + + private Logger logger = null; + private File deployDir = null; + private int scanPeriod = 3; + private AutoDeployManager autoDeployManager = null; + private Map fileCheckSums = null; + + public DeployManager() { + logger = Logger.getLogger(DeployManager.class.getName()); + fileCheckSums = new HashMap(20); + } + + public void start() { + if (deployDir==null) { + throw new NullPointerException("Can't deploy with null deployDir."); + } + if (deployDir.exists()==false) { + throw new IllegalStateException("Can't deploy with non-existing deployDir."); + } + if (deployDir.isDirectory()==false) { + throw new IllegalStateException("Can't deploy with non-directory deployDir."); + } + Thread scanThread = new Thread(new AutoDeployManager()); + scanThread.setName("hotdeploy-scanner"); + scanThread.start(); + } + + public void stop() { + if (autoDeployManager==null) { + return; + } + autoDeployManager.stop(); + } + + + public String createMd5Sum(File file) throws IOException, NoSuchAlgorithmException { + FileInputStream in = new FileInputStream(file.getAbsolutePath()); + try { + byte[] b = new byte[1024 * 64]; + int num = 0; + MessageDigest md = MessageDigest.getInstance("MD5"); + while ((num = in.read(b)) != -1) { + md.update(b, 0, num); + } + byte[] hashBytes = md.digest(); + BigInteger hashResult = new BigInteger(hashBytes); + String hashString = hashResult.toString(16); + return hashString; + } finally { + if (in != null) { + in.close(); + } + } + } + + + private void hotDeployVasc() throws NoSuchAlgorithmException, IOException { + boolean deployed = false; + for (File file:deployDir.listFiles()) { + if (file.canRead()==false) { + continue; + } + if (file.getName().endsWith("xml")==false) { + continue; + } + String md5File = createMd5Sum(file); + String md5Deploy = fileCheckSums.get(file); + if (md5Deploy!=null && md5Deploy.equals(md5File)) { + continue; + } + fileCheckSums.put(file, md5File); + deployed = true; + TechUI.getInstance().getVascManager().openFile(file); + } + if (deployed) { + ((JMainPanel)TechUI.getInstance().getMainView().getComponent()).rebuildTree(); + } + } + + protected class AutoDeployManager implements Runnable { + private volatile boolean run = true; + public void run() { + try { + Thread.sleep(5000); // let gui+tomcat start + logger.info("AutoDeployManager started"); + while(run) { + try { + hotDeployVasc(); + } catch (Exception e) { + logger.log(Level.WARNING,"Error while depoying: "+e.getMessage(),e); + } + + if (scanPeriod == 0) { + scanPeriod = 1; + } + try { + Thread.sleep(1000*scanPeriod); + } catch (InterruptedException ie) { + logger.info("Interrupted sleep"); + break; + } + } + } catch (Exception e) { + logger.log(Level.SEVERE,"Error in run: "+e.getMessage(),e); + } finally { + logger.info("AutoDeployManager stoped"); + } + } + public void stop() { + run = false; + this.notify(); + } + } + + /** + * @return the deployDir + */ + public File getDeployDir() { + return deployDir; + } + + /** + * @param deployDir the deployDir to set + */ + public void setDeployDir(File deployDir) { + this.deployDir = deployDir; + } + + /** + * @return the scanPeriod + */ + public int getScanPeriod() { + return scanPeriod; + } + + /** + * @param scanPeriod the scanPeriod to set + */ + public void setScanPeriod(int scanPeriod) { + this.scanPeriod = scanPeriod; + } +} diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/TechUI.java b/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/TechUI.java index 7952588..505bbf7 100644 --- a/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/TechUI.java +++ b/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/TechUI.java @@ -29,7 +29,10 @@ import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.io.StringWriter; +import java.util.ArrayList; import java.util.EventObject; +import java.util.Iterator; +import java.util.List; import java.util.logging.Handler; import java.util.logging.LogManager; import java.util.logging.Logger; @@ -49,8 +52,10 @@ import net.forwardfire.vasc.demo.tech.ui.components.JMainPanelMenuBar; public class TechUI extends SingleFrameApplication { private Logger logger = null; + private boolean showGui = false; private DemoVascManager vascManager = null; private TomcatManager tomcatManager = null; + private DeployManager deployManager = null; static public void main(String[] args) { Application.launch(TechUI.class, args); @@ -99,6 +104,7 @@ public class TechUI extends SingleFrameApplication { public void willExit(EventObject event) { logger.info("Shutdown requested."); long startTime = System.currentTimeMillis(); + deployManager.stop(); try { tomcatManager.stop(); } catch (Exception e) { @@ -110,32 +116,83 @@ public class TechUI extends SingleFrameApplication { } } - private void autoLoadVasc() { - File autoLoadDir = new File("auto"); - if (autoLoadDir.exists()==false) { - return; - } - for (File file:autoLoadDir.listFiles()) { - if (file.canRead()==false) { - continue; - } - if (file.getName().endsWith("xml")==false) { - continue; - } - vascManager.openFile(file); - } - } + - protected void initialize(String[] args) { + protected void initialize(String[] argu) { long startTime = System.currentTimeMillis(); + + // First parse user program arguments. + String serverHost = null; + String serverPort = null; + List arguList = new ArrayList(argu.length); + for (String a:argu) { + arguList.add(a); + } + Iterator arguIterator = arguList.iterator(); + while (arguIterator.hasNext()) { + String arg = arguIterator.next(); + if ("-v".equals(arg)) { + System.out.println(); + System.out.println("Optional:"); + System.out.println(" -host Sets the http hostname."); + System.out.println(" -port Sets the http port."); + System.out.println(" -gui Sets gui mode."); + System.out.println(" -h Print help. (this)"); + System.out.println(); + System.exit(1); + } + if ("-gui".equals(arg)) { + showGui = true; + } + if ("-port".equals(arg)) { + if (arguIterator.hasNext()==false) { + System.out.println("No argument for -port given."); + return; + } + serverPort = arguIterator.next(); + System.exit(1); + } + if ("-host".equals(arg)) { + if (arguIterator.hasNext()==false) { + System.out.println("No argument for -host given."); + return; + } + serverHost = arguIterator.next(); + System.exit(1); + } + } + setupLogging(); logger.info("Starting Vasc-Demo-Tech-UI."); + + File deployDir = new File("deploy"); + File workDir = new File("workdir"); + if (isMavenRun()) { + if (deployDir.exists()==false) { + deployDir.mkdir(); + } + if (workDir.exists()==false) { + workDir.mkdir(); + } + } + + vascManager = new DemoVascManager(); vascManager.start(); - autoLoadVasc(); + + deployManager = new DeployManager(); + deployManager.setDeployDir(deployDir); + deployManager.start(); tomcatManager = new TomcatManager(); + tomcatManager.setWorkDir(workDir); tomcatManager.setVascController(vascManager.getVascController()); + if (serverHost!=null) { + tomcatManager.setHostname(serverHost); + } + if (serverPort!=null) { + tomcatManager.setPort(new Integer(serverPort)); + } Thread t = new Thread(new Runnable() { public void run() { @@ -158,11 +215,24 @@ public class TechUI extends SingleFrameApplication { long startTime = System.currentTimeMillis(); addExitListener(new ShutdownManager()); - FrameView mainView = getMainView(); - mainView.setComponent(new JMainPanel()); - mainView.setMenuBar(new JMainPanelMenuBar()); - mainView.getFrame().setMinimumSize(new Dimension(1024-64,768-128)); - show(mainView); + if (showGui) { + FrameView mainView = getMainView(); + mainView.setComponent(new JMainPanel()); + mainView.setMenuBar(new JMainPanelMenuBar()); + mainView.getFrame().setMinimumSize(new Dimension(1024-64,768-128)); + show(mainView); + } else { + Thread t = new Thread(new Runnable() { + public void run() { + while(true) + try { + Thread.sleep(3333); + } catch (InterruptedException e) { + } + } + }); + t.start(); + } long stopTime = System.currentTimeMillis(); logger.info("TechUI startup in "+(stopTime-startTime)+" ms total startup in "+(stopTime-startTime)+" ms."); @@ -188,4 +258,8 @@ public class TechUI extends SingleFrameApplication { public VascController getVascController() { return vascManager.getVascController(); } + + public boolean isMavenRun() { + return System.getProperty("java.class.path").contains("classes"); + } } diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/TomcatManager.java b/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/TomcatManager.java index 989f9b9..55cae71 100644 --- a/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/TomcatManager.java +++ b/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/TomcatManager.java @@ -17,19 +17,24 @@ public class TomcatManager { private Logger logger = null; private Tomcat tomcat = null; private VascController vascController = null; + private String hostname = null; + private Integer port = null; + private File workDir = null; public TomcatManager() { logger = Logger.getLogger(TomcatManager.class.getName()); + hostname = "localhost"; + port = 8899; } public void start() throws Exception { - Tomcat tomcat = new Tomcat(); - - String webPort = System.getenv("PORT"); - if(webPort == null || webPort.isEmpty()) { - webPort = "8899"; + if (workDir==null) { + throw new NullPointerException("Can't start tomcat with null workDir."); } - tomcat.setPort(Integer.valueOf(webPort)); + Tomcat tomcat = new Tomcat(); + tomcat.setBaseDir(workDir.getAbsolutePath()); + tomcat.setPort(getPort()); + tomcat.setHostname(getHostname()); if (System.getProperty("java.class.path").contains("classes")) { String webappPathLocation = "../vasc-demo-tech-web/src/main/webapp/"; @@ -40,7 +45,7 @@ public class TomcatManager { File techWarFile = null; for (File file:new File("lib").listFiles()) { - if (file.getName().endsWith("war")) { + if (file.getName().contains("vasc-demo-tech-web")) { techWarFile = file; break; } @@ -48,7 +53,7 @@ public class TomcatManager { if (techWarFile==null) { throw new NullPointerException("Could not locate war file in lib directory."); } - File destDir = new File("tomcat.wars"+File.separator+techWarFile.getName()); + File destDir = new File(workDir,"tomcat.wars"+File.separator+techWarFile.getName()); if (destDir.exists()==false) { destDir.mkdirs(); JarFile jar = new JarFile(techWarFile); @@ -72,10 +77,7 @@ public class TomcatManager { String deployPath = destDir.getAbsolutePath(); logger.info("Deploy war path: "+deployPath); tomcat.addWebapp("/demo",deployPath); - } - - instance = this; - + } tomcat.start(); } @@ -84,12 +86,6 @@ public class TomcatManager { return; } tomcat.stop(); - instance = null; - } - - static private TomcatManager instance = null; - static public TomcatManager getInstance() { - return instance; // hackje to rm mvn 1-1 dep with ui } /** @@ -105,4 +101,46 @@ public class TomcatManager { public void setVascController(VascController vascController) { this.vascController = vascController; } + + /** + * @return the hostname + */ + public String getHostname() { + return hostname; + } + + /** + * @param hostname the hostname to set + */ + public void setHostname(String hostname) { + this.hostname = hostname; + } + + /** + * @return the port + */ + public Integer getPort() { + return port; + } + + /** + * @param port the port to set + */ + public void setPort(Integer port) { + this.port = port; + } + + /** + * @return the workDir + */ + public File getWorkDir() { + return workDir; + } + + /** + * @param workDir the workDir to set + */ + public void setWorkDir(File workDir) { + this.workDir = workDir; + } } diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/actions/JDialogMetaCsv.java b/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/actions/JDialogMetaCsv.java index b8d042a..78306e6 100644 --- a/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/actions/JDialogMetaCsv.java +++ b/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/actions/JDialogMetaCsv.java @@ -17,8 +17,8 @@ import javax.swing.JLabel; import javax.swing.JPanel; import net.forwardfire.vasc.backend.metamodel.MetaModelDataContextCsv; +import net.forwardfire.vasc.backend.metamodel.MetaModelSchemaAutoEntry; import net.forwardfire.vasc.demo.tech.ui.TechUI; -import net.forwardfire.vasc.demo.tech.ui.VascAutoSchemaMetaModel; import net.forwardfire.vasc.demo.tech.ui.components.JMainPanel; public class JDialogMetaCsv extends JDialog implements ActionListener { @@ -64,8 +64,11 @@ public class JDialogMetaCsv extends JDialog implements ActionListener { File file = fc.getSelectedFile(); MetaModelDataContextCsv ds = new MetaModelDataContextCsv(); ds.setFile(file.getAbsolutePath()); - VascAutoSchemaMetaModel schema = new VascAutoSchemaMetaModel(TechUI.getInstance().getVascManager().getVascController()); - schema.createMetaEntry(ds,file.getName(),null); + + MetaModelSchemaAutoEntry schema = new MetaModelSchemaAutoEntry(); + schema.setDataContextProvider(ds); + schema.setEntryPrefix(file.getName()); + schema.autoCreateEntries(TechUI.getInstance().getVascManager().getVascController()); ((JMainPanel)TechUI.getInstance().getMainView().getComponent()).rebuildTree(); } } diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/actions/JDialogMetaJdbc.java b/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/actions/JDialogMetaJdbc.java index fd8a58f..d2fac82 100644 --- a/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/actions/JDialogMetaJdbc.java +++ b/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/actions/JDialogMetaJdbc.java @@ -18,13 +18,11 @@ import javax.swing.JTextField; import javax.swing.SpringLayout; import net.forwardfire.vasc.backend.metamodel.MetaModelDataContextJdbc; +import net.forwardfire.vasc.backend.metamodel.MetaModelSchemaAutoEntry; import net.forwardfire.vasc.demo.tech.ui.TechUI; -import net.forwardfire.vasc.demo.tech.ui.VascAutoSchemaMetaModel; import net.forwardfire.vasc.demo.tech.ui.components.JMainPanel; import net.forwardfire.vasc.demo.tech.ui.components.SpringLayoutGrid; -import org.eobjects.metamodel.DataContext; - public class JDialogMetaJdbc extends JDialog implements ActionListener { private static final long serialVersionUID = -8638394652416472734L; @@ -89,12 +87,11 @@ public class JDialogMetaJdbc extends JDialog implements ActionListener { ds.setConnectUrl(url); ds.setUsername(usernameField.getText()); ds.setPassword(passwordField.getText()); - DataContext metaDs = ds.getDataContext(); String dbName = url.substring(url.lastIndexOf('/')+1,url.length()); - VascAutoSchemaMetaModel schema = new VascAutoSchemaMetaModel(TechUI.getInstance().getVascManager().getVascController()); - for (String table:metaDs.getDefaultSchema().getTableNames()) { - schema.createMetaEntry(ds,dbName+"_"+table,table); - } + MetaModelSchemaAutoEntry schema = new MetaModelSchemaAutoEntry(); + schema.setDataContextProvider(ds); + schema.setEntryPrefix(dbName); + schema.autoCreateEntries(TechUI.getInstance().getVascManager().getVascController()); ((JMainPanel)TechUI.getInstance().getMainView().getComponent()).rebuildTree(); } }); diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/actions/JDialogMetaMongodb.java b/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/actions/JDialogMetaMongodb.java index 1e46524..9623123 100644 --- a/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/actions/JDialogMetaMongodb.java +++ b/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/actions/JDialogMetaMongodb.java @@ -17,8 +17,8 @@ import javax.swing.JTextField; import javax.swing.SpringLayout; import net.forwardfire.vasc.backend.metamodel.MetaModelDataContextMongodb; +import net.forwardfire.vasc.backend.metamodel.MetaModelSchemaAutoEntry; import net.forwardfire.vasc.demo.tech.ui.TechUI; -import net.forwardfire.vasc.demo.tech.ui.VascAutoSchemaMetaModel; import net.forwardfire.vasc.demo.tech.ui.components.JMainPanel; import net.forwardfire.vasc.demo.tech.ui.components.SpringLayoutGrid; @@ -79,11 +79,11 @@ public class JDialogMetaMongodb extends JDialog implements ActionListener { ds.setHostname(hostNameField.getText()); ds.setPort(new Integer(hostPortField.getText())); ds.setDatabase(databaseField.getText()); - DataContext metaDs = ds.getDataContext(); - VascAutoSchemaMetaModel schema = new VascAutoSchemaMetaModel(TechUI.getInstance().getVascManager().getVascController()); - for (String table:metaDs.getDefaultSchema().getTableNames()) { - schema.createMetaEntry(ds,ds.getDatabase()+"_"+table,table); - } + + MetaModelSchemaAutoEntry schema = new MetaModelSchemaAutoEntry(); + schema.setDataContextProvider(ds); + schema.setEntryPrefix(ds.getDatabase()); + schema.autoCreateEntries(TechUI.getInstance().getVascManager().getVascController()); ((JMainPanel)TechUI.getInstance().getMainView().getComponent()).rebuildTree(); } }); diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/components/JMainPanel.java b/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/components/JMainPanel.java index e2f7fc1..18e05d0 100644 --- a/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/components/JMainPanel.java +++ b/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/components/JMainPanel.java @@ -58,7 +58,6 @@ import net.forwardfire.vasc.demo.tech.ui.TechUI; import net.forwardfire.vasc.frontend.swing.SwingPanelIntegration; import net.forwardfire.vasc.frontend.swing.SwingPanelTabbed; import net.forwardfire.vasc.impl.DefaultVascFactory; -import net.forwardfire.vasc.lib.i18n.bundle.RootApplicationBundle_en; import net.forwardfire.vasc.test.i18n.VascBundleCheckEntryKeys; public class JMainPanel extends JPanel { @@ -291,15 +290,14 @@ public class JMainPanel extends JPanel { } File resourceFile = new File("auto/data/vasc-bundle.properties"); if (resourceFile.exists()) { - readPropertiesFile(p,resourceFile); + readPropertiesFile(p,resourceFile); } for (String key:keys.keySet()) { p.put(key, keys.get(key)); } writePropertiesFile(p,resourceFile); - new RootApplicationBundle_en().reload(); - RootApplicationBundle_en.clearCache(); + ResourceBundle.clearCache(); } } diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/components/JMainPanelMenuBar.java b/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/components/JMainPanelMenuBar.java index 99b17ab..e386b40 100644 --- a/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/components/JMainPanelMenuBar.java +++ b/vasc-demo/vasc-demo-tech/vasc-demo-tech-ui/src/main/java/net/forwardfire/vasc/demo/tech/ui/components/JMainPanelMenuBar.java @@ -10,6 +10,8 @@ import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JTabbedPane; +import net.forwardfire.vasc.backend.VascBackendControllerLocal; +import net.forwardfire.vasc.core.VascEntryControllerLocal; import net.forwardfire.vasc.demo.tech.ui.TechUI; import net.forwardfire.vasc.demo.tech.ui.actions.JDialogMetaCsv; import net.forwardfire.vasc.demo.tech.ui.actions.JDialogMetaJdbc; @@ -17,14 +19,15 @@ import net.forwardfire.vasc.demo.tech.ui.actions.JDialogMetaMongodb; public class JMainPanelMenuBar extends JMenuBar { + private static final long serialVersionUID = -2828428804621352725L; JMenu fileMenu = new JMenu("File"); - JMenu connMenu = new JMenu("Connection"); + JMenu vascMenu = new JMenu("Vasc"); JMenu tabMenu = new JMenu("Tabs"); public JMainPanelMenuBar() { createMenuItems(); add(fileMenu); - add(connMenu); + add(vascMenu); add(tabMenu); } @@ -61,17 +64,18 @@ public class JMainPanelMenuBar extends JMenuBar { fileMenu.add(exitItem); JMenuItem connectVascItem = new JMenuItem("Add Vasc"); + connectVascItem.setEnabled(false); connectVascItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); - connMenu.add(connectVascItem); + vascMenu.add(connectVascItem); JMenuItem connectLdapItem = new JMenuItem("Add Ldap"); connectLdapItem.setEnabled(false); - connMenu.add(connectLdapItem); - connMenu.addSeparator(); + vascMenu.add(connectLdapItem); + vascMenu.addSeparator(); JMenuItem connectMetaCsvItem = new JMenuItem("Add meta csv"); connectMetaCsvItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { @@ -79,9 +83,10 @@ public class JMainPanelMenuBar extends JMenuBar { d.setVisible(true); } }); - connMenu.add(connectMetaCsvItem); + vascMenu.add(connectMetaCsvItem); JMenuItem connectMetaXmlItem = new JMenuItem("Add meta xml"); - connMenu.add(connectMetaXmlItem); + connectMetaXmlItem.setEnabled(false); + vascMenu.add(connectMetaXmlItem); JMenuItem connectMetaMongoItem = new JMenuItem("Add meta mongo"); connectMetaMongoItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { @@ -89,7 +94,7 @@ public class JMainPanelMenuBar extends JMenuBar { d.setVisible(true); } }); - connMenu.add(connectMetaMongoItem); + vascMenu.add(connectMetaMongoItem); JMenuItem connectMetaJdbcItem = new JMenuItem("Add meta jdbc"); connectMetaJdbcItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { @@ -97,27 +102,39 @@ public class JMainPanelMenuBar extends JMenuBar { d.setVisible(true); } }); - connMenu.add(connectMetaJdbcItem); + vascMenu.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.addSeparator(); + JMenuItem removeEntryItem = new JMenuItem("Remove entry"); + removeEntryItem.setEnabled(false); + removeEntryItem.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + } + }); + vascMenu.add(removeEntryItem); + + JMenuItem removeAllItem = new JMenuItem("Remove all"); + removeAllItem.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + VascBackendControllerLocal backends = (VascBackendControllerLocal)TechUI.getInstance().getVascManager().getVascController().getVascBackendController(); + VascEntryControllerLocal entries = (VascEntryControllerLocal)TechUI.getInstance().getVascManager().getVascController().getVascEntryController(); + for (String entryId:entries.getVascEntryIds()) { + if (entryId.startsWith("Vasc")) { + continue; } + entries.removeVascEntry(entryId); } - - }); - vascMenu.add(item); - } - */ - + for (String backendId:backends.getVascBackendIds()) { + if (backendId.startsWith("Vasc")) { + continue; + } + backends.removeVascBackendById(backendId); + } + ((JMainPanel)TechUI.getInstance().getMainView().getComponent()).rebuildTree(); + } + }); + vascMenu.add(removeAllItem); + JMenuItem item = new JMenuItem("Close tab"); item.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-web/pom.xml b/vasc-demo/vasc-demo-tech/vasc-demo-tech-web/pom.xml index 5cfc35c..0b0ac5f 100644 --- a/vasc-demo/vasc-demo-tech/vasc-demo-tech-web/pom.xml +++ b/vasc-demo/vasc-demo-tech/vasc-demo-tech-web/pom.xml @@ -9,7 +9,16 @@ vasc-demo-tech-web vasc-demo-tech-web vasc-demo-tech-web - war + + + + src/main/resources + + + src/main/webapp + + + diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-web/src/main/java/net/forwardfire/vasc/demo/tech/web/beans/ExportController.java b/vasc-demo/vasc-demo-tech/vasc-demo-tech-web/src/main/java/net/forwardfire/vasc/demo/tech/web/beans/ExportController.java new file mode 100644 index 0000000..eb4a6e8 --- /dev/null +++ b/vasc-demo/vasc-demo-tech/vasc-demo-tech-web/src/main/java/net/forwardfire/vasc/demo/tech/web/beans/ExportController.java @@ -0,0 +1,106 @@ +package net.forwardfire.vasc.demo.tech.web.beans; + +import java.util.ArrayList; +import java.util.List; + +import javax.faces.model.SelectItem; + +import net.forwardfire.vasc.core.VascController; +import net.forwardfire.vasc.core.entry.VascEntryExporter; +import net.forwardfire.vasc.demo.tech.core.DemoVascControllerProvider; + +public class ExportController { + + private String entryId = "VascEntry"; + private String exportType = "xml"; + private boolean exportTree = true; + private VascController vascController = null; + + public ExportController() { + DemoVascControllerProvider provider = new DemoVascControllerProvider(); + vascController = provider.getVascController(); + } + + public List getEntryIdSelectItems() { + List result = new ArrayList(); + for (String entryId:vascController.getVascEntryController().getVascEntryIds()) { + SelectItem i = new SelectItem(); + i.setLabel(entryId); + i.setValue(entryId); + result.add(i); + } + return result; + } + + public List getExportTypeSelectItems() { + List result = new ArrayList(); + for (VascEntryExporter ex:vascController.getVascEntryConfigController().getVascEntryExporters()) { + SelectItem i = new SelectItem(); + i.setLabel(ex.getId()); + i.setValue(ex.getId()); + result.add(i); + } + return result; + } + + public String getBuildExportUrl() { + StringBuilder buff = new StringBuilder(); + if (exportTree) { + buff.append("export-tree/"); + buff.append(getEntryId()); + buff.append('/'); + buff.append(getExportType()); + } else { + buff.append("export"); + buff.append("?ve="); + buff.append(getEntryId()); + buff.append("&et="); + buff.append(getExportType()); + } + return buff.toString(); + } + + /** + * @return the entryId + */ + public String getEntryId() { + return entryId; + } + + /** + * @param entryId the entryId to set + */ + public void setEntryId(String entryId) { + this.entryId = entryId; + } + + /** + * @return the exportType + */ + public String getExportType() { + return exportType; + } + + /** + * @param exportType the exportType to set + */ + public void setExportType(String exportType) { + this.exportType = exportType; + } + + /** + * @return the exportTree + */ + public boolean isExportTree() { + return exportTree; + } + + /** + * @param exportTree the exportTree to set + */ + public void setExportTree(boolean exportTree) { + this.exportTree = exportTree; + } + + +} diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-web/src/main/webapp/WEB-INF/faces.xml b/vasc-demo/vasc-demo-tech/vasc-demo-tech-web/src/main/webapp/WEB-INF/faces.xml index cdb0533..6e1f5da 100644 --- a/vasc-demo/vasc-demo-tech/vasc-demo-tech-web/src/main/webapp/WEB-INF/faces.xml +++ b/vasc-demo/vasc-demo-tech/vasc-demo-tech-web/src/main/webapp/WEB-INF/faces.xml @@ -23,4 +23,11 @@ session + + Controls Vasc Export Url Generator + exportController + net.forwardfire.vasc.demo.tech.web.beans.ExportController + session + + \ No newline at end of file diff --git a/vasc-demo/vasc-demo-tech/vasc-demo-tech-web/src/main/webapp/jsp/admin/index.xhtml b/vasc-demo/vasc-demo-tech/vasc-demo-tech-web/src/main/webapp/jsp/admin/index.xhtml index e139722..c06660f 100644 --- a/vasc-demo/vasc-demo-tech/vasc-demo-tech-web/src/main/webapp/jsp/admin/index.xhtml +++ b/vasc-demo/vasc-demo-tech/vasc-demo-tech-web/src/main/webapp/jsp/admin/index.xhtml @@ -7,16 +7,57 @@ Vasc Admin - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vasc-frontend/vasc-frontend-cxf/vasc-frontend-cxf-server/src/main/java/net/forwardfire/vasc/frontend/cxf/server/web/VascCXFServlet.java b/vasc-frontend/vasc-frontend-cxf/vasc-frontend-cxf-server/src/main/java/net/forwardfire/vasc/frontend/cxf/server/web/VascCXFServlet.java index 81d6a57..0edc912 100644 --- a/vasc-frontend/vasc-frontend-cxf/vasc-frontend-cxf-server/src/main/java/net/forwardfire/vasc/frontend/cxf/server/web/VascCXFServlet.java +++ b/vasc-frontend/vasc-frontend-cxf/vasc-frontend-cxf-server/src/main/java/net/forwardfire/vasc/frontend/cxf/server/web/VascCXFServlet.java @@ -55,11 +55,11 @@ public class VascCXFServlet extends CXFNonSpringServlet { @Override public void init(ServletConfig sc) throws ServletException { - String className = getInitParameter("vascControllerProvider"); + String className = sc.getInitParameter("vascControllerProvider"); if (className==null) { throw new ServletException("Can't start with null vascControllerProvider init parameter."); } - String exportTreeStr = getInitParameter("exportTree"); + String exportTreeStr = sc.getInitParameter("exportTree"); if (exportTreeStr!=null && "true".equalsIgnoreCase(exportTreeStr)) { exportTree = true; } diff --git a/vasc-frontend/vasc-frontend-swing/src/main/java/net/forwardfire/vasc/frontend/swing/SwingVascEditDialog.java b/vasc-frontend/vasc-frontend-swing/src/main/java/net/forwardfire/vasc/frontend/swing/SwingVascEditDialog.java index 8bda714..73399ed 100644 --- a/vasc-frontend/vasc-frontend-swing/src/main/java/net/forwardfire/vasc/frontend/swing/SwingVascEditDialog.java +++ b/vasc-frontend/vasc-frontend-swing/src/main/java/net/forwardfire/vasc/frontend/swing/SwingVascEditDialog.java @@ -25,7 +25,6 @@ package net.forwardfire.vasc.frontend.swing; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.Font; -import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -197,12 +196,14 @@ public class SwingVascEditDialog extends JPanel { //if(entry.getVascFrontendData().getVascFrontendHelper().validateObject(entry, bean)) { // return; //} - - result = bean; - entry.getVascFrontendData().getVascEntryState().setEntryDataObject(result); - entry.getVascFrontendData().getVascFrontendActions().mergeObject(); + + if (entry.getVascFrontendData().getVascEntryState().isEditCreate()) { + entry.getVascFrontendData().getVascFrontendActions().persistObject(); + } else { + entry.getVascFrontendData().getVascFrontendActions().mergeObject(); + } panels.closeVascView(editView, SwingVascEditDialog.this.entry); //setVisible(false); diff --git a/vasc-frontend/vasc-frontend-swing/src/main/java/net/forwardfire/vasc/frontend/swing/SwingVascFrontend.java b/vasc-frontend/vasc-frontend-swing/src/main/java/net/forwardfire/vasc/frontend/swing/SwingVascFrontend.java index a69bbc7..34aff93 100644 --- a/vasc-frontend/vasc-frontend-swing/src/main/java/net/forwardfire/vasc/frontend/swing/SwingVascFrontend.java +++ b/vasc-frontend/vasc-frontend-swing/src/main/java/net/forwardfire/vasc/frontend/swing/SwingVascFrontend.java @@ -167,9 +167,11 @@ public class SwingVascFrontend extends AbstractVascFrontend { beanValue=beanValue.substring(0, 30); } } + JPanel editPanel = panels.initVascView(); SwingVascEditDialog dialog = new SwingVascEditDialog(this,editPanel,entry,rowBean,beanValue,panels); + entry.getVascFrontendData().getVascFrontendHelper().editReadOnlyUIComponents(entry); panels.openVascView(editPanel,entry); } diff --git a/vasc-frontend/vasc-frontend-web-jsf/src/main/java/net/forwardfire/vasc/frontend/web/jsf/AbstractJSFVascFacesControllerEJB.java b/vasc-frontend/vasc-frontend-web-jsf/src/main/java/net/forwardfire/vasc/frontend/web/jsf/AbstractJSFVascFacesControllerEJB.java index f0c3fe0..59967a8 100644 --- a/vasc-frontend/vasc-frontend-web-jsf/src/main/java/net/forwardfire/vasc/frontend/web/jsf/AbstractJSFVascFacesControllerEJB.java +++ b/vasc-frontend/vasc-frontend-web-jsf/src/main/java/net/forwardfire/vasc/frontend/web/jsf/AbstractJSFVascFacesControllerEJB.java @@ -175,7 +175,12 @@ abstract public class AbstractJSFVascFacesControllerEJB extends AbstractJSFVascF this.backendId=backendId; this.vascManager=vascManager; } - + + public void startBackend() { + } + public void stopBackend() { + } + public void delete(Object object) throws VascException { Object[] args = new Object[1]; args[0]=object; diff --git a/vasc-frontend/vasc-frontend-web-jsf/src/main/java/net/forwardfire/vasc/frontend/web/jsf/JSFVascEntrySupportBean.java b/vasc-frontend/vasc-frontend-web-jsf/src/main/java/net/forwardfire/vasc/frontend/web/jsf/JSFVascEntrySupportBean.java index ff76ecd..35b66bc 100644 --- a/vasc-frontend/vasc-frontend-web-jsf/src/main/java/net/forwardfire/vasc/frontend/web/jsf/JSFVascEntrySupportBean.java +++ b/vasc-frontend/vasc-frontend-web-jsf/src/main/java/net/forwardfire/vasc/frontend/web/jsf/JSFVascEntrySupportBean.java @@ -680,7 +680,12 @@ public class JSFVascEntrySupportBean implements Serializable { */ entry.getVascFrontendData().getVascEntryState().setEntryDataObject(selected.getRecord()); - entry.getVascFrontendData().getVascFrontendActions().mergeObject(); + + if (entry.getVascFrontendData().getVascEntryState().isEditCreate()) { + entry.getVascFrontendData().getVascFrontendActions().persistObject(); + } else { + entry.getVascFrontendData().getVascFrontendActions().mergeObject(); + } try { entry.getVascFrontendData().getVascFrontend().renderView(); diff --git a/vasc-lib/vasc-lib-i18n/src/main/java/net/forwardfire/vasc/lib/i18n/config/BundleConfigParser.java b/vasc-lib/vasc-lib-i18n/src/main/java/net/forwardfire/vasc/lib/i18n/config/BundleConfigParser.java index 2f83a63..8e3b3f4 100644 --- a/vasc-lib/vasc-lib-i18n/src/main/java/net/forwardfire/vasc/lib/i18n/config/BundleConfigParser.java +++ b/vasc-lib/vasc-lib-i18n/src/main/java/net/forwardfire/vasc/lib/i18n/config/BundleConfigParser.java @@ -109,7 +109,7 @@ public class BundleConfigParser { String value = properties.getProperty(key); result.put(key,value); } - logger.info("Loaded "+bundle.getName()+" with total keys: "+result.size()); + logger.fine("Loaded "+bundle.getName()+" with total keys: "+result.size()); return result; }