Skip to content
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

Implemented #1345 - cleanup ISSN #1590

Merged
merged 4 commits into from
Jul 23, 2016
Merged

Conversation

oscargus
Copy link
Contributor

Implemented cleanup that adds a missing dash in the ISSN field if it looks like an ISSN (checksum is not controlled, but eight digits, where the last may be an x).

  • Change in CHANGELOG.md described
  • Tests created for changes

@oscargus oscargus added type: enhancement status: ready-for-review Pull Requests that are ready to be reviewed by the maintainers labels Jul 15, 2016
return Collections.emptyList();
}

Matcher matcher = ISSN_PATTERN_NODASH.matcher(issn.get());
Copy link
Member

@tobiasdiez tobiasdiez Jul 15, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would move this functionality to a separate ISSN class which does the parsing. For example, the code then might look as follows:

ISSN issn = ISSN.fromString(issnText);
if (issn.isValid()) {
   entry.setField("issn", issn.ToString())
}

Then you could reuse the same logic to add a ISSN integrity check. The same remark applies to your other ISBN PR.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How would you handle a string "3457345X"? Not set it? Add a dash? What about an arbitrary string?

Either way, I won't implement this at the moment.

Copy link
Member

@tobiasdiez tobiasdiez Jul 16, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't get your question, sorry. If the passed string is not matched by the regex, then issn.isValid returns false. So it is essentially just moving your code to three different methods. You may have a look at https://github.com/JabRef/jabref/blob/a6769dd81782a0010681fdd14622c1fcc43519fb/src/main/java/net/sf/jabref/logic/mods/PageNumbers.java

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So, what if it is a valid ISSN, but the dash is missing?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

An ISSN would then not be valid!
It must contain an dash:
https://en.wikipedia.org/wiki/International_Standard_Serial_Number

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So your problem is that for this PR you want to make sense of strings which look like ISSNs but are not quite in the standard format, right? What about creating static Optional<ISSN> fromString(text) which returns an ISSN object if JabRef could make sense of the input. Then the ISSN class has a constructor accepting the different parts of the ISSN (first part, second part and checkdigit), isValid returns true if the checksum is correct and toString formats it in the standard way using a separating dash. Would this be a solution?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Something similar should be in DOI.java if I remember correctly.

@tobiasdiez tobiasdiez removed the status: ready-for-review Pull Requests that are ready to be reviewed by the maintainers label Jul 16, 2016
@tobiasdiez tobiasdiez mentioned this pull request Jul 16, 2016
2 tasks
@oscargus oscargus force-pushed the issncleanup branch 2 times, most recently from fe118ec to 9c380d8 Compare July 16, 2016 12:31
@oscargus
Copy link
Contributor Author

The whole purpose of this PR was indeed to add the missing dash if it otherwise looks like an ISSN, yes. That works at the moment.

Would we actually need a clean up action then? If properly used, the ISSN class would provide automatic clean up, right? Which is useful, but may be annoying?

Btw, I doubt using the different parts explicitly is very useful though. But if there is a valid use case where the string is not enough, so sure. Should the parts then be String or int (x is 10 and only appears in the checksum)?

It really looks like over-engineering to me, I must say though...

@oscargus
Copy link
Contributor Author

Extracted an ISSN class for checking validity and cleaning up.

@oscargus oscargus added the status: ready-for-review Pull Requests that are ready to be reviewed by the maintainers label Jul 22, 2016
@simonharrer
Copy link
Contributor

I am missing tests for the ISSN class. Otherwise, LGTM.

