mining4UML / UMLMiner

UML Miner - to make UML diagrams mining possibile
GNU General Public License v3.0
1 stars 0 forks source link

Export files di log #16

Closed mining4UML closed 1 year ago

mining4UML commented 1 year ago

Il plug-in deve rendere possibile l'export di tutti i file di log generati fino a quel momento in un unico file compresso. A tale scopo sarebbe opportuno aggiungere un tab ad-hoc in Visual Paradigm che permetta l'export. Il nome del file compresso deve essere definito con il timestamp del momento in cui l'export è eseguito. L'utente deve selezionare il percorso in cui salvare il file.

Suggerimento Per realizzare questa funzionalità si potrebbe considerare come esempio il seguente plug-in:

mining4UML commented 1 year ago

Rilevo i seguenti problemi:

  1. Qualora non ci siano log files da esportare l'utente deve esserne informato.
  2. L'interfaccia utente deve essere in inglese.
  3. Al momento l'export non produce alcun file compresso pur essendoci due file:

Suggerisco di far stampare, nel pannello di messaggio, un feedback (solo di test) relativo al percorso completo della cartella acceduta per leggere i file ed i nomi stessi dei file.

berlinodeveloper commented 1 year ago

Al momento su Windows il file .zip viene creato all'interno della cartella selezionata con i file di log creati in precedenza.

berlinodeveloper commented 1 year ago

Per la lingua, viene impostata quella di default del sistema operativo in uso.

mining4UML commented 1 year ago

Per la lingua, viene impostata quella di default del sistema operativo in uso.

ASSUNZIONE La lingua di default del plug-in è l'inglese. CONSIDERAZIONI e SUGGERIMENTI La lingua da utilizzare per il plug-in dovrebbe essere quella correntemente usata da VP la cui lingua di default è l'inglese. Ad ogni buon conto, sarebbe opportuno aggiungere un file che gestisca la lingua dell'interfaccia utente nello stesso modo in cui la gestisce VP. VP si serve di file LNG dove ogni file LNG contiene il testo in una lingua specifica. In VP tali file sono situati in /Contents/Resources/app/UserLanguage. Un esempio di parte di un file LNG in VP,Spanish.lng, è mostrato di seguito:

<?xml version="1.0" encoding="UTF-8"?>
<UserLanguage>
    <Information name="Spanish" nameInEnglish="Spanish"/>
    <WordSet>
        <Word key="Display as stereotype icon" section="Option Dialog" value="Mostrar como icono de estereotipo"/>
                 <!-- OMISSIS -->
                 <Word key="Persistent API return type" section="ORM" value="Tipo de Retorno Persistente API"/>
    </WordSet>
</UserLanguage>

Per completezza riporto quanto scritto nell'HELP di VP. In Visual Paradigm, the default language is English. However, you might find it more convinient to use another language which is your first language to operate the software, so that you can understand the commands more easily and to perform the desired actions faster. Actually, Visual Paradigm supports the capability to allow users to switch to other langauges like Traditional Chinesem French and many others. In the following, we will show you the way to switch your User Interface into your preferred language. Please follow the simple steps below. Select Window > Application Options in the toolbar. In Application Options window, select General > Appearance.

mining4UML commented 1 year ago

Al momento su Windows il file .zip viene creato all'interno della cartella selezionata con i file di log creati in precedenza.

Ho testato nuovamente "Export Logs" su MacOS Ventura 13.3.1 senza esito positivo. Il file compresso non viene generato

berlinodeveloper commented 1 year ago

Al momento su Windows il file .zip viene creato all'interno della cartella selezionata con i file di log creati in precedenza.

Ho testato nuovamente "Export Logs" su MacOS Ventura 13.3.1 senza esito positivo. Il file compresso non viene generato

Immagino ci sia un incompatibilita' del codice con MacOS. Riesce per caso ad inviarmi un eventuale log d'errore dell'operazione registrato nel file "vp.log" all'interno della cartella di default dei plugin. Per Windows e' C:\Users{user}\AppData\Roaming\VisualParadigm Dovrebbe essere la medesima che le inserisce VP quando si installa il plugin direttamente inserendolo nella cartella indicata.

berlinodeveloper commented 1 year ago

Inoltre ho inserito un messaggio di log nel pannello del plugin in VP che le dovrebbe comparire nel caso di operazioni riuscite senza eccezioni.

mining4UML commented 1 year ago

Al momento su Windows il file .zip viene creato all'interno della cartella selezionata con i file di log creati in precedenza.

Ho testato nuovamente "Export Logs" su MacOS Ventura 13.3.1 senza esito positivo. Il file compresso non viene generato

Immagino ci sia un incompatibilita' del codice con MacOS. Riesce per caso ad inviarmi un eventuale log d'errore dell'operazione registrato nel file "vp.log" all'interno della cartella di default dei plugin. Per Windows e' C:\Users{user}\AppData\Roaming\VisualParadigm Dovrebbe essere la medesima che le inserisce VP quando si installa il plugin direttamente inserendolo nella cartella indicata.

[2023/05/24 10:42:18] [message] Exit Visual Paradigm
[2023/05/24 10:42:18] [message] Saved project ".systemproject" to "/Users/pasqualeardimento/Library/Application Support/VisualParadigm/ws/.vpprefdata/.systemproject.vpp".
[2023/05/24 10:42:19] [message] System.exit: true
[2023/05/24 10:42:21] [message] [Wed May 24 10:42:21 CEST 2023]: Start Visual Paradigm Community Edition [VP CE]: 17.0 (20230401)
[2023/05/24 10:42:21] [message] Operating system: Mac OS X 13.3.1 running on aarch64
[2023/05/24 10:42:21] [message] Java VM: 11.0.16.1 OpenJDK 64-Bit Server VM, vendor 11.0.16.1+1 Eclipse Adoptium
[2023/05/24 10:42:21] [message] User: pasqualeardimento, language: it
[2023/05/24 10:42:21] [message] Installation ID: 0f3a7f83e8edfdb4abd4f3f0aeaa6e1c
[2023/05/24 10:42:21] [message] Memory: current=256M, max=1024M
[2023/05/24 10:42:21] [message] start startup getLicenseKey on 24-May-2023
[2023/05/24 10:42:21] [message] getLicenseKey in local ...
[2023/05/24 10:42:21] [message] finish startup getLicenseKey
[2023/05/24 10:42:21] [message] Workspace: /Users/pasqualeardimento/Library/Application Support/VisualParadigm/ws
[2023/05/24 10:42:22] [message] Opening Project: /Users/pasqualeardimento/Library/Application Support/VisualParadigm/ws/.vpprefdata/.systemproject.vpp
[2023/05/24 10:42:25] [message] Parse log gA43MhGGAqACBwBO.xes
[2023/05/24 10:42:25] [message] NikeFS2: Allocating new swap file. (#1: 67108864 bytes)
[2023/05/24 10:42:25] [message] NikeFS2: cleaned up 0 stale swap files (from 0 sessions).
[2023/05/24 10:42:25] [message] NikeFS2: Populating shadow map 1 (of 2 max.)
[2023/05/24 10:42:25] [message] May 24, 2023 10:42:25 AM com.jidesoft.plaf.aqua.AquaPreferences loadGlobalPreferences
AVVERTENZA: AquaPreferences failed to load Mac OS X global system preferences - parseInt: unsupported byte count:16
[2023/05/24 10:42:42] [message] java.io.FileNotFoundException: /Users/pasqualeardimento/Desktop/exportPasquale/2023-05-24_10.42.42.zip (No such file or directory)
[2023/05/24 10:42:42] [message] at java.base/java.io.FileOutputStream.open0(Native Method)
[2023/05/24 10:42:42] [message] at java.base/java.io.FileOutputStream.open(FileOutputStream.java:298)
[2023/05/24 10:42:42] [message] at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:237)
[2023/05/24 10:42:42] [message] at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:187)
[2023/05/24 10:42:42] [message] at com.plugin.mining.logging.LogStream.exportLogs(LogStream.java:98)
[2023/05/24 10:42:42] [message] at com.plugin.mining.actions.ExportLogsActionController.performAction(ExportLogsActionController.java:34)
[2023/05/24 10:42:42] [message] at v.bee.b.performAction(:44)
[2023/05/24 10:42:42] [message] at v.bek.p.a(:78)
[2023/05/24 10:42:42] [message] at v.dnj.cj.a(:44)
[2023/05/24 10:42:42] [message] at v.dnj.gh.actionPerformed(:261)
[2023/05/24 10:42:42] [message] at org.pushingpixels.flamingo.api.common.AbstractCommandButton.fireActionPerformed(AbstractCommandButton.java:616)
[2023/05/24 10:42:42] [message] at org.pushingpixels.flamingo.api.common.AbstractCommandButton$ActionHandler.actionPerformed(AbstractCommandButton.java:568)
[2023/05/24 10:42:42] [message] at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
[2023/05/24 10:42:42] [message] at org.pushingpixels.flamingo.api.common.model.ActionRepeatableButtonModel.setPressed(ActionRepeatableButtonModel.java:123)
[2023/05/24 10:42:42] [message] at org.pushingpixels.flamingo.internal.ui.common.BasicCommandButtonListener.mouseReleased(BasicCommandButtonListener.java:147)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.Component.processMouseEvent(Component.java:6635)
[2023/05/24 10:42:42] [message] at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.Component.processEvent(Component.java:6400)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.Container.processEvent(Container.java:2263)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5011)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.Component.dispatchEvent(Component.java:4843)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2772)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.Component.dispatchEvent(Component.java:4843)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
[2023/05/24 10:42:42] [message] at java.base/java.security.AccessController.doPrivileged(Native Method)
[2023/05/24 10:42:42] [message] at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
[2023/05/24 10:42:42] [message] at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
[2023/05/24 10:42:42] [message] at java.base/java.security.AccessController.doPrivileged(Native Method)
[2023/05/24 10:42:42] [message] at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
[2023/05/24 10:42:42] [message] at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
[2023/05/24 10:42:45] [message] Exit Visual Paradigm
[2023/05/24 10:42:45] [message] Saved project ".systemproject" to "/Users/pasqualeardimento/Library/Application Support/VisualParadigm/ws/.vpprefdata/.systemproject.vpp".
[2023/05/24 10:42:45] [message] System.exit: true

