(no commit message)
authorKatja Luther <k.luther@bgbm.org>
Wed, 21 Oct 2009 09:05:58 +0000 (09:05 +0000)
committerKatja Luther <k.luther@bgbm.org>
Wed, 21 Oct 2009 09:05:58 +0000 (09:05 +0000)
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/ReferenceBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/parser/NonViralNameParserImpl.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/parser/NonViralNameParserImplTest.java

index 1362f45e3f6812d378cabb8155851d9f098a9680..0ef7b567e4e760a506b68d1bab48bac8b97b22dc 100644 (file)
@@ -52,7 +52,10 @@ import eu.etaxonomy.cdm.model.common.TimePeriod;
 import eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.strategy.cache.reference.ArticleDefaultCacheStrategy;
+import eu.etaxonomy.cdm.strategy.cache.reference.BookDefaultCacheStrategy;
+import eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy;
 import eu.etaxonomy.cdm.strategy.cache.reference.IReferenceBaseCacheStrategy;
+import eu.etaxonomy.cdm.strategy.cache.reference.JournalDefaultCacheStrategy;
 import eu.etaxonomy.cdm.strategy.match.IMatchable;
 import eu.etaxonomy.cdm.strategy.match.Match;
 import eu.etaxonomy.cdm.strategy.match.MatchMode;
@@ -874,9 +877,19 @@ public class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends Identi
                return (IThesis) ref;
        }
 
-       //FIXME!
+       
        public String getNomenclaturalCitation(String microReference) {
-               return null;
+               if (cacheStrategy == null){
+                       logger.warn("No CacheStrategy defined for "+ this.getClass() + ": " + this.getUuid());
+                       return null;
+               }else{
+                       if (cacheStrategy instanceof INomenclaturalReferenceCacheStrategy){
+                               return ((INomenclaturalReferenceCacheStrategy)cacheStrategy).getNomenclaturalCitation(this,microReference);
+                       }else {
+                               logger.warn("No INomenclaturalReferenceCacheStrategy defined for "+ this.getClass() + ": " + this.getUuid());
+                               return null;
+                       }
+               }
        }
 
        public IJournal getInJournal() {
@@ -885,7 +898,7 @@ public class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends Identi
        }
 
        public void setInJournal(IJournal journal) {
-               this.inReference = (ReferenceBase) journal;
+               this.inReference = (ReferenceBase<JournalDefaultCacheStrategy<ReferenceBase>>) journal;
                
        }
 
@@ -895,7 +908,7 @@ public class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends Identi
        }
 
        public void setInSeries(IPrintSeries inSeries) {
-               this.inReference = (ReferenceBase) inSeries;
+               this.inReference = (ReferenceBase<IReferenceBaseCacheStrategy<ReferenceBase>>) inSeries;
                
        }
 
@@ -905,7 +918,7 @@ public class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends Identi
        }
 
        public void setInBook(IBook book) {
-               this.inReference = (ReferenceBase) book;
+               this.inReference = (ReferenceBase<BookDefaultCacheStrategy<ReferenceBase>>) book;
                
        }
 
index 89a0cc037a766ad720a3d700a5042f4c4a76ab7e..23564536fbf33a9ff4decf7eaa2916e655a45c90 100644 (file)
@@ -37,6 +37,7 @@ import eu.etaxonomy.cdm.model.reference.IReferenceBase;
 import eu.etaxonomy.cdm.model.reference.IVolumeReference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceType;\r
 import eu.etaxonomy.cdm.strategy.exceptions.StringNotParsableException;\r
 import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
 \r
@@ -370,8 +371,8 @@ public class NonViralNameParserImpl extends NonViralNameParserImplRegExBase impl
                nameToBeFilled.addParsingProblems(ref.getParsingProblem());\r
            }\r
            \r
-           IReferenceBase nomRef;\r
-               if ( (nomRef = (IReferenceBase)nameToBeFilled.getNomenclaturalReference()) != null ){\r
+           ReferenceBase nomRef;\r
+               if ( (nomRef = (ReferenceBase)nameToBeFilled.getNomenclaturalReference()) != null ){\r
                        nomRef.setAuthorTeam((TeamOrPersonBase)nameToBeFilled.getCombinationAuthorTeam());\r
                }\r
        }\r
@@ -585,7 +586,7 @@ public class NonViralNameParserImpl extends NonViralNameParserImplRegExBase impl
                }\r
                TimePeriod datePublished = TimePeriod.parseString(year);\r
                \r
-               if (nomRef instanceof IBookSection){\r
+               if (nomRef.getType().equals(ReferenceType.BookSection)){\r
                        handleBookSectionYear((IBookSection)nomRef, datePublished);\r
                }else if (nomRef instanceof ReferenceBase){\r
                        ((ReferenceBase)nomRef).setDatePublished(datePublished);        \r
index a2a1fe5f0a88a714633d110472a7725a57e31a46..6658fa925e8c52865369a6d2b98ad9383ad15c4d 100644 (file)
@@ -360,7 +360,7 @@ public class NonViralNameParserImplTest {
                assertEquals(fullReference, name2.getFullTitleCache());\r
                assertFalse(name2.hasProblem());\r
                INomenclaturalReference ref = name2.getNomenclaturalReference();\r
-               assertEquals(eu.etaxonomy.cdm.model.reference.ReferenceType.Book, ((ReferenceBase)ref).getType());\r
+               assertEquals(eu.etaxonomy.cdm.model.reference.ReferenceType.BookSection, ((ReferenceBase)ref).getType());\r
                IBookSection bookSection = (IBookSection) ref;\r
                IBook inBook = bookSection.getInBook();\r
                assertNotNull(inBook);\r