diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index c67934f..d81dc60 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -3,9 +3,6 @@ - - uses - diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/session/Fetcher.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/session/Fetcher.java index d18a2c2..930899e 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/session/Fetcher.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/session/Fetcher.java @@ -21,7 +21,7 @@ import org.gcube.portlets.user.speciesdiscovery.shared.FetchingElement; public class Fetcher implements Runnable, Closeable { protected Logger logger = Logger.getLogger(Fetcher.class); - protected final int MAX_CONSECUTIVE_ATTEMPTS_ON_NULL = 5; + protected final int MAX_CONSECUTIVE_ATTEMPTS_ON_NULL = 2; protected FetchingBuffer buffer; protected CloseableIterator source; protected boolean complete = false; @@ -75,6 +75,7 @@ public class Fetcher implements Runnable, Closeable { if(next!=null){ logger.info("item "+count++ +" fetch new row: "+next.getId()); buffer.add(next); + countNullItems = 0; } else{ countNullItems++; @@ -120,6 +121,7 @@ public class Fetcher implements Runnable, Closeable { */ public void close() throws IOException { + logger.info("Fetcher closing iterator!!"); complete = true; source.close(); } diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/stream/AggregatorIterator.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/stream/AggregatorIterator.java index c989e8f..51bc26c 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/stream/AggregatorIterator.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/stream/AggregatorIterator.java @@ -7,6 +7,8 @@ import java.io.IOException; import java.util.HashMap; import java.util.Map; +import org.apache.log4j.Logger; + /** * @author "Federico De Faveri defaveri@isti.cnr.it" * @@ -15,6 +17,7 @@ public class AggregatorIterator implements CloseableIterator { protected CloseableIterator source; protected Map> aggregators; + protected Logger logger = Logger.getLogger(AggregatorIterator.class); /** * @param source @@ -42,6 +45,12 @@ public class AggregatorIterator implements CloseableIterator { @Override public I next() { I input = source.next(); + //Another check + if(input==null){ + logger.warn("Skipping conversion source.next() is Null!!"); + return null; + } + for (Aggregator aggregator:aggregators.values()) aggregator.aggregate(input); return input; } diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/stream/ConversionIterator.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/stream/ConversionIterator.java index e0f4923..a3698e4 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/stream/ConversionIterator.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/stream/ConversionIterator.java @@ -41,6 +41,13 @@ public class ConversionIterator implements CloseableIterator { assert hasNext(); try { I input = source.next(); + + ////Another check + if(input==null){ + logger.warn("Skipping conversion source.next() is Null!!"); + return null; + } + O output = converter.convert(input); return output; } catch (Exception e) { diff --git a/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/stream/aggregation/TaxonomyClassificationAggregator.java b/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/stream/aggregation/TaxonomyClassificationAggregator.java index 7bd3967..866f0d1 100644 --- a/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/stream/aggregation/TaxonomyClassificationAggregator.java +++ b/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/stream/aggregation/TaxonomyClassificationAggregator.java @@ -48,19 +48,17 @@ public class TaxonomyClassificationAggregator implem @Override public void aggregate(TaxonomyProvider row) { - // System.out.println("TaxonomyProvider " + row); - List matchingTaxon = row.getParents(); - + if(matchingTaxon == null || matchingTaxon.size()==0) return; EnumMap groupedTaxon = groupTaxonByRank(matchingTaxon); +// System.out.println("GroupedTaxon Key Set: " + groupedTaxon.keySet()); for (MainTaxonomicRankEnum aggregationRank: MainTaxonomicRankEnum.values()){ TaxonomyInterface taxon = groupedTaxon.get(aggregationRank); - String taxonId; //IF RANK CLASS EXISTS INSERT INTO HASHMAP GROUP BY RANK @@ -71,9 +69,10 @@ public class TaxonomyClassificationAggregator implem String unknownRank = matchingTaxon.get(0).getRank()!=null?matchingTaxon.get(0).getRank():TAXONOMYUNKNOWN; // GET THE FIRST RANK CLASS + taxon = row.getParents().get(0); //IF BASETAXONOMY CLASS IS NOT UNKNOWN - INSERT INTO HASHMAP GROUP BY FIRST RANK - if(!row.getBaseTaxonValue().equalsIgnoreCase(TAXONOMYUNKNOWN)) { - taxonId = addTaxonToAggregation(aggregationRank, row.getParents().get(0), row.getBaseTaxonValue(), row.getBaseTaxonValue(), unknownRank); + if(!row.getBaseTaxonValue().equalsIgnoreCase(TAXONOMYUNKNOWN) && (taxon!=null)) { + taxonId = addTaxonToAggregation(aggregationRank, taxon, row.getBaseTaxonValue(), row.getBaseTaxonValue(), unknownRank); setClassification(row, aggregationRank, taxonId); } else { //BASETAXONOMY UNKNOWN - INSERT INTO HASHMAP GROUP BY haskKey UNKNOWN RANK @@ -119,7 +118,7 @@ public class TaxonomyClassificationAggregator implem protected String addTaxonToAggregation(MainTaxonomicRankEnum aggregationRank, TaxonomyInterface taxon, String baseTaxonId, String baseTaxonValue, String classificationRank) { - String taxonName = taxon.getName().toLowerCase(); + String taxonName =taxon.getName()!=null?taxon.getName().toLowerCase():"No name"; return addTaxonToAggregation(aggregationRank, taxonName, taxonName, baseTaxonId, baseTaxonValue, classificationRank); }