public class TagChecker extends Test.TagTest implements TaggingPresetListener
Test.TagTest
Modifier and Type | Field and Description |
---|---|
private static java.util.HashSet<java.lang.String> |
additionalPresetsValueData
The spell check preset values which are not stored in TaggingPresets
|
private static java.lang.String |
BEFORE_UPLOAD |
protected boolean |
checkComplex
Was used for special configuration file, might be used to disable value spell checker.
|
protected boolean |
checkFixmes |
protected boolean |
checkKeys |
protected boolean |
checkValues |
private static java.util.List<java.lang.String> |
DEFAULT_SOURCES |
protected static int |
EMPTY_VALUES |
protected static int |
FIXME |
private static java.util.Map<java.lang.String,java.lang.String> |
harmonizedKeys
Normalized keys: the key should be substituted by the value if the key was not found in presets
|
static java.lang.String |
IGNORE_FILE
The config file of ignored tags
|
private static java.util.List<java.lang.String> |
ignoreDataEndsWith |
private static java.util.Set<java.lang.String> |
ignoreDataEquals |
private static java.util.List<java.lang.String> |
ignoreDataStartsWith
The TagChecker data
|
private static java.util.List<Tag> |
ignoreDataTag |
private static java.util.Set<java.lang.String> |
ignoreForLevenshtein
tag keys that have only numerical values in the presets
|
protected static int |
INVALID_HTML |
protected static int |
INVALID_KEY |
protected static int |
INVALID_KEY_SPACE |
protected static int |
INVALID_SPACE |
protected static int |
INVALID_VALUE |
protected static int |
LONG_KEY |
protected static int |
LONG_VALUE |
protected static int |
LOW_CHAR_KEY |
protected static int |
LOW_CHAR_VALUE |
private static int |
MAX_LEVENSHTEIN_DISTANCE |
protected static int |
MISSPELLED_KEY |
protected static int |
MISSPELLED_VALUE |
protected static int |
MISSPELLED_VALUE_NO_FIX |
protected static int |
MULTIPLE_SPACES |
private static MultiMap<java.lang.String,java.lang.String> |
oftenUsedTags
often used tags which are not in presets
|
static java.lang.String |
PREF_CHECK_COMPLEX
The preference key to enable complex checks
|
static java.lang.String |
PREF_CHECK_COMPLEX_BEFORE_UPLOAD
The preference key to run complex tests - used before upload
|
static java.lang.String |
PREF_CHECK_FIXMES
The preference key to search for fixme tags
|
static java.lang.String |
PREF_CHECK_FIXMES_BEFORE_UPLOAD
The preference key to search for fixmes - used before upload
|
static java.lang.String |
PREF_CHECK_KEYS
The preference key to check keys
|
static java.lang.String |
PREF_CHECK_KEYS_BEFORE_UPLOAD
The preference key to check keys - used before upload
|
static java.lang.String |
PREF_CHECK_VALUES
The preference key to check values
|
static java.lang.String |
PREF_CHECK_VALUES_BEFORE_UPLOAD
The preference key to check values - used before upload
|
static java.lang.String |
PREF_SOURCES
The preference key for source files
|
protected javax.swing.JCheckBox |
prefCheckComplex |
protected javax.swing.JCheckBox |
prefCheckComplexBeforeUpload |
protected javax.swing.JCheckBox |
prefCheckFixmes |
protected javax.swing.JCheckBox |
prefCheckFixmesBeforeUpload |
protected javax.swing.JCheckBox |
prefCheckKeys |
protected javax.swing.JCheckBox |
prefCheckKeysBeforeUpload |
protected javax.swing.JCheckBox |
prefCheckPaint |
protected javax.swing.JCheckBox |
prefCheckPaintBeforeUpload |
protected javax.swing.JCheckBox |
prefCheckValues |
protected javax.swing.JCheckBox |
prefCheckValuesBeforeUpload |
protected static java.lang.String |
PREFIX
The preferences prefix
|
protected EditableList |
sourcesList |
static java.lang.String |
SPELL_FILE
The config file of dictionary words
|
protected static int |
UNUSUAL_UNICODE_CHAR_VALUE |
private static java.util.regex.Pattern |
UNWANTED_NON_PRINTING_CONTROL_CHARACTERS |
checkBeforeUpload, checkEnabled, description, enabled, errors, IN_DOWNLOADED_AREA, IN_DOWNLOADED_AREA_STRICT, isBeforeUpload, name, partialSelection, progressMonitor, startTime, testBeforeUpload
Constructor and Description |
---|
TagChecker()
Constructor
|
Modifier and Type | Method and Description |
---|---|
void |
addGui(javax.swing.JPanel testPanel)
Allow the tester to manage its own preferences
|
private static void |
addPresetValue(KeyedItem ky) |
private static void |
addToKeyDictionary(java.lang.String key) |
private static void |
analysePresets()
Add presets that contain only numerical values to the ignore list
|
void |
check(OsmPrimitive p)
Checks the primitive tags
|
private void |
checkSingleTagComplex(MultiMap<OsmPrimitive,java.lang.String> withErrors,
OsmPrimitive p,
java.lang.String key,
java.lang.String value) |
private void |
checkSingleTagKeySimple(MultiMap<OsmPrimitive,java.lang.String> withErrors,
OsmPrimitive p,
java.lang.String s,
java.lang.String key) |
private void |
checkSingleTagValueSimple(MultiMap<OsmPrimitive,java.lang.String> withErrors,
OsmPrimitive p,
java.lang.String s,
java.lang.String key,
java.lang.String value) |
(package private) static boolean |
containsUnusualUnicodeCharacter(java.lang.String key,
java.lang.String value) |
(package private) static boolean |
containsUnwantedNonPrintingControlCharacter(java.lang.String s)
Checks given string (key or value) if it contains unwanted non-printing control characters (either ASCII or Unicode bidi characters)
|
Command |
fixError(TestError testError)
Fixes the error with the appropriate command
|
static java.util.List<Tag> |
getIgnoredTags()
Returns the list of ignored tags.
|
private static java.util.Set<java.lang.String> |
getPresetValues(java.lang.String key)
Get set of preset values for the given key.
|
void |
handlePrefEnable()
Enables/disables the source list field
|
private static java.lang.String |
harmonizeKey(java.lang.String key) |
private static java.lang.String |
harmonizeValue(java.lang.String value) |
private static void |
initAdditionalPresetsValueData() |
void |
initialize()
Initializes any global data used this tester.
|
private static void |
initializeData()
Reads the spell-check file into a HashMap.
|
static void |
initializePresets()
Reads the presets data.
|
private static boolean |
isAllowedPhoneticCharacter(java.lang.String key,
int c) |
private static boolean |
isAsciiControlChar(int c) |
private static boolean |
isBidiControlChar(int c) |
boolean |
isFixable(TestError testError)
Returns true if the given error can be fixed automatically
|
private static boolean |
isFixme(java.lang.String key,
java.lang.String value) |
private static boolean |
isJoiningChar(int c) |
private static boolean |
isKeyIgnored(java.lang.String key)
Determines if the given tag key is ignored for checks "key/tag not in presets".
|
static boolean |
isKeyInPresets(java.lang.String key)
Determines if the given key is in internal presets.
|
private static boolean |
isNewLineChar(int c) |
private static boolean |
isNum(java.lang.String harmonizedValue) |
static boolean |
isTagIgnored(java.lang.String key,
java.lang.String value)
Determines if the given tag is ignored for checks "key/tag not in presets".
|
static boolean |
isTagInPresets(java.lang.String key,
java.lang.String value)
Determines if the given tag is in internal presets.
|
private static boolean |
isUnusualBmpUse(java.lang.Character.UnicodeBlock b) |
private static boolean |
isUnusualPhoneticUse(java.lang.String key,
java.lang.Character.UnicodeBlock b,
int c) |
private static boolean |
isUnusualSmpUse(java.lang.Character.UnicodeBlock b) |
private static boolean |
isUnusualUnicodeBlock(java.lang.String key,
int c)
Detects highly suspicious Unicode characters that have been seen in OSM database.
|
boolean |
ok()
Called when the used submits the preferences
|
private static void |
parseIgnoreFileLine(java.lang.String source,
java.lang.String line)
Parse a line found in a configuration file
|
(package private) static java.lang.String |
removeUnwantedNonPrintingControlCharacters(java.lang.String s) |
private void |
spellCheckKey(MultiMap<OsmPrimitive,java.lang.String> withErrors,
OsmPrimitive p,
java.lang.String key) |
void |
startTest(ProgressMonitor monitor)
Start the test using a given progress monitor
|
void |
taggingPresetsModified()
Called after list of tagging presets has been modified.
|
private void |
tryGuess(OsmPrimitive p,
java.lang.String key,
java.lang.String value,
MultiMap<OsmPrimitive,java.lang.String> withErrors) |
void |
visit(java.util.Collection<OsmPrimitive> selection)
Visits all primitives to be tested.
|
visit, visit, visit
clear, deletePrimitivesIfNeeded, endTest, getErrors, getName, isBuilding, isCanceled, isPrimitiveUsable, isResidentialArea, setBeforeUpload, setPartialSelection, setShowElements, testBeforeUpload
public static final java.lang.String IGNORE_FILE
public static final java.lang.String SPELL_FILE
private static final java.util.Map<java.lang.String,java.lang.String> harmonizedKeys
private static volatile java.util.HashSet<java.lang.String> additionalPresetsValueData
private static volatile MultiMap<java.lang.String,java.lang.String> oftenUsedTags
private static final java.util.regex.Pattern UNWANTED_NON_PRINTING_CONTROL_CHARACTERS
private static final java.util.List<java.lang.String> ignoreDataStartsWith
private static final java.util.Set<java.lang.String> ignoreDataEquals
private static final java.util.List<java.lang.String> ignoreDataEndsWith
private static final java.util.List<Tag> ignoreDataTag
private static final java.util.Set<java.lang.String> ignoreForLevenshtein
protected static final java.lang.String PREFIX
public static final java.lang.String PREF_CHECK_VALUES
public static final java.lang.String PREF_CHECK_KEYS
public static final java.lang.String PREF_CHECK_COMPLEX
public static final java.lang.String PREF_CHECK_FIXMES
public static final java.lang.String PREF_SOURCES
DEFAULT_SOURCES
private static final java.lang.String BEFORE_UPLOAD
public static final java.lang.String PREF_CHECK_KEYS_BEFORE_UPLOAD
public static final java.lang.String PREF_CHECK_VALUES_BEFORE_UPLOAD
public static final java.lang.String PREF_CHECK_COMPLEX_BEFORE_UPLOAD
public static final java.lang.String PREF_CHECK_FIXMES_BEFORE_UPLOAD
private static final int MAX_LEVENSHTEIN_DISTANCE
protected boolean checkKeys
protected boolean checkValues
protected boolean checkComplex
protected boolean checkFixmes
protected javax.swing.JCheckBox prefCheckKeys
protected javax.swing.JCheckBox prefCheckValues
protected javax.swing.JCheckBox prefCheckComplex
protected javax.swing.JCheckBox prefCheckFixmes
protected javax.swing.JCheckBox prefCheckPaint
protected javax.swing.JCheckBox prefCheckKeysBeforeUpload
protected javax.swing.JCheckBox prefCheckValuesBeforeUpload
protected javax.swing.JCheckBox prefCheckComplexBeforeUpload
protected javax.swing.JCheckBox prefCheckFixmesBeforeUpload
protected javax.swing.JCheckBox prefCheckPaintBeforeUpload
protected static final int EMPTY_VALUES
protected static final int INVALID_KEY
protected static final int INVALID_VALUE
protected static final int FIXME
protected static final int INVALID_SPACE
protected static final int INVALID_KEY_SPACE
protected static final int INVALID_HTML
protected static final int LONG_VALUE
protected static final int LONG_KEY
protected static final int LOW_CHAR_VALUE
protected static final int LOW_CHAR_KEY
protected static final int MISSPELLED_VALUE
protected static final int MISSPELLED_KEY
protected static final int MULTIPLE_SPACES
protected static final int MISSPELLED_VALUE_NO_FIX
protected static final int UNUSUAL_UNICODE_CHAR_VALUE
protected EditableList sourcesList
private static final java.util.List<java.lang.String> DEFAULT_SOURCES
public TagChecker()
public void initialize() throws java.io.IOException
Test
initialize
in class Test
java.io.IOException
private static void analysePresets()
private static void initializeData() throws java.io.IOException
java.io.IOException
- if any I/O error occursprivate static void parseIgnoreFileLine(java.lang.String source, java.lang.String line)
source
- name of configuration fileline
- the line to parseprivate static void addToKeyDictionary(java.lang.String key)
public static void initializePresets()
private static void initAdditionalPresetsValueData()
private static void addPresetValue(KeyedItem ky)
static boolean containsUnwantedNonPrintingControlCharacter(java.lang.String s)
s
- string to checktrue
if s
contains non-printing control charactersprivate static boolean isAsciiControlChar(int c)
private static boolean isNewLineChar(int c)
private static boolean isJoiningChar(int c)
private static boolean isBidiControlChar(int c)
static java.lang.String removeUnwantedNonPrintingControlCharacters(java.lang.String s)
static boolean containsUnusualUnicodeCharacter(java.lang.String key, java.lang.String value)
private static boolean isUnusualUnicodeBlock(java.lang.String key, int c)
key
- tag keyc
- current character code pointtrue
if the current unicode block is very unusual for the given keyprivate static boolean isAllowedPhoneticCharacter(java.lang.String key, int c)
private static boolean isUnusualPhoneticUse(java.lang.String key, java.lang.Character.UnicodeBlock b, int c)
private static boolean isUnusualBmpUse(java.lang.Character.UnicodeBlock b)
private static boolean isUnusualSmpUse(java.lang.Character.UnicodeBlock b)
private static java.util.Set<java.lang.String> getPresetValues(java.lang.String key)
key
- the keypublic static boolean isKeyInPresets(java.lang.String key)
key
- keytrue
if the given key is in internal presetspublic static boolean isTagInPresets(java.lang.String key, java.lang.String value)
key
- keyvalue
- valuetrue
if the given tag is in internal presetspublic static java.util.List<Tag> getIgnoredTags()
private static boolean isKeyIgnored(java.lang.String key)
key
- keypublic static boolean isTagIgnored(java.lang.String key, java.lang.String value)
key
- keyvalue
- valuetrue
if the given tag is ignoredpublic void check(OsmPrimitive p)
check
in class Test.TagTest
p
- The primitive to checkprivate void checkSingleTagValueSimple(MultiMap<OsmPrimitive,java.lang.String> withErrors, OsmPrimitive p, java.lang.String s, java.lang.String key, java.lang.String value)
private void checkSingleTagKeySimple(MultiMap<OsmPrimitive,java.lang.String> withErrors, OsmPrimitive p, java.lang.String s, java.lang.String key)
private void checkSingleTagComplex(MultiMap<OsmPrimitive,java.lang.String> withErrors, OsmPrimitive p, java.lang.String key, java.lang.String value)
private void spellCheckKey(MultiMap<OsmPrimitive,java.lang.String> withErrors, OsmPrimitive p, java.lang.String key)
private void tryGuess(OsmPrimitive p, java.lang.String key, java.lang.String value, MultiMap<OsmPrimitive,java.lang.String> withErrors)
private static boolean isNum(java.lang.String harmonizedValue)
private static boolean isFixme(java.lang.String key, java.lang.String value)
private static java.lang.String harmonizeKey(java.lang.String key)
private static java.lang.String harmonizeValue(java.lang.String value)
public void startTest(ProgressMonitor monitor)
Test
public void visit(java.util.Collection<OsmPrimitive> selection)
Test
public void addGui(javax.swing.JPanel testPanel)
Test
public void handlePrefEnable()
public boolean ok()
Test
public Command fixError(TestError testError)
Test
public boolean isFixable(TestError testError)
Test
public void taggingPresetsModified()
TaggingPresetListener
taggingPresetsModified
in interface TaggingPresetListener