Full Uuidv7 support added - #179
Conversation
…UIDv7 at a fixed time by settings
|
Hello! Thank a lot for this awesome work. I'll try to have a look at it as soon as possible 👍 |
d9e1e07 to
54966f2
Compare
leomillon
left a comment
There was a problem hiding this comment.
Hi again!
I tried to look at almost every line you added in this PR (which does not seem to be "finished" with your last commits) and here is my feeling: there is a bit too much things in this PR and not in the proper order.
I'll try to develop this feeling:
Upgrade the existing base first
First, to add new features to this project, I would first upgrade everything required for compatibility with the latest versions of the plugin platform, Kotlin, libraries, release tasks, etc.
This way, you ensure to have an up to date plugin (which is quite important against the IntelliJ Platform with some breaking changes sometime) without breaking the core features.
Add the UUID v7 support
Then and only then, I would add v7 support, but with slightly different choices:
- I would not have chosen number inputs for all parts of the fixed date. Instead, a simple text input with some parsing / validation should do the trick.
- Having a radio button between
v4andv7feels weird because you're not choosing "which one you want to use", you're choosing which one to configure. Perhaps tabs would be more appropriate?
Other features
You also added other features such as "Copy to clipboard" and the "Examiner popup" (which I think may not belong in this plugin).
That's too much to review / comment in a single PR.
Conclusion
Although I really like the idea of adding the v7 support to this plugin, I would prefer that the plugin is first upgraded "as is", followed by separate PRs for each new feature, etc.
If this version is ok for you and your needs, feel free to use your fork directly.
Nice. Thanks.
Sorry, but I constantly get new ideas on how to improve that thing. Therefore I added the "Update: I added..." line at the top of my PR. And, as said, "I want to test it as a daily driver, to make sure no bugs are left.". I still didn't delete my PR, because the biggest share of my old source-code hasn't been touched, and I thought it would be great to get feedback on that. Nevertheless, I'm looking forward to not needing to change anything anymore, if no bugs are found. Upgrading the base first...
Understandable, I did that in past projects, but that turned out to be cumbersome, either with the number input, or perfecting the date parser to be less rigid and smarter. What I may recommend instead is adding the LGoodDatePicker. I just wanted to avoid adding that dependency, if I can implement this easily myself (although in a much less beautiful version).
I already thought about that, but I had no really convincing idea on how to improve that. And I was afraid to earn a rejection, by changing too much of the existing design. Given the Swing editor is so powerful, feel free to redesign this and post screenshots w/ descriptions of your design. I will then write an implementation. The other features... |
|
Full disclosure: I found out that the Apache CSV library is super sensitive when it comes to malformed CSV data. That isn't acceptable for an input field (in the UUID examiner) where you can freely input anything. It exits with an exception. I replaced it with a more robust library and expanded the Unit-Test for that with malformed data. I will continue using this plugin as a daily driver, to make sure there are no further bugs left. |
df85722 to
8cacb8d
Compare
|
The UUID examiner is super helpful and I'm very satisfied with its results. I will evaluate this further. |
|
I added the Date and Time picker you requested. |
Long inlay hints are cut off by IntelliJ, and end in eclipses (...).
|
I cleaned up the inlays and debugger info. @leomillon I still need screenshots of the GUI design you requested. Please post them so I can implement your design idea. Edit: My plan is to 1st "complete" this plugin and then extract the basic changes to the new IntelliJ plugin systems, you requested. |
|
@leomillon Hi. Did you know you can release versions of your plugins as EAP / Dev versions? Edit: I'm myself super happy with my design extensions, totally love them. They don't get in my way, they just help. It just works. |
…ugger insight can be disabled
|
I added a better merging of UUID and default String rendering to the debugger. It is now also possible to completely disable the custom UUID debugger via settings. @leomillon You have no donate option on this repository, and since I know how demotivating it can be to work for 0 €, I would donate 10 € if you added a donate button. |
|
@leomillon Hi, I updated the readme.md screenshots for the generator and settings dialogues to show the improved date & time selection. I forgot that. I still want this PR to pass. But I still need your mockups for the new UI design. |
Update: I added a new feature, the "UUID examiner Popup", but I want to test it as a daily driver, to make sure no bugs are left.
If you use UUIDs as database IDs, the use of UUID Version 7 is recommended. uuidv7.org praises it this way:
Therefore our Chief-Architect adopted them and this UUID plugin suddenly turned useless for me. But because it was such a nice plugin, I just added UUIDv7 support. With a tooltip for the timestamp part of UUIDv7's.
I also updated all plugins to current versions, which was cumbersome, because there were many breaking changes in the build-setup. This is also the reason I add this PR only as a draft. Because I wanted to make sure the plugin manifest is still to the plugin owners liking. I never published a plugin before, and I'm unsure.
I know you didn't want to invest much time in this plugin anymore, but I think I did basically all the work, there isn't much more left for you. Please, at least try it out, maybe it will convince you.
P.S.: The completely new feature, the "UUID examiner Popup" is for the following use-case:
Currently I have to communicate with a lot of people, who all need to send me their data w/ UUIDv7s, to my surprise that's quite a challenge. It seems many people don't want to use proven libraries, but rather write their own, or create the IDs per hand. As a result I have weird looking UUIDs (the random part is fixed) or just wrong UUIDs (version 5). Also often I want to know when something was written, which is stored in a UUIDv7.
So I needed a way to examine whole batches of UUIDs. That is where the UUID examiner comes in handy.
Just copy+paste 100 lines with 5 UUIDs per line from your SQL-Query in that thing, and you get all 500 UUIDs "decrypted":
Please report any problems.
Thanks.