/** * Return the text of the license that the user has granted/must grant before for submit the item. * The license text is build using the template defined for the collection if any or the wide site * configuration. In the license text the following substitution can be used. {0} the eperson * firstname<br> * {1} the eperson lastname<br> * {2} the eperson email<br> * {3} the current date<br> * {4} the collection object that will be formatted using the appropriate LicenseArgumentFormatter * plugin (if defined)<br> * {5} the item object that will be formatted using the appropriate LicenseArgumentFormatter * plugin (if defined)<br> * {6} the eperson object that will be formatted using the appropriate LicenseArgumentFormatter * plugin (if defined)<br> * {x} any addition argument supplied wrapped in the LicenseArgumentFormatter based on his type * (map key) * * @see LicenseArgumentFormatter * @param locale * @param collection * @param item * @param eperson * @param additionalInfo * @return the license text obtained substituting the provided argument in the license template */ public static String getLicenseText( Locale locale, Collection collection, Item item, EPerson eperson, Map<String, Object> additionalInfo) { Formatter formatter = new Formatter(locale); // EPerson firstname, lastname, email and the current date // will be available as separate arguments to make more simple produce // "tradition" text license // collection, item and eperson object will be also available int numArgs = 7 + (additionalInfo != null ? additionalInfo.size() : 0); Object[] args = new Object[numArgs]; args[0] = eperson.getFirstName(); args[1] = eperson.getLastName(); args[2] = eperson.getEmail(); args[3] = new java.util.Date(); args[4] = new FormattableArgument("collection", collection); args[5] = new FormattableArgument("item", item); args[6] = new FormattableArgument("eperson", eperson); if (additionalInfo != null) { int i = 7; // Start is next index after previous args for (Map.Entry<String, Object> info : additionalInfo.entrySet()) { args[i] = new FormattableArgument(info.getKey(), info.getValue()); i++; } } String licenseTemplate = collection.getLicense(); return formatter.format(licenseTemplate, args).toString(); }