Switch to side-by-side view

--- a/src/net/timbusproject/dpes/alternative/AlternativesBuilder/ToolAlternativesBuilder.java
+++ b/src/net/timbusproject/dpes/alternative/AlternativesBuilder/ToolAlternativesBuilder.java
@@ -20,6 +20,7 @@
 
 import ch.lambdaj.function.convert.Converter;
 
+import ch.lambdaj.function.matcher.Predicate;
 import com.hp.hpl.jena.query.QuerySolution;
 
 import net.timbusproject.dpes.alternative.PreservationAlternative;
@@ -43,6 +44,7 @@
 import java.util.List;
 
 import static ch.lambdaj.Lambda.convert;
+import static ch.lambdaj.Lambda.filter;
 
 /**
  * Creates alternative ontologies where tools at risk are replaced.
@@ -66,7 +68,7 @@
     public List<PreservationAlternative> createAlternatives(Risk identifiedRisk, IRI individualAtRisk) throws OWLOntologyStorageException, OWLOntologyCreationException, IOException, OwlElementNotFoundException {
         LOG.info("Searching for tool alternatives...");
         List<PreservationAlternative> alternatives = new ArrayList<>();
-        String affectedResourceName = identifiedRisk.getAffectedResource();
+        String affectedResourceName = AlternativesBuilderHelper.getFragmentOfResource(originalModelFacade, identifiedRisk.getAffectedResource());
         List<String> alternativeTools = getAlternativeTools(originalModelFacade, affectedResourceName);
         ChangesOntologyBuilder changesOntologyBuilder = new ChangesOntologyBuilder(
                 originalModelFacade.getOntology(), originalModelFacade.getIndividual(individualAtRisk.toString()), "SoftwareReplacement");
@@ -100,7 +102,9 @@
 
     private List<String> getAlternativeTools(OwlApiFacade originalModelFacade, String affectedResourceName) throws OWLOntologyStorageException, OWLOntologyCreationException, IOException, OwlElementNotFoundException {
         // get alternatives based on the tool
-        OWLNamedIndividual affectedIndiv = originalModelFacade.getIndividual(originalModelFacade.findIndividualByFragmentAndLabel(affectedResourceName).toString());
+        IRI individualByFragmentAndLabel = originalModelFacade.findIndividualByFragmentAndLabel(affectedResourceName);
+        if (individualByFragmentAndLabel == null) return new ArrayList<>();
+        OWLNamedIndividual affectedIndiv = originalModelFacade.getIndividual(individualByFragmentAndLabel.toString());
         String affectedResourceFragment = originalModelFacade.createIri(affectedResourceName).getFragment();
         try {
             affectedResourceFragment = originalModelFacade.hasLabel(affectedIndiv) ? originalModelFacade.getLabel(affectedIndiv) : affectedResourceFragment;
@@ -115,7 +119,13 @@
         for (Pair<String, String> formatPair : formatPairs) {
             alternativeTools.addAll(JenaQueryFacade.removeNamespace(knowledgeBase.getSupportingTools(formatPair)));
         }
-        return alternativeTools;
+        return filter(new Predicate<String>() {
+            @Override
+            public boolean apply(String s) {
+                if (s == null || s.isEmpty()) return false;
+                return true;
+            }
+        }, alternativeTools);
     }
 
     private List<Pair<String, String>> convertToIDs(List<QuerySolution> query, final JenaQueryFacade queryFacade) {