IDEMPIERE-4601 Move Plugin manager from About to a Form (#469)
This commit is contained in:
parent
2ab2211f81
commit
a9a2aeeeed
|
@ -0,0 +1,170 @@
|
||||||
|
SET SQLBLANKLINES ON
|
||||||
|
SET DEFINE OFF
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:07:23 PM CET
|
||||||
|
INSERT INTO AD_Form (AD_Form_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,Help,Classname,AccessLevel,EntityType,IsBetaFunctionality,AD_Form_UU) VALUES (200015,0,0,'Y',TO_DATE('2020-12-15 16:07:23','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2020-12-15 16:07:23','YYYY-MM-DD HH24:MI:SS'),100,'Plugin Manager','Plugin Manager','Plugin Manager','org.adempiere.webui.apps.form.WPluginManager','4','D','N','4641c756-4c24-4c2f-9c27-f62c86f0b940')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:07:52 PM CET
|
||||||
|
INSERT INTO AD_Menu (AD_Menu_ID,Name,Action,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSummary,IsSOTrx,AD_Form_ID,IsReadOnly,EntityType,IsCentrallyMaintained,AD_Menu_UU) VALUES (200177,'Plugin Manager','X',0,0,'Y',TO_DATE('2020-12-15 16:07:52','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2020-12-15 16:07:52','YYYY-MM-DD HH24:MI:SS'),100,'N','Y',200015,'N','D','Y','bb2ed8f6-2189-4d23-bf95-2a42abac4e64')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:07:52 PM CET
|
||||||
|
INSERT INTO AD_TreeNodeMM (AD_Client_ID,AD_Org_ID, IsActive,Created,CreatedBy,Updated,UpdatedBy, AD_Tree_ID, Node_ID, Parent_ID, SeqNo, AD_TreeNodeMM_UU) SELECT t.AD_Client_ID, 0, 'Y', getDate(), 100, getDate(), 100,t.AD_Tree_ID, 200177, 0, 999, Generate_UUID() FROM AD_Tree t WHERE t.AD_Client_ID=0 AND t.IsActive='Y' AND t.IsAllNodes='Y' AND t.TreeType='MM' AND NOT EXISTS (SELECT * FROM AD_TreeNodeMM e WHERE e.AD_Tree_ID=t.AD_Tree_ID AND Node_ID=200177)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=0, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=218
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=1, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=153
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=2, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=263
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=3, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=166
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=4, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=203
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=5, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=53242
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=6, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=236
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=7, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=183
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=8, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=160
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=9, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=278
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=10, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=345
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=11, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=53296
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=12, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=53014
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=13, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=53108
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=0, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=161
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=1, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=367
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=2, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=456
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=3, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=501
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=4, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=326
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=5, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=566
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=6, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=392
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=7, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=113
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=8, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=220
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=9, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=351
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=10, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=289
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=11, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=302
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=12, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=200168
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=13, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=200169
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=14, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=303
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=15, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=200047
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=16, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=200048
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=17, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=321
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=18, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=461
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=19, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=53193
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=20, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=200161
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=21, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=53322
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=22, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=383
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=23, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=200177
|
||||||
|
;
|
||||||
|
|
||||||
|
SELECT register_migration_script('202012151609_IDEMPIERE-4601.sql') FROM dual
|
||||||
|
;
|
||||||
|
|
|
@ -0,0 +1,167 @@
|
||||||
|
-- Dec 15, 2020, 4:07:23 PM CET
|
||||||
|
INSERT INTO AD_Form (AD_Form_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,Help,Classname,AccessLevel,EntityType,IsBetaFunctionality,AD_Form_UU) VALUES (200015,0,0,'Y',TO_TIMESTAMP('2020-12-15 16:07:23','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2020-12-15 16:07:23','YYYY-MM-DD HH24:MI:SS'),100,'Plugin Manager','Plugin Manager','Plugin Manager','org.adempiere.webui.apps.form.WPluginManager','4','D','N','4641c756-4c24-4c2f-9c27-f62c86f0b940')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:07:52 PM CET
|
||||||
|
INSERT INTO AD_Menu (AD_Menu_ID,Name,"action",AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSummary,IsSOTrx,AD_Form_ID,IsReadOnly,EntityType,IsCentrallyMaintained,AD_Menu_UU) VALUES (200177,'Plugin Manager','X',0,0,'Y',TO_TIMESTAMP('2020-12-15 16:07:52','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2020-12-15 16:07:52','YYYY-MM-DD HH24:MI:SS'),100,'N','Y',200015,'N','D','Y','bb2ed8f6-2189-4d23-bf95-2a42abac4e64')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:07:52 PM CET
|
||||||
|
INSERT INTO AD_TreeNodeMM (AD_Client_ID,AD_Org_ID, IsActive,Created,CreatedBy,Updated,UpdatedBy, AD_Tree_ID, Node_ID, Parent_ID, SeqNo, AD_TreeNodeMM_UU) SELECT t.AD_Client_ID, 0, 'Y', statement_timestamp(), 100, statement_timestamp(), 100,t.AD_Tree_ID, 200177, 0, 999, Generate_UUID() FROM AD_Tree t WHERE t.AD_Client_ID=0 AND t.IsActive='Y' AND t.IsAllNodes='Y' AND t.TreeType='MM' AND NOT EXISTS (SELECT * FROM AD_TreeNodeMM e WHERE e.AD_Tree_ID=t.AD_Tree_ID AND Node_ID=200177)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=0, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=218
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=1, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=153
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=2, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=263
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=3, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=166
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=4, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=203
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=5, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=53242
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=6, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=236
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=7, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=183
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=8, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=160
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=9, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=278
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=10, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=345
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=11, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=53296
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=12, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=53014
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=13, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=53108
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=0, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=161
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=1, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=367
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=2, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=456
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=3, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=501
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=4, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=326
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=5, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=566
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=6, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=392
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=7, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=113
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=8, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=220
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=9, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=351
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=10, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=289
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=11, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=302
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=12, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=200168
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=13, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=200169
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=14, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=303
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=15, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=200047
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=16, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=200048
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=17, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=321
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=18, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=461
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=19, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=53193
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=20, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=200161
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=21, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=53322
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=22, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=383
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 15, 2020, 4:08:26 PM CET
|
||||||
|
UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=23, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=200177
|
||||||
|
;
|
||||||
|
|
||||||
|
SELECT register_migration_script('202012151609_IDEMPIERE-4601.sql') FROM dual
|
||||||
|
;
|
||||||
|
|
|
@ -0,0 +1,280 @@
|
||||||
|
/***********************************************************************
|
||||||
|
* This file is part of iDempiere ERP Open Source *
|
||||||
|
* http://www.idempiere.org *
|
||||||
|
* *
|
||||||
|
* Copyright (C) Contributors *
|
||||||
|
* *
|
||||||
|
* This program is free software; you can redistribute it and/or *
|
||||||
|
* modify it under the terms of the GNU General Public License *
|
||||||
|
* as published by the Free Software Foundation; either version 2 *
|
||||||
|
* of the License, or (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* 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., 51 Franklin Street, Fifth Floor, Boston, *
|
||||||
|
* MA 02110-1301, USA. *
|
||||||
|
* *
|
||||||
|
* Contributors: *
|
||||||
|
* - Carlos Ruiz - globalqss - bxservice *
|
||||||
|
**********************************************************************/
|
||||||
|
|
||||||
|
package org.adempiere.webui.apps.form;
|
||||||
|
|
||||||
|
import java.util.Properties;
|
||||||
|
import java.util.Vector;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.adempiere.exceptions.AdempiereException;
|
||||||
|
import org.adempiere.webui.WebUIActivator;
|
||||||
|
import org.adempiere.webui.component.Button;
|
||||||
|
import org.adempiere.webui.component.ListModelTable;
|
||||||
|
import org.adempiere.webui.component.Listbox;
|
||||||
|
import org.adempiere.webui.component.ListboxFactory;
|
||||||
|
import org.adempiere.webui.component.WListbox;
|
||||||
|
import org.adempiere.webui.panel.ADForm;
|
||||||
|
import org.adempiere.webui.util.ZKUpdateUtil;
|
||||||
|
import org.compiere.minigrid.IDColumn;
|
||||||
|
import org.compiere.util.CLogger;
|
||||||
|
import org.compiere.util.Env;
|
||||||
|
import org.compiere.util.KeyNamePair;
|
||||||
|
import org.compiere.util.Msg;
|
||||||
|
import org.osgi.framework.Bundle;
|
||||||
|
import org.osgi.framework.BundleContext;
|
||||||
|
import org.osgi.framework.BundleException;
|
||||||
|
import org.osgi.framework.wiring.BundleRevision;
|
||||||
|
import org.zkoss.zk.ui.event.Event;
|
||||||
|
import org.zkoss.zk.ui.event.EventListener;
|
||||||
|
import org.zkoss.zk.ui.event.Events;
|
||||||
|
import org.zkoss.zul.Div;
|
||||||
|
import org.zkoss.zul.Listitem;
|
||||||
|
import org.zkoss.zul.Vbox;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A Custom Form to manage plugins in iDempiere
|
||||||
|
*
|
||||||
|
* @author Carlos Ruiz - globalqss - bxservice
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class WPluginManager extends ADForm implements EventListener<Event> {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = -2038792517003449189L;
|
||||||
|
|
||||||
|
/** Log. */
|
||||||
|
private static final CLogger log = CLogger.getCLogger(WPluginManager.class);
|
||||||
|
|
||||||
|
private WListbox pluginsTable;
|
||||||
|
private Listbox pluginActions;
|
||||||
|
private Button pluginProcess;
|
||||||
|
private Vector<Vector<Object>> pluginData;
|
||||||
|
private Vector<String> pluginColumnNames;
|
||||||
|
|
||||||
|
private static final int PLUGIN_ACTION_NONE = 0;
|
||||||
|
private static final int PLUGIN_ACTION_STOP = 1;
|
||||||
|
private static final int PLUGIN_ACTION_START = 2;
|
||||||
|
private static final int PLUGIN_ACTION_UPDATE = 3;
|
||||||
|
private static final int PLUGIN_ACTION_UNINSTALL = 4;
|
||||||
|
private static final int PLUGIN_ACTION_INSTALL = 5;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default constructor.
|
||||||
|
*/
|
||||||
|
public WPluginManager() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void initForm() {
|
||||||
|
Properties ctx = Env.getCtx();
|
||||||
|
Vbox vbox = new Vbox();
|
||||||
|
ZKUpdateUtil.setHflex(vbox, "1");
|
||||||
|
ZKUpdateUtil.setVflex(vbox, "1");
|
||||||
|
|
||||||
|
pluginColumnNames = new Vector<String>();
|
||||||
|
pluginColumnNames.add("");
|
||||||
|
pluginColumnNames.add(Msg.getMsg(ctx, "Id"));
|
||||||
|
pluginColumnNames.add(Msg.getMsg(ctx, "State"));
|
||||||
|
pluginColumnNames.add(Msg.getCleanMsg(ctx, "Name"));
|
||||||
|
pluginColumnNames.add(Msg.getMsg(ctx, "Version"));
|
||||||
|
|
||||||
|
pluginsTable = ListboxFactory.newDataTableAutoSize();
|
||||||
|
pluginData = new Vector<Vector<Object>>();
|
||||||
|
int i = 0;
|
||||||
|
pluginsTable.setColumnClass(i++, IDColumn.class, true); // 0-bundleId
|
||||||
|
pluginsTable.setColumnClass(i++, Integer.class, true); // 1-bundleId
|
||||||
|
pluginsTable.setColumnClass(i++, String.class, true); // 2-State
|
||||||
|
pluginsTable.setColumnClass(i++, String.class, true); // 3-SymbolicName
|
||||||
|
pluginsTable.setColumnClass(i++, String.class, true); // 4-Version
|
||||||
|
vbox.appendChild(pluginsTable);
|
||||||
|
ZKUpdateUtil.setVflex(pluginsTable, "1");
|
||||||
|
ZKUpdateUtil.setHflex(pluginsTable, "1");
|
||||||
|
refreshPluginTable();
|
||||||
|
pluginsTable.autoSize();
|
||||||
|
pluginsTable.addEventListener(Events.ON_SELECT, this);
|
||||||
|
|
||||||
|
pluginActions = new Listbox(new KeyNamePair[] { new KeyNamePair(PLUGIN_ACTION_NONE, ""),
|
||||||
|
new KeyNamePair(PLUGIN_ACTION_STOP, Msg.getMsg(ctx, "Stop")),
|
||||||
|
new KeyNamePair(PLUGIN_ACTION_START, Msg.getMsg(ctx, "Start")),
|
||||||
|
new KeyNamePair(PLUGIN_ACTION_UPDATE, Msg.getMsg(ctx, "Update")),
|
||||||
|
new KeyNamePair(PLUGIN_ACTION_UNINSTALL, Msg.getMsg(ctx, "Uninstall")),
|
||||||
|
new KeyNamePair(PLUGIN_ACTION_INSTALL, Msg.getMsg(ctx, "Install")) });
|
||||||
|
pluginActions.setId("pluginActions");
|
||||||
|
pluginActions.setRows(0);
|
||||||
|
pluginActions.setMold("select");
|
||||||
|
ZKUpdateUtil.setWidth(pluginActions, "200px");
|
||||||
|
refreshActionList();
|
||||||
|
pluginProcess = new Button(Msg.getMsg(ctx, "Process"));
|
||||||
|
pluginProcess.addEventListener(Events.ON_CLICK, this);
|
||||||
|
Div div = new Div();
|
||||||
|
div.setStyle("text-align: right;");
|
||||||
|
div.appendChild(pluginActions);
|
||||||
|
div.appendChild(pluginProcess);
|
||||||
|
vbox.appendChild(div);
|
||||||
|
|
||||||
|
this.appendChild(vbox);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String state(int state) {
|
||||||
|
switch (state) {
|
||||||
|
case Bundle.ACTIVE:
|
||||||
|
return "ACTIVE";
|
||||||
|
case Bundle.INSTALLED:
|
||||||
|
return "INSTALLED";
|
||||||
|
case Bundle.RESOLVED:
|
||||||
|
return "RESOLVED";
|
||||||
|
case Bundle.STARTING:
|
||||||
|
return "STARTING";
|
||||||
|
case Bundle.STOPPING:
|
||||||
|
return "STOPPING";
|
||||||
|
case Bundle.UNINSTALLED:
|
||||||
|
return "UNINSTALLED";
|
||||||
|
default:
|
||||||
|
return "UNKNOWN";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void refreshActionList() {
|
||||||
|
pluginActions.getItemAtIndex(PLUGIN_ACTION_UPDATE).setVisible(false); // not implemented yet
|
||||||
|
pluginActions.getItemAtIndex(PLUGIN_ACTION_UNINSTALL).setVisible(false); // not implemented yet
|
||||||
|
pluginActions.getItemAtIndex(PLUGIN_ACTION_INSTALL).setVisible(false); // not implemented yet
|
||||||
|
pluginActions.getItemAtIndex(PLUGIN_ACTION_STOP).setVisible(false);
|
||||||
|
pluginActions.getItemAtIndex(PLUGIN_ACTION_START).setVisible(false);
|
||||||
|
pluginActions.setSelectedItem(null);
|
||||||
|
Bundle bundle = getSelectedBundle();
|
||||||
|
if (bundle == null)
|
||||||
|
return;
|
||||||
|
int state = bundle.getState();
|
||||||
|
boolean isFragment = false;
|
||||||
|
BundleRevision rev = bundle.adapt(BundleRevision.class);
|
||||||
|
if (rev != null) {
|
||||||
|
isFragment = (rev.getTypes() & BundleRevision.TYPE_FRAGMENT) != 0;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* boolean hasFragments = false; if (!isFragment) { if (rev.getWiring() != null)
|
||||||
|
* { if (rev.getWiring().getProvidedWires(BundleRevision.HOST_NAMESPACE).size()
|
||||||
|
* > 0) { hasFragments = true; } } }
|
||||||
|
*/
|
||||||
|
if (bundle.getBundleId() == 0) {
|
||||||
|
// bundle 0 cannot be stopped
|
||||||
|
} else if (state == Bundle.ACTIVE) {
|
||||||
|
pluginActions.getItemAtIndex(PLUGIN_ACTION_STOP).setVisible(true);
|
||||||
|
} else if (state == Bundle.RESOLVED) {
|
||||||
|
if (!isFragment) {
|
||||||
|
pluginActions.getItemAtIndex(PLUGIN_ACTION_START).setVisible(true);
|
||||||
|
}
|
||||||
|
} else if (state == Bundle.INSTALLED) {
|
||||||
|
if (!isFragment) {
|
||||||
|
pluginActions.getItemAtIndex(PLUGIN_ACTION_START).setVisible(true);
|
||||||
|
}
|
||||||
|
} else if (state == Bundle.STARTING) {
|
||||||
|
if (!isFragment) {
|
||||||
|
pluginActions.getItemAtIndex(PLUGIN_ACTION_START).setVisible(true);
|
||||||
|
}
|
||||||
|
} else if (state == Bundle.STOPPING) {
|
||||||
|
// no options yet for stopping
|
||||||
|
} else if (state == Bundle.UNINSTALLED) {
|
||||||
|
// no options yet for uninstalled
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Bundle getSelectedBundle() {
|
||||||
|
Bundle retValue = null;
|
||||||
|
int idx = pluginsTable.getSelectedIndex();
|
||||||
|
if (idx >= 0) {
|
||||||
|
Vector<Object> pluginVector = pluginData.get(idx);
|
||||||
|
int pluginId = ((IDColumn) pluginVector.get(0)).getRecord_ID();
|
||||||
|
BundleContext bundleCtx = WebUIActivator.getBundleContext();
|
||||||
|
retValue = bundleCtx.getBundle(pluginId);
|
||||||
|
}
|
||||||
|
return retValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void processPlugin() {
|
||||||
|
Listitem actionItem = pluginActions.getSelectedItem();
|
||||||
|
if (actionItem != null && actionItem.getValue() instanceof Integer) {
|
||||||
|
int action = (Integer) actionItem.getValue();
|
||||||
|
Bundle bundle = getSelectedBundle();
|
||||||
|
if (action == PLUGIN_ACTION_STOP && bundle != null) {
|
||||||
|
try {
|
||||||
|
if (log.isLoggable(Level.INFO))
|
||||||
|
log.info("Stopping plugin " + bundle.getSymbolicName());
|
||||||
|
bundle.stop();
|
||||||
|
} catch (BundleException e) {
|
||||||
|
throw new AdempiereException(e);
|
||||||
|
}
|
||||||
|
} else if (action == PLUGIN_ACTION_START && bundle != null) {
|
||||||
|
try {
|
||||||
|
if (log.isLoggable(Level.INFO))
|
||||||
|
log.info("Starting plugin " + bundle.getSymbolicName());
|
||||||
|
bundle.start();
|
||||||
|
} catch (BundleException e) {
|
||||||
|
throw new AdempiereException(e);
|
||||||
|
}
|
||||||
|
} else if (action == PLUGIN_ACTION_UPDATE && bundle != null) {
|
||||||
|
// PLUGIN_ACTION_UPDATE not implemented yet
|
||||||
|
} else if (action == PLUGIN_ACTION_UNINSTALL && bundle != null) {
|
||||||
|
// PLUGIN_ACTION_UNINSTALL not implemented yet
|
||||||
|
} else if (action == PLUGIN_ACTION_INSTALL && bundle != null) {
|
||||||
|
// PLUGIN_ACTION_INSTALL not implemented yet
|
||||||
|
}
|
||||||
|
}
|
||||||
|
refreshPluginTable();
|
||||||
|
refreshActionList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void refreshPluginTable() {
|
||||||
|
int idx = pluginsTable.getSelectedIndex();
|
||||||
|
pluginsTable.getModel().removeAll(pluginData);
|
||||||
|
pluginData.removeAllElements();
|
||||||
|
|
||||||
|
BundleContext bundleCtx = WebUIActivator.getBundleContext();
|
||||||
|
for (Bundle bundle : bundleCtx.getBundles()) {
|
||||||
|
Vector<Object> line = new Vector<Object>();
|
||||||
|
Integer bundl = Long.valueOf(bundle.getBundleId()).intValue(); // potential problem converting Long to
|
||||||
|
// Integer, but WListBox cannot order Long
|
||||||
|
line.add(new IDColumn(bundl));
|
||||||
|
line.add(bundl);
|
||||||
|
line.add(state(bundle.getState()));
|
||||||
|
line.add(bundle.getSymbolicName());
|
||||||
|
line.add(bundle.getVersion());
|
||||||
|
pluginData.add(line);
|
||||||
|
}
|
||||||
|
ListModelTable model = new ListModelTable(pluginData);
|
||||||
|
pluginsTable.setData(model, pluginColumnNames);
|
||||||
|
pluginsTable.setSelectedIndex(idx);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onEvent(Event event) throws Exception {
|
||||||
|
if (Events.ON_SELECT.equals(event.getName()) && event.getTarget() == pluginsTable)
|
||||||
|
refreshActionList();
|
||||||
|
else if (Events.ON_CLICK.equals(event.getName()) && event.getTarget() == pluginProcess)
|
||||||
|
processPlugin();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -22,7 +22,6 @@ import java.util.logging.Level;
|
||||||
|
|
||||||
import org.adempiere.exceptions.AdempiereException;
|
import org.adempiere.exceptions.AdempiereException;
|
||||||
import org.adempiere.webui.LayoutUtils;
|
import org.adempiere.webui.LayoutUtils;
|
||||||
import org.adempiere.webui.WebUIActivator;
|
|
||||||
import org.adempiere.webui.apps.AEnv;
|
import org.adempiere.webui.apps.AEnv;
|
||||||
import org.adempiere.webui.component.Button;
|
import org.adempiere.webui.component.Button;
|
||||||
import org.adempiere.webui.component.Checkbox;
|
import org.adempiere.webui.component.Checkbox;
|
||||||
|
@ -31,7 +30,6 @@ import org.adempiere.webui.component.FolderBrowser;
|
||||||
import org.adempiere.webui.component.Label;
|
import org.adempiere.webui.component.Label;
|
||||||
import org.adempiere.webui.component.ListHead;
|
import org.adempiere.webui.component.ListHead;
|
||||||
import org.adempiere.webui.component.ListHeader;
|
import org.adempiere.webui.component.ListHeader;
|
||||||
import org.adempiere.webui.component.ListModelTable;
|
|
||||||
import org.adempiere.webui.component.Listbox;
|
import org.adempiere.webui.component.Listbox;
|
||||||
import org.adempiere.webui.component.ListboxFactory;
|
import org.adempiere.webui.component.ListboxFactory;
|
||||||
import org.adempiere.webui.component.SimpleListModel;
|
import org.adempiere.webui.component.SimpleListModel;
|
||||||
|
@ -41,7 +39,6 @@ import org.adempiere.webui.component.Tabpanel;
|
||||||
import org.adempiere.webui.component.Tabpanels;
|
import org.adempiere.webui.component.Tabpanels;
|
||||||
import org.adempiere.webui.component.Tabs;
|
import org.adempiere.webui.component.Tabs;
|
||||||
import org.adempiere.webui.component.ToolBarButton;
|
import org.adempiere.webui.component.ToolBarButton;
|
||||||
import org.adempiere.webui.component.WListbox;
|
|
||||||
import org.adempiere.webui.component.Window;
|
import org.adempiere.webui.component.Window;
|
||||||
import org.adempiere.webui.event.DialogEvents;
|
import org.adempiere.webui.event.DialogEvents;
|
||||||
import org.adempiere.webui.factory.ButtonFactory;
|
import org.adempiere.webui.factory.ButtonFactory;
|
||||||
|
@ -49,21 +46,15 @@ import org.adempiere.webui.theme.ThemeManager;
|
||||||
import org.adempiere.webui.util.FeedbackManager;
|
import org.adempiere.webui.util.FeedbackManager;
|
||||||
import org.adempiere.webui.util.ZKUpdateUtil;
|
import org.adempiere.webui.util.ZKUpdateUtil;
|
||||||
import org.compiere.Adempiere;
|
import org.compiere.Adempiere;
|
||||||
import org.compiere.minigrid.IDColumn;
|
|
||||||
import org.compiere.model.MUser;
|
import org.compiere.model.MUser;
|
||||||
import org.compiere.util.CLogErrorBuffer;
|
import org.compiere.util.CLogErrorBuffer;
|
||||||
import org.compiere.util.CLogMgt;
|
import org.compiere.util.CLogMgt;
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
import org.compiere.util.Ini;
|
import org.compiere.util.Ini;
|
||||||
import org.compiere.util.KeyNamePair;
|
|
||||||
import org.compiere.util.Msg;
|
import org.compiere.util.Msg;
|
||||||
import org.compiere.util.SecureEngine;
|
import org.compiere.util.SecureEngine;
|
||||||
import org.compiere.util.Util;
|
import org.compiere.util.Util;
|
||||||
import org.osgi.framework.Bundle;
|
|
||||||
import org.osgi.framework.BundleContext;
|
|
||||||
import org.osgi.framework.BundleException;
|
|
||||||
import org.osgi.framework.wiring.BundleRevision;
|
|
||||||
import org.zkoss.util.media.AMedia;
|
import org.zkoss.util.media.AMedia;
|
||||||
import org.zkoss.zhtml.Pre;
|
import org.zkoss.zhtml.Pre;
|
||||||
import org.zkoss.zhtml.Text;
|
import org.zkoss.zhtml.Text;
|
||||||
|
@ -113,19 +104,6 @@ public class AboutWindow extends Window implements EventListener<Event> {
|
||||||
|
|
||||||
private Listbox levelListBox;
|
private Listbox levelListBox;
|
||||||
|
|
||||||
private WListbox pluginsTable;
|
|
||||||
private Listbox pluginActions;
|
|
||||||
private Button pluginProcess;
|
|
||||||
private Vector<Vector<Object>> pluginData;
|
|
||||||
private Vector<String> pluginColumnNames;
|
|
||||||
|
|
||||||
private static final int PLUGIN_ACTION_NONE = 0;
|
|
||||||
private static final int PLUGIN_ACTION_STOP = 1;
|
|
||||||
private static final int PLUGIN_ACTION_START = 2;
|
|
||||||
private static final int PLUGIN_ACTION_UPDATE = 3;
|
|
||||||
private static final int PLUGIN_ACTION_UNINSTALL = 4;
|
|
||||||
private static final int PLUGIN_ACTION_INSTALL = 5;
|
|
||||||
|
|
||||||
public AboutWindow() {
|
public AboutWindow() {
|
||||||
super();
|
super();
|
||||||
init();
|
init();
|
||||||
|
@ -222,15 +200,6 @@ public class AboutWindow extends Window implements EventListener<Event> {
|
||||||
tabPanel = createTrace();
|
tabPanel = createTrace();
|
||||||
tabPanel.setParent(tabPanels);
|
tabPanel.setParent(tabPanels);
|
||||||
|
|
||||||
//Plugins
|
|
||||||
tab = new Tab();
|
|
||||||
tab.setLabel("Plugins");
|
|
||||||
tabPlugins= tab;
|
|
||||||
tabPanel = createPlugins();
|
|
||||||
if (tabPanel != null) {
|
|
||||||
tab.setParent(tabs);
|
|
||||||
tabPanel.setParent(tabPanels);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Tabpanel createTrace() {
|
protected Tabpanel createTrace() {
|
||||||
|
@ -357,197 +326,6 @@ public class AboutWindow extends Window implements EventListener<Event> {
|
||||||
tabLog.setLabel(Msg.getMsg(Env.getCtx(), "TraceInfo") + " (" + data.size() + ")");
|
tabLog.setLabel(Msg.getMsg(Env.getCtx(), "TraceInfo") + " (" + data.size() + ")");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Tabpanel createPlugins() {
|
|
||||||
Properties ctx = Env.getCtx();
|
|
||||||
MUser user = MUser.get(ctx);
|
|
||||||
Tabpanel tabPanel = null;
|
|
||||||
if (Env.getAD_Client_ID(ctx) == 0 && user.isAdministrator()) {
|
|
||||||
tabPanel = new Tabpanel();
|
|
||||||
Vbox vbox = new Vbox();
|
|
||||||
ZKUpdateUtil.setHflex(vbox, "1");
|
|
||||||
ZKUpdateUtil.setVflex(vbox, "1");
|
|
||||||
|
|
||||||
pluginColumnNames = new Vector<String>();
|
|
||||||
pluginColumnNames.add("");
|
|
||||||
pluginColumnNames.add(Msg.getMsg(ctx, "Id"));
|
|
||||||
pluginColumnNames.add(Msg.getMsg(ctx, "State"));
|
|
||||||
pluginColumnNames.add(Msg.getCleanMsg(ctx, "Name"));
|
|
||||||
pluginColumnNames.add(Msg.getMsg(ctx, "Version"));
|
|
||||||
|
|
||||||
pluginsTable = ListboxFactory.newDataTableAutoSize();
|
|
||||||
pluginData = new Vector<Vector<Object>>();
|
|
||||||
int i = 0;
|
|
||||||
pluginsTable.setColumnClass(i++, IDColumn.class, true); // 0-bundleId
|
|
||||||
pluginsTable.setColumnClass(i++, Integer.class, true); // 1-bundleId
|
|
||||||
pluginsTable.setColumnClass(i++, String.class, true); // 2-State
|
|
||||||
pluginsTable.setColumnClass(i++, String.class, true); // 3-SymbolicName
|
|
||||||
pluginsTable.setColumnClass(i++, String.class, true); // 4-Version
|
|
||||||
vbox.appendChild(pluginsTable);
|
|
||||||
ZKUpdateUtil.setVflex(pluginsTable, "1");
|
|
||||||
ZKUpdateUtil.setHflex(pluginsTable, "1");
|
|
||||||
refreshPluginTable();
|
|
||||||
pluginsTable.autoSize();
|
|
||||||
pluginsTable.addEventListener(Events.ON_SELECT, this);
|
|
||||||
|
|
||||||
pluginActions = new Listbox(
|
|
||||||
new KeyNamePair[] {
|
|
||||||
new KeyNamePair(PLUGIN_ACTION_NONE, ""),
|
|
||||||
new KeyNamePair(PLUGIN_ACTION_STOP, Msg.getMsg(ctx, "Stop")),
|
|
||||||
new KeyNamePair(PLUGIN_ACTION_START, Msg.getMsg(ctx, "Start")),
|
|
||||||
new KeyNamePair(PLUGIN_ACTION_UPDATE, Msg.getMsg(ctx, "Update")),
|
|
||||||
new KeyNamePair(PLUGIN_ACTION_UNINSTALL, Msg.getMsg(ctx, "Uninstall")),
|
|
||||||
new KeyNamePair(PLUGIN_ACTION_INSTALL, Msg.getMsg(ctx, "Install"))
|
|
||||||
});
|
|
||||||
pluginActions.setId("pluginActions");
|
|
||||||
pluginActions.setRows(0);
|
|
||||||
pluginActions.setMold("select");
|
|
||||||
ZKUpdateUtil.setWidth(pluginActions, "200px");
|
|
||||||
refreshActionList();
|
|
||||||
pluginProcess = new Button(Msg.getMsg(ctx, "Process"));
|
|
||||||
pluginProcess.addEventListener(Events.ON_CLICK, this);
|
|
||||||
Div div = new Div();
|
|
||||||
div.setStyle("text-align: right;");
|
|
||||||
div.appendChild(pluginActions);
|
|
||||||
div.appendChild(pluginProcess);
|
|
||||||
vbox.appendChild(div);
|
|
||||||
vbox.setParent(tabPanel);
|
|
||||||
|
|
||||||
tabPlugins.setLabel(Msg.getMsg(ctx, "Plugins") + " (" + pluginData.size() + ")");
|
|
||||||
}
|
|
||||||
|
|
||||||
return tabPanel;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String state(int state) {
|
|
||||||
switch (state) {
|
|
||||||
case Bundle.ACTIVE:
|
|
||||||
return "ACTIVE";
|
|
||||||
case Bundle.INSTALLED:
|
|
||||||
return "INSTALLED";
|
|
||||||
case Bundle.RESOLVED:
|
|
||||||
return "RESOLVED";
|
|
||||||
case Bundle.STARTING:
|
|
||||||
return "STARTING";
|
|
||||||
case Bundle.STOPPING:
|
|
||||||
return "STOPPING";
|
|
||||||
case Bundle.UNINSTALLED:
|
|
||||||
return "UNINSTALLED";
|
|
||||||
default:
|
|
||||||
return "UNKNOWN";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void refreshActionList() {
|
|
||||||
pluginActions.getItemAtIndex(PLUGIN_ACTION_UPDATE).setVisible(false); // not implemented yet
|
|
||||||
pluginActions.getItemAtIndex(PLUGIN_ACTION_UNINSTALL).setVisible(false); // not implemented yet
|
|
||||||
pluginActions.getItemAtIndex(PLUGIN_ACTION_INSTALL).setVisible(false); // not implemented yet
|
|
||||||
pluginActions.getItemAtIndex(PLUGIN_ACTION_STOP).setVisible(false);
|
|
||||||
pluginActions.getItemAtIndex(PLUGIN_ACTION_START).setVisible(false);
|
|
||||||
pluginActions.setSelectedItem(null);
|
|
||||||
Bundle bundle = getSelectedBundle();
|
|
||||||
if (bundle == null)
|
|
||||||
return;
|
|
||||||
int state = bundle.getState();
|
|
||||||
boolean isFragment = false;
|
|
||||||
BundleRevision rev = bundle.adapt(BundleRevision.class);
|
|
||||||
if (rev != null) {
|
|
||||||
isFragment = (rev.getTypes() & BundleRevision.TYPE_FRAGMENT) != 0;
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
boolean hasFragments = false;
|
|
||||||
if (!isFragment) {
|
|
||||||
if (rev.getWiring() != null) {
|
|
||||||
if (rev.getWiring().getProvidedWires(BundleRevision.HOST_NAMESPACE).size() > 0) {
|
|
||||||
hasFragments = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
if (bundle.getBundleId() == 0) {
|
|
||||||
// bundle 0 cannot be stopped
|
|
||||||
} else if (state == Bundle.ACTIVE) {
|
|
||||||
pluginActions.getItemAtIndex(PLUGIN_ACTION_STOP).setVisible(true);
|
|
||||||
} else if (state == Bundle.RESOLVED) {
|
|
||||||
if (!isFragment) {
|
|
||||||
pluginActions.getItemAtIndex(PLUGIN_ACTION_START).setVisible(true);
|
|
||||||
}
|
|
||||||
} else if (state == Bundle.INSTALLED) {
|
|
||||||
if (!isFragment) {
|
|
||||||
pluginActions.getItemAtIndex(PLUGIN_ACTION_START).setVisible(true);
|
|
||||||
}
|
|
||||||
} else if (state == Bundle.STARTING) {
|
|
||||||
if (!isFragment) {
|
|
||||||
pluginActions.getItemAtIndex(PLUGIN_ACTION_START).setVisible(true);
|
|
||||||
}
|
|
||||||
} else if (state == Bundle.STOPPING) {
|
|
||||||
// no options yet for stopping
|
|
||||||
} else if (state == Bundle.UNINSTALLED) {
|
|
||||||
// no options yet for uninstalled
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Bundle getSelectedBundle() {
|
|
||||||
Bundle retValue = null;
|
|
||||||
int idx = pluginsTable.getSelectedIndex();
|
|
||||||
if (idx >= 0) {
|
|
||||||
Vector<Object> pluginVector = pluginData.get(idx);
|
|
||||||
int pluginId = ((IDColumn)pluginVector.get(0)).getRecord_ID();
|
|
||||||
BundleContext bundleCtx = WebUIActivator.getBundleContext();
|
|
||||||
retValue = bundleCtx.getBundle(pluginId);
|
|
||||||
}
|
|
||||||
return retValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void processPlugin() {
|
|
||||||
Listitem actionItem = pluginActions.getSelectedItem();
|
|
||||||
if (actionItem != null && actionItem.getValue() instanceof Integer) {
|
|
||||||
int action = (Integer)actionItem.getValue();
|
|
||||||
Bundle bundle = getSelectedBundle();
|
|
||||||
if (action == PLUGIN_ACTION_STOP && bundle != null) {
|
|
||||||
try {
|
|
||||||
bundle.stop();
|
|
||||||
} catch (BundleException e) {
|
|
||||||
throw new AdempiereException(e);
|
|
||||||
}
|
|
||||||
} else if (action == PLUGIN_ACTION_START && bundle != null) {
|
|
||||||
try {
|
|
||||||
bundle.start();
|
|
||||||
} catch (BundleException e) {
|
|
||||||
throw new AdempiereException(e);
|
|
||||||
}
|
|
||||||
} else if (action == PLUGIN_ACTION_UPDATE && bundle != null) {
|
|
||||||
// PLUGIN_ACTION_UPDATE not implemented yet
|
|
||||||
} else if (action == PLUGIN_ACTION_UNINSTALL && bundle != null) {
|
|
||||||
// PLUGIN_ACTION_UNINSTALL not implemented yet
|
|
||||||
} else if (action == PLUGIN_ACTION_INSTALL && bundle != null) {
|
|
||||||
// PLUGIN_ACTION_INSTALL not implemented yet
|
|
||||||
}
|
|
||||||
}
|
|
||||||
refreshPluginTable();
|
|
||||||
refreshActionList();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void refreshPluginTable() {
|
|
||||||
int idx = pluginsTable.getSelectedIndex();
|
|
||||||
pluginsTable.getModel().removeAll(pluginData);
|
|
||||||
pluginData.removeAllElements();
|
|
||||||
|
|
||||||
BundleContext bundleCtx = WebUIActivator.getBundleContext();
|
|
||||||
for (Bundle bundle : bundleCtx.getBundles()) {
|
|
||||||
Vector<Object> line = new Vector<Object>();
|
|
||||||
Integer bundl = Long.valueOf(bundle.getBundleId()).intValue(); // potential problem converting Long to Integer, but WListBox cannot order Long
|
|
||||||
line.add(new IDColumn(bundl));
|
|
||||||
line.add(bundl);
|
|
||||||
line.add(state(bundle.getState()));
|
|
||||||
line.add(bundle.getSymbolicName());
|
|
||||||
line.add(bundle.getVersion());
|
|
||||||
pluginData.add(line);
|
|
||||||
}
|
|
||||||
ListModelTable model = new ListModelTable(pluginData);
|
|
||||||
pluginsTable.setData(model, pluginColumnNames);
|
|
||||||
pluginsTable.setSelectedIndex(idx);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected Tabpanel createInfo() {
|
protected Tabpanel createInfo() {
|
||||||
Tabpanel tabPanel = new Tabpanel();
|
Tabpanel tabPanel = new Tabpanel();
|
||||||
Div div = new Div();
|
Div div = new Div();
|
||||||
|
@ -668,15 +446,9 @@ public class AboutWindow extends Window implements EventListener<Event> {
|
||||||
reloadLogProps();
|
reloadLogProps();
|
||||||
else if (event.getTarget() == levelListBox)
|
else if (event.getTarget() == levelListBox)
|
||||||
setTraceLevel();
|
setTraceLevel();
|
||||||
else if (Events.ON_SELECT.equals(event.getName()) && event.getTarget() == pluginsTable)
|
else if (Events.ON_CLICK.equals(event.getName()))
|
||||||
refreshActionList();
|
|
||||||
else if (Events.ON_CLICK.equals(event.getName())) {
|
|
||||||
if (event.getTarget() == pluginProcess)
|
|
||||||
processPlugin();
|
|
||||||
else
|
|
||||||
this.detach();
|
this.detach();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private void reloadLogProps() {
|
private void reloadLogProps() {
|
||||||
Properties props = new Properties();
|
Properties props = new Properties();
|
||||||
|
|
Loading…
Reference in New Issue