parser bugfixing
authorAndreas Müller <a.mueller@bgbm.org>
Fri, 28 Nov 2008 00:16:07 +0000 (00:16 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Fri, 28 Nov 2008 00:16:07 +0000 (00:16 +0000)
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/parser/NonViralNameParserImpl.java

index 749ece742709c0c613ee3e803acf83e71bfc83b2..09268f633595ad08ac7ba3ba4b8a13f9269383b7 100644 (file)
@@ -291,8 +291,11 @@ public class NonViralNameParserImpl implements INonViralNameParser<NonViralName<
                boolean isInReference = separator.matches(inReferenceSeparator);\r
            \r
            //parse subparts\r
-           parseFullName(nameToBeFilled, name, rank, makeEmpty);\r
-           parseReference(nameToBeFilled, referenceString, isInReference); \r
+           \r
+               int oldProblemEnds = nameToBeFilled.getProblemEnds();\r
+               parseFullName(nameToBeFilled, name, rank, makeEmpty);\r
+           nameToBeFilled.setProblemEnds(oldProblemEnds);\r
+               parseReference(nameToBeFilled, referenceString, isInReference); \r
            INomenclaturalReference<?> ref = nameToBeFilled.getNomenclaturalReference();\r
 \r
            //problem start\r
@@ -301,7 +304,7 @@ public class NonViralNameParserImpl implements INonViralNameParser<NonViralName<
            int nameAndSeparatorLength = nameAndSeparator.length();\r
            int fullRefLength = nameToBeFilled.getFullTitleCache().length();\r
            \r
-           if (nameToBeFilled.isProtectedTitleCache() ){\r
+           if (nameToBeFilled.isProtectedTitleCache() || nameToBeFilled.getRank() == null ){\r
                start = Math.max(0, start);\r
                }else{\r
                        if (ref != null && ref.getHasProblem()){\r
@@ -674,7 +677,7 @@ public class NonViralNameParserImpl implements INonViralNameParser<NonViralName<
                    }\r
                    else if (genusOrSupraGenusPattern.matcher(fullNameString).matches()){\r
                        //supraGeneric\r
-                               if (rank != null && rank.isSupraGeneric()){\r
+                               if (rank != null && (rank.isSupraGeneric()|| rank.isGenus())){\r
                                        nameToBeFilled.setRank(rank);\r
                                        nameToBeFilled.setGenusOrUninomial(epi[0]);\r
                                } \r