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 extends TaxonomyInterface> 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);
}