merge osgi branch

This commit is contained in:
Heng Sin Low 2010-07-05 17:00:27 +08:00
commit 5b7f513937
497 changed files with 17399 additions and 411 deletions

View File

@ -10,6 +10,6 @@
<classpathentry kind="lib" path="/tools/lib/ojdbc6.jar"/> <classpathentry kind="lib" path="/tools/lib/ojdbc6.jar"/>
<classpathentry kind="lib" path="/tools/lib/barbecue-1.5-beta1.jar"/> <classpathentry kind="lib" path="/tools/lib/barbecue-1.5-beta1.jar"/>
<classpathentry combineaccessrules="false" kind="src" path="/serverApps"/> <classpathentry combineaccessrules="false" kind="src" path="/serverApps"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="build"/> <classpathentry kind="output" path="build"/>
</classpath> </classpath>

View File

@ -23,7 +23,12 @@
</arguments> </arguments>
</buildCommand> </buildCommand>
<buildCommand> <buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name> <name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments> <arguments>
</arguments> </arguments>
</buildCommand> </buildCommand>
@ -33,5 +38,6 @@
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature> <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature> <nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature> <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
</natures> </natures>
</projectDescription> </projectDescription>

View File

@ -0,0 +1,16 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: JasperReports
Bundle-SymbolicName: JasperReports
Bundle-Version: 1.0.0.qualifier
Bundle-ClassPath: JasperReports.jar,
lib/postgresql.jar,
lib/ocrs12.jar,
lib/ojdbc14.jar,
lib/barbecue-1.5-beta1.jar
Export-Package: org.compiere.interfaces,
org.compiere.report,
org.compiere.utils
Require-Bundle: org.adempiere.base;bundle-version="0.0.0",
org.adempiere.JasperReportsTools;bundle-version="1.0.0",
org.adempiere.client;bundle-version="0.0.0"

View File

@ -0,0 +1,7 @@
source.JasperReports.jar = src/, build/
bin.includes = META-INF/,\
lib/postgresql.jar,\
lib/ocrs12.jar,\
lib/ojdbc14.jar,\
lib/barbecue-1.5-beta1.jar,\
JasperReports.jar

View File

