Java tutorial
/** * Copyright (c) 2014 Source Auditor Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.spdx.tools; import java.io.File; import java.io.IOException; import java.nio.charset.Charset; import org.spdx.compare.LicenseCompareHelper; import org.spdx.compare.SpdxCompareException; import org.spdx.rdfparser.InvalidSPDXAnalysisException; import com.google.common.io.Files; /** * Tool to compare a license text to standard licenses. Lists all standard * license ID's that are equivalent using the SPDX Legal team's license matching * guidelines (http://spdx.org/spdx-license-list/matching-guidelines) * @author Gary O'Neall * */ public class MatchingStandardLicenses { /** * This class should not be instantiated. Call the main method to invoke. */ private MatchingStandardLicenses() { } static int MIN_ARGS = 1; static int MAX_ARGS = 1; static final int ERROR_STATUS = 1; /** * @param args */ public static void main(String[] args) { if (args == null || args.length < MIN_ARGS || args.length > MAX_ARGS) { System.out.println("Invalid arguments"); usage(); System.exit(ERROR_STATUS); } File textFile = new File(args[0]); if (!textFile.exists()) { System.out.println("Text file " + textFile.getName() + " does not exist"); usage(); System.exit(ERROR_STATUS); } String licenseText = null; try { licenseText = readAll(textFile); } catch (IOException e) { System.out.println("Error reading file: " + e.getMessage()); System.exit(ERROR_STATUS); } String[] matchingLicenseIds = null; try { matchingLicenseIds = LicenseCompareHelper.matchingStandardLicenseIds(licenseText); } catch (InvalidSPDXAnalysisException e) { System.out.println("Error reading standard licenses: " + e.getMessage()); System.exit(ERROR_STATUS); } catch (SpdxCompareException e) { System.out.println("Error comparing licenses: " + e.getMessage()); System.exit(ERROR_STATUS); } if (matchingLicenseIds == null || matchingLicenseIds.length == 0) { System.out.println("No standard licenses matched."); } else { StringBuilder sb = new StringBuilder("The following license id(s) match: "); sb.append(matchingLicenseIds[0]); for (int i = 1; i < matchingLicenseIds.length; i++) { sb.append(", "); sb.append(matchingLicenseIds[i]); } System.out.println(sb.toString()); } System.exit(0); } /** * @param textFile * @return * @throws IOException */ private static String readAll(File textFile) throws IOException { return Files.toString(textFile, Charset.defaultCharset()); } private static void usage() { System.out.println("Usage:"); System.out.println("MatchingStandardLicenses textfile.txt"); System.out.println(" textfile.txt is a text file containing the license text to compare."); } }