diff --git a/plugins/pluginUtils/.classpath b/plugins/pluginUtils/.classpath new file mode 100644 index 0000000000..ad32c83a78 --- /dev/null +++ b/plugins/pluginUtils/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/plugins/pluginUtils/.project b/plugins/pluginUtils/.project new file mode 100644 index 0000000000..29dc1d61a3 --- /dev/null +++ b/plugins/pluginUtils/.project @@ -0,0 +1,28 @@ + + + pluginUtils + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/plugins/pluginUtils/.settings/org.eclipse.jdt.core.prefs b/plugins/pluginUtils/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000..ef6af465ad --- /dev/null +++ b/plugins/pluginUtils/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +#Fri Mar 12 08:32:19 CET 2010 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.6 diff --git a/plugins/pluginUtils/.settings/org.eclipse.pde.core.prefs b/plugins/pluginUtils/.settings/org.eclipse.pde.core.prefs new file mode 100644 index 0000000000..e72eeee76a --- /dev/null +++ b/plugins/pluginUtils/.settings/org.eclipse.pde.core.prefs @@ -0,0 +1,4 @@ +#Fri Mar 12 08:32:19 CET 2010 +eclipse.preferences.version=1 +pluginProject.extensions=false +resolve.requirebundle=false diff --git a/plugins/pluginUtils/META-INF/MANIFEST.MF b/plugins/pluginUtils/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..b2e9d65818 --- /dev/null +++ b/plugins/pluginUtils/META-INF/MANIFEST.MF @@ -0,0 +1,11 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: PluginUtils +Bundle-SymbolicName: org.adempiere.pluginUtils +Bundle-Version: 0.0.0.1 +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Import-Package: org.adempiere.base, + org.compiere.model, + org.compiere.util, + org.osgi.framework;version="1.5.0" +Export-Package: org.adempiere.plugin.utils diff --git a/plugins/pluginUtils/build.properties b/plugins/pluginUtils/build.properties new file mode 100644 index 0000000000..34d2e4d2da --- /dev/null +++ b/plugins/pluginUtils/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/plugins/pluginUtils/src/org/adempiere/plugin/utils/AdempiereActivator.java b/plugins/pluginUtils/src/org/adempiere/plugin/utils/AdempiereActivator.java new file mode 100644 index 0000000000..33cacb20a4 --- /dev/null +++ b/plugins/pluginUtils/src/org/adempiere/plugin/utils/AdempiereActivator.java @@ -0,0 +1,103 @@ +package org.adempiere.plugin.utils; + +import java.io.InputStream; +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.adempiere.base.IDictionaryService; +import org.adempiere.base.Service; +import org.compiere.model.Query; +import org.compiere.model.X_AD_Package_Imp; +import org.compiere.model.X_AD_Package_Imp_Inst; +import org.compiere.util.Env; +import org.compiere.util.Trx; +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; + +public class AdempiereActivator implements BundleActivator { + + private final static Logger logger = Logger + .getLogger(AdempiereActivator.class.getName()); + private BundleContext context; + + @Override + public void start(BundleContext context) throws Exception { + this.context = context; + logger.info(getName() + " " + getVersion() + " starting..."); + installPackage(); + start(); + logger.info(getName() + " " + getVersion() + " ready."); + } + + public String getName() { + return context.getBundle().getSymbolicName(); + } + + public String getVersion() { + return (String) context.getBundle().getHeaders().get("Bundle-Version"); + } + + public String getDescription() { + return getName(); + } + + private void installPackage() { + String trxName = Trx.createTrxName(); + String where = "Name=? AND PK_Version=?"; + Query q = new Query(Env.getCtx(), X_AD_Package_Imp.Table_Name, + where.toString(), trxName); + q.setParameters(new Object[] { getName(), getVersion() }); + X_AD_Package_Imp pkg = q.first(); + if (pkg == null) { + packIn(trxName); + install(); + logger.info(getName() + " " + getVersion() + " installed."); + } else { + logger.info(getName() + " " + getVersion() + " was installed: " + + pkg.getCreated()); + } + Trx.get(trxName, false).commit(); + } + + protected void packIn(String trxName) { + InputStream packout = this.getClass().getResourceAsStream( + "/META-INF/PackOut.xml"); + if (packout != null) { + IDictionaryService service = Service.locate(IDictionaryService.class); + try { + service.merge(packout); + } catch (Exception e) { + logger.log(Level.WARNING, "Error on Dictionary service", e); + } + } + X_AD_Package_Imp pkg = new X_AD_Package_Imp(Env.getCtx(), + 0, trxName); + pkg.setName(getName()); + pkg.setPK_Version(getVersion()); + pkg.setPK_Status("Installed."); + pkg.setDescription(getDescription()); + pkg.save(trxName); + } + + protected BundleContext getContext() { + return context; + } + + @Override + public void stop(BundleContext context) throws Exception { + stop(); + logger.info(context.getBundle().getSymbolicName() + " " + + context.getBundle().getHeaders().get("Bundle-Version") + + " stopped."); + } + + protected void install() { + }; + + protected void start() { + }; + + protected void stop() { + }; + +}