@ -69,6 +69,7 @@ import org.compiere.db.CConnection;
import org.compiere.interfaces.MD5; import org.compiere.interfaces.MD5;
import org.compiere.model.MAttachment; import org.compiere.model.MAttachment;
import org.compiere.model.MAttachmentEntry; import org.compiere.model.MAttachmentEntry;
import org.compiere.model.MBPartner;
import org.compiere.model.MProcess; import org.compiere.model.MProcess;
import org.compiere.model.PrintInfo; import org.compiere.model.PrintInfo;
import org.compiere.model.X_AD_PInstance_Para; import org.compiere.model.X_AD_PInstance_Para;
@ -110,7 +111,7 @@ public class ReportStarter implements ProcessCall, ClientProcess
private static File REPORT_HOME = null; private static File REPORT_HOME = null;
private static JRViewerProvider viewerProvider = new SwingJRViewerProvider(); private static JRViewerProvider viewerProvider = new SwingJRViewerProvider();
private static JasperPrint jasperPrint; private static JasperPrint jasperPrint;
static { static {
String reportPath = System.getProperty("org.compiere.report.path"); String reportPath = System.getProperty("org.compiere.report.path");
@ -626,12 +627,12 @@ public class ReportStarter implements ProcessCall, ClientProcess
return true; return true;
} }
public static JasperPrint getJasperPrint() public static JasperPrint getJasperPrint()
{ {
return jasperPrint; return jasperPrint;
} }
/** /**
* Get .property resource file from process attachment * Get .property resource file from process attachment
* @param jasperName * @param jasperName

View File

@ -28,5 +28,6 @@
</classpathentry> </classpathentry>
<classpathentry combineaccessrules="false" kind="src" path="/tools"/> <classpathentry combineaccessrules="false" kind="src" path="/tools"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/> <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@ -16,7 +16,12 @@
</arguments> </arguments>
</buildCommand> </buildCommand>
<buildCommand> <buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name> <name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments> <arguments>
</arguments> </arguments>
</buildCommand> </buildCommand>
@ -26,5 +31,6 @@
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature> <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature> <nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature> <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
</natures> </natures>
</projectDescription> </projectDescription>

View File

@ -0,0 +1,199 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: JasperReportsTools
Bundle-SymbolicName: org.adempiere.JasperReportsTools
Bundle-Version: 1.0.0.qualifier
Bundle-ClassPath: lib/commons-beanutils-1.7.jar,
lib/commons-digester-1.7.jar,
lib/iReport.jar,
lib/jasperreports-3.5.3.jar,
lib/jfreechart-1.0.3.jar
Export-Package: .,
be.savat.components,
it.businesslogic.ireport,
it.businesslogic.ireport.barcode,
it.businesslogic.ireport.chart,
it.businesslogic.ireport.chart.gui,
it.businesslogic.ireport.compiler,
it.businesslogic.ireport.compiler.xml,
it.businesslogic.ireport.connection,
it.businesslogic.ireport.connection.gui,
it.businesslogic.ireport.crosstab,
it.businesslogic.ireport.crosstab.gui,
it.businesslogic.ireport.data,
it.businesslogic.ireport.data.ejbql,
it.businesslogic.ireport.data.hibernate,
it.businesslogic.ireport.data.olap,
it.businesslogic.ireport.data.xml,
it.businesslogic.ireport.dtds,
it.businesslogic.ireport.examples,
it.businesslogic.ireport.examples.beans,
it.businesslogic.ireport.examples.chart,
it.businesslogic.ireport.examples.queryexecuter,
it.businesslogic.ireport.export,
it.businesslogic.ireport.gui,
it.businesslogic.ireport.gui.actions,
it.businesslogic.ireport.gui.box,
it.businesslogic.ireport.gui.command,
it.businesslogic.ireport.gui.dnd,
it.businesslogic.ireport.gui.docking,
it.businesslogic.ireport.gui.documentstructure,
it.businesslogic.ireport.gui.event,
it.businesslogic.ireport.gui.expbuilder,
it.businesslogic.ireport.gui.export,
it.businesslogic.ireport.gui.fonts,
it.businesslogic.ireport.gui.library,
it.businesslogic.ireport.gui.library.objects,
it.businesslogic.ireport.gui.listview,
it.businesslogic.ireport.gui.locale,
it.businesslogic.ireport.gui.logpane,
it.businesslogic.ireport.gui.prompt,
it.businesslogic.ireport.gui.queryexecuters,
it.businesslogic.ireport.gui.sheet,
it.businesslogic.ireport.gui.style,
it.businesslogic.ireport.gui.subdataset,
it.businesslogic.ireport.gui.syntax,
it.businesslogic.ireport.gui.table,
it.businesslogic.ireport.gui.wizard,
it.businesslogic.ireport.icons,
it.businesslogic.ireport.icons.charts,
it.businesslogic.ireport.icons.crosstab,
it.businesslogic.ireport.icons.datasource,
it.businesslogic.ireport.icons.docking,
it.businesslogic.ireport.icons.layout,
it.businesslogic.ireport.icons.library,
it.businesslogic.ireport.icons.log,
it.businesslogic.ireport.icons.menu,
it.businesslogic.ireport.icons.newtoolbar,
it.businesslogic.ireport.icons.olap,
it.businesslogic.ireport.icons.palette,
it.businesslogic.ireport.icons.problems,
it.businesslogic.ireport.icons.sheet,
it.businesslogic.ireport.icons.styles,
it.businesslogic.ireport.icons.toolbars,
it.businesslogic.ireport.icons.toolbars.format,
it.businesslogic.ireport.icons.toolbars.text,
it.businesslogic.ireport.icons.tree,
it.businesslogic.ireport.icons.tree.editor,
it.businesslogic.ireport.icons.tree.elements,
it.businesslogic.ireport.icons.tree.javabean,
it.businesslogic.ireport.icons.xml,
it.businesslogic.ireport.locale,
it.businesslogic.ireport.plugin,
it.businesslogic.ireport.plugin.checkupdate,
it.businesslogic.ireport.plugin.examples,
it.businesslogic.ireport.plugin.jforg,
it.businesslogic.ireport.plugin.jrx,
it.businesslogic.ireport.plugin.locale,
it.businesslogic.ireport.plugin.massivecompiler,
it.businesslogic.ireport.plugin.oracle,
it.businesslogic.ireport.plugin.textwizard,
it.businesslogic.ireport.refactoring,
it.businesslogic.ireport.res,
it.businesslogic.ireport.rmi,
it.businesslogic.ireport.undo,
it.businesslogic.ireport.util,
net.sf.jasperreports.ant,
net.sf.jasperreports.charts,
net.sf.jasperreports.charts.base,
net.sf.jasperreports.charts.design,
net.sf.jasperreports.charts.fill,
net.sf.jasperreports.charts.util,
net.sf.jasperreports.charts.xml,
net.sf.jasperreports.compilers,
net.sf.jasperreports.components,
net.sf.jasperreports.components.barbecue,
net.sf.jasperreports.components.barcode4j,
net.sf.jasperreports.components.list,
net.sf.jasperreports.crosstabs,
net.sf.jasperreports.crosstabs.base,
net.sf.jasperreports.crosstabs.design,
net.sf.jasperreports.crosstabs.fill,
net.sf.jasperreports.crosstabs.fill.calculation,
net.sf.jasperreports.crosstabs.xml,
net.sf.jasperreports.engine,
net.sf.jasperreports.engine.base,
net.sf.jasperreports.engine.component,
net.sf.jasperreports.engine.convert,
net.sf.jasperreports.engine.data,
net.sf.jasperreports.engine.design,
net.sf.jasperreports.engine.design.events,
net.sf.jasperreports.engine.dtds,
net.sf.jasperreports.engine.export,
net.sf.jasperreports.engine.export.data,
net.sf.jasperreports.engine.export.draw,
net.sf.jasperreports.engine.export.legacy,
net.sf.jasperreports.engine.export.oasis,
net.sf.jasperreports.engine.export.ooxml,
net.sf.jasperreports.engine.export.xmlss,
net.sf.jasperreports.engine.export.zip,
net.sf.jasperreports.engine.fill,
net.sf.jasperreports.engine.fonts,
net.sf.jasperreports.engine.images,
net.sf.jasperreports.engine.print,
net.sf.jasperreports.engine.query,
net.sf.jasperreports.engine.scriptlets,
net.sf.jasperreports.engine.util,
net.sf.jasperreports.engine.util.xml,
net.sf.jasperreports.engine.xml,
net.sf.jasperreports.extensions,
net.sf.jasperreports.governors,
net.sf.jasperreports.j2ee.servlets,
net.sf.jasperreports.olap,
net.sf.jasperreports.olap.mapping,
net.sf.jasperreports.olap.mondrian,
net.sf.jasperreports.olap.result,
net.sf.jasperreports.olap.xmla,
net.sf.jasperreports.renderers,
net.sf.jasperreports.swing,
net.sf.jasperreports.view,
net.sf.jasperreports.view.images,
net.sf.jasperreports.view.save,
org.apache.commons.beanutils,
org.apache.commons.beanutils.converters,
org.apache.commons.beanutils.locale,
org.apache.commons.beanutils.locale.converters,
org.apache.commons.collections,
org.apache.commons.digester,
org.apache.commons.digester.parser,
org.apache.commons.digester.plugins,
org.apache.commons.digester.plugins.strategies,
org.apache.commons.digester.substitution,
org.apache.commons.digester.xmlrules,
org.jfree.chart,
org.jfree.chart.annotations,
org.jfree.chart.axis,
org.jfree.chart.block,
org.jfree.chart.demo,
org.jfree.chart.editor,
org.jfree.chart.encoders,
org.jfree.chart.entity,
org.jfree.chart.event,
org.jfree.chart.imagemap,
org.jfree.chart.labels,
org.jfree.chart.needle,
org.jfree.chart.plot,
org.jfree.chart.renderer,
org.jfree.chart.renderer.category,
org.jfree.chart.renderer.xy,
org.jfree.chart.resources,
org.jfree.chart.servlet,
org.jfree.chart.title,
org.jfree.chart.urls,
org.jfree.chart.util,
org.jfree.data,
org.jfree.data.category,
org.jfree.data.contour,
org.jfree.data.function,
org.jfree.data.gantt,
org.jfree.data.general,
org.jfree.data.io,
org.jfree.data.jdbc,
org.jfree.data.resources,
org.jfree.data.statistics,
org.jfree.data.time,
org.jfree.data.xml,
org.jfree.data.xy,
org.syntax.jedit,
org.syntax.jedit.tokenmarker,
org.w3c.tools.codec

View File

@ -0,0 +1,6 @@
bin.includes = META-INF/,\
lib/commons-beanutils-1.7.jar,\
lib/commons-digester-1.7.jar,\
lib/iReport.jar,\
lib/jasperreports-3.5.3.jar,\
lib/jfreechart-1.0.3.jar

View File

@ -23,7 +23,6 @@
<attribute name="org.eclipse.jst.component.dependency" value="../"/> <attribute name="org.eclipse.jst.component.dependency" value="../"/>
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
<classpathentry kind="lib" path="/tools/lib/junit.jar"> <classpathentry kind="lib" path="/tools/lib/junit.jar">
<attributes> <attributes>
<attribute name="org.eclipse.jst.component.dependency" value="../"/> <attribute name="org.eclipse.jst.component.dependency" value="../"/>
@ -101,5 +100,6 @@
</classpathentry> </classpathentry>
<classpathentry kind="src" path="/JasperReportsTools"/> <classpathentry kind="src" path="/JasperReportsTools"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/> <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="build"/> <classpathentry kind="output" path="build"/>
</classpath> </classpath>

View File

@ -25,7 +25,12 @@
</arguments> </arguments>
</buildCommand> </buildCommand>
<buildCommand> <buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name> <name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments> <arguments>
</arguments> </arguments>
</buildCommand> </buildCommand>
@ -34,6 +39,7 @@
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature> <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature> <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature> <nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature> <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
</natures> </natures>
</projectDescription> </projectDescription>

66
base/META-INF/MANIFEST.MF Normal file
View File

@ -0,0 +1,66 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: org.adempiere.base
Bundle-SymbolicName: org.adempiere.base;singleton:=true
Bundle-Version: 0.0.0.2
Bundle-ClassPath: base.jar,
lib/commons-net-1.4.0.jar,
lib/ant.jar,
lib/jpedal.jar,
lib/jnlp.jar,
lib/junit.jar,
client/jbossall-client.jar,
lib/postgresql.jar,
lib/ocrs12.jar,
lib/ojdbc14.jar,
lib/c3p0-0.9.1.2.jar,
lib/script-api.jar,
lib/barbecue-1.5-beta1.jar,
lib/poi-3.0.1-FINAL-20070705.jar,
lib/jcommon-1.0.14.jar,
lib/jfreechart-1.0.11.jar,
lib/swingx-0.9.0.jar,
lib/looks-2.0.4.jar,
lib/commons-collections-3.1.jar,
lib/activemq-core-5.0.0.jar
Export-Package: org.adempiere.apps.graph,
org.adempiere.as,
org.adempiere.base,
org.adempiere.exceptions,
org.adempiere.impexp,
org.adempiere.model,
org.adempiere.pdf,
org.adempiere.pdf.viewer,
org.adempiere.pipo,
org.adempiere.pipo.exception,
org.adempiere.pipo.handler,
org.adempiere.plaf,
org.adempiere.print.export,
org.adempiere.process,
org.adempiere.process.rpl,
org.adempiere.process.rpl.exp,
org.adempiere.process.rpl.imp,
org.adempiere.util,
org.compiere,
org.compiere.FA,
org.compiere.acct,
org.compiere.cm,
org.compiere.db,
org.compiere.dbPort,
org.compiere.impexp,
org.compiere.interfaces,
org.compiere.model,
org.compiere.plaf,
org.compiere.print,
org.compiere.print.layout,
org.compiere.process,
org.compiere.report,
org.compiere.report.core,
org.compiere.sla,
org.compiere.swing,
org.compiere.tools,
org.compiere.util,
org.compiere.wf
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.5.0",
org.adempiere.tools;bundle-version="0.0.0",
org.adempiere.jboss;bundle-version="0.0.0"

54
base/build.properties Normal file
View File

@ -0,0 +1,54 @@
source.base.jar = src/,build/
bin.includes = META-INF/,\
base.jar,\
plugin.xml
jars.extra.classpath = platform:/plugin/org.adempiere.tools/lib/activation.jar,\
platform:/plugin/org.adempiere.tools/lib/activemq-core-5.0.0.jar,\
platform:/plugin/org.adempiere.tools/lib/ant-commons-net.jar,\
platform:/plugin/org.adempiere.tools/lib/ant-contrib-1.0b1.jar,\
platform:/plugin/org.adempiere.tools/lib/ant-launcher.jar,\
platform:/plugin/org.adempiere.tools/lib/ant.jar,\
platform:/plugin/org.adempiere.tools/lib/barbecue-1.5-beta1.jar,\
platform:/plugin/org.adempiere.tools/lib/bsh-2.0b5.jar,\
platform:/plugin/org.adempiere.tools/lib/bsh-engine.jar,\
platform:/plugin/org.adempiere.tools/lib/c3p0-0.9.1.2.jar,\
platform:/plugin/org.adempiere.tools/lib/c3p0-oracle-thin-extras-0.9.1.2.jar,\
platform:/plugin/org.adempiere.tools/lib/cglib.jar,\
platform:/plugin/org.adempiere.tools/lib/commons-codec.jar,\
platform:/plugin/org.adempiere.tools/lib/commons-collections-3.1.jar,\
platform:/plugin/org.adempiere.tools/lib/commons-logging.jar,\
platform:/plugin/org.adempiere.tools/lib/commons-net-1.4.0.jar,\
platform:/plugin/org.adempiere.tools/lib/groovy-all-1.5.1.jar,\
platform:/plugin/org.adempiere.tools/lib/groovy-engine.jar,\
platform:/plugin/org.adempiere.tools/lib/iText-2.1.7.jar,\
platform:/plugin/org.adempiere.tools/lib/javaee.jar,\
platform:/plugin/org.adempiere.tools/lib/jcommon-1.0.14.jar,\
platform:/plugin/org.adempiere.tools/lib/jfreechart-1.0.11.jar,\
platform:/plugin/org.adempiere.tools/lib/jgraph.jar,\
platform:/plugin/org.adempiere.tools/lib/jnlp.jar,\
platform:/plugin/org.adempiere.tools/lib/jpayment.jar,\
platform:/plugin/org.adempiere.tools/lib/jpedal.jar,\
platform:/plugin/org.adempiere.tools/lib/jsp-api.jar,\
platform:/plugin/org.adempiere.tools/lib/jstl.jar,\
platform:/plugin/org.adempiere.tools/lib/junit.jar,\
platform:/plugin/org.adempiere.tools/lib/jython-engine.jar,\
platform:/plugin/org.adempiere.tools/lib/jython.jar,\
platform:/plugin/org.adempiere.tools/lib/log4j.jar,\
platform:/plugin/org.adempiere.tools/lib/logkit.jar,\
platform:/plugin/org.adempiere.tools/lib/looks-2.0.4.jar,\
platform:/plugin/org.adempiere.tools/lib/mail.jar,\
platform:/plugin/org.adempiere.tools/lib/miglayout-3.7.1-swing.jar,\
platform:/plugin/org.adempiere.tools/lib/ocrs12.jar,\
platform:/plugin/org.adempiere.tools/lib/ojdbc14.jar,\
platform:/plugin/org.adempiere.tools/lib/poi-3.0.1-FINAL-20070705.jar,\
platform:/plugin/org.adempiere.tools/lib/postgresql.jar,\
platform:/plugin/org.adempiere.tools/lib/script-api.jar,\
platform:/plugin/org.adempiere.tools/lib/servlet-api.jar,\
platform:/plugin/org.adempiere.tools/lib/standard.jar,\
platform:/plugin/org.adempiere.tools/lib/swingx-0.9.0.jar,\
platform:/plugin/org.adempiere.tools/lib/Verisign.jar,\
platform:/plugin/org.adempiere.tools/lib/wizard.jar,\
platform:/plugin/org.adempiere.tools/lib/xercesImpl.jar,\
platform:/plugin/org.adempiere.tools/lib/xjavadoc-1.1.jar,\
platform:/plugin/org.adempiere.tools/lib/xml-apis.jar

View File

@ -18,6 +18,7 @@
<property name="dist.dir" value="."/> <property name="dist.dir" value="."/>
<property name="jar.path" value="../lib"/> <property name="jar.path" value="../lib"/>
<property name="jar.name" value="Base"/> <property name="jar.name" value="Base"/>
<import file="../utils_dev/properties.xml"/>
<!-- set path to include the necessary jar files for javac --> <!-- set path to include the necessary jar files for javac -->
<path id="project.class.path"> <path id="project.class.path">
@ -105,6 +106,29 @@
<!-- put everything from ${build.dir} into the ${jar.name}.jar file --> <!-- put everything from ${build.dir} into the ${jar.name}.jar file -->
<jar jarfile="${dist.dir}/${jar.name}.jar" basedir="${build.dir}"/> <jar jarfile="${dist.dir}/${jar.name}.jar" basedir="${build.dir}"/>
</target> </target>
<target name="plugin">
<buildPlugin workspaceDirectory=".."
projectName="base"
targetPlatformId="target.platform"
destination="../lib"
buildSourceJar="false"
clean="no"/>
</target>
<target name="plugin-dist">
<buildPlugin workspaceDirectory=".."
projectName="base"
targetPlatformId="target.platform"
destination="${env.ADEMPIERE_ROOT}/Adempiere/osgi"
buildSourceJar="false"
clean="no"/>
</target>
<target name="dist-standalone" depends="plugin">
<copy file="${dist.dir}/${bundle.name}_${bundle.version}.jar"
todir="${equinox.target}/dist/standalone/plugins"/>
</target>
<path id="class.path.test"> <path id="class.path.test">
<pathelement path="${build.dir}"/> <pathelement path="${build.dir}"/>

10
base/plugin.xml Normal file
View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension-point id="org.adempiere.base.IResourceFinder" name="ResourceFinder" schema="schema/ResourceFinder.exsd"/>
<extension-point id="org.adempiere.base.IColumnCallout" name="Callout" schema="schema/org.adempiere.base.Callout.exsd"/>
<extension-point id="org.adempiere.base.IDictionaryService" name="DictionaryService" schema="schema/org.adempiere.base.IDictionaryService.exsd"/>
<extension-point id="org.compiere.apps.form.FormPanel" name="FormPanel" schema="schema/org.compiere.apps.form.FormPanel.exsd"/>
<extension-point id="org.adempiere.as.IApplicationServer" name="ApplicationServer" schema="schema/org.adempiere.as.IApplicationServer.exsd"/>
</plugin>

View File

@ -0,0 +1,102 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.adempiere.base" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
<appinfo>
<meta.schema plugin="org.adempiere.base" id="ResourceFinder" name="ResourceFinder"/>
</appinfo>
<documentation>
[Enter description of this extension point.]
</documentation>
</annotation>
<element name="extension">
<annotation>
<appinfo>
<meta.element />
</appinfo>
</annotation>
<complexType>
<choice>
<element ref="client"/>
</choice>
<attribute name="point" type="string" use="required">
<annotation>
<documentation>
</documentation>
</annotation>
</attribute>
<attribute name="id" type="string">
<annotation>
<documentation>
</documentation>
</annotation>
</attribute>
<attribute name="name" type="string">
<annotation>
<documentation>
</documentation>
<appinfo>
<meta.attribute translatable="true"/>
</appinfo>
</annotation>
</attribute>
</complexType>
</element>
<element name="client">
<complexType>
<attribute name="class" type="string">
<annotation>
<documentation>
</documentation>
<appinfo>
<meta.attribute kind="java" basedOn=":org.compiere.util.IResourceFinder"/>
</appinfo>
</annotation>
</attribute>
</complexType>
</element>
<annotation>
<appinfo>
<meta.section type="since"/>
</appinfo>
<documentation>
[Enter the first release in which this extension point appears.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="examples"/>
</appinfo>
<documentation>
[Enter extension point usage example here.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="apiinfo"/>
</appinfo>
<documentation>
[Enter API information here.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="implementation"/>
</appinfo>
<documentation>
[Enter information about supplied implementation of this extension point.]
</documentation>
</annotation>
</schema>

View File

@ -0,0 +1,102 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.adempiere.base" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
<appinfo>
<meta.schema plugin="org.adempiere.base" id="org.adempiere.as.IApplicationServer" name="ApplicationServer"/>
</appinfo>
<documentation>
[Enter description of this extension point.]
</documentation>
</annotation>
<element name="extension">
<annotation>
<appinfo>
<meta.element />
</appinfo>
</annotation>
<complexType>
<choice>
<element ref="client"/>
</choice>
<attribute name="point" type="string" use="required">
<annotation>
<documentation>
</documentation>
</annotation>
</attribute>
<attribute name="id" type="string">
<annotation>
<documentation>
</documentation>
</annotation>
</attribute>
<attribute name="name" type="string">
<annotation>
<documentation>
</documentation>
<appinfo>
<meta.attribute translatable="true"/>
</appinfo>
</annotation>
</attribute>
</complexType>
</element>
<element name="client">
<complexType>
<attribute name="class" type="string">
<annotation>
<documentation>
</documentation>
<appinfo>
<meta.attribute kind="java" basedOn=":org.adempiere.as.IApplicationServer"/>
</appinfo>
</annotation>
</attribute>
</complexType>
</element>
<annotation>
<appinfo>
<meta.section type="since"/>
</appinfo>
<documentation>
[Enter the first release in which this extension point appears.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="examples"/>
</appinfo>
<documentation>
[Enter extension point usage example here.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="apiinfo"/>
</appinfo>
<documentation>
[Enter API information here.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="implementation"/>
</appinfo>
<documentation>
[Enter information about supplied implementation of this extension point.]
</documentation>
</annotation>
</schema>

View File

@ -0,0 +1,119 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.adempiere.base" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
<appinfo>
<meta.schema plugin="org.adempiere.base" id="org.adempiere.base.Callout" name="Callout"/>
</appinfo>
<documentation>
This is the ADempiere Call extension point.
Callouts provided by plugins are not entered into the application dictionary.
Instead, you specify Table and Column in the extension declaration.
</documentation>
</annotation>
<element name="extension">
<annotation>
<appinfo>
<meta.element />
</appinfo>
</annotation>
<complexType>
<choice>
<element ref="client" minOccurs="1" maxOccurs="unbounded"/>
</choice>
<attribute name="point" type="string" use="required">
<annotation>
<documentation>
</documentation>
</annotation>
</attribute>
<attribute name="id" type="string">
<annotation>
<documentation>
</documentation>
</annotation>
</attribute>
<attribute name="name" type="string">
<annotation>
<documentation>
</documentation>
<appinfo>
<meta.attribute translatable="true"/>
</appinfo>
</annotation>
</attribute>
</complexType>
</element>
<element name="client">
<complexType>
<attribute name="class" type="string" use="required">
<annotation>
<documentation>
</documentation>
<appinfo>
<meta.attribute kind="java" basedOn=":org.adempiere.base.IColumnCallout"/>
</appinfo>
</annotation>
</attribute>
<attribute name="tableName" type="string" use="required">
<annotation>
<documentation>
</documentation>
</annotation>
</attribute>
<attribute name="columnName" type="string" use="required">
<annotation>
<documentation>
</documentation>
</annotation>
</attribute>
</complexType>
</element>
<annotation>
<appinfo>
<meta.section type="since"/>
</appinfo>
<documentation>
[Enter the first release in which this extension point appears.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="examples"/>
</appinfo>
<documentation>
[Enter extension point usage example here.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="apiinfo"/>
</appinfo>
<documentation>
[Enter API information here.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="implementation"/>
</appinfo>
<documentation>
[Enter information about supplied implementation of this extension point.]
</documentation>
</annotation>
</schema>

View File

@ -0,0 +1,102 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.adempiere.base" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
<appinfo>
<meta.schema plugin="org.adempiere.base" id="org.adempiere.base.IDictionaryService" name="DictionaryService"/>
</appinfo>
<documentation>
[Enter description of this extension point.]
</documentation>
</annotation>
<element name="extension">
<annotation>
<appinfo>
<meta.element />
</appinfo>
</annotation>
<complexType>
<choice>
<element ref="client"/>
</choice>
<attribute name="point" type="string" use="required">
<annotation>
<documentation>
</documentation>
</annotation>
</attribute>
<attribute name="id" type="string">
<annotation>
<documentation>
</documentation>
</annotation>
</attribute>
<attribute name="name" type="string">
<annotation>
<documentation>
</documentation>
<appinfo>
<meta.attribute translatable="true"/>
</appinfo>
</annotation>
</attribute>
</complexType>
</element>
<element name="client">
<complexType>
<attribute name="class" type="string">
<annotation>
<documentation>
</documentation>
<appinfo>
<meta.attribute kind="java" basedOn=":org.adempiere.base.IDictionaryService"/>
</appinfo>
</annotation>
</attribute>
</complexType>
</element>
<annotation>
<appinfo>
<meta.section type="since"/>
</appinfo>
<documentation>
[Enter the first release in which this extension point appears.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="examples"/>
</appinfo>
<documentation>
[Enter extension point usage example here.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="apiinfo"/>
</appinfo>
<documentation>
[Enter API information here.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="implementation"/>
</appinfo>
<documentation>
[Enter information about supplied implementation of this extension point.]
</documentation>
</annotation>
</schema>

View File

@ -0,0 +1,102 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.adempiere.base" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
<appinfo>
<meta.schema plugin="org.adempiere.base" id="org.compiere.apps.form.FormPanel" name="FormPanel"/>
</appinfo>
<documentation>
[Enter description of this extension point.]
</documentation>
</annotation>
<element name="extension">
<annotation>
<appinfo>
<meta.element />
</appinfo>
</annotation>
<complexType>
<choice>
<element ref="client"/>
</choice>
<attribute name="point" type="string" use="required">
<annotation>
<documentation>
</documentation>
</annotation>
</attribute>
<attribute name="id" type="string">
<annotation>
<documentation>
</documentation>
</annotation>
</attribute>
<attribute name="name" type="string">
<annotation>
<documentation>
</documentation>
<appinfo>
<meta.attribute translatable="true"/>
</appinfo>
</annotation>
</attribute>
</complexType>
</element>
<element name="client">
<complexType>
<attribute name="class" type="string">
<annotation>
<documentation>
</documentation>
<appinfo>
<meta.attribute kind="java" basedOn=":org.compiere.apps.form.FormPanel"/>
</appinfo>
</annotation>
</attribute>
</complexType>
</element>
<annotation>
<appinfo>
<meta.section type="since"/>
</appinfo>
<documentation>
[Enter the first release in which this extension point appears.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="examples"/>
</appinfo>
<documentation>
[Enter extension point usage example here.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="apiinfo"/>
</appinfo>
<documentation>
[Enter API information here.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="implementation"/>
</appinfo>
<documentation>
[Enter information about supplied implementation of this extension point.]
</documentation>
</annotation>
</schema>

View File

@ -14,6 +14,8 @@ package org.adempiere.as;
import java.util.Hashtable; import java.util.Hashtable;
import org.adempiere.base.Service;
/** /**
* *
* @author Low Heng Sin * @author Low Heng Sin
@ -28,24 +30,10 @@ public class ASFactory {
JBOSS, GLASS_FISH JBOSS, GLASS_FISH
}; };
private final static String[] AS_Classes = new String[] {
"org.adempiere.as.jboss.JBoss",
"org.adempiere.as.glassfish.GlassFish"
};
private static IApplicationServer applicationServer; private static IApplicationServer applicationServer;
static { static {
//detect the installed application server applicationServer = Service.locate(IApplicationServer.class);
for(String s : AS_Classes) {
try {
Class<?> c = Class.forName(s);
IApplicationServer server = (IApplicationServer) c.newInstance();
applicationServer = server;
break;
} catch (Throwable t) {
}
}
if (applicationServer == null) { if (applicationServer == null) {
applicationServer = new IApplicationServer() { applicationServer = new IApplicationServer() {

View File

@ -14,12 +14,14 @@ package org.adempiere.as;
import java.util.Hashtable; import java.util.Hashtable;
import org.adempiere.base.IService;
/** /**
* *
* @author Low Heng Sin * @author Low Heng Sin
* *
*/ */
public interface IApplicationServer { public interface IApplicationServer extends IService {
/** /**
* @param AppsHost * @param AppsHost
* @param AppsPort * @param AppsPort

View File

@ -0,0 +1,44 @@
package org.adempiere.base;
import java.net.URL;
import java.util.List;
/**
* This is a facade class for the Service Locator.
* It provides simple access to all core services.
*
* @author viola
*/
public class Core {
public static final String OSGI_PREFIX = "osgi://";
public static IResourceFinder getResourceFinder() {
return new IResourceFinder() {
public URL getResource(String name) {
List<IResourceFinder> f = Service.list(IResourceFinder.class);
for (IResourceFinder finder : f) {
URL url = finder.getResource(name);
if (url!=null)
return url;
}
return null;
}
};
}
public static List<IColumnCallout> findCallout(String tableName, String columnName) {
ServiceQuery query = new ServiceQuery();
query.put("tableName", tableName);
query.put("columnName", columnName);
return Service.list(IColumnCallout.class, query);
}
public static boolean isExtension(String className) {
return className.startsWith(OSGI_PREFIX);
}
}

View File

@ -0,0 +1,48 @@
/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* See the GNU General Public License for more details. *
* You should have received a copy of the GNU General Public License along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
* For the text or an alternative of this public license, you may reach us *
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
* or via info@compiere.org or http://www.compiere.org/license.html *
*****************************************************************************/
package org.adempiere.base;
import java.util.Properties;
import org.compiere.model.GridField;
import org.compiere.model.GridTab;
/**
* Column Callout Interface
*/
public interface IColumnCallout extends IService
{
/**
* Start Callout.
* <p>
* Callout's are used for cross field validation and setting values in other fields
* when returning a non empty (error message) string, an exception is raised
* <p>
* When invoked, the Tab model has the new value!
*
* @param ctx Context
* @param WindowNo current Window No
* @param mTab Model Tab
* @param mField Model Field
* @param value The new value
* @param oldValue The old value
* @return Error message or ""
*/
public String start (Properties ctx, int WindowNo,
GridTab mTab, GridField mField, Object value, Object oldValue);
}

View File

@ -0,0 +1,29 @@
/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* See the GNU General Public License for more details. *
* You should have received a copy of the GNU General Public License along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
* For the text or an alternative of this public license, you may reach us *
* Copyright (C) 2009 ObjectCode GmbH *
* Contributor(s): Joerg Viola www.objectcode.de *
*****************************************************************************/
package org.adempiere.base;
import java.io.InputStream;
/**
* A dictionary service provides for easy handling of dynamic Adempiere
* dictionary.
*
* @author Joerg Viola
*
*/
public interface IDictionaryService extends IService {
void merge(InputStream model) throws Exception;
}

View File

@ -0,0 +1,25 @@
/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* See the GNU General Public License for more details. *
* You should have received a copy of the GNU General Public License along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
* For the text or an alternative of this public license, you may reach us *
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
* or via info@compiere.org or http://www.compiere.org/license.html *
*****************************************************************************/
package org.adempiere.base;
import java.net.URL;
public interface IResourceFinder extends IService {
URL getResource(String name);
}

View File

@ -0,0 +1,5 @@
package org.adempiere.base;
public interface IService {
}

View File

@ -0,0 +1,39 @@
/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* See the GNU General Public License for more details. *
* You should have received a copy of the GNU General Public License along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
* For the text or an alternative of this public license, you may reach us *
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
* or via info@compiere.org or http://www.compiere.org/license.html *
*****************************************************************************/
package org.adempiere.base;
import java.util.List;
import org.compiere.model.Callout;
/**
* A service locator looks up services.
* This is the central authority for adempiere service definition,
* because each service defined has to be looked up via this interface.
*
* A service in adempiere is an interface extended from the tagging interface IService.
*
* @author viola
*
*/
public interface IServiceLocator {
<T extends IService> T locate(Class<T> type);
<T extends IService> T locate(Class<T> type, ServiceQuery query);
<T extends IService> List<T> list(Class<T> type);
<T extends IService> List<T> list(Class<T> type, ServiceQuery query);
}

View File

@ -0,0 +1,75 @@
/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* See the GNU General Public License for more details. *
* You should have received a copy of the GNU General Public License along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
* For the text or an alternative of this public license, you may reach us *
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
* or via info@compiere.org or http://www.compiere.org/license.html *
*****************************************************************************/
package org.adempiere.base;
import java.util.List;
/**
* This is a very simple factory for service locators
*
* @author viola
*
*/
public class Service {
private static final String LOCATOR_CLASS = "ServiceLocator";
private static final String DEFAULT_LOCATOR_CLASS = "org.adempiere.base.equinox.EquinoxServiceLocator";
private static IServiceLocator theLocator;
public static IServiceLocator locator() {
if (theLocator == null) {
synchronized (Service.class) {
if (theLocator == null) {
theLocator = createServiceLocator();
}
}
}
return theLocator;
}
private static IServiceLocator createServiceLocator() {
String className = System.getProperty(LOCATOR_CLASS);
if (className==null)
className = DEFAULT_LOCATOR_CLASS;
try {
Class<?> clazz = Class.forName(className);
IServiceLocator locator = (IServiceLocator) clazz.newInstance();
System.out.println("Started service locator: " + locator);
return locator;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static <T extends IService> T locate(Class<T> type) {
return locator().locate(type);
}
public static <T extends IService> T locate(Class<T> type, ServiceQuery query) {
return locator().locate(type, query);
}
public static <T extends IService> List<T> list(Class<T> type) {
return locator().list(type);
}
public static <T extends IService> List<T> list(Class<T> type, ServiceQuery query) {
return locator().list(type, query);
}
}

View File

@ -0,0 +1,9 @@
package org.adempiere.base;
import java.util.HashMap;
public class ServiceQuery extends HashMap<String, String> {
private static final long serialVersionUID = -3624488575106821781L;
}

View File

@ -0,0 +1,56 @@
/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* See the GNU General Public License for more details. *
* You should have received a copy of the GNU General Public License along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
* For the text or an alternative of this public license, you may reach us *
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
* or via info@compiere.org or http://www.compiere.org/license.html *
*****************************************************************************/
package org.adempiere.base.equinox;
import java.util.List;
import org.adempiere.base.IService;
import org.adempiere.base.IServiceLocator;
import org.adempiere.base.ServiceQuery;
/**
* This is the Equinox implementation of the ADempiere Service Locator.
* It delegates work to the ExtensionList that lookups up services as extensions.
* The ids of extension points have to correspond to the interface names of the services.
*
* @author viola
*
*/
public class EquinoxServiceLocator implements IServiceLocator {
public <T extends IService> List<T> list(Class<T> type) {
ExtensionList<T> list = new ExtensionList<T>(type, type.getName());
return list.asList();
}
public <T extends IService> List<T> list(Class<T> type, ServiceQuery query) {
ExtensionList<T> list = new ExtensionList<T>(type, type.getName(), query);
return list.asList();
}
public <T extends IService> T locate(Class<T> type) {
ExtensionList<T> list = new ExtensionList<T>(type, type.getName());
return list.first();
}
public <T extends IService> T locate(Class<T> type, ServiceQuery query) {
ExtensionList<T> list = new ExtensionList<T>(type, type.getName(), query);
return list.first();
}
}

View File

@ -0,0 +1,128 @@
/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* See the GNU General Public License for more details. *
* You should have received a copy of the GNU General Public License along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
* For the text or an alternative of this public license, you may reach us *
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
* or via info@compiere.org or http://www.compiere.org/license.html *
*****************************************************************************/
package org.adempiere.base.equinox;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import org.adempiere.base.ServiceQuery;
import org.compiere.model.Callout;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.Platform;
/**
* This List looks up services as extensions in equinox.
* The extension point must be the class name of the service interface.
* The query attributes are checked against the attributes
* of the extension configuration element.
*
* In order to minimize equinox lookups, a filtering iterator is used.
* @author viola
*
* @param <T> The service this list holds implementations of.
*/
public class ExtensionList<T> implements Iterable<T>{
public class ExtensionIterator<T> implements Iterator<T> {
private int index = 0;
public boolean hasNext() {
iterateUntilAccepted();
return index<elements.length;
}
private void iterateUntilAccepted() {
while (index<elements.length) {
if (accept(elements[index]))
break;
index++;
}
}
private boolean accept(IConfigurationElement element) {
for (String name : filters.keySet()) {
String expected = filters.get(name);
String actual = element.getAttribute(name);
if (!expected.equals(actual))
return false;
}
return true;
}
@SuppressWarnings("unchecked")
public T next() {
iterateUntilAccepted();
IConfigurationElement e = elements[index++];
try {
return (T) e.createExecutableExtension("class");
} catch (CoreException ex) {
throw new IllegalStateException(ex);
}
}
public void remove() {
throw new UnsupportedOperationException();
}
}
private IConfigurationElement[] elements;
private HashMap<String, String> filters = new HashMap<String, String>();
public ExtensionList(Class<T> clazz, String id) {
try {
elements = Platform.getExtensionRegistry().getConfigurationElementsFor(id);
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
public ExtensionList(Class<T> type, String name, ServiceQuery query) {
this(type, name);
for (String key : query.keySet()) {
addFilter(key, query.get(key));
}
}
public Iterator<T> iterator() {
return new ExtensionIterator<T>();
}
public void addFilter(String name, String value) {
filters.put(name, value);
}
public T first() {
Iterator<T> i = iterator();
if (!i.hasNext())
return null;
return i.next();
}
public List<T> asList() {
List<T> result = new ArrayList<T>();
for (T t : this) {
result.add(t);
}
return result;
}
}

View File

@ -418,14 +418,12 @@ public class ExportHelper {
if (embeddedFormat.getWhereClause() != null & !"".equals(embeddedFormat.getWhereClause())) if (embeddedFormat.getWhereClause() != null & !"".equals(embeddedFormat.getWhereClause()))
{ {
whereClause.append(" AND ").append(embeddedFormat.getWhereClause()); whereClause.append(" AND ").append(embeddedFormat.getWhereClause());
}
String columnName = ""; String columnName = "";
if(formatLine.getAD_Reference_ID()== DisplayType.Table | formatLine.getAD_Reference_ID()==DisplayType.Search) if(formatLine.getAD_Reference_ID()== DisplayType.Table | formatLine.getAD_Reference_ID()==DisplayType.Search)
{ {
MColumn column = MColumn.get(masterPO.getCtx(), formatLine.getAD_Column_ID()); MColumn column = MColumn.get(masterPO.getCtx(), formatLine.getAD_Column_ID());
columnName = column.getColumnName(); columnName = column.getColumnName();
}
else else
{ {
columnName = tableEmbedded.getTableName() + "_ID"; columnName = tableEmbedded.getTableName() + "_ID";

View File

@ -22,6 +22,7 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.net.URL; import java.net.URL;
import java.util.List;
import java.util.Properties; import java.util.Properties;
import java.util.logging.Level; import java.util.logging.Level;
@ -30,6 +31,9 @@ import javax.jnlp.ServiceManager;
import javax.jnlp.UnavailableServiceException; import javax.jnlp.UnavailableServiceException;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
import org.adempiere.base.Core;
import org.adempiere.base.IResourceFinder;
import org.adempiere.base.Service;
import org.compiere.db.CConnection; import org.compiere.db.CConnection;
import org.compiere.model.MClient; import org.compiere.model.MClient;
import org.compiere.model.MSystem; import org.compiere.model.MSystem;
@ -43,7 +47,7 @@ import org.compiere.util.Ini;
import org.compiere.util.Login; import org.compiere.util.Login;
import org.compiere.util.SecureEngine; import org.compiere.util.SecureEngine;
import org.compiere.util.SecureInterface; import org.compiere.util.SecureInterface;
import org.compiere.util.Splash; //import org.compiere.util.Splash;
import org.compiere.util.Util; import org.compiere.util.Util;
/** /**
@ -336,7 +340,8 @@ public final class Adempiere
if (s_imageLogo == null) if (s_imageLogo == null)
{ {
Toolkit tk = Toolkit.getDefaultToolkit(); Toolkit tk = Toolkit.getDefaultToolkit();
URL url = org.compiere.Adempiere.class.getResource(s_file100x30); URL url = Core.getResourceFinder().getResource(s_file100x30);
// URL url = org.compiere.Adempiere.class.getResource(s_file100x30);
// System.out.println(url); // System.out.println(url);
if (url == null) if (url == null)
return null; return null;
@ -579,37 +584,41 @@ public final class Adempiere
return true; return true;
} // startupEnvironment } // startupEnvironment
public static URL getResource(String name) {
return Core.getResourceFinder().getResource(name);
}
/** /**
* Main Method * Main Method
* *
* @param args optional start class * @param args optional start class
*/ */
public static void main (String[] args) // public static void main (String[] args)
{ // {
Splash.getSplash(); // Splash.getSplash();
startup(true); // error exit and initUI // startup(true); // error exit and initUI
//
// Start with class as argument - or if nothing provided with Client // // Start with class as argument - or if nothing provided with Client
String className = "org.compiere.apps.AMenu"; // String className = "org.compiere.apps.AMenu";
for (int i = 0; i < args.length; i++) // for (int i = 0; i < args.length; i++)
{ // {
if (!args[i].equals("-debug")) // ignore -debug // if (!args[i].equals("-debug")) // ignore -debug
{ // {
className = args[i]; // className = args[i];
break; // break;
} // }
} // }
// // //
try // try
{ // {
Class<?> startClass = Class.forName(className); // Class<?> startClass = Class.forName(className);
startClass.newInstance(); // startClass.newInstance();
} // }
catch (Exception e) // catch (Exception e)
{ // {
System.err.println("ADempiere starting: " + className + " - " + e.toString()); // System.err.println("ADempiere starting: " + className + " - " + e.toString());
e.printStackTrace(); // e.printStackTrace();
} // }
} // main // } // main
} // Adempiere } // Adempiere

View File

@ -18,6 +18,7 @@ package org.compiere.db;
import java.io.Serializable; import java.io.Serializable;
import java.lang.reflect.Proxy; import java.lang.reflect.Proxy;
import java.rmi.RMISecurityManager;
import java.sql.Connection; import java.sql.Connection;
import java.sql.DatabaseMetaData; import java.sql.DatabaseMetaData;
import java.sql.SQLException; import java.sql.SQLException;
@ -1630,7 +1631,6 @@ public class CConnection implements Serializable, Cloneable
private Object lookup(String jndiName) throws NamingException { private Object lookup(String jndiName) throws NamingException {
InitialContext ctx = getInitialContext(Ini.isClient()); InitialContext ctx = getInitialContext(Ini.isClient());
if (useComponentNamespace) if (useComponentNamespace)
{ {
try try

View File

@ -18,6 +18,8 @@ package org.compiere.model;
import java.util.Properties; import java.util.Properties;
import org.adempiere.base.IService;
/** /**
* Callout Interface for Callout. * Callout Interface for Callout.
* Used in MTab and ImpFormatRow * Used in MTab and ImpFormatRow

View File

@ -1313,7 +1313,7 @@ public class GridField
{ {
Env.setContext(m_vo.ctx, m_vo.WindowNo, m_vo.ColumnName, Env.setContext(m_vo.ctx, m_vo.WindowNo, m_vo.ColumnName,
((Boolean)m_value).booleanValue()); ((Boolean)m_value).booleanValue());
} }
Env.setContext(m_vo.ctx, m_vo.WindowNo, m_vo.TabNo, m_vo.ColumnName, Env.setContext(m_vo.ctx, m_vo.WindowNo, m_vo.TabNo, m_vo.ColumnName,
m_value==null ? null : (((Boolean)m_value) ? "Y" : "N")); m_value==null ? null : (((Boolean)m_value) ? "Y" : "N"));
} }

View File

@ -37,6 +37,9 @@ import java.util.logging.Level;
import javax.script.ScriptEngine; import javax.script.ScriptEngine;
import javax.swing.event.EventListenerList; import javax.swing.event.EventListenerList;
import org.adempiere.base.Core;
import org.adempiere.base.IColumnCallout;
import org.adempiere.base.Service;
import org.compiere.util.CLogMgt; import org.compiere.util.CLogMgt;
import org.compiere.util.CLogger; import org.compiere.util.CLogger;
import org.compiere.util.DB; import org.compiere.util.DB;
@ -70,7 +73,7 @@ import org.compiere.util.ValueNamePair;
* </pre> * </pre>
* @author Jorg Janke * @author Jorg Janke
* @version $Id: GridTab.java,v 1.10 2006/10/02 05:18:39 jjanke Exp $ * @version $Id: GridTab.java,v 1.10 2006/10/02 05:18:39 jjanke Exp $
* *
* @author Teo Sarca, SC ARHIPAC SERVICE SRL * @author Teo Sarca, SC ARHIPAC SERVICE SRL
* <li>BF [ 1742159 ] Editable number field for inactive record * <li>BF [ 1742159 ] Editable number field for inactive record
* <li>BF [ 1968598 ] Callout is not called if tab is processed * <li>BF [ 1968598 ] Callout is not called if tab is processed
@ -86,7 +89,7 @@ import org.compiere.util.ValueNamePair;
* https://sourceforge.net/tracker/?func=detail&aid=2905287&group_id=176962&atid=879332 * https://sourceforge.net/tracker/?func=detail&aid=2905287&group_id=176962&atid=879332
* <li>BF [ 3007342 ] Included tab context conflict issue * <li>BF [ 3007342 ] Included tab context conflict issue
* https://sourceforge.net/tracker/?func=detail&aid=3007342&group_id=176962&atid=879332 * https://sourceforge.net/tracker/?func=detail&aid=3007342&group_id=176962&atid=879332
* @author Victor Perez , e-Evolution.SC * @author Victor Perez , e-Evolution.SC
* <li>FR [1877902] Implement JSR 223 Scripting APIs to Callout * <li>FR [1877902] Implement JSR 223 Scripting APIs to Callout
* <li>BF [ 2910358 ] Error in context when a field is found in different tabs. * <li>BF [ 2910358 ] Error in context when a field is found in different tabs.
* https://sourceforge.net/tracker/?func=detail&aid=2910358&group_id=176962&atid=879332 * https://sourceforge.net/tracker/?func=detail&aid=2910358&group_id=176962&atid=879332
@ -102,12 +105,12 @@ import org.compiere.util.ValueNamePair;
public class GridTab implements DataStatusListener, Evaluatee, Serializable public class GridTab implements DataStatusListener, Evaluatee, Serializable
{ {
/** /**
* *
*/ */
private static final long serialVersionUID = -8055500064230704903L; private static final long serialVersionUID = -8055500064230704903L;
public static final String DEFAULT_STATUS_MESSAGE = "NavigateOrUpdate"; public static final String DEFAULT_STATUS_MESSAGE = "NavigateOrUpdate";
/** /**
* Create Tab (Model) from Value Object. * Create Tab (Model) from Value Object.
* <p> * <p>
@ -120,7 +123,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
{ {
this(vo, w, false); this(vo, w, false);
} }
/** /**
* Create Tab (Model) from Value Object. * Create Tab (Model) from Value Object.
* <p> * <p>
@ -196,13 +199,13 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
/** Logger */ /** Logger */
protected CLogger log = CLogger.getCLogger(getClass()); protected CLogger log = CLogger.getCLogger(getClass());
private boolean m_parentNeedSave = false; private boolean m_parentNeedSave = false;
private long m_lastDataStatusEventTime; private long m_lastDataStatusEventTime;
private DataStatusEvent m_lastDataStatusEvent; private DataStatusEvent m_lastDataStatusEvent;
// Context property names: // Context property names:
public static final String CTX_KeyColumnName = "_TabInfo_KeyColumnName"; public static final String CTX_KeyColumnName = "_TabInfo_KeyColumnName";
public static final String CTX_LinkColumnName = "_TabInfo_LinkColumnName"; public static final String CTX_LinkColumnName = "_TabInfo_LinkColumnName";
@ -213,7 +216,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
public static final String CTX_AD_Table_ID = "_TabInfo_AD_Table_ID"; public static final String CTX_AD_Table_ID = "_TabInfo_AD_Table_ID";
public static final String CTX_FindSQL = "_TabInfo_FindSQL"; public static final String CTX_FindSQL = "_TabInfo_FindSQL";
public static final String CTX_SQL = "_TabInfo_SQL"; public static final String CTX_SQL = "_TabInfo_SQL";
/************************************************************************** /**************************************************************************
@ -258,7 +261,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
{ {
return m_loadComplete; return m_loadComplete;
} }
/** /**
* Initialize Tab with record from AD_Tab_v * Initialize Tab with record from AD_Tab_v
* @param async async * @param async async
@ -268,7 +271,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
{ {
log.fine("#" + m_vo.TabNo + " - Async=" + async + " - Where=" + m_vo.WhereClause); log.fine("#" + m_vo.TabNo + " - Async=" + async + " - Where=" + m_vo.WhereClause);
if (isLoadComplete()) return true; if (isLoadComplete()) return true;
if (m_loader != null && m_loader.isAlive()) if (m_loader != null && m_loader.isAlive())
{ {
waitLoadCompete(); waitLoadCompete();
@ -289,9 +292,9 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
} // initTab } // initTab
protected boolean loadTab() protected boolean loadTab()
{ {
m_extendedWhere = m_vo.WhereClause; m_extendedWhere = m_vo.WhereClause;
// Get Field Data // Get Field Data
if (!loadFields()) if (!loadFields())
{ {
@ -305,7 +308,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
m_loadComplete = true; m_loadComplete = true;
return true; return true;
} }
/** /**
* Dispose - clean up resources * Dispose - clean up resources
*/ */
@ -412,7 +415,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
} }
} // for all fields } // for all fields
if (! m_mTable.getTableName().equals(X_AD_PInstance_Log.Table_Name)) { // globalqss, bug 1662433 if (! m_mTable.getTableName().equals(X_AD_PInstance_Log.Table_Name)) { // globalqss, bug 1662433
// Add Standard Fields // Add Standard Fields
if (m_mTable.getField("Created") == null) if (m_mTable.getField("Created") == null)
{ {
@ -609,7 +612,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
public void query (boolean onlyCurrentRows, int onlyCurrentDays, int maxRows) public void query (boolean onlyCurrentRows, int onlyCurrentDays, int maxRows)
{ {
if (!m_loadComplete) initTab(false); if (!m_loadComplete) initTab(false);
log.fine("#" + m_vo.TabNo log.fine("#" + m_vo.TabNo
+ " - Only Current Rows=" + onlyCurrentRows + " - Only Current Rows=" + onlyCurrentRows
+ ", Days=" + onlyCurrentDays + ", Detail=" + isDetail()); + ", Days=" + onlyCurrentDays + ", Detail=" + isDetail());
@ -645,7 +648,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
{ {
String value = null; String value = null;
if ( m_parentColumnName.length() > 0 ) if ( m_parentColumnName.length() > 0 )
{ {
// explicit parent link defined // explicit parent link defined
value = Env.getContext(m_vo.ctx, m_vo.WindowNo, getParentTabNo(), m_parentColumnName, true); value = Env.getContext(m_vo.ctx, m_vo.WindowNo, getParentTabNo(), m_parentColumnName, true);
if (value == null || value.length() == 0) if (value == null || value.length() == 0)
@ -654,8 +657,8 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
value = Env.getContext(m_vo.ctx, m_vo.WindowNo, getParentTabNo(), lc, true); value = Env.getContext(m_vo.ctx, m_vo.WindowNo, getParentTabNo(), lc, true);
if (value == null || value.length() == 0) if (value == null || value.length() == 0)
value = Env.getContext(m_vo.ctx, m_vo.WindowNo, lc, true); // back compatibility value = Env.getContext(m_vo.ctx, m_vo.WindowNo, lc, true); // back compatibility
} }
// Same link value? // Same link value?
if (refresh) if (refresh)
refresh = m_linkValue.equals(value); refresh = m_linkValue.equals(value);
@ -967,25 +970,25 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
if (manualCmd || m_mTable.hasChanged(m_currentRow)) if (manualCmd || m_mTable.hasChanged(m_currentRow))
return false; return false;
} }
boolean retValue = (m_mTable.dataSave(manualCmd) == GridTable.SAVE_OK); boolean retValue = (m_mTable.dataSave(manualCmd) == GridTable.SAVE_OK);
if (manualCmd) if (manualCmd)
{ {
setCurrentRow(m_currentRow, false); setCurrentRow(m_currentRow, false);
if (m_lastDataStatusEvent != null && m_lastDataStatusEvent.getCurrentRow() == m_currentRow if (m_lastDataStatusEvent != null && m_lastDataStatusEvent.getCurrentRow() == m_currentRow
&& ((m_lastDataStatusEvent.Record_ID != null && m_lastDataStatusEvent.Record_ID instanceof Integer && ((m_lastDataStatusEvent.Record_ID != null && m_lastDataStatusEvent.Record_ID instanceof Integer
&& (Integer) m_lastDataStatusEvent.Record_ID == 0) || m_lastDataStatusEvent.Record_ID == null)) && (Integer) m_lastDataStatusEvent.Record_ID == 0) || m_lastDataStatusEvent.Record_ID == null))
{ {
updateDataStatusEventProperties(m_lastDataStatusEvent); updateDataStatusEventProperties(m_lastDataStatusEvent);
} }
} }
fireStateChangeEvent(new StateChangeEvent(this, StateChangeEvent.DATA_SAVE)); fireStateChangeEvent(new StateChangeEvent(this, StateChangeEvent.DATA_SAVE));
if (retValue) { if (retValue) {
// refresh parent tabs // refresh parent tabs
refreshParents(); refreshParents();
} }
return retValue; return retValue;
} }
catch (Exception e) catch (Exception e)
@ -1086,7 +1089,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
log.fine("#" + m_vo.TabNo); log.fine("#" + m_vo.TabNo);
m_mTable.dataIgnore(); m_mTable.dataIgnore();
setCurrentRow(m_currentRow, false); // re-load data setCurrentRow(m_currentRow, false); // re-load data
fireStateChangeEvent(new StateChangeEvent(this, StateChangeEvent.DATA_IGNORE)); fireStateChangeEvent(new StateChangeEvent(this, StateChangeEvent.DATA_IGNORE));
log.fine("#" + m_vo.TabNo + "- fini"); log.fine("#" + m_vo.TabNo + "- fini");
} // dataIgnore } // dataIgnore
@ -1119,11 +1122,11 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
} }
log.finest("Processed=" + processed); log.finest("Processed=" + processed);
} }
//hengsin, don't create new when parent is empty //hengsin, don't create new when parent is empty
if (isDetail() && m_parentNeedSave) if (isDetail() && m_parentNeedSave)
return false; return false;
/** /**
* temporary set currentrow to point to the new row to ensure even cause by m_mTable.dataNew * temporary set currentrow to point to the new row to ensure even cause by m_mTable.dataNew
* is handle properly. * is handle properly.
@ -1135,7 +1138,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
if (!retValue) if (!retValue)
return retValue; return retValue;
setCurrentRow(m_currentRow + 1, true); setCurrentRow(m_currentRow + 1, true);
// process all Callouts (no dependency check - assumed that settings are valid) // process all Callouts (no dependency check - assumed that settings are valid)
for (int i = 0; i < getFieldCount(); i++) for (int i = 0; i < getFieldCount(); i++)
processCallout(getField(i)); processCallout(getField(i));
@ -1146,7 +1149,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
getField(i).validateValue(); getField(i).validateValue();
} }
m_mTable.setChanged(false); m_mTable.setChanged(false);
fireStateChangeEvent(new StateChangeEvent(this, StateChangeEvent.DATA_NEW)); fireStateChangeEvent(new StateChangeEvent(this, StateChangeEvent.DATA_NEW));
return retValue; return retValue;
} // dataNew } // dataNew
@ -1227,7 +1230,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
{ {
return m_keyColumnName; return m_keyColumnName;
} // getKeyColumnName } // getKeyColumnName
/** /**
* Set Name of the Key Column * Set Name of the Key Column
* @param keyColumnName * @param keyColumnName
@ -1260,9 +1263,9 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
m_parentColumnName = DB.getSQLValueString(null, sql, m_vo.Parent_Column_ID ); m_parentColumnName = DB.getSQLValueString(null, sql, m_vo.Parent_Column_ID );
if ( m_parentColumnName == null ) if ( m_parentColumnName == null )
m_parentColumnName = ""; m_parentColumnName = "";
if (linkColumnName != null) if (linkColumnName != null)
m_linkColumnName = linkColumnName; m_linkColumnName = linkColumnName;
else else
@ -1378,7 +1381,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
*/ */
public boolean isDetail() public boolean isDetail()
{ {
// First Tab Level is not a detail // First Tab Level is not a detail
if (m_vo.TabLevel == 0) if (m_vo.TabLevel == 0)
return false; return false;
// We have IsParent columns and/or a link column // We have IsParent columns and/or a link column
@ -1440,7 +1443,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
{ {
if (m_vo.IsReadOnly) if (m_vo.IsReadOnly)
return true; return true;
//hengsin, make detail readonly when parent is empty //hengsin, make detail readonly when parent is empty
if (m_parentNeedSave) return true; if (m_parentNeedSave) return true;
@ -1824,7 +1827,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
DB.close(rs, pstmt); DB.close(rs, pstmt);
rs = null; pstmt = null; rs = null; pstmt = null;
} }
if (filled) if (filled)
return mf.format (arguments); return mf.format (arguments);
return " "; return " ";
@ -1891,7 +1894,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
DB.close(rs, pstmt); DB.close(rs, pstmt);
rs = null; pstmt = null; rs = null; pstmt = null;
} }
if (filled) if (filled)
return mf.format (arguments); return mf.format (arguments);
return " "; return " ";
@ -1969,7 +1972,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
if (colFax != null && (colFax.getVFormat() == null || colFax.getVFormat().length() == 0)) if (colFax != null && (colFax.getVFormat() == null || colFax.getVFormat().length() == 0))
fFax.setVFormat(phone_frm); fFax.setVFormat(phone_frm);
} }
} // loadDependentInfo } // loadDependentInfo
@ -2236,11 +2239,11 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
} }
else // Redistribute Info with current row info else // Redistribute Info with current row info
fireDataStatusChanged(m_DataStatusEvent); fireDataStatusChanged(m_DataStatusEvent);
//reset //reset
m_lastDataStatusEventTime = System.currentTimeMillis(); m_lastDataStatusEventTime = System.currentTimeMillis();
m_lastDataStatusEvent = m_DataStatusEvent; m_lastDataStatusEvent = m_DataStatusEvent;
m_DataStatusEvent = null; m_DataStatusEvent = null;
// log.fine("dataStatusChanged #" + m_vo.TabNo + "- fini", e.toString()); // log.fine("dataStatusChanged #" + m_vo.TabNo + "- fini", e.toString());
} // dataStatusChanged } // dataStatusChanged
@ -2359,9 +2362,9 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
// Row range check // Row range check
int newRow = verifyRow(targetRow); int newRow = verifyRow(targetRow);
// Check, if we have old uncommitted data // Check, if we have old uncommitted data
if (m_mTable.dataSave(newRow, false) == false) if (m_mTable.dataSave(newRow, false) == false)
return m_currentRow; return m_currentRow;
//remove/ignore new and unchange row //remove/ignore new and unchange row
@ -2371,7 +2374,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
newRow--; newRow--;
dataIgnore(); dataIgnore();
} }
// new position // new position
return setCurrentRow(newRow, true); return setCurrentRow(newRow, true);
} // navigate } // navigate
@ -2461,7 +2464,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
// Object value = null; // Object value = null;
// if (mField.isKey() || mField.isParent() || mField.getColumnName().equals(m_linkColumnName)) // if (mField.isKey() || mField.isParent() || mField.getColumnName().equals(m_linkColumnName))
// value = mField.getDefault(); // value = mField.getDefault();
// CarlosRuiz - globalqss [ 1881480 ] Navigation problem between tabs // CarlosRuiz - globalqss [ 1881480 ] Navigation problem between tabs
// the implementation of linking with window context variables is very weak // the implementation of linking with window context variables is very weak
// you must be careful when defining a column in a detail tab with a field // you must be careful when defining a column in a detail tab with a field
@ -2487,7 +2490,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
{ {
m_DataStatusEvent = m_lastDataStatusEvent; m_DataStatusEvent = m_lastDataStatusEvent;
} }
// inform APanel/.. -> dataStatus with row updated // inform APanel/.. -> dataStatus with row updated
if (m_DataStatusEvent == null) if (m_DataStatusEvent == null)
m_DataStatusEvent = new DataStatusEvent(this, getRowCount(), m_DataStatusEvent = new DataStatusEvent(this, getRowCount(),
@ -2499,10 +2502,10 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
if (status == null || status.length() == 0) if (status == null || status.length() == 0)
m_DataStatusEvent.setInfo(DEFAULT_STATUS_MESSAGE, null, false,false); m_DataStatusEvent.setInfo(DEFAULT_STATUS_MESSAGE, null, false,false);
fireDataStatusChanged(m_DataStatusEvent); fireDataStatusChanged(m_DataStatusEvent);
//reset //reset
m_DataStatusEvent = null; m_DataStatusEvent = null;
return m_currentRow; return m_currentRow;
} // setCurrentRow } // setCurrentRow
@ -2599,10 +2602,10 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
return "NoField"; return "NoField";
log.fine(field.getColumnName() + "=" + value + " - Row=" + m_currentRow); log.fine(field.getColumnName() + "=" + value + " - Row=" + m_currentRow);
if (DisplayType.isID(field.getDisplayType()) && value instanceof Integer && ((Integer)value).intValue() < 0) if (DisplayType.isID(field.getDisplayType()) && value instanceof Integer && ((Integer)value).intValue() < 0)
value = null; value = null;
int col = m_mTable.findColumn(field.getColumnName()); int col = m_mTable.findColumn(field.getColumnName());
m_mTable.setValueAt(value, m_currentRow, col, false); m_mTable.setValueAt(value, m_currentRow, col, false);
// //
@ -2677,12 +2680,12 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
} // for all dependent fields } // for all dependent fields
} // processDependencies } // processDependencies
private List<String> activeCallouts = new ArrayList<String>(); private List<String> activeCallouts = new ArrayList<String>();
private List<Callout> activeCalloutInstance = new ArrayList<Callout>(); private List<Callout> activeCalloutInstance = new ArrayList<Callout>();
/** /**
* *
* @return list of active call out for this tab * @return list of active call out for this tab
*/ */
public String[] getActiveCallouts() public String[] getActiveCallouts()
@ -2690,9 +2693,9 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
String[] list = new String[activeCallouts.size()]; String[] list = new String[activeCallouts.size()];
return activeCallouts.toArray(list); return activeCallouts.toArray(list);
} }
/** /**
* *
* @return list of active call out instance for this tab * @return list of active call out instance for this tab
*/ */
public Callout[] getActiveCalloutInstance() public Callout[] getActiveCalloutInstance()
@ -2718,15 +2721,48 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
*/ */
public String processCallout (GridField field) public String processCallout (GridField field)
{ {
String callout = field.getCallout();
if (callout.length() == 0)
return "";
// //
if (isProcessed() && !field.isAlwaysUpdateable()) // only active records if (isProcessed() && !field.isAlwaysUpdateable()) // only active records
return ""; // "DocProcessed"; return ""; // "DocProcessed";
Object value = field.getValue(); Object value = field.getValue();
Object oldValue = field.getOldValue(); Object oldValue = field.getOldValue();
List<IColumnCallout> callouts = Core.findCallout(getTableName(), field.getColumnName());
if (callouts != null && !callouts.isEmpty()) {
for(IColumnCallout co : callouts)
{
String retValue = "";
String cmd = co.getClass().getName();
//detect infinite loop
if (activeCallouts.contains(cmd)) continue;
try
{
activeCallouts.add(cmd);
retValue = co.start(m_vo.ctx, m_vo.WindowNo, this, field, value, oldValue);
}
catch (Exception e)
{
log.log(Level.SEVERE, "start", e);
retValue = "Callout Invalid: " + e.toString();
return retValue;
}
finally
{
activeCallouts.remove(cmd);
}
if (!Util.isEmpty(retValue)) // interrupt on first error
{
log.severe (retValue);
return retValue;
}
}
}
String callout = field.getCallout();
if (callout.length() == 0)
return "";
log.fine(field.getColumnName() + "=" + value log.fine(field.getColumnName() + "=" + value
+ " (" + callout + ") - old=" + oldValue); + " (" + callout + ") - old=" + oldValue);
@ -2734,26 +2770,26 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
while (st.hasMoreTokens()) // for each callout while (st.hasMoreTokens()) // for each callout
{ {
String cmd = st.nextToken().trim(); String cmd = st.nextToken().trim();
//detect infinite loop //detect infinite loop
if (activeCallouts.contains(cmd)) continue; if (activeCallouts.contains(cmd)) continue;
String retValue = ""; String retValue = "";
// FR [1877902] // FR [1877902]
// CarlosRuiz - globalqss - implement beanshell callout // CarlosRuiz - globalqss - implement beanshell callout
// Victor Perez - vpj-cd implement JSR 223 Scripting // Victor Perez - vpj-cd implement JSR 223 Scripting
if (cmd.toLowerCase().startsWith(MRule.SCRIPT_PREFIX)) { if (cmd.toLowerCase().startsWith(MRule.SCRIPT_PREFIX)) {
MRule rule = MRule.get(m_vo.ctx, cmd.substring(MRule.SCRIPT_PREFIX.length())); MRule rule = MRule.get(m_vo.ctx, cmd.substring(MRule.SCRIPT_PREFIX.length()));
if (rule == null) { if (rule == null) {
retValue = "Callout " + cmd + " not found"; retValue = "Callout " + cmd + " not found";
log.log(Level.SEVERE, retValue); log.log(Level.SEVERE, retValue);
return retValue; return retValue;
} }
if ( ! (rule.getEventType().equals(MRule.EVENTTYPE_Callout) if ( ! (rule.getEventType().equals(MRule.EVENTTYPE_Callout)
&& rule.getRuleType().equals(MRule.RULETYPE_JSR223ScriptingAPIs))) { && rule.getRuleType().equals(MRule.RULETYPE_JSR223ScriptingAPIs))) {
retValue = "Callout " + cmd retValue = "Callout " + cmd
+ " must be of type JSR 223 and event Callout"; + " must be of type JSR 223 and event Callout";
log.log(Level.SEVERE, retValue); log.log(Level.SEVERE, retValue);
return retValue; return retValue;
} }
@ -2763,7 +2799,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
// Window context are W_ // Window context are W_
// Login context are G_ // Login context are G_
MRule.setContext(engine, m_vo.ctx, m_vo.WindowNo); MRule.setContext(engine, m_vo.ctx, m_vo.WindowNo);
// now add the callout parameters windowNo, tab, field, value, oldValue to the engine // now add the callout parameters windowNo, tab, field, value, oldValue to the engine
// Method arguments context are A_ // Method arguments context are A_
engine.put(MRule.ARGUMENTS_PREFIX + "WindowNo", m_vo.WindowNo); engine.put(MRule.ARGUMENTS_PREFIX + "WindowNo", m_vo.WindowNo);
engine.put(MRule.ARGUMENTS_PREFIX + "Tab", this); engine.put(MRule.ARGUMENTS_PREFIX + "Tab", this);
@ -2772,7 +2808,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
engine.put(MRule.ARGUMENTS_PREFIX + "OldValue", oldValue); engine.put(MRule.ARGUMENTS_PREFIX + "OldValue", oldValue);
engine.put(MRule.ARGUMENTS_PREFIX + "Ctx", m_vo.ctx); engine.put(MRule.ARGUMENTS_PREFIX + "Ctx", m_vo.ctx);
try try
{ {
activeCallouts.add(cmd); activeCallouts.add(cmd);
retValue = engine.eval(rule.getScript()).toString(); retValue = engine.eval(rule.getScript()).toString();
@ -2787,7 +2823,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
{ {
activeCallouts.remove(cmd); activeCallouts.remove(cmd);
} }
} else { } else {
Callout call = null; Callout call = null;
@ -2828,9 +2864,9 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
activeCallouts.remove(cmd); activeCallouts.remove(cmd);
activeCalloutInstance.remove(call); activeCalloutInstance.remove(call);
} }
} }
if (!Util.isEmpty(retValue)) // interrupt on first error if (!Util.isEmpty(retValue)) // interrupt on first error
{ {
log.severe (retValue); log.severe (retValue);
@ -2899,7 +2935,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
return null; return null;
return m_mTable.getValueAt(row, col); return m_mTable.getValueAt(row, col);
} // getValue } // getValue
/* /*
public boolean isNeedToSaveParent() public boolean isNeedToSaveParent()
{ {
@ -2953,11 +2989,11 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
{ {
m_listenerList.add(DataStatusListener.class, l); m_listenerList.add(DataStatusListener.class, l);
} }
/** /**
* @param l * @param l
*/ */
public synchronized void addStateChangeListener(StateChangeListener l) public synchronized void addStateChangeListener(StateChangeListener l)
{ {
m_listenerList.add(StateChangeListener.class, l); m_listenerList.add(StateChangeListener.class, l);
} }
@ -2965,11 +3001,11 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
/** /**
* @param l * @param l
*/ */
public synchronized void removeStateChangeListener(StateChangeListener l) public synchronized void removeStateChangeListener(StateChangeListener l)
{ {
m_listenerList.remove(StateChangeListener.class, l); m_listenerList.remove(StateChangeListener.class, l);
} }
/** /**
* Feature Request [1707462] * Feature Request [1707462]
* Enable runtime change of VFormat * Enable runtime change of VFormat
@ -2980,7 +3016,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
public void setFieldVFormat (String identifier, String strNewFormat) public void setFieldVFormat (String identifier, String strNewFormat)
{ {
m_mTable.setFieldVFormat(identifier, strNewFormat); m_mTable.setFieldVFormat(identifier, strNewFormat);
} // setFieldVFormat } // setFieldVFormat
/** /**
* Switches the line/seqNo of the two rows * Switches the line/seqNo of the two rows
@ -3039,10 +3075,10 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
if (lineNoCurrentRow >= 9900 if (lineNoCurrentRow >= 9900
|| lineNoNextRow >= 9900) { || lineNoNextRow >= 9900) {
log.fine("don't sort - might be special lines"); log.fine("don't sort - might be special lines");
return; return;
} }
// switch the line numbers and save new values // switch the line numbers and save new values
m_mTable.setValueAt(lineNoCurrentRow, to, lineCol); m_mTable.setValueAt(lineNoCurrentRow, to, lineCol);
setCurrentRow(to, false); setCurrentRow(to, false);
m_mTable.dataSave(true); m_mTable.dataSave(true);
@ -3057,7 +3093,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
} }
navigate(to); navigate(to);
} }
private void fireStateChangeEvent(StateChangeEvent e) private void fireStateChangeEvent(StateChangeEvent e)
{ {
StateChangeListener[] listeners = m_listenerList.getListeners(StateChangeListener.class); StateChangeListener[] listeners = m_listenerList.getListeners(StateChangeListener.class);
@ -3066,11 +3102,11 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
for(int i = 0; i < listeners.length; i++) { for(int i = 0; i < listeners.length; i++) {
listeners[i].stateChange(e); listeners[i].stateChange(e);
} }
} }
/** /**
* *
* @return list of all tabs included in this tab * @return list of all tabs included in this tab
*/ */
public List<GridTab> getIncludedTabs() public List<GridTab> getIncludedTabs()
@ -3093,8 +3129,8 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
} }
return list; return list;
} }
//BF [ 2910358 ] //BF [ 2910358 ]
/** /**
* get Parent Tab No * get Parent Tab No
* @return Tab No * @return Tab No
@ -3108,7 +3144,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
return tabNo; return tabNo;
while (parentLevel != currentLevel) while (parentLevel != currentLevel)
{ {
tabNo--; tabNo--;
currentLevel = Env.getContextAsInt(m_vo.ctx, m_vo.WindowNo, tabNo, GridTab.CTX_TabLevel); currentLevel = Env.getContextAsInt(m_vo.ctx, m_vo.WindowNo, tabNo, GridTab.CTX_TabLevel);
} }
return tabNo; return tabNo;

View File

@ -46,6 +46,9 @@ import javax.swing.JFrame;
import javax.swing.RepaintManager; import javax.swing.RepaintManager;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import org.adempiere.base.Core;
import org.adempiere.base.IResourceFinder;
import org.adempiere.base.Service;
import org.compiere.Adempiere; import org.compiere.Adempiere;
import org.compiere.db.CConnection; import org.compiere.db.CConnection;
import org.compiere.model.MClient; import org.compiere.model.MClient;
@ -54,6 +57,10 @@ import org.compiere.model.MRole;
import org.compiere.model.MSession; import org.compiere.model.MSession;
import org.compiere.model.PO; import org.compiere.model.PO;
import org.compiere.swing.CFrame; import org.compiere.swing.CFrame;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.Platform;
import com.sun.xml.internal.ws.util.ServiceFinder;
/** /**
@ -1497,7 +1504,10 @@ public final class Env
*/ */
public static Image getImage (String fileNameInImageDir) public static Image getImage (String fileNameInImageDir)
{ {
URL url = Adempiere.class.getResource("images/" + fileNameInImageDir); IResourceFinder rf = Core.getResourceFinder();
URL url = rf.getResource("images/" + fileNameInImageDir);
// URL url = Adempiere.class.getResource("images/" + fileNameInImageDir);
if (url == null) if (url == null)
{ {
s_log.log(Level.SEVERE, "Not found: " + fileNameInImageDir); s_log.log(Level.SEVERE, "Not found: " + fileNameInImageDir);
@ -1515,7 +1525,9 @@ public final class Env
*/ */
public static ImageIcon getImageIcon (String fileNameInImageDir) public static ImageIcon getImageIcon (String fileNameInImageDir)
{ {
URL url = Adempiere.class.getResource("images/" + fileNameInImageDir); IResourceFinder rf = Core.getResourceFinder();
URL url = rf.getResource("images/" + fileNameInImageDir);
// URL url = Adempiere.class.getResource("images/" + fileNameInImageDir);
if (url == null) if (url == null)
{ {
s_log.log(Level.INFO, "Not found: " + fileNameInImageDir); s_log.log(Level.INFO, "Not found: " + fileNameInImageDir);
@ -1535,9 +1547,12 @@ public final class Env
*/ */
public static ImageIcon getImageIcon2 (String fileName) public static ImageIcon getImageIcon2 (String fileName)
{ {
URL url = Adempiere.class.getResource("images/" + fileName+".gif"); IResourceFinder rf = Core.getResourceFinder();
URL url = rf.getResource("images/" + fileName+".gif");
// URL url = Adempiere.class.getResource("images/" + fileName+".gif");
if (url == null) if (url == null)
url = Adempiere.class.getResource("images/" + fileName+".png"); url = rf.getResource("images/" + fileName+".png");
// url = Adempiere.class.getResource("images/" + fileName+".png");
if (url == null) if (url == null)
{ {
s_log.log(Level.INFO, "GIF/PNG Not found: " + fileName); s_log.log(Level.INFO, "GIF/PNG Not found: " + fileName);

View File

@ -147,10 +147,14 @@ public interface I_PP_Product_Planning
/** Column name IsMPS */ /** Column name IsMPS */
public static final String COLUMNNAME_IsMPS = "IsMPS"; public static final String COLUMNNAME_IsMPS = "IsMPS";
/** Set Is MPS */ /** Set Is MPS.
* Determines if this product is part of the master production schedule
*/
public void setIsMPS (boolean IsMPS); public void setIsMPS (boolean IsMPS);
/** Get Is MPS */ /** Get Is MPS.
* Determines if this product is part of the master production schedule
*/
public boolean isMPS(); public boolean isMPS();
/** Column name IsPhantom */ /** Column name IsPhantom */
@ -280,17 +284,6 @@ public interface I_PP_Product_Planning
/** Get Order Qty */ /** Get Order Qty */
public BigDecimal getOrder_Qty(); public BigDecimal getOrder_Qty();
/** Column name Planner_ID */
public static final String COLUMNNAME_Planner_ID = "Planner_ID";
/** Set Planner */
public void setPlanner_ID (int Planner_ID);
/** Get Planner */
public int getPlanner_ID();
public I_AD_User getPlanner() throws RuntimeException;
/** Column name PP_Product_BOM_ID */ /** Column name PP_Product_BOM_ID */
public static final String COLUMNNAME_PP_Product_BOM_ID = "PP_Product_BOM_ID"; public static final String COLUMNNAME_PP_Product_BOM_ID = "PP_Product_BOM_ID";
@ -315,18 +308,16 @@ public interface I_PP_Product_Planning
/** Get Product Planning */ /** Get Product Planning */
public int getPP_Product_Planning_ID(); public int getPP_Product_Planning_ID();
/** Column name SafetyStock */ /** Column name Planner_ID */
public static final String COLUMNNAME_SafetyStock = "SafetyStock"; public static final String COLUMNNAME_Planner_ID = "Planner_ID";
/** Set Safety Stock Qty. /** Set Planner */
* Safety stock is a term used to describe a level of stock that is maintained below the cycle stock to buffer against stock-outs public void setPlanner_ID (int Planner_ID);
*/
public void setSafetyStock (BigDecimal SafetyStock);
/** Get Safety Stock Qty. /** Get Planner */
* Safety stock is a term used to describe a level of stock that is maintained below the cycle stock to buffer against stock-outs public int getPlanner_ID();
*/
public BigDecimal getSafetyStock(); public I_AD_User getPlanner() throws RuntimeException;
/** Column name S_Resource_ID */ /** Column name S_Resource_ID */
public static final String COLUMNNAME_S_Resource_ID = "S_Resource_ID"; public static final String COLUMNNAME_S_Resource_ID = "S_Resource_ID";
@ -343,6 +334,19 @@ public interface I_PP_Product_Planning
public I_S_Resource getS_Resource() throws RuntimeException; public I_S_Resource getS_Resource() throws RuntimeException;
/** Column name SafetyStock */
public static final String COLUMNNAME_SafetyStock = "SafetyStock";
/** Set Safety Stock Qty.
* Safety stock is a term used to describe a level of stock that is maintained below the cycle stock to buffer against stock-outs
*/
public void setSafetyStock (BigDecimal SafetyStock);
/** Get Safety Stock Qty.
* Safety stock is a term used to describe a level of stock that is maintained below the cycle stock to buffer against stock-outs
*/
public BigDecimal getSafetyStock();
/** Column name TimeFence */ /** Column name TimeFence */
public static final String COLUMNNAME_TimeFence = "TimeFence"; public static final String COLUMNNAME_TimeFence = "TimeFence";

View File

@ -9,5 +9,6 @@
<classpathentry kind="lib" path="/tools/lib/jcommon-1.0.16.jar"/> <classpathentry kind="lib" path="/tools/lib/jcommon-1.0.16.jar"/>
<classpathentry kind="lib" path="/tools/lib/jfreechart-1.0.13.jar"/> <classpathentry kind="lib" path="/tools/lib/jfreechart-1.0.13.jar"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/> <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="build"/> <classpathentry kind="output" path="build"/>
</classpath> </classpath>

View File

@ -22,7 +22,12 @@
</arguments> </arguments>
</buildCommand> </buildCommand>
<buildCommand> <buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name> <name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments> <arguments>
</arguments> </arguments>
</buildCommand> </buildCommand>
@ -32,5 +37,6 @@
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature> <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature> <nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature> <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
</natures> </natures>
</projectDescription> </projectDescription>

204
client/META-INF/MANIFEST.MF Normal file
View File

@ -0,0 +1,204 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: org.adempiere.client
Bundle-SymbolicName: org.adempiere.client;singleton:=true
Bundle-Version: 0.0.0.2
Bundle-ClassPath: client.jar,
lib/swingx-0.9.0.jar,
lib/groovy-all-1.5.1.jar,
lib/jcommon-1.0.14.jar,
lib/jfreechart-1.0.11.jar
Export-Package: com.keypoint,
de.schaeffer.compiere.tools,
groovy.inspect,
groovy.inspect.swingui,
groovy.io,
groovy.lang,
groovy.mock,
groovy.mock.interceptor,
groovy.model,
groovy.security,
groovy.servlet,
groovy.sql,
groovy.swing,
groovy.swing.binding,
groovy.swing.factory,
groovy.swing.impl,
groovy.text,
groovy.time,
groovy.ui,
groovy.ui.icons,
groovy.ui.text,
groovy.ui.view,
groovy.util,
groovy.util.slurpersupport,
groovy.xml,
groovy.xml.dom,
groovy.xml.streamingmarkupsupport,
groovyjarjarantlr,
groovyjarjarantlr.ASdebug,
groovyjarjarantlr.actions.cpp,
groovyjarjarantlr.actions.csharp,
groovyjarjarantlr.actions.java,
groovyjarjarantlr.actions.python,
groovyjarjarantlr.build,
groovyjarjarantlr.collections,
groovyjarjarantlr.collections.impl,
groovyjarjarantlr.debug,
groovyjarjarantlr.debug.misc,
groovyjarjarantlr.preprocessor,
groovyjarjarasm.asm,
groovyjarjarasm.asm.signature,
groovyjarjarasm.asm.tree,
groovyjarjarcommonscli,
org.adempiere.apps.graph,
org.adempiere.osgi,
org.codehaus.groovy,
org.codehaus.groovy.ant,
org.codehaus.groovy.antlr,
org.codehaus.groovy.antlr.java,
org.codehaus.groovy.antlr.parser,
org.codehaus.groovy.antlr.treewalker,
org.codehaus.groovy.ast,
org.codehaus.groovy.ast.expr,
org.codehaus.groovy.ast.stmt,
org.codehaus.groovy.binding,
org.codehaus.groovy.bsf,
org.codehaus.groovy.classgen,
org.codehaus.groovy.control,
org.codehaus.groovy.control.io,
org.codehaus.groovy.control.messages,
org.codehaus.groovy.groovydoc,
org.codehaus.groovy.reflection,
org.codehaus.groovy.runtime,
org.codehaus.groovy.runtime.metaclass,
org.codehaus.groovy.runtime.typehandling,
org.codehaus.groovy.runtime.wrappers,
org.codehaus.groovy.syntax,
org.codehaus.groovy.tools,
org.codehaus.groovy.tools.groovydoc,
org.codehaus.groovy.tools.javac,
org.codehaus.groovy.tools.shell,
org.codehaus.groovy.tools.shell.commands,
org.codehaus.groovy.tools.shell.util,
org.codehaus.groovy.tools.xml,
org.codehaus.groovy.vmplugin,
org.codehaus.groovy.vmplugin.v4,
org.codehaus.groovy.vmplugin.v5,
org.compiere,
org.compiere.acct,
org.compiere.apps,
org.compiere.apps.form,
org.compiere.apps.search,
org.compiere.apps.wf,
org.compiere.grid,
org.compiere.grid.ed,
org.compiere.grid.tree,
org.compiere.images,
org.compiere.install,
org.compiere.minigrid,
org.compiere.pos,
org.compiere.print,
org.eevolution.form,
org.jdesktop.beans,
org.jdesktop.swingx,
org.jdesktop.swingx.action,
org.jdesktop.swingx.auth,
org.jdesktop.swingx.auth.resources,
org.jdesktop.swingx.autocomplete,
org.jdesktop.swingx.autocomplete.workarounds,
org.jdesktop.swingx.border,
org.jdesktop.swingx.calendar,
org.jdesktop.swingx.calendar.resources,
org.jdesktop.swingx.color,
org.jdesktop.swingx.combobox,
org.jdesktop.swingx.decorator,
org.jdesktop.swingx.editors,
org.jdesktop.swingx.error,
org.jdesktop.swingx.event,
org.jdesktop.swingx.geom,
org.jdesktop.swingx.graphics,
org.jdesktop.swingx.icon,
org.jdesktop.swingx.image,
org.jdesktop.swingx.multislider,
org.jdesktop.swingx.multisplitpane,
org.jdesktop.swingx.painter,
org.jdesktop.swingx.painter.effects,
org.jdesktop.swingx.plaf,
org.jdesktop.swingx.plaf.basic,
org.jdesktop.swingx.plaf.basic.resources,
org.jdesktop.swingx.plaf.linux,
org.jdesktop.swingx.plaf.macosx,
org.jdesktop.swingx.plaf.metal,
org.jdesktop.swingx.plaf.misc,
org.jdesktop.swingx.plaf.motif,
org.jdesktop.swingx.plaf.nimbus,
org.jdesktop.swingx.plaf.resources,
org.jdesktop.swingx.plaf.windows,
org.jdesktop.swingx.plaf.windows.resources,
org.jdesktop.swingx.renderer,
org.jdesktop.swingx.resources,
org.jdesktop.swingx.table,
org.jdesktop.swingx.table.resources,
org.jdesktop.swingx.tips,
org.jdesktop.swingx.tree,
org.jdesktop.swingx.treetable,
org.jdesktop.swingx.util,
org.jfree,
org.jfree.base,
org.jfree.base.config,
org.jfree.base.log,
org.jfree.base.modules,
org.jfree.chart,
org.jfree.chart.annotations,
org.jfree.chart.axis,
org.jfree.chart.block,
org.jfree.chart.demo,
org.jfree.chart.editor,
org.jfree.chart.encoders,
org.jfree.chart.entity,
org.jfree.chart.event,
org.jfree.chart.imagemap,
org.jfree.chart.labels,
org.jfree.chart.needle,
org.jfree.chart.plot,
org.jfree.chart.plot.dial,
org.jfree.chart.renderer,
org.jfree.chart.renderer.category,
org.jfree.chart.renderer.xy,
org.jfree.chart.resources,
org.jfree.chart.servlet,
org.jfree.chart.title,
org.jfree.chart.urls,
org.jfree.chart.util,
org.jfree.data,
org.jfree.data.category,
org.jfree.data.contour,
org.jfree.data.function,
org.jfree.data.gantt,
org.jfree.data.general,
org.jfree.data.io,
org.jfree.data.jdbc,
org.jfree.data.resources,
org.jfree.data.statistics,
org.jfree.data.time,
org.jfree.data.time.ohlc,
org.jfree.data.xml,
org.jfree.data.xy,
org.jfree.date,
org.jfree.io,
org.jfree.layout,
org.jfree.resources,
org.jfree.text,
org.jfree.threads,
org.jfree.ui,
org.jfree.ui.about,
org.jfree.ui.about.resources,
org.jfree.ui.action,
org.jfree.ui.tabbedui,
org.jfree.util
Require-Bundle: org.adempiere.base;bundle-version="0.0.0",
org.eclipse.core.runtime;bundle-version="3.5.0",
org.adempiere.tools;bundle-version="0.0.0",
org.adempiere.jbossfacet;bundle-version="0.0.0"
Bundle-Activator: org.adempiere.client.Activator

8
client/build.properties Normal file
View File

@ -0,0 +1,8 @@
source.client.jar = src/,build/
bin.includes = META-INF/,\
lib/swingx-0.9.0.jar,\
lib/groovy-all-1.5.1.jar,\
lib/jcommon-1.0.14.jar,\
lib/jfreechart-1.0.11.jar,\
client.jar,\
plugin.xml

View File

@ -17,13 +17,24 @@
<property name="build.dir" value="build"/> <property name="build.dir" value="build"/>
<property name="dist.dir" value="../lib"/> <property name="dist.dir" value="../lib"/>
<property name="jar.path" value="../lib"/> <property name="jar.path" value="../lib"/>
<property name="jar.name" value="client.jar"/>
<!--<property environment="env"/>--> <!--<property environment="env"/>-->
<import file="../utils_dev/properties.xml"/> <import file="../utils_dev/properties.xml"/>
<property name="equinox.target" value="../equinox-target"/>
<property name="bundle.name" value="org.adempiere.client"/>
<property name="bundle.version" value="0.0.0.2"/>
<path id="osgi.libs">
<fileset dir="${equinox.target}/plugins">
<include name="*.jar"/>
</fileset>
</path>
<!-- set path to include the necessary jar files for javac --> <!-- set path to include the necessary jar files for javac -->
<path id="project.class.path"> <path id="project.class.path">
<pathelement path="${classpath}"/> <pathelement path="${classpath}"/>
<pathelement path="${jar.path}/CCTools.jar"/> <pathelement path="${jar.path}/CCTools.jar"/>
<path refid="osgi.libs"/>
<pathelement path="../base/Base.jar"/> <pathelement path="../base/Base.jar"/>
<pathelement path="../lib/customization.jar"/> <pathelement path="../lib/customization.jar"/>
<pathelement path="../lib/patches.jar"/> <pathelement path="../lib/patches.jar"/>
@ -112,7 +123,14 @@
</manifest> </manifest>
</jar> </jar>
</target> </target>
<target name="plugin">
<buildPlugin workspaceDirectory=".."
projectName="client"
targetPlatformId="target.platform"
destination="${dist.dir}"
buildSourceJar="false" />
</target>
<target name="clean"> <target name="clean">
<!-- Delete the ${build.dir} directory trees --> <!-- Delete the ${build.dir} directory trees -->

21
client/plugin.xml Normal file
View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension-point id="org.adempiere.osgi.IMenuAction" name="MenuAction" schema="schema/org.adempiere.osgi.IMenuAction.exsd"/>
<extension
id="RF"
name="RF"
point="org.adempiere.base.IResourceFinder">
<client
class="org.compiere.util.ResourceFinder">
</client>
</extension>
<extension
id="org.adempiere.Client"
point="org.eclipse.core.runtime.applications">
<application>
<run class="org.adempiere.client.Application" />
</application>
</extension>
</plugin>

View File

@ -0,0 +1,101 @@
<?xml version='1.0' encoding='UTF-8'?>
<schema targetNamespace="org.adempiere.client" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
<appinfo>
<meta.schema plugin="org.adempiere.client" id="org.adempiere.osgi.IMenuAction" name="MenuAction"/>
</appinfo>
<documentation>
[Enter description of this extension point.]
</documentation>
</annotation>
<element name="extension">
<annotation>
<appinfo>
<meta.element />
</appinfo>
</annotation>
<complexType>
<choice>
<element ref="client" minOccurs="1" maxOccurs="unbounded"/>
</choice>
<attribute name="point" type="string" use="required">
<annotation>
<documentation>
</documentation>
</annotation>
</attribute>
<attribute name="id" type="string">
<annotation>
<documentation>
</documentation>
</annotation>
</attribute>
<attribute name="name" type="string">
<annotation>
<documentation>
</documentation>
<appinfo>
<meta.attribute translatable="true"/>
</appinfo>
</annotation>
</attribute>
</complexType>
</element>
<element name="client">
<complexType>
<attribute name="class" type="string" use="required">
<annotation>
<documentation>
</documentation>
<appinfo>
<meta.attribute kind="java" basedOn=":org.adempiere.osgi.IMenuAction"/>
</appinfo>
</annotation>
</attribute>
</complexType>
</element>
<annotation>
<appinfo>
<meta.section type="since"/>
</appinfo>
<documentation>
[Enter the first release in which this extension point appears.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="examples"/>
</appinfo>
<documentation>
[Enter extension point usage example here.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="apiinfo"/>
</appinfo>
<documentation>
[Enter API information here.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="implementation"/>
</appinfo>
<documentation>
[Enter information about supplied implementation of this extension point.]
</documentation>
</annotation>
</schema>

View File

@ -0,0 +1,35 @@
package org.adempiere.client;
import java.rmi.RMISecurityManager;
import org.compiere.util.CLogger;
import org.eclipse.core.runtime.Plugin;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.BundleException;
public class Activator extends Plugin {
private static final String ADMEPIERE_PREFIX = "org.adempiere";
private static CLogger log = CLogger.getCLogger(Activator.class);
@Override
public void start(BundleContext context) throws Exception {
activateAll(context.getBundles());
}
private void activateAll(Bundle[] bundles) {
for (Bundle bundle : bundles) {
if (shouldStart(bundle))
try {
bundle.start();
log.info("Started "+bundle.getSymbolicName());
} catch (BundleException e) {
log.warning("Could not start "+bundle.getSymbolicName());
}
}
}
private boolean shouldStart(Bundle bundle) {
return bundle.getSymbolicName().startsWith(ADMEPIERE_PREFIX);
}
}

View File

@ -0,0 +1,19 @@
package org.adempiere.client;
import org.compiere.util.CLogger;
import org.eclipse.equinox.app.IApplication;
import org.eclipse.equinox.app.IApplicationContext;
public class Application implements IApplication {
private static CLogger log = CLogger.getCLogger(Application.class);
public Object start(IApplicationContext ctx) throws Exception {
log.info("Starting client");
org.compiere.AdempiereClient.main(new String[]{});
return IApplication.EXIT_OK;
}
public void stop() {
}
}

View File

@ -0,0 +1,18 @@
package org.adempiere.client;
import org.adempiere.base.Core;
import org.adempiere.base.Service;
import org.adempiere.base.ServiceQuery;
import org.compiere.apps.form.FormPanel;
public class Client {
public static FormPanel getFormPanel(String className) {
if (Core.isExtension(className))
className = className.substring(Core.OSGI_PREFIX.length());
ServiceQuery query = new ServiceQuery();
query.put("class", className);
return Service.locate(FormPanel.class, query );
}
}

View File

@ -0,0 +1,35 @@
package org.adempiere.osgi;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import org.compiere.util.CLogger;
import org.compiere.util.Env;
import org.compiere.util.Msg;
public abstract class AbstractMenuAction implements IMenuAction {
protected CLogger log = CLogger.getCLogger(getClass());
protected JMenu getMenu(JMenuBar menuBar, String label) {
// Translated text
String text = Msg.getMsg(Env.getCtx(), label);
int pos = text.indexOf('&');
if (pos != -1) {
text = text.substring(0, pos) + text.substring(pos+1);
}
for (int i=0; i < menuBar.getMenuCount(); i++) {
JMenu menu = menuBar.getMenu(i);
if (text.equals(menu.getText())) {
return menu;
}
}
// menu not found.
log.warning("Menu " + label + " not found.");
return null;
}
}

View File

@ -0,0 +1,11 @@
package org.adempiere.osgi;
import javax.swing.JMenuBar;
import org.adempiere.base.IService;
public interface IMenuAction extends IService {
public void addAction(JMenuBar menuBar);
}

View File

@ -0,0 +1,219 @@
/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* See the GNU General Public License for more details. *
* You should have received a copy of the GNU General Public License along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
* For the text or an alternative of this public license, you may reach us *
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
* or via info@compiere.org or http://www.compiere.org/license.html *
*****************************************************************************/
package org.compiere;
import java.awt.Image;
import java.awt.Toolkit;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;
import java.util.logging.Level;
import javax.jnlp.BasicService;
import javax.jnlp.ServiceManager;
import javax.jnlp.UnavailableServiceException;
import javax.swing.ImageIcon;
import org.compiere.db.CConnection;
import org.compiere.model.MClient;
import org.compiere.model.MSystem;
import org.compiere.model.ModelValidationEngine;
import org.compiere.util.CLogFile;
import org.compiere.util.CLogMgt;
import org.compiere.util.CLogger;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.compiere.util.Ini;
import org.compiere.util.Login;
import org.compiere.util.SecureEngine;
import org.compiere.util.SecureInterface;
import org.compiere.util.Splash;
import org.compiere.util.Util;
/**
* Adempiere Control Class
*
* @author Jorg Janke
* @version $Id: Adempiere.java,v 1.8 2006/08/11 02:58:14 jjanke Exp $
*
*/
public final class AdempiereClient
{
/** Logging */
private static CLogger log = null;
/*************************************************************************
* Startup Client.
* - Print greeting,
* - Check Java version and
* - load ini parameters
* If it is a client, load/set PLAF and exit if error.
* If Client, you need to call startupEnvironment explicitly!
* For testing call method startupEnvironment
* @param isClient true for client
* @return successful startup
*/
public static synchronized boolean startup (boolean isClient)
{
// Already started
if (log != null)
return true;
// Check Version
if (!Login.isJavaOK(isClient) && isClient)
System.exit(1);
CLogMgt.initialize(isClient);
Ini.setClient (isClient); // Ini requires Logging
// Init Log
log = CLogger.getCLogger(AdempiereClient.class);
// Greeting
log.info(Adempiere.getSummaryAscii());
// log.info(getAdempiereHome() + " - " + getJavaInfo() + " - " + getOSInfo());
// Load System environment
// EnvLoader.load(Ini.ENV_PREFIX);
// System properties
Ini.loadProperties (false);
// Set up Log
CLogMgt.setLevel(Ini.getProperty(Ini.P_TRACELEVEL));
if (isClient && Ini.isPropertyBool(Ini.P_TRACEFILE)
&& CLogFile.get(false, null, isClient) == null)
CLogMgt.addHandler(CLogFile.get (true, Ini.findAdempiereHome(), isClient));
// Set UI
if (isClient)
{
if (CLogMgt.isLevelAll())
log.log(Level.FINEST, System.getProperties().toString());
}
// Set Default Database Connection from Ini
DB.setDBTarget(CConnection.get(Adempiere.getCodeBaseHost()));
if (isClient) // don't test connection
return false; // need to call
return startupEnvironment(isClient);
} // startup
/**
* Startup Adempiere Environment.
* Automatically called for Server connections
* For testing call this method.
* @param isClient true if client connection
* @return successful startup
*/
public static boolean startupEnvironment (boolean isClient)
{
startup(isClient); // returns if already initiated
if (!DB.isConnected())
{
log.severe ("No Database");
return false;
}
MSystem system = MSystem.get(Env.getCtx()); // Initializes Base Context too
if (system == null)
return false;
// Initialize main cached Singletons
ModelValidationEngine.get();
try
{
String className = system.getEncryptionKey();
if (className == null || className.length() == 0)
{
className = System.getProperty(SecureInterface.ADEMPIERE_SECURE);
if (className != null && className.length() > 0
&& !className.equals(SecureInterface.ADEMPIERE_SECURE_DEFAULT))
{
SecureEngine.init(className); // test it
system.setEncryptionKey(className);
system.save();
}
}
SecureEngine.init(className);
//
if (isClient)
MClient.get(Env.getCtx(),0); // Login Client loaded later
else
MClient.getAll(Env.getCtx());
}
catch (Exception e)
{
log.warning("Environment problems: " + e.toString());
}
// Start Workflow Document Manager (in other package) for PO
String className = null;
try
{
className = "org.compiere.wf.DocWorkflowManager";
Class.forName(className);
// Initialize Archive Engine
className = "org.compiere.print.ArchiveEngine";
Class.forName(className);
}
catch (Exception e)
{
log.warning("Not started: " + className + " - " + e.getMessage());
}
if (!isClient)
DB.updateMail();
return true;
} // startupEnvironment
/**
* Main Method
*
* @param args optional start class
*/
public static void main (String[] args)
{
Splash.getSplash();
startup(true); // error exit and initUI
// Start with class as argument - or if nothing provided with Client
String className = "org.compiere.apps.AMenu";
for (int i = 0; i < args.length; i++)
{
if (!args[i].equals("-debug")) // ignore -debug
{
className = args[i];
break;
}
}
//
try
{
Class<?> startClass = Class.forName(className);
startClass.newInstance();
}
catch (Exception e)
{
System.err.println("ADempiere starting: " + className + " - " + e.toString());
e.printStackTrace();
}
} // main
} // Adempiere

View File

@ -122,7 +122,7 @@ public class AcctViewer extends CFrame
/** State Info */ /** State Info */
private AcctViewerData m_data = null; private AcctViewerData m_data = null;
/** Image Icon */ /** Image Icon */
private ImageIcon m_iFind = new ImageIcon(org.compiere.Adempiere.class.getResource("images/Find16.gif")); private ImageIcon m_iFind = new ImageIcon(org.compiere.Adempiere.getResource("images/Find16.gif"));
/** Logger */ /** Logger */
private static CLogger log = CLogger.getCLogger(AcctViewer.class); private static CLogger log = CLogger.getCLogger(AcctViewer.class);
@ -210,7 +210,7 @@ public class AcctViewer extends CFrame
*/ */
private void jbInit() throws Exception private void jbInit() throws Exception
{ {
ImageIcon ii = new ImageIcon(org.compiere.Adempiere.class.getResource("images/InfoAccount16.gif")); ImageIcon ii = new ImageIcon(org.compiere.Adempiere.getResource("images/InfoAccount16.gif"));
setIconImage(ii.getImage()); setIconImage(ii.getImage());
// //
mainLayout.setHgap(5); mainLayout.setHgap(5);

View File

@ -33,6 +33,7 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Properties; import java.util.Properties;
import java.util.TreeMap; import java.util.TreeMap;
@ -59,6 +60,8 @@ import javax.swing.SwingUtilities;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
import org.adempiere.base.Service;
import org.adempiere.osgi.IMenuAction;
import org.compiere.apps.form.FormFrame; import org.compiere.apps.form.FormFrame;
import org.compiere.apps.search.Find; import org.compiere.apps.search.Find;
import org.compiere.grid.APanelTab; import org.compiere.grid.APanelTab;
@ -525,6 +528,12 @@ public final class APanel extends CPanel
toolBar.add(aEnd.getButton()); toolBar.add(aEnd.getButton());
} }
// Create OSGi menu actions..
List<IMenuAction> osgiActions = Service.list(IMenuAction.class);
for (IMenuAction action:osgiActions) {
action.addAction(menuBar);
}
// //
if (CLogMgt.isLevelAll()) if (CLogMgt.isLevelAll())
Util.printActionInputMap(this); Util.printActionInputMap(this);

View File

@ -63,7 +63,7 @@ public class FieldRecordInfo extends CDialog
public static final String CHANGE_LOG_COMMAND = "ChangeLog"; public static final String CHANGE_LOG_COMMAND = "ChangeLog";
/** The Menu Icon */ /** The Menu Icon */
private static Icon s_icon = new ImageIcon(org.compiere.Adempiere.class.getResource("images/ChangeLog16.png")); private static Icon s_icon = new ImageIcon(org.compiere.Adempiere.getResource("images/ChangeLog16.png"));
private int AD_Table_ID; private int AD_Table_ID;
private int AD_Column_ID; private int AD_Column_ID;

View File

@ -33,6 +33,8 @@ import javax.swing.JMenu;
import javax.swing.JMenuBar; import javax.swing.JMenuBar;
import javax.swing.KeyStroke; import javax.swing.KeyStroke;
import org.adempiere.base.Core;
import org.adempiere.client.Client;
import org.compiere.apps.AEnv; import org.compiere.apps.AEnv;
import org.compiere.apps.AGlassPane; import org.compiere.apps.AGlassPane;
import org.compiere.apps.AMenu; import org.compiere.apps.AMenu;
@ -315,7 +317,10 @@ public class FormFrame extends CFrame
try try
{ {
// Create instance w/o parameters // Create instance w/o parameters
m_panel = (FormPanel)Class.forName(className).newInstance(); if (Core.isExtension(className))
m_panel = Client.getFormPanel(className);
else
m_panel = (FormPanel)Class.forName(className).newInstance();
} }
catch (Exception e) catch (Exception e)
{ {

View File

@ -16,13 +16,15 @@
*****************************************************************************/ *****************************************************************************/
package org.compiere.apps.form; package org.compiere.apps.form;
import org.adempiere.base.IService;
/** /**
* Form Panel Interface. * Form Panel Interface.
* for communicating between FormFrame and JPanel * for communicating between FormFrame and JPanel
* @author Jorg Janke * @author Jorg Janke
* @version $Id: FormPanel.java,v 1.2 2006/07/30 00:51:28 jjanke Exp $ * @version $Id: FormPanel.java,v 1.2 2006/07/30 00:51:28 jjanke Exp $
*/ */
public interface FormPanel public interface FormPanel extends IService
{ {
/** /**
* Initialize Panel * Initialize Panel

View File

@ -348,22 +348,22 @@ public final class Find extends CDialog
spaceN = Box.createVerticalStrut(8); spaceN = Box.createVerticalStrut(8);
spaceW = Box.createHorizontalStrut(8); spaceW = Box.createHorizontalStrut(8);
spaceS = Box.createVerticalStrut(8); spaceS = Box.createVerticalStrut(8);
bIgnore.setIcon(new ImageIcon(org.compiere.Adempiere.class.getResource("images/Ignore24.gif"))); bIgnore.setIcon(new ImageIcon(org.compiere.Adempiere.getResource("images/Ignore24.gif")));
bIgnore.setMargin(new Insets(2, 2, 2, 2)); bIgnore.setMargin(new Insets(2, 2, 2, 2));
bIgnore.setToolTipText(Msg.getMsg(Env.getCtx(),"Ignore")); bIgnore.setToolTipText(Msg.getMsg(Env.getCtx(),"Ignore"));
bIgnore.addActionListener(this); bIgnore.addActionListener(this);
fQueryName.setToolTipText (Msg.getMsg(Env.getCtx(),"QueryName")); fQueryName.setToolTipText (Msg.getMsg(Env.getCtx(),"QueryName"));
fQueryName.setEditable(true); fQueryName.setEditable(true);
fQueryName.addActionListener(this); fQueryName.addActionListener(this);
bSave.setIcon(new ImageIcon(org.compiere.Adempiere.class.getResource("images/Save24.gif"))); bSave.setIcon(new ImageIcon(org.compiere.Adempiere.getResource("images/Save24.gif")));
bSave.setMargin(new Insets(2, 2, 2, 2)); bSave.setMargin(new Insets(2, 2, 2, 2));
bSave.setToolTipText(Msg.getMsg(Env.getCtx(),"Save")); bSave.setToolTipText(Msg.getMsg(Env.getCtx(),"Save"));
bSave.addActionListener(this); bSave.addActionListener(this);
bNew.setIcon(new ImageIcon(org.compiere.Adempiere.class.getResource("images/New24.gif"))); bNew.setIcon(new ImageIcon(org.compiere.Adempiere.getResource("images/New24.gif")));
bNew.setMargin(new Insets(2, 2, 2, 2)); bNew.setMargin(new Insets(2, 2, 2, 2));
bNew.setToolTipText(Msg.getMsg(Env.getCtx(),"New")); bNew.setToolTipText(Msg.getMsg(Env.getCtx(),"New"));
bNew.addActionListener(this); bNew.addActionListener(this);
bDelete.setIcon(new ImageIcon(org.compiere.Adempiere.class.getResource("images/Delete24.gif"))); bDelete.setIcon(new ImageIcon(org.compiere.Adempiere.getResource("images/Delete24.gif")));
bDelete.setMargin(new Insets(2, 2, 2, 2)); bDelete.setMargin(new Insets(2, 2, 2, 2));
bDelete.setToolTipText(Msg.getMsg(Env.getCtx(),"Delete")); bDelete.setToolTipText(Msg.getMsg(Env.getCtx(),"Delete"));
bDelete.addActionListener(this); bDelete.addActionListener(this);

View File

@ -406,7 +406,7 @@ public abstract class Info extends CDialog
// //
popup.add(calcMenu); popup.add(calcMenu);
calcMenu.setText(Msg.getMsg(Env.getCtx(), "Calculator")); calcMenu.setText(Msg.getMsg(Env.getCtx(), "Calculator"));
calcMenu.setIcon(new ImageIcon(org.compiere.Adempiere.class.getResource("images/Calculator16.gif"))); calcMenu.setIcon(new ImageIcon(org.compiere.Adempiere.getResource("images/Calculator16.gif")));
calcMenu.addActionListener(this); calcMenu.addActionListener(this);
// //
p_table.getSelectionModel().addListSelectionListener(this); p_table.getSelectionModel().addListSelectionListener(this);

View File

@ -33,6 +33,7 @@ import java.beans.PropertyVetoException;
import java.beans.VetoableChangeListener; import java.beans.VetoableChangeListener;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.List;
import java.util.Properties; import java.util.Properties;
import java.util.Set; import java.util.Set;
import java.util.logging.Level; import java.util.logging.Level;
@ -48,6 +49,8 @@ import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn; import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel; import javax.swing.table.TableColumnModel;
import org.adempiere.base.Core;
import org.adempiere.base.IColumnCallout;
import org.adempiere.plaf.AdempiereLookAndFeel; import org.adempiere.plaf.AdempiereLookAndFeel;
import org.adempiere.plaf.AdempierePLAF; import org.adempiere.plaf.AdempierePLAF;
import org.compiere.apps.ADialog; import org.compiere.apps.ADialog;
@ -801,11 +804,13 @@ public class GridController extends CPanel
// Process Callout // Process Callout
GridField mField = m_mTab.getField(col); GridField mField = m_mTab.getField(col);
if (mField != null if (mField != null
&& (mField.getCallout().length() > 0 || m_mTab.hasDependants(mField.getColumnName()))) List<IColumnCallout> callouts = Core.findCallout(m_mTab.getTableName(), mField.getColumnName());
{ if (mField.getCallout().length() > 0 || callouts.size()>0 || m_mTab.hasDependants(mField.getColumnName()))
String msg = m_mTab.processFieldChange(mField); // Dependencies & Callout {
if (msg.length() > 0) String msg = m_mTab.processFieldChange(mField); // Dependencies & Callout
ADialog.error(m_WindowNo, this, msg); if (msg.length() > 0)
ADialog.error(m_WindowNo, this, msg);
}
} }
//if (col >= 0) //if (col >= 0)
dynamicDisplay(col); dynamicDisplay(col);

View File

@ -226,15 +226,15 @@ public final class VAccountDialog extends CDialog
toolBar.setRequestFocusEnabled(false); toolBar.setRequestFocusEnabled(false);
toolBar.setBorderPainted(false); toolBar.setBorderPainted(false);
toolBar.setMargin(new Insets(5, 5, 5, 5)); toolBar.setMargin(new Insets(5, 5, 5, 5));
bSave.setIcon(new ImageIcon(org.compiere.Adempiere.class.getResource("images/Save24.gif"))); bSave.setIcon(new ImageIcon(org.compiere.Adempiere.getResource("images/Save24.gif")));
bSave.setMargin(new Insets(2, 2, 2, 2)); bSave.setMargin(new Insets(2, 2, 2, 2));
bSave.setToolTipText(Msg.getMsg(Env.getCtx(),"AccountNewUpdate")); bSave.setToolTipText(Msg.getMsg(Env.getCtx(),"AccountNewUpdate"));
bSave.addActionListener(this); bSave.addActionListener(this);
bRefresh.setIcon(new ImageIcon(org.compiere.Adempiere.class.getResource("images/Refresh24.gif"))); bRefresh.setIcon(new ImageIcon(org.compiere.Adempiere.getResource("images/Refresh24.gif")));
bRefresh.setMargin(new Insets(2, 2, 2, 2)); bRefresh.setMargin(new Insets(2, 2, 2, 2));
bRefresh.setToolTipText(Msg.getMsg(Env.getCtx(),"Refresh")); bRefresh.setToolTipText(Msg.getMsg(Env.getCtx(),"Refresh"));
bRefresh.addActionListener(this); bRefresh.addActionListener(this);
bIgnore.setIcon(new ImageIcon(org.compiere.Adempiere.class.getResource("images/Ignore24.gif"))); bIgnore.setIcon(new ImageIcon(org.compiere.Adempiere.getResource("images/Ignore24.gif")));
bIgnore.setMargin(new Insets(2, 2, 2, 2)); bIgnore.setMargin(new Insets(2, 2, 2, 2));
bIgnore.setToolTipText(Msg.getMsg(Env.getCtx(),"Ignore")); bIgnore.setToolTipText(Msg.getMsg(Env.getCtx(),"Ignore"));
bIgnore.addActionListener(this); bIgnore.addActionListener(this);

View File

@ -144,7 +144,7 @@ public class VLocator extends JComponent
m_text.addActionListener(this); m_text.addActionListener(this);
this.add(m_text, BorderLayout.CENTER); this.add(m_text, BorderLayout.CENTER);
m_button.setIcon(new ImageIcon(org.compiere.Adempiere.class.getResource("images/Locator10.gif"))); m_button.setIcon(new ImageIcon(org.compiere.Adempiere.getResource("images/Locator10.gif")));
m_button.setMargin(new Insets(0, 0, 0, 0)); m_button.setMargin(new Insets(0, 0, 0, 0));
m_button.setPreferredSize(new Dimension(height, height)); m_button.setPreferredSize(new Dimension(height, height));
m_button.addActionListener(this); m_button.addActionListener(this);

View File

@ -162,7 +162,7 @@ public class ValuePreference extends CDialog
/** The Name of the Editor */ /** The Name of the Editor */
public static final String NAME = "ValuePreference"; public static final String NAME = "ValuePreference";
/** The Menu Icon */ /** The Menu Icon */
private static Icon s_icon = new ImageIcon(org.compiere.Adempiere.class.getResource("images/VPreference16.gif")); private static Icon s_icon = new ImageIcon(org.compiere.AdempiereClient.class.getResource("images/VPreference16.gif"));
/** Logger */ /** Logger */
private static CLogger log = CLogger.getCLogger(ValuePreference.class); private static CLogger log = CLogger.getCLogger(ValuePreference.class);

View File

@ -337,6 +337,11 @@ public class ReportCtl
// We have a Jasper Print Format // We have a Jasper Print Format
// ============================== // ==============================
if(format.getJasperProcess_ID() > 0) if(format.getJasperProcess_ID() > 0)
if (info.isDocument()) {
ProcessInfoParameter pip = new ProcessInfoParameter("CURRENT_LANG", format.getLanguage(), null, null, null);
pi.setParameter(new ProcessInfoParameter[]{pip});
}
{ {
ServerReportCtl.runJasperProcess(Record_ID, re, IsDirectPrint, printerName); ServerReportCtl.runJasperProcess(Record_ID, re, IsDirectPrint, printerName);
} }

View File

@ -0,0 +1,18 @@
package org.compiere.util;
import java.net.URL;
import org.adempiere.base.IResourceFinder;
import org.compiere.AdempiereClient;
public class ResourceFinder implements IResourceFinder {
public ResourceFinder() {
}
public URL getResource(String name) {
URL resource = AdempiereClient.class.getResource(name);
return resource;
}
}

View File

@ -36,6 +36,7 @@ import java.net.URL;
import java.util.Locale; import java.util.Locale;
import org.compiere.Adempiere; import org.compiere.Adempiere;
import org.compiere.AdempiereClient;
/** /**
* Splash Screen. * Splash Screen.
@ -94,6 +95,7 @@ public class Splash extends Frame
public Splash (String text) public Splash (String text)
{ {
super("Adempiere"); super("Adempiere");
System.out.println(text);
message.setText(text); message.setText(text);
try try
{ {
@ -268,9 +270,9 @@ public class Splash extends Frame
public AImage() public AImage()
{ {
super(); super();
URL url = org.compiere.Adempiere.class.getResource("images/Java_anim.gif"); URL url = org.compiere.AdempiereClient.class.getResource("images/Java_anim.gif");
if (url == null) if (url == null)
url = org.compiere.Adempiere.class.getResource("images/Java_logo.gif"); url = org.compiere.AdempiereClient.class.getResource("images/Java_logo.gif");
if (url != null) if (url != null)
{ {
m_image = Toolkit.getDefaultToolkit().getImage(url); m_image = Toolkit.getDefaultToolkit().getImage(url);

11
equinox-target/.project Normal file
View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>equinox-target</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
</buildSpec>
<natures>
</natures>
</projectDescription>

90
equinox-target/build.xml Normal file
View File

@ -0,0 +1,90 @@
<!--
The equinox target project holds the equinox framework components and has
the following responsibilities:
- acting as an equinox-target for the eclipse dev environment
- providing setup for an OSGi container for developing swing client in OSGi
- providing setup for a servlet bridge webapp for developing web clients in OSGi
- providing setup for a webstart jnlp for developing webstart clients in OSGi
- installing equinox runtime components in the ADempiere install process
-->
<project name="equinox-target" basedir="." default="all">
<property name="src" value="." />
<property name="dist" value="./dist" />
<property name="dist-standalone" value="${dist}/standalone" />
<property name="dist-web" value="${dist}/web" />
<property name="dist-webstart" value="${dist}/webstart" />
<property name="osgi-runtime" value="org.eclipse.osgi_3.5.0.v20090520.jar" />
<property name="adempiere-client" value="org.adempiere.client_0.0.0.2.jar" />
<target name="all" depends="clean,dist-standalone,dist-web,dist-webstart"/>
<target name="clean">
<delete dir="${dist}"/>
</target>
<target name="dist-standalone">
<mkdir dir="${dist-standalone}"/>
<copy overwrite="true" todir="${dist-standalone}" >
<fileset dir="${src}">
<include name="configuration/**/*"/>
<include name="plugins/**/*"/>
<include name="${osgi-runtime}"/>
<include name="org.eclipse.equinox.common_*.jar"/>
<include name="org.eclipse.update.configurator_*.jar"/>
</fileset>
</copy>
<echo message="Remember: Copy client bundle into ${dist-standalone}."/>
</target>
<target name="run-standalone">
<move failonerror="false" file="${dist-standalone}/plugins/${adempiere-client}" todir="${dist-standalone}" />
<java dir="${dist-standalone}" fork="true" jvmversion="1.6" jar="${dist-standalone}/${osgi-runtime}">
<arg value="-console"/>
<arg value="-clean"/>
</java>
</target>
<target name="debug-standalone">
<move failonerror="false" file="${dist-standalone}/plugins/${adempiere-client}" todir="${dist-standalone}" />
<java dir="${dist-standalone}" fork="true" jvmversion="1.6" jar="${dist-standalone}/${osgi-runtime}">
<arg value="-console"/>
<arg value="-clean"/>
<jvmarg value="-Xdebug"/>
<jvmarg value="-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"/>
</java>
</target>
<target name="dist-web">
<mkdir dir="${dist-web}"/>
<copy overwrite="true" todir="${dist-web}" >
<fileset dir="${src}/webapp">
<include name="**/*"/>
</fileset>
</copy>
<copy overwrite="true" todir="${dist-web}/WEB-INF/eclipse/plugins" >
<fileset dir="${src}/plugins">
<include name="**/*"/>
</fileset>
</copy>
</target>
<target name="war" depends="dist-web">
<war destfile="../lib/bridge.war">
<fileset dir="${dist-web}">
<include name="**/*"/>
</fileset>
</war>
</target>
<target name="dist-webstart">
<mkdir dir="${dist-webstart}"/>
<copy overwrite="true" todir="${dist-webstart}" >
<fileset dir="${src}/webstart">
<include name="**/*"/>
</fileset>
</copy>
</target>
</project>

View File

@ -0,0 +1,3 @@
org.osgi.framework.bootdelegation=*
osgi.bundles=org.eclipse.equinox.common@2:start, org.eclipse.update.configurator@3:start, org.eclipse.core.runtime@4:start, org.adempiere.client@start

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde version="3.5"?>
<target name="Equinox Target">
<locations>
<location path="${workspace_loc}/equinox-target" type="Directory"/>
</locations>
</target>

View File

@ -0,0 +1,3 @@
#Eclipse Runtime Configuration File
osgi.bundles=org.eclipse.equinox.common@2:start, org.eclipse.update.configurator@start, org.eclipse.equinox.http.servletbridge@start, org.eclipse.equinox.http.registry@start, org.adempiere.zkwebui@start
osgi.bundles.defaultStartLevel=4

View File

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<feature
id="org.eclipse.equinox.servletbridge.feature"
label="Servletbridge Feature"
version="1.0.0"
provider-name="eclipse.org">
<description>
The Servletbridge feature is used to hold the default plugins and dependencies used to build the bridge WebARchive.
</description>
<copyright>
2006 Cognos Inc.
</copyright>
<license url="http://www.eclipse.org/legal/epl-v10.html">
ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT
</license>
<plugin
id="org.eclipse.osgi"
download-size="0"
install-size="0"
version="3.3.0.200704022148"
unpack="false"/>
<plugin
id="org.eclipse.osgi.services"
download-size="0"
install-size="0"
version="3.1.100.200704022148"
unpack="false"/>
<plugin
id="org.eclipse.equinox.common"
download-size="0"
install-size="0"
version="3.3.0.200704022148"
unpack="false"/>
<plugin
id="org.eclipse.equinox.registry"
download-size="0"
install-size="0"
version="3.3.0.v20070318"
unpack="false"/>
<plugin
id="org.eclipse.update.configurator"
download-size="0"
install-size="0"
version="3.2.100.v20070322"
unpack="false"/>
<plugin
id="org.eclipse.equinox.http.registry"
download-size="0"
install-size="0"
version="1.0.0.200704022148"
unpack="false"/>
<plugin
id="org.eclipse.equinox.http.servlet"
download-size="0"
install-size="0"
version="1.0.0.200704022148"
unpack="false"/>
<plugin
id="org.eclipse.equinox.http.servletbridge"
download-size="0"
install-size="0"
version="1.0.0.200704022148"
unpack="false"/>
</feature>

View File

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app id="WebApp">
<servlet id="bridge">
<servlet-name>equinoxbridgeservlet</servlet-name>
<display-name>Equinox Bridge Servlet</display-name>
<description>Equinox Bridge Servlet</description>
<servlet-class>org.eclipse.equinox.servletbridge.BridgeServlet</servlet-class>
<init-param>
<param-name>commandline</param-name>
<param-value>-console -clean</param-value>
</init-param>
<init-param>
<param-name>enableFrameworkControls</param-name>
<param-value>true</param-value>
</init-param>
<!--
org.eclipse.equinox.servletbridge and the Servlet API are exported automatically to the underlying OSGi framework.
The extendedFrameworkExports parameter allows the specification of additional java package exports.
The format is a comma separated list of exports as specified by the "Export-Package" bundle manifest header.
For example: com.mycompany.exports; version=1.0.0, com.mycompany.otherexports; version=1.0.0
-->
<init-param>
<param-name>extendedFrameworkExports</param-name>
<param-value></param-value>
</init-param>
<!--
You can specify your own framework launcher here.
The default is: org.eclipse.equinox.servletbridge.FrameworkLauncher
<init-param>
<param-name>frameworkLauncherClass</param-name>
<param-value>org.eclipse.equinox.servletbridge.FrameworkLauncher</param-value>
</init-param>
-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>equinoxbridgeservlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<!--
This is required if your application bundles expose JSPs.
-->
<servlet-mapping>
<servlet-name>equinoxbridgeservlet</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
</web-app>

View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<jnlp
spec="1.0+"
codebase="http://localhost:8080/webstart"
href="adempiere-equinox.jnlp"> <!-- URL to the site containing the jnlp application. It should match the value used on export. Href, the name of this file -->
<information>
<title>Adempiere Client 3.5.4a</title>
<vendor>ADempiere, Inc.</vendor>
<homepage href = "http://www.adempiere.org"/>
<offline-allowed/>
<description>Adempiere ERP+CRM ($$context) - Smart Business Solution for Distribution and Service - globally</description>
<description kind = "short">Adempiere ERP+CRM ($$context)</description>
<description kind = "one-line">Adempiere ERP+CRM</description>
<description kind = "tooltip">Adempiere ERP+CRM ($$context)</description>
<icon kind="splash" href="splash.gif"/>
</information>
<!--request all permissions from the application. This does not change-->
<security>
<all-permissions/>
</security>
<!-- The name of the main class to execute. This does not change-->
<application-desc main-class="org.eclipse.equinox.launcher.WebStartMain">
<argument>-consoleLog</argument>
</application-desc>
<resources>
<!-- Reference to the launcher jar. The version segment must be updated to the version being used-->
<jar href="plugins/org.eclipse.equinox.launcher_1.0.200.v20090520.jar"/>
<!-- Reference to all the plugins and features constituting the application -->
<!-- Here we are referring to the wrapper feature since it transitively refers to all the other plug-ins necessary -->
<extension
name="Wrapper feature"
href="features/org.adempiere.webstart_0.0.0.1.jnlp"/>
<!-- Information usually specified in the config.ini -->
<property name="osgi.noShutdown" value="true" />
<property name="eclipse.ignoreApp" value="true" />
<property name="org.osgi.framework.bootdelegation" value="*"/>
<property name="osgi.bundles"
value="org.eclipse.equinox.common@2:start, org.eclipse.update.configurator@3:start, org.eclipse.core.runtime@4:start, org.adempiere.client@5:start"/>
<property name="eclipse.product" value="adempiere"/>
</resources>
<!-- Indicate on a platform basis which JRE to use -->
<resources os="Mac">
<j2se version="1.6+"/>
</resources>
<resources os="Windows">
<j2se version="1.4+"/>
</resources>
<resources os="Linux">
<j2se version="1.4+"/>
</resources>
</jnlp>

View File

@ -13,5 +13,6 @@
<classpathentry kind="lib" path="/tools/lib/ant-launcher.jar"/> <classpathentry kind="lib" path="/tools/lib/ant-launcher.jar"/>
<classpathentry kind="lib" path="/tools/lib/commons-net-1.4.0.jar"/> <classpathentry kind="lib" path="/tools/lib/commons-net-1.4.0.jar"/>
<classpathentry kind="lib" path="/tools/lib/ojdbc6.jar"/> <classpathentry kind="lib" path="/tools/lib/ojdbc6.jar"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="build"/> <classpathentry kind="output" path="build"/>
</classpath> </classpath>

View File

@ -1,28 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<projectDescription> <projectDescription>
<name>install</name> <name>install</name>
<comment></comment> <comment></comment>
<projects> <projects>
<project>base</project> <project>base</project>
<project>client</project> <project>client</project>
<project>dbPort</project> <project>dbPort</project>
<project>extend</project> <project>extend</project>
<project>jboss</project> <project>jboss</project>
<project>looks</project> <project>looks</project>
<project>print</project> <project>print</project>
<project>server</project> <project>server</project>
<project>serverApps</project> <project>serverApps</project>
<project>serverRoot</project> <project>serverRoot</project>
<project>tools</project> <project>tools</project>
</projects> </projects>
<buildSpec> <buildSpec>
<buildCommand> <buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name> <name>org.eclipse.jdt.core.javabuilder</name>
<arguments> <arguments>
</arguments> </arguments>
</buildCommand> </buildCommand>
</buildSpec> <buildCommand>
<natures> <name>org.eclipse.pde.ManifestBuilder</name>
<nature>org.eclipse.jdt.core.javanature</nature> <arguments>
</natures> </arguments>
</projectDescription> </buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
</natures>
</projectDescription>

View File

@ -26,7 +26,10 @@ ARGS=CONFIG
# To test the OCI driver, add -DTestOCI=Y to the command - example: # To test the OCI driver, add -DTestOCI=Y to the command - example:
# $JAVA -classpath $CP -DADEMPIERE_HOME=$ADEMPIERE_HOME -DTestOCI=Y org.compiere.install.Setup $ARGS # $JAVA -classpath $CP -DADEMPIERE_HOME=$ADEMPIERE_HOME -DTestOCI=Y org.compiere.install.Setup $ARGS
$JAVA -classpath $CP -DADEMPIERE_HOME=$ADEMPIERE_HOME org.compiere.install.Setup $ARGS # $JAVA -classpath $CP -DADEMPIERE_HOME=$ADEMPIERE_HOME org.compiere.install.Setup $ARGS
# OSGi:
$JAVA -jar osgi/org.eclipse.osgi_3.5.0.v20090520.jar -clean -console -application org.adempiere.Install
#echo =================================== #echo ===================================
#echo Setup Adempiere Server Environment #echo Setup Adempiere Server Environment
@ -41,7 +44,7 @@ find . -name '*.sh' -exec chmod a+x '{}' \;
# Sign database build # Sign database build
cd utils cd utils
. ./RUN_SignDatabaseBuild.sh #. ./RUN_SignDatabaseBuild.sh
. ./RUN_UnixEnv.sh . ./RUN_UnixEnv.sh

View File

@ -338,7 +338,7 @@
<!-- ==================================================== --> <!-- ==================================================== -->
<!-- Setup Lib --> <!-- Setup Lib -->
<!-- ==================================================== --> <!-- ==================================================== -->
<target name="setupLib" depends="setupInit, setupWin, setupNonWin, setupCLib, setupSLib, setupALib, setupWLib, signOtherJars" <target name="setupLib" depends="setupInit, setupWin, setupNonWin"
description="Setup Adempiere Lib directory"> description="Setup Adempiere Lib directory">
<!-- Filter files Overwrite --> <!-- Filter files Overwrite -->
@ -349,7 +349,7 @@
<copy file="${basedir}/utils/adempiereDirectTemplate.jnlp" <copy file="${basedir}/utils/adempiereDirectTemplate.jnlp"
tofile="${basedir}/lib/adempiereDirect.jnlp" filtering="yes" overwrite="yes" /> tofile="${basedir}/lib/adempiereDirect.jnlp" filtering="yes" overwrite="yes" />
<!-- Create Client Zip --> <!-- Create Client Zip
<zip zipfile="${basedir}/lib/AdempiereClient.zip"> <zip zipfile="${basedir}/lib/AdempiereClient.zip">
<zipfileset dir="." prefix="Adempiere" <zipfileset dir="." prefix="Adempiere"
includes="*.html" /> includes="*.html" />
@ -360,7 +360,7 @@
<zipfileset dir="lib" prefix="Adempiere/lib" <zipfileset dir="lib" prefix="Adempiere/lib"
includes="Adempiere.exe,*.ico,customization.jar,patches.jar,CompiereJasperReqs.jar,Adempiere.jar,AdempiereCLib.jar,adempiereDirect.jnlp,index.html,*.0" /> includes="Adempiere.exe,*.ico,customization.jar,patches.jar,CompiereJasperReqs.jar,Adempiere.jar,AdempiereCLib.jar,adempiereDirect.jnlp,index.html,*.0" />
</zip> </zip>
-->
<!-- Save properties --> <!-- Save properties -->
<copy file="AdempiereEnv.properties" <copy file="AdempiereEnv.properties"
tofile="AdempiereEnv.properties.save" /> tofile="AdempiereEnv.properties.save" />
@ -515,10 +515,23 @@
<!-- ==================================================== --> <!-- ==================================================== -->
<!-- Setup (Main) --> <!-- Setup (Main) -->
<!-- ==================================================== --> <!-- ==================================================== -->
<target name="setup" depends="setupDeploy" <target name="setup" depends="setupInit, setupWin, setupNonWin, setupWar"
description="Setup Adempiere"> description="Setup Adempiere">
</target> </target>
<!-- ==================================================== -->
<!-- Setup (War) -->
<!-- ==================================================== -->
<target name="setupWar"
description="Setup Adempiere ZK Webui">
<unzip src="webapp/bridge.war" dest="webapp/bridge" />
<copy todir="webapp/bridge/WEB-INF/eclipse/plugins">
<fileset dir="osgi/plugins">
<include name="**/*"/>
</fileset>
</copy>
</target>
<!-- ==================================================== --> <!-- ==================================================== -->
<!-- Test - Copy --> <!-- Test - Copy -->

View File

@ -0,0 +1,19 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: install
Bundle-SymbolicName: org.adempiere.install;singleton:=true
Bundle-Version: 0.0.0.1
Bundle-ClassPath: install.jar,
lib/ant.jar,
lib/ant-commons-net.jar,
lib/ant-launcher.jar,
lib/commons-net-1.4.0.jar,
lib/ocrs12.jar,
lib/ojdbc14.jar
Export-Package: images,
org.compiere.install
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.5.0",
org.adempiere.base;bundle-version="0.0.0",
org.adempiere.client;bundle-version="0.0.0",
org.adempiere.tools;bundle-version="0.0.0"
Bundle-Activator: org.compiere.install.Activator

10
install/build.properties Normal file
View File

@ -0,0 +1,10 @@
source.install.jar = src/,build/
bin.includes = META-INF/,\
lib/ant.jar,\
lib/ant-commons-net.jar,\
lib/ant-launcher.jar,\
lib/commons-net-1.4.0.jar,\
lib/ocrs12.jar,\
lib/ojdbc14.jar,\
install.jar,\
plugin.xml

View File

@ -16,6 +16,7 @@
<property name="web.dir" value="../../adempiereWeb"/> <property name="web.dir" value="../../adempiereWeb"/>
<property name="dbStartup.dir" value="../db/database/Startup"/> <property name="dbStartup.dir" value="../db/database/Startup"/>
<property name="lib.dir" value="../lib"/> <property name="lib.dir" value="../lib"/>
<property name="dist.dir" value="../lib"/>
<property name="utils.dir" value="../utils"/> <property name="utils.dir" value="../utils"/>
<property name="launch.dir" value="../launch"/> <property name="launch.dir" value="../launch"/>
<property name="keystore.dir" value="../keystore"/> <property name="keystore.dir" value="../keystore"/>
@ -117,7 +118,7 @@
<!-- ======================================================= --> <!-- ======================================================= -->
<!-- Update from Web Site + Clean .sh --> <!-- Update from Web Site + Clean .sh -->
<!-- ======================================================= --> <!-- ======================================================= -->
<target name="installUpdate" depends="installCompile" <target name="installUpdate" depends=""
description="Update install directory with copies of web site"> description="Update install directory with copies of web site">
<fixcrlf srcdir="${src.dir}" <fixcrlf srcdir="${src.dir}"
@ -182,12 +183,32 @@
</fileset> </fileset>
</copy> </copy>
<copy file="${launch.dir}/Release/Adempiere.exe" todir="${build.dir}/Adempiere/lib"/> <copy file="${launch.dir}/Release/Adempiere.exe" todir="${build.dir}/Adempiere/lib"/>
<copy file="CInstall.jar" todir="${build.dir}/Adempiere/lib"/> <!-- <copy file="CInstall.jar" todir="${build.dir}/Adempiere/lib"/>
<copy file="../sqlj/sqlj.jar" todir="${build.dir}/Adempiere/lib"/> <copy file="../sqlj/sqlj.jar" todir="${build.dir}/Adempiere/lib"/>
<copy file="../JasperReports/CompiereJasperReqs.jar" todir="${build.dir}/Adempiere/lib"/> <copy file="../JasperReports/CompiereJasperReqs.jar" todir="${build.dir}/Adempiere/lib"/> -->
<concat destfile="${build.dir}/Adempiere/lib/index.html">AdempiereHome</concat> <concat destfile="${build.dir}/Adempiere/lib/index.html">AdempiereHome</concat>
<!-- OSGi Container -->
<mkdir dir="${build.dir}/Adempiere/osgi"/>
<copy overwrite="true" todir="${build.dir}/Adempiere/osgi" >
<fileset dir="../equinox-target">
<include name="configuration/**/*"/>
<include name="plugins/**/*"/>
<include name="org.eclipse.*.jar"/>
</fileset>
<fileset dir="../lib">
<include name="plugins/**/*"/>
</fileset>
</copy>
<!-- Bridge webapp -->
<mkdir dir="${build.dir}/Adempiere/webapp"/>
<copy overwrite="true" todir="${build.dir}/Adempiere/webapp" >
<fileset dir="../lib">
<include name="bridge.war"/>
</fileset>
</copy>
<!-- Utils Directory --> <!-- Utils Directory -->
<mkdir dir="${build.dir}/Adempiere/utils"/> <mkdir dir="${build.dir}/Adempiere/utils"/>
<copy todir="${build.dir}/Adempiere/utils"> <copy todir="${build.dir}/Adempiere/utils">
@ -268,6 +289,13 @@
</target> </target>
<target name="plugin">
<buildPlugin workspaceDirectory=".."
projectName="install"
targetPlatformId="target.platform"
destination="${dist.dir}"
buildSourceJar="false" />
</target>
<target name="clean" description="deletes build"> <target name="clean" description="deletes build">
<delete dir="${build.dir}"/> <delete dir="${build.dir}"/>

12
install/plugin.xml Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
id="org.adempiere.Install"
point="org.eclipse.core.runtime.applications">
<application>
<run class="org.compiere.install.Application" />
</application>
</extension>
</plugin>

View File

@ -0,0 +1,16 @@
package org.compiere.install;
import org.eclipse.equinox.app.IApplication;
import org.eclipse.equinox.app.IApplicationContext;
public class Application implements IApplication {
public Object start(IApplicationContext arg0) throws Exception {
Setup.main(new String[]{});
return null;
}
public void stop() {
}
}

View File

@ -36,6 +36,7 @@ import javax.swing.JSeparator;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import javax.swing.border.TitledBorder; import javax.swing.border.TitledBorder;
import org.adempiere.base.Core;
import org.apache.tools.ant.Main; import org.apache.tools.ant.Main;
import org.compiere.Adempiere; import org.compiere.Adempiere;
import org.compiere.swing.CButton; import org.compiere.swing.CButton;
@ -47,6 +48,8 @@ import org.compiere.swing.CPassword;
import org.compiere.swing.CTextField; import org.compiere.swing.CTextField;
import org.compiere.util.CLogger; import org.compiere.util.CLogger;
import com.sfcommerce.jpaymentcomponent.ssl.Client;
/** /**
* Configuration Panel * Configuration Panel
@ -98,8 +101,8 @@ public class ConfigurationPanel extends CPanel implements ActionListener
private ConfigurationData m_data = new ConfigurationData(this); private ConfigurationData m_data = new ConfigurationData(this);
private static ImageIcon iOpen = new ImageIcon(ConfigurationPanel.class.getResource("openFile.gif")); private static ImageIcon iOpen = new ImageIcon(ConfigurationPanel.class.getResource("openFile.gif"));
private static ImageIcon iSave = new ImageIcon(Adempiere.class.getResource("images/Save16.gif")); private static ImageIcon iSave = new ImageIcon(Core.getResourceFinder().getResource("images/Save16.gif"));
private static ImageIcon iHelp = new ImageIcon(Adempiere.class.getResource("images/Help16.gif")); private static ImageIcon iHelp = new ImageIcon(Core.getResourceFinder().getResource("images/Help16.gif"));
// ------------- Static UI // ------------- Static UI

5
interfaces/.classpath Normal file
View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View File

@ -1,12 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<classpath> <classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry exported="true" kind="lib" path="client/jbossall-client.jar"/>
<classpathentry exported="true" kind="lib" path="client/jboss-client.jar"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry exported="true" kind="lib" path="client/jboss-common-client.jar"/> <classpathentry exported="true" kind="lib" path="client/jboss-client.jar"/>
<classpathentry exported="true" kind="lib" path="client/jboss-j2ee.jar"/> <classpathentry exported="true" kind="lib" path="client/jboss-common-client.jar"/>
<classpathentry exported="true" kind="lib" path="client/jbosssx-client.jar"/> <classpathentry exported="true" kind="lib" path="client/jboss-j2ee.jar"/>
<classpathentry exported="true" kind="lib" path="client/jboss-transaction-client.jar"/> <classpathentry exported="true" kind="lib" path="client/jbosssx-client.jar"/>
<classpathentry exported="true" kind="lib" path="client/jnp-client.jar"/> <classpathentry exported="true" kind="lib" path="client/jboss-transaction-client.jar"/>
<classpathentry exported="true" kind="lib" path="client/jmx-invoker-adaptor-client.jar"/> <classpathentry exported="true" kind="lib" path="client/jnp-client.jar"/>
<classpathentry kind="output" path="lib"/> <classpathentry exported="true" kind="lib" path="client/jmx-invoker-adaptor-client.jar"/>
</classpath> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="lib"/>
</classpath>

View File

@ -1,17 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<projectDescription> <projectDescription>
<name>jboss</name> <name>jboss</name>
<comment></comment> <comment></comment>
<projects> <projects>
</projects> </projects>
<buildSpec> <buildSpec>
<buildCommand> <buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name> <name>org.eclipse.jdt.core.javabuilder</name>
<arguments> <arguments>
</arguments> </arguments>
</buildCommand> </buildCommand>
</buildSpec> <buildCommand>
<natures> <name>org.eclipse.pde.ManifestBuilder</name>
<nature>org.eclipse.jdt.core.javanature</nature> <arguments>
</natures> </arguments>
</projectDescription> </buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
</natures>
</projectDescription>

114
jboss/META-INF/MANIFEST.MF Normal file
View File

@ -0,0 +1,114 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: jboss
Bundle-SymbolicName: org.adempiere.jboss
Bundle-Version: 0.0.0.1
Bundle-ClassPath: client/jboss-client.jar,
client/jboss-common-client.jar,
client/jboss-j2ee.jar,
client/jbosssx-client.jar,
client/jboss-transaction-client.jar,
client/jnp-client.jar,
client/jmx-invoker-adaptor-client.jar,
client/jbossall-client.jar
Export-Package: EDU.oswego.cs.dl.util.concurrent,
EDU.oswego.cs.dl.util.concurrent.misc,
javax.ejb,
javax.ejb.spi,
javax.enterprise.deploy.model,
javax.enterprise.deploy.model.exceptions,
javax.enterprise.deploy.shared,
javax.enterprise.deploy.shared.factories,
javax.enterprise.deploy.spi,
javax.enterprise.deploy.spi.exceptions,
javax.enterprise.deploy.spi.factories,
javax.enterprise.deploy.spi.status,
javax.jms,
javax.management,
javax.management.loading,
javax.management.modelmbean,
javax.management.monitor,
javax.management.openmbean,
javax.management.relation,
javax.management.timer,
javax.resource,
javax.resource.cci,
javax.resource.spi,
javax.resource.spi.endpoint,
javax.resource.spi.security,
javax.resource.spi.work,
javax.security.jacc,
javax.sql,
javax.transaction,
javax.transaction.xa,
javax.xml.registry,
javax.xml.registry.infomodel,
org.apache.xerces.impl.xs,
org.jboss.corba,
org.jboss.crypto,
org.jboss.crypto.digest,
org.jboss.ejb,
org.jboss.ejb.plugins.cmp.jdbc,
org.jboss.ejb.plugins.keygenerator,
org.jboss.invocation,
org.jboss.invocation.http.interfaces,
org.jboss.invocation.jrmp.interfaces,
org.jboss.invocation.jrmp.server,
org.jboss.invocation.pooled.interfaces,
org.jboss.invocation.unified.interfaces,
org.jboss.invocation.unified.marshall,
org.jboss.jmx.adaptor.rmi,
org.jboss.jmx.connector.invoker.client,
org.jboss.logging,
org.jboss.logging.appender,
org.jboss.logging.filter,
org.jboss.logging.layout,
org.jboss.logging.util,
org.jboss.monitor.client,
org.jboss.naming,
org.jboss.naming.client.java,
org.jboss.naming.interceptors,
org.jboss.net.protocol,
org.jboss.net.protocol.file,
org.jboss.net.protocol.http,
org.jboss.net.protocol.njar,
org.jboss.net.protocol.resource,
org.jboss.net.sockets,
org.jboss.net.ssl,
org.jboss.proxy,
org.jboss.proxy.compiler,
org.jboss.proxy.ejb,
org.jboss.proxy.ejb.handle,
org.jboss.security,
org.jboss.security.auth.callback,
org.jboss.security.auth.login,
org.jboss.security.jndi,
org.jboss.security.plugins,
org.jboss.security.ssl,
org.jboss.tm,
org.jboss.tm.integrity,
org.jboss.tm.usertx.client,
org.jboss.tm.usertx.interfaces,
org.jboss.tm.usertx.server,
org.jboss.util,
org.jboss.util.coerce,
org.jboss.util.collection,
org.jboss.util.deadlock,
org.jboss.util.file,
org.jboss.util.id,
org.jboss.util.loading,
org.jboss.util.naming,
org.jboss.util.platform,
org.jboss.util.property,
org.jboss.util.property.jmx,
org.jboss.util.propertyeditor,
org.jboss.util.state,
org.jboss.util.state.xml,
org.jboss.util.stream,
org.jboss.util.threadpool,
org.jboss.util.timeout,
org.jboss.util.xml,
org.jnp.interfaces,
org.jnp.interfaces.java,
org.jnp.interfaces.jnp,
org.jnp.server

9
jboss/build.properties Normal file
View File

@ -0,0 +1,9 @@
bin.includes = META-INF/,\
client/jboss-client.jar,\
client/jboss-common-client.jar,\
client/jboss-j2ee.jar,\
client/jbosssx-client.jar,\
client/jboss-transaction-client.jar,\
client/jnp-client.jar,\
client/jmx-invoker-adaptor-client.jar,\
client/jbossall-client.jar

22
jboss/build.xml Normal file
View File

@ -0,0 +1,22 @@
<!-- ============================================= -->
<!-- JBoss -->
<!-- ============================================= -->
<project name="jboss" default="plugin" basedir="."
xmlns:ant4eclipse="antlib:org.ant4eclipse">
<description>
</description>
<property name="dist.dir" value="../lib" />
<import file="../utils_dev/properties.xml" />
<target name="plugin">
<buildPlugin workspaceDirectory=".."
projectName="jboss"
targetPlatformId="target.platform"
destination="${dist.dir}"
buildSourceJar="false" />
</target>
</project>

View File

@ -2,7 +2,6 @@
<classpath> <classpath>
<classpathentry kind="src" path="src"/> <classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="src" path="/base"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="/jboss"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@ -1,17 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<projectDescription> <projectDescription>
<name>jbossfacet</name> <name>jbossfacet</name>
<comment></comment> <comment></comment>
<projects> <projects>
</projects> </projects>
<buildSpec> <buildSpec>
<buildCommand> <buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name> <name>org.eclipse.jdt.core.javabuilder</name>
<arguments> <arguments>
</arguments> </arguments>
</buildCommand> </buildCommand>
</buildSpec> <buildCommand>
<natures> <name>org.eclipse.pde.ManifestBuilder</name>
<nature>org.eclipse.jdt.core.javanature</nature> <arguments>
</natures> </arguments>
</projectDescription> </buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
</natures>
</projectDescription>

View File

@ -0,0 +1,11 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: jbossfacet
Bundle-SymbolicName: org.adempiere.jbossfacet;singleton:=true
Bundle-Version: 0.0.0.1
Bundle-ClassPath: jbossfacet.jar
Export-Package: org.adempiere.as.jboss
Require-Bundle: org.adempiere.jboss;bundle-version="0.0.0"
Import-Package: org.adempiere.as,
org.compiere.util

View File

@ -0,0 +1,7 @@
source.jbossfacet.jar = src/,\
bin/
bin.includes = META-INF/,\
.,\
plugin.xml,\
jbossfacet.jar
output.jbossfacet.jar = bin/

17
jbossfacet/build.xml Normal file
View File

@ -0,0 +1,17 @@
<!-- ============================================= -->
<!-- JBoss -->
<!-- ============================================= -->
<project name="jboss" default="plugin" basedir="." xmlns:ant4eclipse="antlib:org.ant4eclipse">
<description>
</description>
<property name="dist.dir" value="../lib" />
<import file="../utils_dev/properties.xml" />
<target name="plugin">
<buildPlugin workspaceDirectory=".." projectName="jbossfacet" targetPlatformId="target.platform" destination="${dist.dir}" buildSourceJar="false" />
</target>
</project>

11
jbossfacet/plugin.xml Normal file
View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="org.adempiere.as.IApplicationServer">
<client
class="org.adempiere.as.jboss.JBoss">
</client>
</extension>
</plugin>

View File

@ -0,0 +1,412 @@
SET DEFINE OFF;
-- 02/10/2009 11:33:15 AM
-- Add signed amount type to fin report
INSERT INTO AD_Reference (AD_Client_ID,AD_Org_ID,AD_Reference_ID,Created,CreatedBy,EntityType,IsActive,IsOrderByValue,Name,Updated,UpdatedBy,ValidationType) VALUES (0,0,53327,TO_DATE('2009-10-02 11:33:12','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','N','PA_Report Period Type',TO_DATE('2009-10-02 11:33:12','YYYY-MM-DD HH24:MI:SS'),100,'L')
;
-- 02/10/2009 11:33:15 AM
-- Add signed amount type to fin report
INSERT INTO AD_Reference_Trl (AD_Language,AD_Reference_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Reference_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Reference t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Reference_ID=53327 AND EXISTS (SELECT * FROM AD_Reference_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Reference_ID!=t.AD_Reference_ID)
;
-- 02/10/2009 11:33:29 AM
-- Add signed amount type to fin report
INSERT INTO AD_Ref_List (AD_Client_ID,AD_Org_ID,AD_Reference_ID,AD_Ref_List_ID,Created,CreatedBy,EntityType,IsActive,Name,Updated,UpdatedBy,Value) VALUES (0,0,53327,53536,TO_DATE('2009-10-02 11:33:28','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','Total',TO_DATE('2009-10-02 11:33:28','YYYY-MM-DD HH24:MI:SS'),100,'T')
;
-- 02/10/2009 11:33:29 AM
-- Add signed amount type to fin report
INSERT INTO AD_Ref_List_Trl (AD_Language,AD_Ref_List_ID, Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Ref_List_ID, t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Ref_List t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Ref_List_ID=53536 AND EXISTS (SELECT * FROM AD_Ref_List_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Ref_List_ID!=t.AD_Ref_List_ID)
;
-- 02/10/2009 11:33:38 AM
-- Add signed amount type to fin report
INSERT INTO AD_Ref_List (AD_Client_ID,AD_Org_ID,AD_Reference_ID,AD_Ref_List_ID,Created,CreatedBy,EntityType,IsActive,Name,Updated,UpdatedBy,Value) VALUES (0,0,53327,53537,TO_DATE('2009-10-02 11:33:37','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','Year',TO_DATE('2009-10-02 11:33:37','YYYY-MM-DD HH24:MI:SS'),100,'Y')
;
-- 02/10/2009 11:33:38 AM
-- Add signed amount type to fin report
INSERT INTO AD_Ref_List_Trl (AD_Language,AD_Ref_List_ID, Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Ref_List_ID, t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Ref_List t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Ref_List_ID=53537 AND EXISTS (SELECT * FROM AD_Ref_List_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Ref_List_ID!=t.AD_Ref_List_ID)
;
-- 02/10/2009 11:33:51 AM
-- Add signed amount type to fin report
INSERT INTO AD_Ref_List (AD_Client_ID,AD_Org_ID,AD_Reference_ID,AD_Ref_List_ID,Created,CreatedBy,EntityType,IsActive,Name,Updated,UpdatedBy,Value) VALUES (0,0,53327,53538,TO_DATE('2009-10-02 11:33:50','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','Period',TO_DATE('2009-10-02 11:33:50','YYYY-MM-DD HH24:MI:SS'),100,'P')
;
-- 02/10/2009 11:33:51 AM
-- Add signed amount type to fin report
INSERT INTO AD_Ref_List_Trl (AD_Language,AD_Ref_List_ID, Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Ref_List_ID, t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Ref_List t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Ref_List_ID=53538 AND EXISTS (SELECT * FROM AD_Ref_List_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Ref_List_ID!=t.AD_Ref_List_ID)
;
-- 02/10/2009 11:40:15 AM
-- Add signed amount type to fin report
INSERT INTO AD_Ref_List (AD_Client_ID,AD_Org_ID,AD_Reference_ID,AD_Ref_List_ID,Created,CreatedBy,Description,EntityType,IsActive,Name,Updated,UpdatedBy,Value) VALUES (0,0,53327,53540,TO_DATE('2009-10-02 11:40:14','YYYY-MM-DD HH24:MI:SS'),100,'Year for P & L account, Total for Balance Sheet account','D','Y','Natural',TO_DATE('2009-10-02 11:40:14','YYYY-MM-DD HH24:MI:SS'),100,'N')
;
-- 02/10/2009 11:40:15 AM
-- Add signed amount type to fin report
INSERT INTO AD_Ref_List_Trl (AD_Language,AD_Ref_List_ID, Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Ref_List_ID, t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Ref_List t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Ref_List_ID=53540 AND EXISTS (SELECT * FROM AD_Ref_List_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Ref_List_ID!=t.AD_Ref_List_ID)
;
-- 02/10/2009 11:42:57 AM
-- Add signed amount type to fin report
UPDATE AD_Reference SET IsActive='N', Name='PA_Report AmountType (deprecated)',Updated=TO_DATE('2009-10-02 11:42:57','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Reference_ID=235
;
-- 02/10/2009 11:42:57 AM
-- Add signed amount type to fin report
UPDATE AD_Reference_Trl SET IsTranslated='N' WHERE AD_Reference_ID=235
;
-- 02/10/2009 11:43:16 AM
-- Add signed amount type to fin report
INSERT INTO AD_Reference (AD_Client_ID,AD_Org_ID,AD_Reference_ID,Created,CreatedBy,EntityType,IsActive,IsOrderByValue,Name,Updated,UpdatedBy,ValidationType) VALUES (0,0,53328,TO_DATE('2009-10-02 11:43:15','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','N','PA_Report Amount Type',TO_DATE('2009-10-02 11:43:15','YYYY-MM-DD HH24:MI:SS'),100,'L')
;
-- 02/10/2009 11:43:16 AM
-- Add signed amount type to fin report
INSERT INTO AD_Reference_Trl (AD_Language,AD_Reference_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Reference_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Reference t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Reference_ID=53328 AND EXISTS (SELECT * FROM AD_Reference_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Reference_ID!=t.AD_Reference_ID)
;
-- 02/10/2009 11:44:10 AM
-- Add signed amount type to fin report
INSERT INTO AD_Ref_List (AD_Client_ID,AD_Org_ID,AD_Reference_ID,AD_Ref_List_ID,Created,CreatedBy,EntityType,IsActive,Name,Updated,UpdatedBy,Value) VALUES (0,0,53328,53541,TO_DATE('2009-10-02 11:44:09','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','Balance (expected sign)',TO_DATE('2009-10-02 11:44:09','YYYY-MM-DD HH24:MI:SS'),100,'B')
;
-- 02/10/2009 11:44:10 AM
-- Add signed amount type to fin report
INSERT INTO AD_Ref_List_Trl (AD_Language,AD_Ref_List_ID, Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Ref_List_ID, t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Ref_List t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Ref_List_ID=53541 AND EXISTS (SELECT * FROM AD_Ref_List_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Ref_List_ID!=t.AD_Ref_List_ID)
;
-- 02/10/2009 11:44:32 AM
-- Add signed amount type to fin report
INSERT INTO AD_Ref_List (AD_Client_ID,AD_Org_ID,AD_Reference_ID,AD_Ref_List_ID,Created,CreatedBy,EntityType,IsActive,Name,Updated,UpdatedBy,Value) VALUES (0,0,53328,53542,TO_DATE('2009-10-02 11:44:30','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','Credit Only',TO_DATE('2009-10-02 11:44:30','YYYY-MM-DD HH24:MI:SS'),100,'C')
;
-- 02/10/2009 11:44:32 AM
-- Add signed amount type to fin report
INSERT INTO AD_Ref_List_Trl (AD_Language,AD_Ref_List_ID, Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Ref_List_ID, t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Ref_List t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Ref_List_ID=53542 AND EXISTS (SELECT * FROM AD_Ref_List_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Ref_List_ID!=t.AD_Ref_List_ID)
;
-- 02/10/2009 11:44:42 AM
-- Add signed amount type to fin report
INSERT INTO AD_Ref_List (AD_Client_ID,AD_Org_ID,AD_Reference_ID,AD_Ref_List_ID,Created,CreatedBy,EntityType,IsActive,Name,Updated,UpdatedBy,Value) VALUES (0,0,53328,53543,TO_DATE('2009-10-02 11:44:41','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','Debit Only',TO_DATE('2009-10-02 11:44:41','YYYY-MM-DD HH24:MI:SS'),100,'D')
;
-- 02/10/2009 11:44:42 AM
-- Add signed amount type to fin report
INSERT INTO AD_Ref_List_Trl (AD_Language,AD_Ref_List_ID, Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Ref_List_ID, t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Ref_List t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Ref_List_ID=53543 AND EXISTS (SELECT * FROM AD_Ref_List_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Ref_List_ID!=t.AD_Ref_List_ID)
;
-- 02/10/2009 11:45:01 AM
-- Add signed amount type to fin report
INSERT INTO AD_Ref_List (AD_Client_ID,AD_Org_ID,AD_Reference_ID,AD_Ref_List_ID,Created,CreatedBy,EntityType,IsActive,Name,Updated,UpdatedBy,Value) VALUES (0,0,53328,53544,TO_DATE('2009-10-02 11:45:00','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','Quantity',TO_DATE('2009-10-02 11:45:00','YYYY-MM-DD HH24:MI:SS'),100,'Q')
;
-- 02/10/2009 11:45:01 AM
-- Add signed amount type to fin report
INSERT INTO AD_Ref_List_Trl (AD_Language,AD_Ref_List_ID, Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Ref_List_ID, t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Ref_List t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Ref_List_ID=53544 AND EXISTS (SELECT * FROM AD_Ref_List_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Ref_List_ID!=t.AD_Ref_List_ID)
;
-- 02/10/2009 11:48:32 AM
-- Add signed amount type to fin report
INSERT INTO AD_Ref_List (AD_Client_ID,AD_Org_ID,AD_Reference_ID,AD_Ref_List_ID,Created,CreatedBy,Description,EntityType,IsActive,Name,Updated,UpdatedBy,Value) VALUES (0,0,53328,53545,TO_DATE('2009-10-02 11:48:31','YYYY-MM-DD HH24:MI:SS'),100,'DR - CR','D','Y','Balance (accounted sign)',TO_DATE('2009-10-02 11:48:31','YYYY-MM-DD HH24:MI:SS'),100,'S')
;
-- 02/10/2009 11:48:32 AM
-- Add signed amount type to fin report
INSERT INTO AD_Ref_List_Trl (AD_Language,AD_Ref_List_ID, Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Ref_List_ID, t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Ref_List t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Ref_List_ID=53545 AND EXISTS (SELECT * FROM AD_Ref_List_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Ref_List_ID!=t.AD_Ref_List_ID)
;
-- 02/10/2009 11:52:38 AM
-- Add signed amount type to fin report
INSERT INTO AD_Element (AD_Client_ID,AD_Element_ID,AD_Org_ID,ColumnName,Created,CreatedBy,Description,EntityType,Help,IsActive,Name,PrintName,Updated,UpdatedBy) VALUES (0,54061,0,'PAPeriodType',TO_DATE('2009-10-02 11:52:35','YYYY-MM-DD HH24:MI:SS'),100,'PA Period Type','D','The Period Type to report on: Period, Year, Total or Natural; where Natural = Year for P & L accounts, Total for Balance Sheet accounts.','Y','Period Type','Period Type',TO_DATE('2009-10-02 11:52:35','YYYY-MM-DD HH24:MI:SS'),100)
;
-- 02/10/2009 11:52:38 AM
-- Add signed amount type to fin report
INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Description,Help,Name,PO_Description,PO_Help,PO_Name,PO_PrintName,PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Element_ID, t.Description,t.Help,t.Name,t.PO_Description,t.PO_Help,t.PO_Name,t.PO_PrintName,t.PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=54061 AND EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Element_ID!=t.AD_Element_ID)
;
-- 02/10/2009 11:56:47 AM
-- Add signed amount type to fin report
INSERT INTO AD_Element (AD_Client_ID,AD_Element_ID,AD_Org_ID,ColumnName,Created,CreatedBy,Description,EntityType,Help,IsActive,Name,PrintName,Updated,UpdatedBy) VALUES (0,54062,0,'PAAmountType',TO_DATE('2009-10-02 11:56:46','YYYY-MM-DD HH24:MI:SS'),100,'PA Amount Type for reporting','D','The amount type to report on: Quantity, Credit Only, Debit Only, Balance (expected sign) or Balance (DR-CR). Balance (expected sign) adjusts the sign of the result based on the Account Type and Expected Sign of each Account Element.','Y','Amount Type','Amount Type',TO_DATE('2009-10-02 11:56:46','YYYY-MM-DD HH24:MI:SS'),100)
;
-- 02/10/2009 11:56:47 AM
-- Add signed amount type to fin report
INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Description,Help,Name,PO_Description,PO_Help,PO_Name,PO_PrintName,PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Element_ID, t.Description,t.Help,t.Name,t.PO_Description,t.PO_Help,t.PO_Name,t.PO_PrintName,t.PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=54062 AND EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Element_ID!=t.AD_Element_ID)
;
-- 02/10/2009 11:56:58 AM
-- Add signed amount type to fin report
UPDATE AD_Element SET Help='The Period Type to report on: Period, Year, Total or Natural. Natural = Year for P & L accounts, Total for Balance Sheet accounts.',Updated=TO_DATE('2009-10-02 11:56:58','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=54061
;
-- 02/10/2009 11:56:58 AM
-- Add signed amount type to fin report
UPDATE AD_Element_Trl SET IsTranslated='N' WHERE AD_Element_ID=54061
;
-- 02/10/2009 11:56:58 AM
-- Add signed amount type to fin report
UPDATE AD_Column SET ColumnName='PAPeriodType', Name='Period Type', Description='PA Period Type', Help='The Period Type to report on: Period, Year, Total or Natural. Natural = Year for P & L accounts, Total for Balance Sheet accounts.' WHERE AD_Element_ID=54061
;
-- 02/10/2009 11:56:58 AM
-- Add signed amount type to fin report
UPDATE AD_Process_Para SET ColumnName='PAPeriodType', Name='Period Type', Description='PA Period Type', Help='The Period Type to report on: Period, Year, Total or Natural. Natural = Year for P & L accounts, Total for Balance Sheet accounts.', AD_Element_ID=54061 WHERE UPPER(ColumnName)='PAPERIODTYPE' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL
;
-- 02/10/2009 11:56:58 AM
-- Add signed amount type to fin report
UPDATE AD_Process_Para SET ColumnName='PAPeriodType', Name='Period Type', Description='PA Period Type', Help='The Period Type to report on: Period, Year, Total or Natural. Natural = Year for P & L accounts, Total for Balance Sheet accounts.' WHERE AD_Element_ID=54061 AND IsCentrallyMaintained='Y'
;
-- 02/10/2009 11:56:58 AM
-- Add signed amount type to fin report
UPDATE AD_Field SET Name='Period Type', Description='PA Period Type', Help='The Period Type to report on: Period, Year, Total or Natural. Natural = Year for P & L accounts, Total for Balance Sheet accounts.' WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=54061) AND IsCentrallyMaintained='Y'
;
-- 02/10/2009 11:58:09 AM
-- Add signed amount type to fin report
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Reference_Value_ID,AD_Table_ID,ColumnName,Created,CreatedBy,DefaultValue,Description,EntityType,FieldLength,Help,IsActive,IsAllowLogging,IsAlwaysUpdateable,IsAutocomplete,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,58553,54061,0,17,53327,446,'PAPeriodType',TO_DATE('2009-10-02 11:58:08','YYYY-MM-DD HH24:MI:SS'),100,'P','PA Period Type','D',1,'The Period Type to report on: Period, Year, Total or Natural. Natural = Year for P & L accounts, Total for Balance Sheet accounts.','Y','Y','N','N','N','N','N','N','N','N','N','N','Y','Period Type',0,TO_DATE('2009-10-02 11:58:08','YYYY-MM-DD HH24:MI:SS'),100,0)
;
-- 02/10/2009 11:58:09 AM
-- Add signed amount type to fin report
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=58553 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- 02/10/2009 11:58:17 AM
-- Add signed amount type to fin report
ALTER TABLE PA_ReportColumn ADD PAPeriodType CHAR(1) DEFAULT 'P'
;
-- 02/10/2009 11:59:04 AM
-- Add signed amount type to fin report
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Reference_Value_ID,AD_Table_ID,ColumnName,Created,CreatedBy,DefaultValue,Description,EntityType,FieldLength,Help,IsActive,IsAllowLogging,IsAlwaysUpdateable,IsAutocomplete,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,58554,54062,0,17,53328,446,'PAAmountType',TO_DATE('2009-10-02 11:59:03','YYYY-MM-DD HH24:MI:SS'),100,'B','PA Amount Type for reporting','D',1,'The amount type to report on: Quantity, Credit Only, Debit Only, Balance (expected sign) or Balance (DR-CR). Balance (expected sign) adjusts the sign of the result based on the Account Type and Expected Sign of each Account Element.','Y','Y','N','N','N','N','N','N','N','N','N','N','Y','Amount Type',0,TO_DATE('2009-10-02 11:59:03','YYYY-MM-DD HH24:MI:SS'),100,0)
;
-- 02/10/2009 11:59:04 AM
-- Add signed amount type to fin report
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=58554 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- 02/10/2009 12:01:36 PM
-- Add signed amount type to fin report
UPDATE AD_Element SET Help='The amount type to report on: Quantity, Credit Only, Debit Only, Balance (expected sign) or Balance (accounted sign). "Expected sign" adjusts the sign of the result based on the Account Type and Expected Sign of each Account Element, whereas "accounted sign" always returns DR-CR.',Updated=TO_DATE('2009-10-02 12:01:36','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=54062
;
-- 02/10/2009 12:01:36 PM
-- Add signed amount type to fin report
UPDATE AD_Element_Trl SET IsTranslated='N' WHERE AD_Element_ID=54062
;
-- 02/10/2009 12:01:36 PM
-- Add signed amount type to fin report
UPDATE AD_Column SET ColumnName='PAAmountType', Name='Amount Type', Description='PA Amount Type for reporting', Help='The amount type to report on: Quantity, Credit Only, Debit Only, Balance (expected sign) or Balance (accounted sign). "Expected sign" adjusts the sign of the result based on the Account Type and Expected Sign of each Account Element, whereas "accounted sign" always returns DR-CR.' WHERE AD_Element_ID=54062
;
-- 02/10/2009 12:01:36 PM
-- Add signed amount type to fin report
UPDATE AD_Process_Para SET ColumnName='PAAmountType', Name='Amount Type', Description='PA Amount Type for reporting', Help='The amount type to report on: Quantity, Credit Only, Debit Only, Balance (expected sign) or Balance (accounted sign). "Expected sign" adjusts the sign of the result based on the Account Type and Expected Sign of each Account Element, whereas "accounted sign" always returns DR-CR.', AD_Element_ID=54062 WHERE UPPER(ColumnName)='PAAMOUNTTYPE' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL
;
-- 02/10/2009 12:01:36 PM
-- Add signed amount type to fin report
UPDATE AD_Process_Para SET ColumnName='PAAmountType', Name='Amount Type', Description='PA Amount Type for reporting', Help='The amount type to report on: Quantity, Credit Only, Debit Only, Balance (expected sign) or Balance (accounted sign). "Expected sign" adjusts the sign of the result based on the Account Type and Expected Sign of each Account Element, whereas "accounted sign" always returns DR-CR.' WHERE AD_Element_ID=54062 AND IsCentrallyMaintained='Y'
;
-- 02/10/2009 12:01:36 PM
-- Add signed amount type to fin report
UPDATE AD_Field SET Name='Amount Type', Description='PA Amount Type for reporting', Help='The amount type to report on: Quantity, Credit Only, Debit Only, Balance (expected sign) or Balance (accounted sign). "Expected sign" adjusts the sign of the result based on the Account Type and Expected Sign of each Account Element, whereas "accounted sign" always returns DR-CR.' WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=54062) AND IsCentrallyMaintained='Y'
;
-- 02/10/2009 12:03:11 PM
-- Add signed amount type to fin report
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Reference_Value_ID,AD_Table_ID,ColumnName,Created,CreatedBy,Description,EntityType,FieldLength,Help,IsActive,IsAllowLogging,IsAlwaysUpdateable,IsAutocomplete,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,58555,54062,0,17,53328,448,'PAAmountType',TO_DATE('2009-10-02 12:03:10','YYYY-MM-DD HH24:MI:SS'),100,'PA Amount Type for reporting','D',2,'The amount type to report on: Quantity, Credit Only, Debit Only, Balance (expected sign) or Balance (accounted sign). "Expected sign" adjusts the sign of the result based on the Account Type and Expected Sign of each Account Element, whereas "accounted sign" always returns DR-CR.','Y','Y','N','N','N','N','N','N','N','N','N','N','Y','Amount Type',0,TO_DATE('2009-10-02 12:03:10','YYYY-MM-DD HH24:MI:SS'),100,0)
;
-- 02/10/2009 12:03:11 PM
-- Add signed amount type to fin report
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=58555 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- 02/10/2009 12:03:20 PM
-- Add signed amount type to fin report
UPDATE AD_Column SET FieldLength=1,Updated=TO_DATE('2009-10-02 12:03:20','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=58555
;
-- 02/10/2009 12:03:23 PM
-- Add signed amount type to fin report
ALTER TABLE PA_ReportLine ADD PAAmountType CHAR(1) DEFAULT NULL
;
-- 02/10/2009 12:03:48 PM
-- Add signed amount type to fin report
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Reference_Value_ID,AD_Table_ID,ColumnName,Created,CreatedBy,Description,EntityType,FieldLength,Help,IsActive,IsAllowLogging,IsAlwaysUpdateable,IsAutocomplete,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,58556,54061,0,17,53327,448,'PAPeriodType',TO_DATE('2009-10-02 12:03:47','YYYY-MM-DD HH24:MI:SS'),100,'PA Period Type','D',1,'The Period Type to report on: Period, Year, Total or Natural. Natural = Year for P & L accounts, Total for Balance Sheet accounts.','Y','Y','N','N','N','N','N','N','N','N','N','N','Y','Period Type',0,TO_DATE('2009-10-02 12:03:47','YYYY-MM-DD HH24:MI:SS'),100,0)
;
-- 02/10/2009 12:03:48 PM
-- Add signed amount type to fin report
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=58556 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- 02/10/2009 12:03:50 PM
-- Add signed amount type to fin report
ALTER TABLE PA_ReportLine ADD PAPeriodType CHAR(1) DEFAULT NULL
;
-- 02/10/2009 12:04:03 PM
-- Add signed amount type to fin report
ALTER TABLE PA_ReportColumn ADD PAAmountType CHAR(1) DEFAULT 'B'
;
-- 02/10/2009 12:04:29 PM
-- Add signed amount type to fin report
UPDATE AD_Column SET IsActive='N',Updated=TO_DATE('2009-10-02 12:04:29','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=6019
;
-- 02/10/2009 12:04:39 PM
-- Add signed amount type to fin report
UPDATE AD_Column SET IsActive='N',Updated=TO_DATE('2009-10-02 12:04:39','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=7707
;
-- 02/10/2009 12:09:57 PM
-- Add signed amount type to fin report
INSERT INTO AD_Field (AD_Client_ID,AD_Column_ID,AD_Field_ID,AD_Org_ID,AD_Tab_ID,Created,CreatedBy,Description,DisplayLength,EntityType,Help,IsActive,IsCentrallyMaintained,IsDisplayed,IsEncrypted,IsFieldOnly,IsHeading,IsReadOnly,IsSameLine,Name,SeqNo,Updated,UpdatedBy) VALUES (0,58554,58041,0,374,TO_DATE('2009-10-02 12:09:56','YYYY-MM-DD HH24:MI:SS'),100,'PA Amount Type for reporting',14,'D','The amount type to report on: Quantity, Credit Only, Debit Only, Balance (expected sign) or Balance (accounted sign). "Expected sign" adjusts the sign of the result based on the Account Type and Expected Sign of each Account Element, whereas "accounted sign" always returns DR-CR.','Y','Y','Y','N','N','N','N','N','Amount Type',110,TO_DATE('2009-10-02 12:09:56','YYYY-MM-DD HH24:MI:SS'),100)
;
-- 02/10/2009 12:09:57 PM
-- Add signed amount type to fin report
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Field_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=58041 AND EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Field_ID!=t.AD_Field_ID)
;
-- 02/10/2009 12:11:17 PM
-- Add signed amount type to fin report
INSERT INTO AD_Field (AD_Client_ID,AD_Column_ID,AD_Field_ID,AD_Org_ID,AD_Tab_ID,Created,CreatedBy,Description,DisplayLength,EntityType,Help,IsActive,IsCentrallyMaintained,IsDisplayed,IsEncrypted,IsFieldOnly,IsHeading,IsReadOnly,IsSameLine,Name,SeqNo,Updated,UpdatedBy) VALUES (0,58553,58042,0,374,TO_DATE('2009-10-02 12:11:16','YYYY-MM-DD HH24:MI:SS'),100,'PA Period Type',14,'D','The Period Type to report on: Period, Year, Total or Natural. Natural = Year for P & L accounts, Total for Balance Sheet accounts.','Y','Y','Y','N','N','N','N','Y','Period Type',115,TO_DATE('2009-10-02 12:11:16','YYYY-MM-DD HH24:MI:SS'),100)
;
-- 02/10/2009 12:11:17 PM
-- Add signed amount type to fin report
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Field_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=58042 AND EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Field_ID!=t.AD_Field_ID)
;
-- 02/10/2009 12:11:26 PM
-- Add signed amount type to fin report
UPDATE AD_Field SET IsActive='N',Updated=TO_DATE('2009-10-02 12:11:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=4760
;
-- 02/10/2009 12:13:14 PM
-- Add signed amount type to fin report
INSERT INTO AD_Field (AD_Client_ID,AD_Column_ID,AD_Field_ID,AD_Org_ID,AD_Tab_ID,Created,CreatedBy,Description,DisplayLength,DisplayLogic,EntityType,Help,IsActive,IsCentrallyMaintained,IsDisplayed,IsEncrypted,IsFieldOnly,IsHeading,IsReadOnly,IsSameLine,Name,SeqNo,Updated,UpdatedBy) VALUES (0,58555,58043,0,376,TO_DATE('2009-10-02 12:13:13','YYYY-MM-DD HH24:MI:SS'),100,'PA Amount Type for reporting',14,'@LineType@=S','D','The amount type to report on: Quantity, Credit Only, Debit Only, Balance (expected sign) or Balance (accounted sign). "Expected sign" adjusts the sign of the result based on the Account Type and Expected Sign of each Account Element, whereas "accounted sign" always returns DR-CR.','Y','Y','Y','N','N','N','N','N','Amount Type',180,TO_DATE('2009-10-02 12:13:13','YYYY-MM-DD HH24:MI:SS'),100)
;
-- 02/10/2009 12:13:14 PM
-- Add signed amount type to fin report
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Field_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=58043 AND EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Field_ID!=t.AD_Field_ID)
;
-- 02/10/2009 12:13:46 PM
-- Add signed amount type to fin report
INSERT INTO AD_Field (AD_Client_ID,AD_Column_ID,AD_Field_ID,AD_Org_ID,AD_Tab_ID,Created,CreatedBy,Description,DisplayLength,DisplayLogic,EntityType,Help,IsActive,IsCentrallyMaintained,IsDisplayed,IsEncrypted,IsFieldOnly,IsHeading,IsReadOnly,IsSameLine,Name,SeqNo,Updated,UpdatedBy) VALUES (0,58556,58044,0,376,TO_DATE('2009-10-02 12:13:45','YYYY-MM-DD HH24:MI:SS'),100,'PA Period Type',14,'@LineType@=S','D','The Period Type to report on: Period, Year, Total or Natural. Natural = Year for P & L accounts, Total for Balance Sheet accounts.','Y','Y','Y','N','N','N','N','Y','Period Type',185,TO_DATE('2009-10-02 12:13:45','YYYY-MM-DD HH24:MI:SS'),100)
;
-- 02/10/2009 12:13:46 PM
-- Add signed amount type to fin report
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Field_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=58044 AND EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Field_ID!=t.AD_Field_ID)
;
-- 02/10/2009 12:13:57 PM
-- Add signed amount type to fin report
UPDATE AD_Field SET IsActive='N',Updated=TO_DATE('2009-10-02 12:13:57','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5807
;
-- 02/10/2009 12:16:06 PM
-- Add signed amount type to fin report
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Reference_Value_ID,AD_Table_ID,ColumnName,Created,CreatedBy,Description,EntityType,FieldLength,Help,IsActive,IsAllowLogging,IsAlwaysUpdateable,IsAutocomplete,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,58557,54062,0,17,53328,535,'PAAmountType',TO_DATE('2009-10-02 12:16:05','YYYY-MM-DD HH24:MI:SS'),100,'PA Amount Type for reporting','D',1,'The amount type to report on: Quantity, Credit Only, Debit Only, Balance (expected sign) or Balance (accounted sign). "Expected sign" adjusts the sign of the result based on the Account Type and Expected Sign of each Account Element, whereas "accounted sign" always returns DR-CR.','Y','Y','N','N','N','N','N','N','N','N','N','N','Y','Amount Type',0,TO_DATE('2009-10-02 12:16:05','YYYY-MM-DD HH24:MI:SS'),100,1)
;
-- 02/10/2009 12:16:06 PM
-- Add signed amount type to fin report
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=58557 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- 02/10/2009 12:16:10 PM
-- Add signed amount type to fin report
ALTER TABLE I_ReportLine ADD PAAmountType CHAR(1) DEFAULT NULL
;
-- 02/10/2009 12:16:40 PM
-- Add signed amount type to fin report
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Reference_Value_ID,AD_Table_ID,ColumnName,Created,CreatedBy,Description,EntityType,FieldLength,Help,IsActive,IsAllowLogging,IsAlwaysUpdateable,IsAutocomplete,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,58558,54061,0,17,53327,535,'PAPeriodType',TO_DATE('2009-10-02 12:16:34','YYYY-MM-DD HH24:MI:SS'),100,'PA Period Type','D',1,'The Period Type to report on: Period, Year, Total or Natural. Natural = Year for P & L accounts, Total for Balance Sheet accounts.','Y','Y','N','N','N','N','N','N','N','N','N','N','Y','Period Type',0,TO_DATE('2009-10-02 12:16:34','YYYY-MM-DD HH24:MI:SS'),100,1)
;
-- 02/10/2009 12:16:40 PM
-- Add signed amount type to fin report
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=58558 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- 02/10/2009 12:16:43 PM
-- Add signed amount type to fin report
ALTER TABLE I_ReportLine ADD PAPeriodType CHAR(1) DEFAULT NULL
;
-- 02/10/2009 12:16:52 PM
-- Add signed amount type to fin report
UPDATE AD_Column SET IsActive='N',Updated=TO_DATE('2009-10-02 12:16:52','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=7954
;
-- 02/10/2009 12:18:35 PM
-- Add signed amount type to fin report
INSERT INTO AD_Field (AD_Client_ID,AD_Column_ID,AD_Field_ID,AD_Org_ID,AD_Tab_ID,Created,CreatedBy,Description,DisplayLength,EntityType,Help,IsActive,IsCentrallyMaintained,IsDisplayed,IsEncrypted,IsFieldOnly,IsHeading,IsReadOnly,IsSameLine,Name,SeqNo,Updated,UpdatedBy) VALUES (0,58557,58045,0,444,TO_DATE('2009-10-02 12:18:35','YYYY-MM-DD HH24:MI:SS'),100,'PA Amount Type for reporting',14,'D','The amount type to report on: Quantity, Credit Only, Debit Only, Balance (expected sign) or Balance (accounted sign). "Expected sign" adjusts the sign of the result based on the Account Type and Expected Sign of each Account Element, whereas "accounted sign" always returns DR-CR.','Y','Y','Y','N','N','N','N','N','Amount Type',160,TO_DATE('2009-10-02 12:18:35','YYYY-MM-DD HH24:MI:SS'),100)
;
-- 02/10/2009 12:18:35 PM
-- Add signed amount type to fin report
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Field_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=58045 AND EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Field_ID!=t.AD_Field_ID)
;
-- 02/10/2009 12:18:56 PM
-- Add signed amount type to fin report
INSERT INTO AD_Field (AD_Client_ID,AD_Column_ID,AD_Field_ID,AD_Org_ID,AD_Tab_ID,Created,CreatedBy,Description,DisplayLength,EntityType,Help,IsActive,IsCentrallyMaintained,IsDisplayed,IsEncrypted,IsFieldOnly,IsHeading,IsReadOnly,IsSameLine,Name,SeqNo,Updated,UpdatedBy) VALUES (0,58558,58046,0,444,TO_DATE('2009-10-02 12:18:55','YYYY-MM-DD HH24:MI:SS'),100,'PA Period Type',14,'D','The Period Type to report on: Period, Year, Total or Natural. Natural = Year for P & L accounts, Total for Balance Sheet accounts.','Y','Y','Y','N','N','N','N','N','Period Type',165,TO_DATE('2009-10-02 12:18:55','YYYY-MM-DD HH24:MI:SS'),100)
;
-- 02/10/2009 12:18:56 PM
-- Add signed amount type to fin report
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Field_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=58046 AND EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Field_ID!=t.AD_Field_ID)
;
-- 02/10/2009 12:19:04 PM
-- Add signed amount type to fin report
UPDATE AD_Field SET IsActive='N',Updated=TO_DATE('2009-10-02 12:19:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=6043
;
-- 02/10/2009 1:48:32 PM
-- Add signed amount type to fin report
INSERT INTO AD_Ref_List (AD_Client_ID,AD_Org_ID,AD_Reference_ID,AD_Ref_List_ID,Created,CreatedBy,EntityType,IsActive,Name,Updated,UpdatedBy,Value) VALUES (0,0,53328,53546,TO_DATE('2009-10-02 13:48:30','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','Quantity (accounted sign)',TO_DATE('2009-10-02 13:48:30','YYYY-MM-DD HH24:MI:SS'),100,'R')
;
-- 02/10/2009 1:48:32 PM
-- Add signed amount type to fin report
INSERT INTO AD_Ref_List_Trl (AD_Language,AD_Ref_List_ID, Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Ref_List_ID, t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Ref_List t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Ref_List_ID=53546 AND EXISTS (SELECT * FROM AD_Ref_List_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Ref_List_ID!=t.AD_Ref_List_ID)
;
-- 02/10/2009 1:48:43 PM
-- Add signed amount type to fin report
UPDATE AD_Ref_List SET Name='Quantity (expected sign)',Updated=TO_DATE('2009-10-02 13:48:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=53544
;
-- 02/10/2009 1:48:43 PM
-- Add signed amount type to fin report
UPDATE AD_Ref_List_Trl SET IsTranslated='N' WHERE AD_Ref_List_ID=53544
;
update pa_reportline set paamounttype = substr(amounttype, 1,1), paperiodtype = substr(amounttype,2,1);
update pa_reportcolumn set paamounttype = substr(amounttype, 1,1), paperiodtype = substr(amounttype,2,1);

View File

@ -0,0 +1,28 @@
--- BF 2944056 https://sourceforge.net/tracker/?func=detail&aid=2944056&group_id=176962&atid=879332
--- Fix Related and Substitute Inventory Quantity in the InfoProduct window
DROP VIEW M_PRODUCT_SUBSTITUTERELATED_V;
CREATE OR REPLACE VIEW M_PRODUCT_SUBSTITUTERELATED_V AS
SELECT s.ad_client_id, s.ad_org_id, s.isactive, s.created, s.createdby, s.updated, s.updatedby,
s.m_product_id, s.substitute_id, 'S' AS rowtype, mp.name, sum(ms.qtyonhand - ms.qtyreserved) AS qtyavailable, sum(ms.qtyonhand) AS qtyonhand, sum(ms.qtyreserved) AS qtyreserved,
ROUND(MAX(mpr.pricestd),0) AS pricestd, mpr.m_pricelist_version_id, mw.m_warehouse_id, org.name AS orgname
FROM m_substitute s
JOIN m_storage ms ON ms.m_product_id = s.substitute_id
JOIN m_product mp ON ms.m_product_id = mp.m_product_id
JOIN m_locator ml ON ms.m_locator_id = ml.m_locator_id
JOIN m_warehouse mw ON ml.m_warehouse_id = mw.m_warehouse_id
JOIN m_productprice mpr ON ms.m_product_id = mpr.m_product_id
JOIN ad_org org ON org.ad_org_id = mw.ad_org_id
GROUP BY s.ad_client_id, s.ad_org_id, s.isactive, s.created, s.createdby, s.updated, s.updatedby, s.m_product_id, s.substitute_id, mw.m_warehouse_id, mpr.m_pricelist_version_id, org.name, mp.name
UNION
SELECT r.ad_client_id, r.ad_org_id, r.isactive, r.created, r.createdby, r.updated, r.updatedby,
r.m_product_id, r.relatedproduct_id AS substitute_id, 'R' AS rowtype, mp.name, sum(ms.qtyonhand - ms.qtyreserved) AS qtyavailable, sum(ms.qtyonhand) AS qtyonhand, sum(ms.qtyreserved) AS qtyreserved, round(MAX(mpr.pricestd),0) AS pricestd, mpr.m_pricelist_version_id, mw.m_warehouse_id, org.name AS orgname
FROM m_relatedproduct r
JOIN m_storage ms ON ms.m_product_id = r.relatedproduct_id
JOIN m_product mp ON ms.m_product_id = mp.m_product_id
JOIN m_locator ml ON ms.m_locator_id = ml.m_locator_id
JOIN m_warehouse mw ON ml.m_warehouse_id = mw.m_warehouse_id
JOIN m_productprice mpr ON ms.m_product_id = mpr.m_product_id
JOIN ad_org org ON org.ad_org_id = mw.ad_org_id
GROUP BY r.ad_client_id, r.ad_org_id, r.isactive, r.created, r.createdby, r.updated, r.updatedby, r.m_product_id, r.relatedproduct_id, mw.m_warehouse_id, mpr.m_pricelist_version_id, org.name, mp.name;

View File

@ -0,0 +1,30 @@
-- Feb 8, 2010 3:00:56 PM EST
-- Advanced search
INSERT INTO AD_Message (AD_Client_ID,AD_Message_ID,AD_Org_ID,Created,CreatedBy,EntityType,IsActive,MsgText,MsgType,Updated,UpdatedBy,Value) VALUES (0,53092,0,TO_DATE('2010-02-08 15:00:52','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','And/Or','I',TO_DATE('2010-02-08 15:00:52','YYYY-MM-DD HH24:MI:SS'),100,'And/Or')
;
-- Feb 8, 2010 3:00:57 PM EST
-- Advanced search
INSERT INTO AD_Message_Trl (AD_Language,AD_Message_ID, MsgText,MsgTip, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Message_ID, t.MsgText,t.MsgTip, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Message t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Message_ID=53092 AND NOT EXISTS (SELECT * FROM AD_Message_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Message_ID=t.AD_Message_ID)
;
-- Feb 8, 2010 3:01:21 PM EST
-- Advanced search
INSERT INTO AD_Message (AD_Client_ID,AD_Message_ID,AD_Org_ID,Created,CreatedBy,EntityType,IsActive,MsgText,MsgType,Updated,UpdatedBy,Value) VALUES (0,53093,0,TO_DATE('2010-02-08 15:01:19','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','AND','I',TO_DATE('2010-02-08 15:01:19','YYYY-MM-DD HH24:MI:SS'),100,'AND')
;
-- Feb 8, 2010 3:01:21 PM EST
-- Advanced search
INSERT INTO AD_Message_Trl (AD_Language,AD_Message_ID, MsgText,MsgTip, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Message_ID, t.MsgText,t.MsgTip, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Message t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Message_ID=53093 AND NOT EXISTS (SELECT * FROM AD_Message_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Message_ID=t.AD_Message_ID)
;
-- Feb 8, 2010 3:01:42 PM EST
-- Advanced search
INSERT INTO AD_Message (AD_Client_ID,AD_Message_ID,AD_Org_ID,Created,CreatedBy,EntityType,IsActive,MsgText,MsgType,Updated,UpdatedBy,Value) VALUES (0,53094,0,TO_DATE('2010-02-08 15:01:34','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','OR','I',TO_DATE('2010-02-08 15:01:34','YYYY-MM-DD HH24:MI:SS'),100,'OR')
;
-- Feb 8, 2010 3:01:42 PM EST
-- Advanced search
INSERT INTO AD_Message_Trl (AD_Language,AD_Message_ID, MsgText,MsgTip, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Message_ID, t.MsgText,t.MsgTip, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Message t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Message_ID=53094 AND NOT EXISTS (SELECT * FROM AD_Message_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Message_ID=t.AD_Message_ID)
;

Some files were not shown because too many files have changed in this diff Show More