/** * <div class="ja"> ネットワークインアーフェースからIP一覧を得る * * @return 動作マシンのネットワーク設定が所有しているIPアドレス配列 * @exception Exception </div> */ private static NSArray<String> _machineIpList() throws Exception { // ワーク用 NSMutableArray<String> workArray = new NSMutableArray<String>(); // 全ネットワーク・インタフェース Enumeration<NetworkInterface> enNi = NetworkInterface.getNetworkInterfaces(); while (enNi.hasMoreElements()) { NetworkInterface ni = enNi.nextElement(); // 全 InetAddress Enumeration<InetAddress> enIp = ni.getInetAddresses(); while (enIp.hasMoreElements()) { String ip = enIp.nextElement().getHostAddress(); // IP アドレスとプロパティー内に保存されている優先順を合体する if ((ip.indexOf(":") < 0) && (!ip.equals(LOCAL_IP_ADDRESS))) { String ipPri = ERXProperties.stringFor2Keys( "er.erxtensions.ERXTcpIp.IpPriority" + ip, "wodka.a10.A10TcpIp.IpPriority" + ip); if (ERXStringUtilities.stringIsNullOrEmpty(ipPri)) { ipPri = "9999"; } else { ipPri = ERXStringUtilities.trimZeroInFrontOfNumbers(ipPri); while (ipPri.length() < 4) { ipPri = "0" + ipPri; } } workArray.addObject(ipPri + UNDER_BAR + ip); } } } // 優先順位順に並べ、IPのみ抜き出してArrayListにする workArray.sortUsingComparator(NSComparator.AscendingStringComparator); // 戻す配列の準備 NSMutableArray<String> resultArray = new NSMutableArray<String>(workArray.count()); for (String obj : workArray) { resultArray.addObject(obj.substring(5)); } return resultArray.immutableClone(); }
/** * Takes an unordered set and creates a sorted array from its elements. * * @param <T> type of set contents * @param set the set containing the elements to sort * @param comparator a comparator * @return an array with sorted elements * @throws NSComparator.ComparisonException if comparator cannot sort these elements * @throws IllegalArgumentException if comparator is <code>null</code> */ public static <T> NSArray<T> sortedArrayFromSet(NSSet<T> set, NSComparator comparator) throws NSComparator.ComparisonException { NSMutableArray<T> array = new NSMutableArray<>((T[]) set.toArray()); array.sortUsingComparator(comparator); return array; }