[2023/05/24 10:42:42] [message] java.io.FileNotFoundException: /Users/pasqualeardimento/Desktop/exportPasquale/2023-05-24_10.42.42.zip (No such file or directory)

Bisogna impedire di far editare il nome del file nella casella di testo "salva con nome". Il malfunzionamento accade, infatti, quando, in quella casella di testo si inserisce un nome che non corrisponde al nome di una cartella che si trova nel percorso selezionato.

Deve essere possibile selezionare solo il percorso in cui salvare il file (_DIRECTORIESONLY).

Screenshot 2023-05-24 alle 10 58 10
berlinodeveloper commented 1 year ago

Ho aggiunto un possibile fix, puo' verificare?

mining4UML commented 1 year ago

Ho aggiunto un possibile fix, puo' verificare?

Non funziona ancora. Ti riporto parte di un commento già scritto da me prima.

Bisogna impedire di far editare il nome del file nella casella di testo "salva con nome". Il malfunzionamento accade, infatti, quando, in quella casella di testo si inserisce un nome che non corrisponde al nome di una cartella che si trova nel percorso selezionato.

Deve essere possibile selezionare solo il percorso in cui salvare il file (DIRECTORIES_ONLY).

In breve, la casella di testo in cui porre il nome NON deve essere proprio presente.

berlinodeveloper commented 1 year ago

Dovrebbe adesso essere disabilitato

mining4UML commented 1 year ago

Dovrebbe adesso essere disabilitato

Ok, è disabilitato. Sarebbe il caso di modificare Salva con nome in Save in_ L'interfaccia utente deve essere in lingua inglese, compresi i tooltip.

mining4UML commented 1 year ago

Nel momento in cui non ci sono file di log presenti bisognerebbe:

berlinodeveloper commented 1 year ago

Visualizzazione corrente su Windows image

mining4UML commented 1 year ago

E' necessario che l'export riguardi solo file con le seguenti estensioni:

mining4UML commented 1 year ago

Purtroppo il malfunzionamento relativo alla cartella selezionata continua ad essere presente e non credo dipenda dal sistema operativo. Scenario di esempio che genera malfunzionamento Quando si esegue un doppio click su una cartella accade che il campo "SelectedFile" sia avvalorato con il nome della cartella selezionata. Se cliccassi, ad esempio, due volte sulla cartella Desktop accadrebbero le seguenti cose:

A questo punto cliccando su Salva l'export non sarebbe eseguito. L'export non è eseguito in quanto il codice prevede che la cartella in cui eseguire l'export sia ottenuta mediante il seguente codice fileChooser.getSelectedFile().toPath(). In questo scenario, dunque, fileChooser.getSelectedFile().toPath() restituirebbe il seguente valore /Users/{nome:utente}/Desktop/Desktop Quindi, a meno che in Desktop non ci sia casualmente una cartella di nome Desktop, l'export non avverrà. Quand'anche dovesse accadere che in Desktop ci fosse una cartella Desktop l'export non avverrebbe nella cartella desiderata.

2023/05/25 12:35:17] [message] java.nio.file.NoSuchFileException: /Users/pasqualeardimento/Desktop/Desktop/2023-05-25_12.35.17.zip

Possibile soluzione Utilizzando una OpenDialog al posto della ShowDialog questo malfunzionamento non viene più generato. invece di if (fileChooser.showSaveDialog(viewManager.getRootFrame()) == JFileChooser.APPROVE_OPTION) { ci dovrebbe essere if (fileChooser.showOpenDialog(viewManager.getRootFrame()) == JFileChooser.APPROVE_OPTION) {

berlinodeveloper commented 1 year ago

Onestamente, non mi è chiaro cosa intende per creare una cartella Esempio all interno di Esempio. La cartella selezionata dovrebbe essere quella in cui viene generato lo zip con i log.

mining4UML commented 1 year ago

Onestamente, non mi è chiaro cosa intende per creare una cartella Esempio all interno di Esempio. La cartella selezionata dovrebbe essere quella in cui viene generato lo zip con i log.

Ho riscritto più chiaramente lo scenario di esempio che genera il malfunzionamento.

berlinodeveloper commented 1 year ago

Aggiunto possibile fix e rinominato button in "Export". Su Windows: image

Mi faccia sapere per altre problematiche, da suo consiglio ho modificato in openDialog anche se il problema su Windows, provando diversi test, non si manifestava