1 /* 2 * Copyright (c) 2014, 2019, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package jdk.jpackage.internal; 27 28 import java.util.Map; 29 import java.util.ResourceBundle; 30 import java.util.function.BiFunction; 31 import java.util.function.Function; 32 33 class WindowsBundlerParam<T> extends StandardBundlerParam<T> { 34 35 private static final ResourceBundle I18N = ResourceBundle.getBundle( 36 "jdk.jpackage.internal.resources.WinResources"); 37 38 WindowsBundlerParam(String name, String description, String id, 39 Class<T> valueType, 40 Function<Map<String, ? super Object>, T> defaultValueFunction, 41 BiFunction<String, 42 Map<String, ? super Object>, T> stringConverter) { 43 super(name, description, id, valueType, 44 defaultValueFunction, stringConverter); 45 } 46 47 static final BundlerParamInfo<String> INSTALLER_FILE_NAME = 48 new StandardBundlerParam<> ( 49 I18N.getString("param.installer-name.name"), 50 I18N.getString("param.installer-name.description"), 51 "win.installerName", 52 String.class, 53 params -> { 54 String nm = APP_NAME.fetchFrom(params); 55 if (nm == null) return null; 56 57 String version = VERSION.fetchFrom(params); 58 if (version == null) { 59 return nm; 60 } else { 61 return nm + "-" + version; 62 } 63 }, 64 (s, p) -> s); 65 66 static final BundlerParamInfo<String> APP_REGISTRY_NAME = 67 new StandardBundlerParam<> ( 68 I18N.getString("param.registry-name.name"), 69 I18N.getString("param.registry-name.description"), 70 Arguments.CLIOptions.WIN_REGISTRY_NAME.getId(), 71 String.class, 72 params -> { 73 String nm = APP_NAME.fetchFrom(params); 74 if (nm == null) return null; 75 76 return nm.replaceAll("[^-a-zA-Z\\.0-9]", ""); 77 }, 78 (s, p) -> s); 79 80 static final StandardBundlerParam<String> MENU_GROUP = 81 new StandardBundlerParam<>( 82 I18N.getString("param.menu-group.name"), 83 I18N.getString("param.menu-group.description"), 84 Arguments.CLIOptions.WIN_MENU_GROUP.getId(), 85 String.class, 86 params -> params.containsKey(VENDOR.getID()) 87 ? VENDOR.fetchFrom(params) 88 : params.containsKey(CATEGORY.getID()) 89 ? CATEGORY.fetchFrom(params) 90 : I18N.getString("param.menu-group.default"), 91 (s, p) -> s 92 ); 93 94 static final StandardBundlerParam<Boolean> BIT_ARCH_64 = 95 new StandardBundlerParam<>( 96 I18N.getString("param.64-bit.name"), 97 I18N.getString("param.64-bit.description"), 98 "win.64Bit", 99 Boolean.class, 100 params -> System.getProperty("os.arch").contains("64"), 101 (s, p) -> Boolean.valueOf(s) 102 ); 103 104 static final StandardBundlerParam<Boolean> BIT_ARCH_64_RUNTIME = 105 new StandardBundlerParam<>( 106 I18N.getString("param.runtime-64-bit.name"), 107 I18N.getString("param.runtime-64-bit.description"), 108 "win.64BitJreRuntime", 109 Boolean.class, 110 params -> { 111 WinAppBundler.extractFlagsFromRuntime(params); 112 return "64".equals(params.get(".runtime.bit-arch")); 113 }, 114 (s, p) -> Boolean.valueOf(s) 115 ); 116 117 static final BundlerParamInfo<Boolean> INSTALLDIR_CHOOSER = 118 new StandardBundlerParam<> ( 119 I18N.getString("param.installdir-chooser.name"), 120 I18N.getString("param.installdir-chooser.description"), 121 Arguments.CLIOptions.WIN_DIR_CHOOSER.getId(), 122 Boolean.class, 123 params -> Boolean.FALSE, 124 (s, p) -> Boolean.valueOf(s) 125 ); 126 }