@oscargus oscargus force-pushed the issncleanup branch 3 times, most recently from f01d0a0 to 0979ed7 Compare July 23, 2016 11:25
@oscargus oscargus merged commit 458490b into JabRef:master Jul 23, 2016
@oscargus oscargus deleted the issncleanup branch July 23, 2016 11:52
@oscargus oscargus mentioned this pull request Jul 23, 2016
Siedlerchr added a commit to Siedlerchr/jabref that referenced this pull request Jul 24, 2016
* master: (268 commits)
  Added DateFormatter to LayoutEntry so that it actually works... (JabRef#1619)
  Implemented JabRef#1345 - cleanup ISSN (JabRef#1590)
  Always use https for help files (JabRef#1615)
  Resolves JabRef#1613 Use Jabref default icon for uninstaller for now (JabRef#1616)
  Added more fields and fixed some issues (JabRef#1617)
  Added LayoutFormatterPreferences (and related files) (JabRef#1608)
  [WIP] Create new fetcher infrastructure (JabRef#1594)
  Set user agent to fix 403 status error
  More fields added to FieldName (JabRef#1614)
  Added model.entry.FieldName that contains field name constants (JabRef#1602)
  Fixes imports
  Test CustomImporter (JabRef#1501)
  The field list gets the focus as soon as it is focused (JabRef#1541)
  When clicking on a tab, the first field now has the focus (JabRef#988)
  Add test in BibEntryWriterTest for type change
  Rewrite MedlineImporter with JAXB and add nbib fields (JabRef#1479)
  Some Globals.prefs injection in logic and model (JabRef#1593)
  Added filter to not show selected integrity checks (JabRef#1588)
  Replace getField with getFieldOptional in all of the tests and in som… (JabRef#1591)
  Move preferences (JabRef#1604)
  ...

# Conflicts:
#	src/main/java/net/sf/jabref/importer/ImportMenuItem.java
#	src/main/java/net/sf/jabref/importer/OpenDatabaseAction.java
Siedlerchr added a commit to Siedlerchr/jabref that referenced this pull request Jul 25, 2016
* master:
  More field names and a method (JabRef#1627)
  Moved, removed, and used String constants (JabRef#1618)
  Updated preview entries (JabRef#1606)
  Improved LaTeX to Unicode/HTML formatters to output more sensible values for unknown commands (JabRef#1622)
  Fixed JabRef#636 by using DOICheck and DOIStrip in export filters (JabRef#1624)
  Converted a few getField to getFieldOptional (JabRef#1625)
  Added DateFormatter to LayoutEntry so that it actually works... (JabRef#1619)
  Implemented JabRef#1345 - cleanup ISSN (JabRef#1590)
ayanai1 pushed a commit to ayanai1/jabref that referenced this pull request Aug 1, 2016
Move event (JabRef#1601)

* Move event package to model

Update dependencies: postgres 9.4.1208 -> 9.4.1209 and wiremock from 2.1.6 to 2.1.7

Added ISBN integrity checker (JabRef#1586)

 Added ISBN integrity checker

* Extracted ISBN class

Reenable errorprone (see http://errorprone.info/)

Extend the OpenConsoleFeature (JabRef#1582)

* Extend the OpenConsoleFeature by selection of custom terminal emulator.

- Add radio selection to the AdvancedTab
- Add new JabRefPreferences
- Add file check and execution commands
- Add localization keys

* Fix localization key.

* Move console selection to ExternalTab.java

* Change localization entry.

* Add command executor.

* Fix placeholder replacement.

* Fix codacy.

* Update localization key.

* Remove "Specify terminal emulator" option. Add GUI outputs.

* Set default command for Windows. Fix localization entries.

* Remove empty lines in language files.

* Use lambda expressions insead of ActionListeners

* Refactoring.

* Update CHANGELOG.md.

* Small refactorings.

Move preferences (JabRef#1604)

* Move preferences-related classes into separate package

* Rename JabRefPreferencesFilterDialog -> PreferencesFilterDialog and move it to gui

* Fix checkstyle warning

Set user agent to fix 403 status error

Replace getField with getFieldOptional in all of the tests and in som… (JabRef#1591)

* Replace getField with getFieldOptional in all of the tests and in some more code

* Some more conversions

Added filter to not show selected integrity checks (JabRef#1588)

* Added filter to not show selected integrity checks

* Removed unused variable

Some Globals.prefs injection in logic and model (JabRef#1593)

* Some Globals.prefs injection in logic and model

* Some more conversions and some fixes

* More injections

* Even more injections

* Yes, even more injections

* Indeed, even more injections

* Probably the last injections for now

* Removed unrequired dependency and fixed issue

* Dropped support for selecting sub/super to equations

* Added preference classes for LatexFieldFormatter and FieldContentParser

* Removed some left over code

* Added JournalAbbreviationPreferences

* Encapsulated LatexFieldFormatterPreferences in SavePreferences

* Changed getShortDescription to accept boolean argument

* Removed Globals.prefs from tests and removed unused imports

* Unused import

* Unused import

Rewrite MedlineImporter with JAXB and add nbib fields (JabRef#1479)

Add test in BibEntryWriterTest for type change

When clicking on a tab, the first field now has the focus (JabRef#988)

* the first Field does now have focus when clicking on a tab in the entry editor
* Make first field focused when selecting a tab in entry editor

The field list gets the focus as soon as it is focused (JabRef#1541)

Test CustomImporter (JabRef#1501)

* Test CustomImporter

Fixes imports

Added model.entry.FieldName that contains field name constants (JabRef#1602)

* Added model.entry.FieldName that contains field name constants

* More constants

* Renamed and added more constants

* Some more fields and cleanups

* Removed MedlineHandler left from merge conflicts

More fields added to FieldName (JabRef#1614)

* More fields added to FieldName

* Some Medline fixes

[WIP] Create new fetcher infrastructure (JabRef#1594)

* Introduce new Fetcher interfaces

* Refactor arXiv fulltext fetcher

* Add query based arXiv fetcher

* Reformat code

* Add a few tests for the arxiv parser

* Make new arXiv fetcher available

* Fix small problems related to files

* Fix tests

* Rename interface methods

* Add changelog entry

* Mark old EntryFetcher interface as deprecated

* Move fetcher to importer \ fetcher

* Move HelpFile from gui.help to logic.help

* Rename fetchers

* Rename FulltextFinder

* Optimize imports

* Fix failing test

* Ignore failing test

Added LayoutFormatterPreferences (and related files) (JabRef#1608)

* Added LayoutFormatterPreferences (and related files)

* Rebased

* Included JournalAbbreviationLoader in LayoutPreferences

Added more fields and fixed some issues (JabRef#1617)

Resolves JabRef#1613 Use Jabref default icon for uninstaller for now (JabRef#1616)

Always use https for help files (JabRef#1615)

Implemented JabRef#1345 - cleanup ISSN (JabRef#1590)

* Implemented JabRef#1345 - cleanup ISSN

* Fixed comments

* Extracted ISSN class

* Added tests for ISSN and ISBN

Added DateFormatter to LayoutEntry so that it actually works... (JabRef#1619)

Converted a few getField to getFieldOptional (JabRef#1625)

* Converted a few getField to getFieldOptional

Fixed JabRef#636 by using DOICheck and DOIStrip in export filters (JabRef#1624)

Improved LaTeX to Unicode/HTML formatters to output more sensible values for unknown commands (JabRef#1622)

Updated preview entries (JabRef#1606)

* Updated preview entries, which return new entry

Moved, removed, and used String constants (JabRef#1618)

* Moved, removed, and used String constants

* Some more fixes

* Moved NEWLINE, made FILE_SEPARATOR public and used it

* Moved NEWLINE and FILE_SEPARATOR to OS

* Moved ENCODING_PREFIX and SIGNATURE

* Corrected Globals in a few comments...

* Apparently the localization tests find commented out text...

More field names and a method (JabRef#1627)

* Introduced FieldName in ArXiV

* Some more field names

* More field names

Cleanup FindFile and asssociated tests (JabRef#1596)

* Cleanup FindFile and rework it using Streams and nio methods-
* Unignore test for trying on CI
* Use explicit List and Set in findFiles and caller methods
* Use Lazy Stream to find files

changes should be tested manually

Some enhancements and cleanups related to dates (JabRef#1575)

* Some enhancements and cleanups related to dates

* Fixed some time zone issues

* Replaced SimpleDateFormat in ZipFileChooser and replaced arrays with Lists

* Changed EasyDateFormat constructors

* Fixed stupid mistake

* Added CHANGELOG entry

* Maybe tests are passing now?

* Some server side print debugging...

* As it should be

* Tryng LocalDateTime

* No time zone

* Added test for Cookie

* Fixed imports...

* Added a third possible date format as it turns out that the server changed while developing this PR

Builds are now stored via build-upload.jabref.org

Consistent file name casing (and other localization improvements) (JabRef#1629)

* AUX files

* ZIP files

* BIB files

* JAR files

* didn't

* Couldn't what's

* Consistent casing

* AUX apparently is commonly used in French words...

* Fixed the flawed quick-and-dirty find-and-replace failures

define xjc input/ouput dir (subsequent builds will be faster) (JabRef#1628)

Execute task only when input/output dir changed.

Fixed a minor issue and refactored MergeEntries (JabRef#1634)

* Fixed a minor issue and refactored MergeEntries

* Fixed import

* Added CHANGELOG entry

Added LabelPatternPreferences (JabRef#1607)

* Added LabelPatternPreferences

* Removed static initializer

More tests (JabRef#1635)

* Added more tests for Cookie

* Enabled some layout tests and added test for StringUtil.intValueOfWithNull

* Updated a test

* Split tests

Updated Errorprone to 2.0.11 (JabRef#1636)

* Updated Errorprone to 2.0.11

* Corrected test

Keep @comment text in a bib file (JabRef#1638)

* Kep @comment text in a bib file

* Add test for @comment that contains regular entries

Replaced some getField and fixed some bugs (JabRef#1631)

* Replaced some getField and fixed some bugs

* Fixed a few things

* Added CHANGELOG entries

* Improved equals implementation

* Text book equals and hashCode

Fixed JabRef#1639 (JabRef#1641)

* Fixed JabRef#1639

* Removed old code

Export OO/LO citations to new database (JabRef#1630)

* Export OO/LO citations to new database

* Fixed problem with duplicates

* Added some comments

* Fixed spelling in comment

* Removed general Exception

Unified some equals (JabRef#1640)

* Unified some equals

* Imported correct Objects...

Fixed one more NPE which should have been fixed in JabRef#1631 (JabRef#1649)

Finished method to hide visible fields and show hidden fields

- Hide method done
- Show method done
- ToDo repaint hidden field
- ToDo test class

finished field repaint

remove sysouts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status: ready-for-review Pull Requests that are ready to be reviewed by the maintainers type: enhancement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants