Switch to side-by-side view

--- a/tool/src/spdxlib/FileInfo.java
+++ b/tool/src/spdxlib/FileInfo.java
@@ -70,6 +70,7 @@
     /**
      * Each file can have one or more license applicable.
      * This method adds them up as needed.
+     * @param tag
      */
     public void addLicense(TagValue tag){
         licenseInfoInFile.add(tag);
@@ -77,35 +78,143 @@
  
     @Override
     public String toString(){
+        String fileName = getName();
+       
+        String licenseText = getLicense();
+        
+        if(licenseText.isEmpty() == false){
+            fileName += " (" + licenseText + ")";
+        }
+
+        // output the final result
+        return fileName;
+    }
+    
+    /**
+     * Returns the file name without unwanted chars
+     * @return the file name of this object
+     */
+    public String getName(){
+        // get the name in un-processed state (still with slashes)
+        String fileName = tagFileName.toString();
+        // remove slashes from the file name
+        if(fileName.contains("/")){
+            return fileName.substring(fileName.lastIndexOf("/")+1);
+        }
+        
+        // all done
+        return fileName;
+    }
+    
+    
+     
+    /**
+     * This method will pick on a given FileInfo object and extract the relevant
+     * licensing details.
+     * @return A string text with a list of licenses when available. If no
+     * license was found, it will return null
+     */
+    public String getLicense(){
+        // where we store the results from this analysis
         String licenseOutput = "";
-        // priority is the case where a human concludes a license
+        
+     // priority is the case where a human concludes a license
         if((this.tagLicenseConcluded != null)
                 &&(tagLicenseConcluded.toString().equals("NOASSERTION")!=true)){
             // no need to proceed
-            return tagFileName.toString() 
-                    + " ("+ tagLicenseConcluded.toString() +")";
-        }
-        
+            return tagLicenseConcluded.toString();
+        }
+        
+           
         // second priority are licenses detected inside the code
         if(licenseInfoInFile.size()>0){
-            
-            for(TagValue tag : licenseInfoInFile){
+            // we need to count the valid licenses
+            int counterLicense = 0;
+            // go through all licenses listed
+             for(TagValue tag : licenseInfoInFile){
+                // should this license be ignored?
+                if(tag.toString().equalsIgnoreCase("none")){
+                    continue;
+                }
+                // valid license, increase the counter
+                counterLicense++;
+                // add the license to the printable text viewed by user
                 licenseOutput =  licenseOutput.concat(", " + tag.toString());
             }
-            // remove the first comma added throught our loop
-            licenseOutput = " (" + licenseOutput.substring(2) + ")";
-        }
-        
-        // output the final result
-        return tagFileName.toString() + licenseOutput;
-    }
-    
-    /**
-     * Returns the file name without unwanted chars
-     * @return the file name of this object
-     */
-    public String getName(){
-        return tagFileName.toString();
-    }
+            // don't display text if no license was accounted
+            if(counterLicense == 0){
+                licenseOutput = "";
+            }else{
+                // remove the first comma added throught our loop
+                licenseOutput = licenseOutput.substring(2);
+            }
+        }
+        return licenseOutput;
+    }
+//     String licenseOutput = "";
+//        // priority is the case where a human concludes a license
+//        if((tagLicenseConcluded != null)
+//                &&(tagLicenseConcluded.toString().equals("NOASSERTION")!=true)){
+//            // no need to proceed
+//            return 
+//                    //file.tagFileName.toString() 
+//                    //+ " ("+ 
+//                    tagLicenseConcluded.toString() 
+//                    //+")"
+//                    ;
+//        }
+//        
+//        // second priority are licenses detected inside the code
+//        if(licenseInfoInFile.size()>0){
+//            
+//            for(TagValue tag : licenseInfoInFile){
+//                licenseOutput =  licenseOutput.concat(", " + tag.toString());
+//            }
+//            // remove the first comma added throught our loop
+//            licenseOutput = " (" + licenseOutput.substring(2) + ")";
+//        }
+//        return licenseOutput;
+//    }
+    
+    
+    /**
+     * When given a file, this method checks if it has either a reported or
+     * concluded license. The method is necessary since sometimes one of these
+     * fields is present using infomation like "NOASSERTION" which really
+     * becomes a problem to normalize.
+     * @param file A FileInfo object with the information that we will analyze
+     * @return 
+     */
+    public Boolean hasLicense(){
+        
+        // do we have a license concluded for this file?
+        if(tagLicenseConcluded != null){
+            // get the text from the license that was concluded
+            String licenseText = tagLicenseConcluded.toString();
+            // a lot of trouble, but necessary to find out what is happening
+            if( (licenseText.equals("NONE")== false) 
+             && (licenseText.equals("NOASSERTION")== false)){
+                // we have at least one license concluded. Good enough
+                return true;
+            }
+        }
+        
+        // are there any licenses inside this file?
+        for(TagValue licenseTag : licenseInfoInFile){
+            String licenseText = licenseTag.toString();
+            // excluse the cases that shouldn't count for this metric
+            if(licenseText.equals("NONE")){
+                continue;
+            }
+            if(licenseText.equals("NOASSERTION")){
+                continue;
+            }
+            // we just need to find one license to make our day happy! :-)
+            return true;
+        }
+          // no licenses, let's leave
+        return false;
+    }
+    
     
 }