-
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve CFF import/export and craft a round-trip test #10995
Conversation
…to CffImporter
…ypes and authors names correctly
The roundtrip tests should include all entries from the CFF format specification
Do a consistency check. How does the official converter convert? https://github.com/citation-file-format/cffconvert - does it also use |
The following is written on the
Consistency check will be difficult to perform without these two fields. |
You mean: consistency check of your work with the result of the tool? - It is OK to be better than other tools :p. |
Yes that's what I meant, since it is the official tool :) |
* Convert to @ParameterizedTest * Convert to csvsource --------- Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com>
* Add test to check parsing of BibDesk Static Groups * Add test to check parsing of BibDesk Static Groups * Change isExpanded attribute to false in expected groups * remove extra blank line * Add tests to check parsing of BibDesk Smart and mixed groups * Add parsing of BibDesk Files * Attempts at plist * Now parses bdsk-file and shows it as a file in JabRef * Add test for parsing a bdsk-file field * Fix formatting * Add dd-plist library to documentation --------- Co-authored-by: Tian0602 <646432316@qq.com> * Add creation of static JabRef group from a BibDesk file * Creates an empty ExplicitGroup from BibDesk comment * Adds citations to new groups modifies group creations to support multiple groups in the same BibDeskFile * Fix requested changes Refactor imports since they did not match with main Add safety check in addBibDeskGroupEntriesToJabRefGroups --------- Co-authored-by: Filippa Nilsson <filnils@kth.se> * Refactor newline to match main branch Co-authored-by: Filippa Nilsson <filnils@kth.se> * Add changes to CHANGELOG.md * Reformat indentation to match previous * Revert external libraries Adjust groups serializing * checkstyle and optional magic * fix * fix tests * fix * fix dangling do * better group tree metadata setting * merge group trees, prevent duplicate group assignment in entry Add new BibDesk group Fix IOB for change listeing * fix tests, and extract constant * return early * fixtest and checkstyle --------- Co-authored-by: Anna Maartensson <120831475+annamaartensson@users.noreply.github.com> Co-authored-by: Tian0602 <646432316@qq.com> Co-authored-by: LottaJohnsson <35195355+LottaJohnsson@users.noreply.github.com> Co-authored-by: Filippa Nilsson <filnils@kth.se> Co-authored-by: Filippa Nilsson <75281470+filippanilsson@users.noreply.github.com> Co-authored-by: Oliver Kopp <kopp.dev@gmail.com> Co-authored-by: Siedlerchr <siedlerkiller@gmail.com>
* Fixes Zotero file handling for absolute paths Fixes #10959 * checkstyle mimiimm * fix changelog * cannot fix
…11037) * [Copy] Include string constants in copy (#11) Signed-off-by: Anders Blomqvist <anders@minaemail.se> * [Copy] New method for serializing string constants (#12) Signed-off-by: Anders Blomqvist <anders@minaemail.se> * Add a sanity check for null for clipboard content Currenlty, the clipboard content can be null since the database does not seem to be updating. This is a sanity check to prevent the program from adding null to the clipboard. Link to DD2480-Group1#13 * [Fix] Add parsed serilization when save settings When loading from existing files or libraries, the parser will set the serilization of the string constant to the correct value. However, when editing via the GUI, the serilization was not set and a new string constant list will be created without the serilization. This result in the serilization being null and when copying with the clipboard. Link to DD2480-Group1#13 * feat: import string constants when pasting #9 Add functionality to import string constants in the paste function Should add functionality to handle colliding string constants. Should also check that the constants are valid using the ConstantsItemModel class. * feat: Add string constant validity checker and dialog messages #9 Check that a pasted string constant is valid using the ConstantsItemModel class. Add diagnostic messages notifying users when adding a string constant fails while pasting. * [Copy] Copy referenced constant strings to clipboard (#16) * feat: Add parsed serialized string when cloning * feat: Add sanity check for null in ClipBoardManager * closes #15 * feat: new unit tests Add 4 new unit tests, testing the new features added for issue-10872. Specifically the tests are for the `storeSettings` method in the ConstantsPropertiesViewModel.java, and `setContent` in the ClipBaordManager.java. Closes #6 * Update CHANGELOG with copy and paste function * Fix Checkstyle failing by reformat the code * Fix OpenRewrite failing by running rewriteRun * Refactor by extract methods in setContent * collet failures * changelog and use os.newline * checkstyle * use real bibentrytypes manager * Fix CHANGELOG.md * Swap if branches * Code cleanup * Use List for getUsedStringValues * Fix submodule * Collection is better * Fix csl-styles * Remove empty line * Group BibTeX string l10n together --------- Signed-off-by: Anders Blomqvist <anders@minaemail.se> Co-authored-by: Anders Blomqvist <anders@minaemail.se> Co-authored-by: ZOU Hetai <33616271+JXNCTED@users.noreply.github.com> Co-authored-by: Hannes Stig <hannes.a.stig@gmail.com> Co-authored-by: Elliot <elliot.darth@gmail.com> Co-authored-by: Oliver Kopp <kopp.dev@gmail.com>
Bumps [gittools/actions](https://github.com/gittools/actions) from 0.13.4 to 1.1.1. - [Release notes](https://github.com/gittools/actions/releases) - [Commits](GitTools/actions@v0.13.4...v1.1.1) --- updated-dependencies: - dependency-name: gittools/actions dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [com.googlecode.plist:dd-plist](https://github.com/3breadt/dd-plist) from 1.23 to 1.28. - [Release notes](https://github.com/3breadt/dd-plist/releases) - [Commits](3breadt/dd-plist@dd-plist-1.23...v1.28.0) --- updated-dependencies: - dependency-name: com.googlecode.plist:dd-plist dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps org.apache.pdfbox:xmpbox from 3.0.1 to 3.0.2. --- updated-dependencies: - dependency-name: org.apache.pdfbox:xmpbox dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [com.dlsc.gemsfx:gemsfx](https://github.com/dlsc-software-consulting-gmbh/GemsFX) from 2.2.0 to 2.4.0. - [Release notes](https://github.com/dlsc-software-consulting-gmbh/GemsFX/releases) - [Changelog](https://github.com/dlsc-software-consulting-gmbh/GemsFX/blob/master/CHANGELOG.md) - [Commits](dlsc-software-consulting-gmbh/GemsFX@v2.2.0...v2.4.0) --- updated-dependencies: - dependency-name: com.dlsc.gemsfx:gemsfx dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps org.apache.pdfbox:fontbox from 3.0.1 to 3.0.2. --- updated-dependencies: - dependency-name: org.apache.pdfbox:fontbox dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Add test cases * Add test cases * Keep braces for last part * Refine method description * Adapt test to new braces keeping * Add CHANGELOG.md entry * Adapt tests * More edge cases * Minor code beautification * Simplify code * Fix braces removing * Extract static fields, refactor code * Fix removal of {} for export * Re-add Objects.requireNonNull * Fix typo * Re-add NPE throwing * Rename to modern terms * Consistent initialization
* Collect DOI and publication type from semantich scholar to be able to expand the information of the new entries later by search through DOI * Include abstract in the request. This lets the GUI show the abstract since that was implemented already. Refactor api request string since most of it is shared * Add button to open the relation paper's DOI URL. Fix DOI for some ArXiv entries. * Don't show the open link button if there is no link to open. * Make field value null error a bit more useful * Include SemanticScholar url in the request and use it as the URL field. * Add changes to changelog * Change tooltip text to an existing, more informative one * Run rewriter to fix pull request * improve url optional handling --------- Co-authored-by: Siedlerchr <siedlerkiller@gmail.com>
+ fixed typo in CHANGELOG.md + tested multiline abstract in CFFImporter
src/test/java/org/jabref/logic/importer/fileformat/CffImporterTest.java
Outdated
Show resolved
Hide resolved
I'm done with all the features I stated above in the PR. The exporter now parses the
I also fixed the changes you requested. Now, I will try to focus on my proposal for the GSoC project you mentioned earlier in this PR. I would really like to conduct this project and we are in the contributors' proposal phase, that is why I need to take some time for it. Do you think I have the required skills and commitment to conduct such a project, and that I have my chances to be selected ? Thanks a lot for your responsiveness, your hints and your continuous feedback on this one, hopefully it will be merged in the official JabRef project ! Users will be happy with such a CFF importer/exporter. |
@jeanprbt Your text reads as if should be put as JavaDoc. Otherwise, it will get lost. I know only one contributor who used "git blame" to recover a commit and the deception. Usually, no one checks the PR and all (!) comments of the PR to learn about the reasons behind the code. JavaDoc was intended to capture those... (At least partially). - Regarding GSoC, your skills improved. Will be a tough competition - and you also have chances! |
After more than 80 conversations, this is finally going to an end. 🥂 Hope, the users will like this feature. If also should be available at the CLI. Thus, we (you @jeanprbt) could craft a blog post with examples and advertise this feature ^^. Glad that you added test cases! That offered the possibility to improve the code without worrying.
|
This PR improves the actual CFF importer/exporter by many ways. The exporter is no longer based on a
*.layout
file, but is now code-based in a brand newCffExporter.java
file, so as to handle all the logic related to the CFF format.Key improvements are the following.
family-names
,given-names
,name-particle
andname-suffix
references
andpreferred-citation
are now parsed.software
ordataset
and for each of thepreferred-citation
orreferences
cited. Importer adds acites
relationship between topmost software andpreferred-citation
, whereas it adds arelated
relationship between topmost software and each of thereferences
.software
anddataset
types correctly without adding a uselesspreferred-citation
field in these cases. Forsoftware
ordataset
entries with JabRefcites
orrelated
fields, exporter now exports the corresponding CFF fields.references
field with a dummy topmost software element.software
ordataset
one are selected, then exporter uses this one as topmost element and the others asreferences
, adding apreferred-citation
for thecites
element.software
ones are selected, then exporter uses a dummy topmost element, and selected entries are exported asreferences
. Thecites
orrelated
won't be exported in this case.UnknownField
and exports them if they correspond to existing CFF fieldskeywords
fieldsCloses Craft round-trip test for CFF importer/exporter #10993.
This PR also features a round-trip test, which imports JabRef's citation file. This creates two entries, that are then exported to one file.
Here are some screenshots to show the updated behavior. These screenshots use the original
CITATION.cff
file of the JabRef repository.Here is the original CFF file
Here is what is imported
The article has a citation key, used by the software
The software has a
cites
relationship towards the articleWhen exporting both entries, like this:
Here is the resulting output
It complies with the CFF format
Sub-tasks
family-names
, etc.UnknownField
in the exporter and check if field complies to CFF formatkeywords
field in both importer and exporterpreferred-citation
field when exportingsoftware
ordataset
preferred-citation
orreferences
fieldcites
orrelated
relationship between imported entries in relevant cases in the importercites
andrelated
fields correctly in the exportersoftware
and itscites
entry are both exported, then exporter discards thecites
entry since it has already parsed it as apreferred-citation
of thesoftware
entryMandatory checks
CHANGELOG.md
described in a way that is understandable for the average user (if applicable)