From: Mathieu Baudier Date: Mon, 13 Jan 2020 10:26:15 +0000 (+0100) Subject: Start organising Argeo Apps X-Git-Tag: argeo-suite-2.1.16~123 X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=commitdiff_plain;h=c2da92a9dcef3f64901f2a01f5f3dca671813e1c Start organising Argeo Apps --- diff --git a/library/org.argeo.suite.docs/.gitignore b/library/org.argeo.suite.docs/.gitignore new file mode 100644 index 0000000..09e3bc9 --- /dev/null +++ b/library/org.argeo.suite.docs/.gitignore @@ -0,0 +1,2 @@ +/bin/ +/target/ diff --git a/library/org.argeo.suite.docs/.project b/library/org.argeo.suite.docs/.project new file mode 100644 index 0000000..b73240a --- /dev/null +++ b/library/org.argeo.suite.docs/.project @@ -0,0 +1,27 @@ + + + org.argeo.suite.docs + + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + org.eclipse.pde.ds.core.builder + + + + + + org.eclipse.pde.PluginNature + + diff --git a/library/org.argeo.suite.docs/META-INF/.gitignore b/library/org.argeo.suite.docs/META-INF/.gitignore new file mode 100644 index 0000000..4854a41 --- /dev/null +++ b/library/org.argeo.suite.docs/META-INF/.gitignore @@ -0,0 +1 @@ +/MANIFEST.MF diff --git a/library/org.argeo.suite.docs/bnd.bnd b/library/org.argeo.suite.docs/bnd.bnd new file mode 100644 index 0000000..e69de29 diff --git a/library/org.argeo.suite.docs/build.properties b/library/org.argeo.suite.docs/build.properties new file mode 100644 index 0000000..34d2e4d --- /dev/null +++ b/library/org.argeo.suite.docs/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/library/org.argeo.suite.docs/e4xmi/browse.e4xmi b/library/org.argeo.suite.docs/e4xmi/browse.e4xmi new file mode 100644 index 0000000..2faa633 --- /dev/null +++ b/library/org.argeo.suite.docs/e4xmi/browse.e4xmi @@ -0,0 +1,85 @@ + + + + + shellMaximized + auth.cn=org.argeo.office.coworker,ou=roles,ou=node + + + + entityEditorArea + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/library/org.argeo.suite.docs/pom.xml b/library/org.argeo.suite.docs/pom.xml new file mode 100644 index 0000000..2c98ea2 --- /dev/null +++ b/library/org.argeo.suite.docs/pom.xml @@ -0,0 +1,31 @@ + + + 4.0.0 + + org.argeo.suite.library + suite-library + 2.1.16-SNAPSHOT + .. + + org.argeo.suite.docs + Docs App + jar + + + org.argeo.connect + org.argeo.connect.e4 + ${version.argeo-connect} + + + + + org.argeo.tp + argeo-tp-rap-e4 + ${version.argeo-tp} + pom + provided + + + diff --git a/library/pom.xml b/library/pom.xml new file mode 100644 index 0000000..8d2983d --- /dev/null +++ b/library/pom.xml @@ -0,0 +1,19 @@ + + + 4.0.0 + + org.argeo.suite + argeo-suite + 2.1.16-SNAPSHOT + .. + + org.argeo.suite.library + suite-library + Library Suite + pom + + org.argeo.suite.docs + + diff --git a/org.argeo.suite.e4.rap/OSGI-INF/appDeployer.xml b/org.argeo.suite.e4.rap/OSGI-INF/appDeployer.xml new file mode 100644 index 0000000..55057ef --- /dev/null +++ b/org.argeo.suite.e4.rap/OSGI-INF/appDeployer.xml @@ -0,0 +1,4 @@ + + + + diff --git a/org.argeo.suite.e4.rap/bnd.bnd b/org.argeo.suite.e4.rap/bnd.bnd index d33d61d..e65157a 100644 --- a/org.argeo.suite.e4.rap/bnd.bnd +++ b/org.argeo.suite.e4.rap/bnd.bnd @@ -1,7 +1,8 @@ Bundle-SymbolicName: org.argeo.suite.e4.rap;singleton:=true Bundle-ActivationPolicy: lazy -Service-Component: OSGI-INF/argeo-office-rap.xml +Service-Component: OSGI-INF/argeo-office-rap.xml,\ +OSGI-INF/appDeployer.xml Import-Package: org.argeo.node,\ org.eclipse.swt,\ diff --git a/org.argeo.suite.e4.rap/e4xmi/argeo-settings.e4xmi b/org.argeo.suite.e4.rap/e4xmi/argeo-settings.e4xmi new file mode 100644 index 0000000..7c667ce --- /dev/null +++ b/org.argeo.suite.e4.rap/e4xmi/argeo-settings.e4xmi @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/org.argeo.suite.e4.rap/src/org/argeo/suite/e4/rap/settings/AppDeployer.java b/org.argeo.suite.e4.rap/src/org/argeo/suite/e4/rap/settings/AppDeployer.java new file mode 100644 index 0000000..874f180 --- /dev/null +++ b/org.argeo.suite.e4.rap/src/org/argeo/suite/e4/rap/settings/AppDeployer.java @@ -0,0 +1,72 @@ +package org.argeo.suite.e4.rap.settings; + +import java.util.Dictionary; +import java.util.Hashtable; +import java.util.Map; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.argeo.cms.e4.rap.AbstractRapE4App; +import org.argeo.cms.util.CmsTheme; +import org.eclipse.rap.rwt.application.ApplicationConfiguration; +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleContext; +import org.osgi.service.cm.ConfigurationException; +import org.osgi.service.cm.ManagedServiceFactory; + +public class AppDeployer implements ManagedServiceFactory { + private final static Log log = LogFactory.getLog(AppDeployer.class); + private BundleContext bundleContext; + + public void init(BundleContext bundleContext, Map properties) { + this.bundleContext = bundleContext; + + deploy(findBundle("org.argeo.suite.studio", null)); + deploy(findBundle("org.argeo.suite.docs", null)); + } + + public void destroy() { + + } + + @Override + public String getName() { + return "Argeo App Deployer"; + } + + @Override + public void updated(String pid, Dictionary properties) throws ConfigurationException { + Bundle bundle = findBundle(pid, properties); + deploy(bundle); + } + + protected void deploy(Bundle bundle) { + CmsTheme cmsTheme = new CmsTheme(bundleContext, "org.argeo.theme.argeo2"); + + ArgeoRapApp app = new ArgeoRapApp(bundle, cmsTheme); + + Hashtable props = new Hashtable(); + props.put(AbstractRapE4App.CONTEXT_NAME_PROPERTY, app.getContextName()); + bundleContext.registerService(ApplicationConfiguration.class, app, props); + + if (log.isDebugEnabled()) + log.debug("Deployed Argeo App " + bundle.getSymbolicName() + " to " + app.getContextName()); + } + + @Override + public void deleted(String pid) { + } + + protected Bundle findBundle(String pid, Dictionary properties) { + Bundle bundle = null; + for (Bundle b : bundleContext.getBundles()) { + if (b.getSymbolicName().equals(pid)) { + bundle = b; + break; + } + } + if (bundle == null) + throw new IllegalStateException("Bundle " + pid + " not found"); + return bundle; + } +} diff --git a/org.argeo.suite.e4.rap/src/org/argeo/suite/e4/rap/settings/AppsPart.java b/org.argeo.suite.e4.rap/src/org/argeo/suite/e4/rap/settings/AppsPart.java new file mode 100644 index 0000000..2f80ec8 --- /dev/null +++ b/org.argeo.suite.e4.rap/src/org/argeo/suite/e4/rap/settings/AppsPart.java @@ -0,0 +1,13 @@ +package org.argeo.suite.e4.rap.settings; + +import javax.annotation.PostConstruct; + +import org.eclipse.swt.widgets.Composite; + +/** Overview of the active and activable Apps. */ +public class AppsPart { + @PostConstruct + public void createUi(Composite parent) { + + } +} diff --git a/org.argeo.suite.e4.rap/src/org/argeo/suite/e4/rap/settings/ArgeoRapApp.java b/org.argeo.suite.e4.rap/src/org/argeo/suite/e4/rap/settings/ArgeoRapApp.java new file mode 100644 index 0000000..83a5bd0 --- /dev/null +++ b/org.argeo.suite.e4.rap/src/org/argeo/suite/e4/rap/settings/ArgeoRapApp.java @@ -0,0 +1,50 @@ +package org.argeo.suite.e4.rap.settings; + +import java.util.Enumeration; + +import org.apache.commons.io.FilenameUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.argeo.cms.e4.rap.AbstractRapE4App; +import org.argeo.cms.util.CmsTheme; +import org.eclipse.rap.rwt.application.Application; +import org.eclipse.rap.rwt.client.WebClient; +import org.osgi.framework.Bundle; + +/** Argeo RAP app. */ +public class ArgeoRapApp extends AbstractRapE4App { + private final static Log log = LogFactory.getLog(ArgeoRapApp.class); + + private Bundle bundle; + private CmsTheme cmsTheme; + private String baseE4xmi = "/e4xmi"; + + public ArgeoRapApp(Bundle bundle, CmsTheme cmsTheme) { + this.bundle = bundle; + this.cmsTheme = cmsTheme; + setLifeCycleUri("bundleclass://org.argeo.suite.e4.rap/org.argeo.suite.e4.rap.ArgeoSuiteLoginLifecycle"); + String contextName = "argeo/" + FilenameUtils.getExtension(bundle.getSymbolicName()); + setContextName(contextName); + } + + @Override + protected void addEntryPoints(Application application) { + if (cmsTheme != null) + cmsTheme.apply(application); + + String font = ""; + getBaseProperties().put(WebClient.HEAD_HTML, font); + + Enumeration paths = bundle.getEntryPaths(baseE4xmi); + while (paths.hasMoreElements()) { + String p = paths.nextElement(); + if (p.endsWith(".e4xmi")) { + String e4xmiPath = bundle.getSymbolicName() + '/' + p; + String name = '/' + FilenameUtils.removeExtension(FilenameUtils.getName(p)); + addE4EntryPoint(application, name, e4xmiPath, getBaseProperties()); + if (log.isDebugEnabled()) + log.debug("Registered " + e4xmiPath + " as " + getContextName() + name); + } + } + } +} diff --git a/org.argeo.suite.e4/build.properties b/org.argeo.suite.e4/build.properties index afd6873..9f62ca8 100644 --- a/org.argeo.suite.e4/build.properties +++ b/org.argeo.suite.e4/build.properties @@ -5,5 +5,6 @@ bin.includes = META-INF/,\ e4xmi/,\ plugin.xml,\ e4xmi/argeo-suite-toolbars.e4xmi,\ - OSGI-INF/resourcesE4Service.xml + OSGI-INF/resourcesE4Service.xml,\ + e4xmi/argeo-settings.e4xmi source.. = src/ diff --git a/pom.xml b/pom.xml index 745e8ca..fc113f7 100644 --- a/pom.xml +++ b/pom.xml @@ -28,6 +28,8 @@ org.argeo.suite.standard + library + systems org.argeo.suite.tracker dep diff --git a/sdk/argeo-office-e4-rap.properties b/sdk/argeo-office-e4-rap.properties index bf5adc6..4bb5aec 100644 --- a/sdk/argeo-office-e4-rap.properties +++ b/sdk/argeo-office-e4-rap.properties @@ -21,6 +21,8 @@ org.osgi.service.http.port=7070 #argeo.node.useradmin.uris=ldap://cn=Directory%20Manager:argeoargeo@localhost:10389/dc=example,dc=com +rgeo.node.init=../../init + argeo.i18n.locales=en,fr,de,ar argeo.i18n.defaultLocale=en diff --git a/sdk/init/node/dc=example,dc=com.ldif b/sdk/init/node/dc=example,dc=com.ldif new file mode 100644 index 0000000..5371306 --- /dev/null +++ b/sdk/init/node/dc=example,dc=com.ldif @@ -0,0 +1,39 @@ +dn: uid=coworker,ou=People,dc=example,dc=com +objectClass: inetOrgPerson +objectClass: organizationalPerson +objectClass: person +objectClass: top +givenName: John +sn: Coworker +userPassword:: e1NIQX1pZVNWNTVRYytlUU9hWURSU2hhL0Fqek5USkU9 +mail: coworker@localhost +uid: coworker +cn: John Coworker +description: A regular coworker + +dn: uid=manager,ou=People,dc=example,dc=com +objectClass: inetOrgPerson +objectClass: organizationalPerson +objectClass: person +objectClass: top +givenName: Mary +sn: Manager +userPassword:: e1NIQX1pZVNWNTVRYytlUU9hWURSU2hhL0Fqek5USkU9 +mail: manager@localhost +uid: manager +cn: Mary Manager +description: A manager + +dn: uid=root,ou=People,dc=example,dc=com +objectClass: inetOrgPerson +objectClass: person +objectClass: organizationalPerson +objectClass: top +givenName: Super +sn: User +userPassword:: e1NIQX1pZVNWNTVRYytlUU9hWURSU2hhL0Fqek5USkU9 +mail: root@localhost +uid: root +cn: Super User +description: Superuser + diff --git a/sdk/init/node/ou=roles,ou=node.ldif b/sdk/init/node/ou=roles,ou=node.ldif new file mode 100644 index 0000000..d608c2b --- /dev/null +++ b/sdk/init/node/ou=roles,ou=node.ldif @@ -0,0 +1,74 @@ +dn: cn=admin,ou=roles,ou=node +objectClass: groupOfNames +objectClass: top +cn: admin +member: uid=root,ou=People,dc=example,dc=com + +dn: cn=org.argeo.activities.editor,ou=roles,ou=node +objectClass: groupOfNames +objectClass: top +cn: org.argeo.activities.editor +member: cn=org.argeo.office.manager,ou=roles,ou=node + +dn: cn=org.argeo.activities.reader,ou=roles,ou=node +objectClass: groupOfNames +objectClass: top +cn: org.argeo.activities.reader +member: cn=org.argeo.office.coworker,ou=roles,ou=node + +dn: cn=org.argeo.connect.resources.editor,ou=roles,ou=node +objectClass: groupOfNames +objectClass: top +cn: org.argeo.connect.resources.editor +member: cn=org.argeo.office.manager,ou=roles,ou=node + +dn: cn=org.argeo.connect.resources.reader,ou=roles,ou=node +objectClass: groupOfNames +objectClass: top +cn: org.argeo.connect.resources.reader +member: cn=org.argeo.office.coworker,ou=roles,ou=node + +dn: cn=org.argeo.office.coworker,ou=roles,ou=node +objectClass: groupOfNames +objectClass: top +cn: org.argeo.office.coworker +member: cn=org.argeo.office.manager,ou=roles,ou=node +member: uid=coworker,ou=People,dc=example,dc=com + +dn: cn=org.argeo.office.manager,ou=roles,ou=node +objectClass: groupOfNames +objectClass: top +cn: org.argeo.office.manager +member: uid=manager,ou=People,dc=example,dc=com +member: uid=root,ou=People,dc=example,dc=com + +dn: cn=org.argeo.people.editor,ou=roles,ou=node +objectClass: groupOfNames +objectClass: top +cn: org.argeo.people.editor +member: cn=org.argeo.office.manager,ou=roles,ou=node + +dn: cn=org.argeo.people.reader,ou=roles,ou=node +objectClass: groupOfNames +objectClass: top +cn: org.argeo.people.reader +member: cn=org.argeo.office.coworker,ou=roles,ou=node + +dn: cn=org.argeo.tracker.editor,ou=roles,ou=node +objectClass: groupOfNames +objectClass: top +cn: org.argeo.tracker.editor +member: cn=org.argeo.office.manager,ou=roles,ou=node + +dn: cn=org.argeo.tracker.reader,ou=roles,ou=node +objectClass: groupOfNames +objectClass: top +cn: org.argeo.tracker.reader +member: cn=org.argeo.office.coworker,ou=roles,ou=node + +dn: cn=userAdmin,ou=roles,ou=node +objectClass: groupOfNames +objectClass: top +cn: userAdmin +member: cn=admin,ou=roles,ou=node + diff --git a/systems/org.argeo.suite.studio/.gitignore b/systems/org.argeo.suite.studio/.gitignore new file mode 100644 index 0000000..09e3bc9 --- /dev/null +++ b/systems/org.argeo.suite.studio/.gitignore @@ -0,0 +1,2 @@ +/bin/ +/target/ diff --git a/systems/org.argeo.suite.studio/.project b/systems/org.argeo.suite.studio/.project new file mode 100644 index 0000000..ea4f91d --- /dev/null +++ b/systems/org.argeo.suite.studio/.project @@ -0,0 +1,27 @@ + + + org.argeo.suite.studio + + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + org.eclipse.pde.ds.core.builder + + + + + + org.eclipse.pde.PluginNature + + diff --git a/systems/org.argeo.suite.studio/META-INF/.gitignore b/systems/org.argeo.suite.studio/META-INF/.gitignore new file mode 100644 index 0000000..4854a41 --- /dev/null +++ b/systems/org.argeo.suite.studio/META-INF/.gitignore @@ -0,0 +1 @@ +/MANIFEST.MF diff --git a/systems/org.argeo.suite.studio/bnd.bnd b/systems/org.argeo.suite.studio/bnd.bnd new file mode 100644 index 0000000..e69de29 diff --git a/systems/org.argeo.suite.studio/build.properties b/systems/org.argeo.suite.studio/build.properties new file mode 100644 index 0000000..34d2e4d --- /dev/null +++ b/systems/org.argeo.suite.studio/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/systems/org.argeo.suite.studio/e4xmi/mvc.e4xmi b/systems/org.argeo.suite.studio/e4xmi/mvc.e4xmi new file mode 100644 index 0000000..2faa633 --- /dev/null +++ b/systems/org.argeo.suite.studio/e4xmi/mvc.e4xmi @@ -0,0 +1,85 @@ + + + + + shellMaximized + auth.cn=org.argeo.office.coworker,ou=roles,ou=node + + + + entityEditorArea + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/systems/org.argeo.suite.studio/pom.xml b/systems/org.argeo.suite.studio/pom.xml new file mode 100644 index 0000000..fc25c8c --- /dev/null +++ b/systems/org.argeo.suite.studio/pom.xml @@ -0,0 +1,31 @@ + + + 4.0.0 + + org.argeo.suite.systems + suite-systems + 2.1.16-SNAPSHOT + .. + + org.argeo.suite.studio + Studio App + jar + + + org.argeo.connect + org.argeo.connect.e4 + ${version.argeo-connect} + + + + + org.argeo.tp + argeo-tp-rap-e4 + ${version.argeo-tp} + pom + provided + + + diff --git a/systems/pom.xml b/systems/pom.xml new file mode 100644 index 0000000..e967e86 --- /dev/null +++ b/systems/pom.xml @@ -0,0 +1,19 @@ + + + 4.0.0 + + org.argeo.suite + argeo-suite + 2.1.16-SNAPSHOT + .. + + org.argeo.suite.systems + suite-systems + Systems Suite + pom + + org.argeo.suite.studio + +