public static InstallDetails install(Project project, ImmutableMap<String, Asset> add, Set<PackageManifest> targetManifests) { Map<String, File> filesByGUID = buildGUIDToUnitypackageMap(targetManifests); HashMultimap<File, String> guidsByFile = HashMultimap.create(); for (Map.Entry<String, Asset> entry : add.entrySet()) { Log.L.info("add " + entry.getKey() + " " + entry.getValue().getPath()); File f = filesByGUID.get(entry.getKey()); Log.L.info("Putting " + f.getPath() + " " + entry.getKey()); guidsByFile.put(f, entry.getKey()); } Set<File> completePackages = Sets.newHashSet(); HashMultimap<File, String> partialPackages = HashMultimap.create(); for (File file : guidsByFile.keys()) { PackageManifest manifest = findManifest(file, targetManifests); if (manifest.getFiles().size() == guidsByFile.get(file).size()) { Log.L.info("Install all {}", file.getName()); completePackages.add(file); } else { Log.L.info("Install partially {}", file.getName()); partialPackages.putAll(file, guidsByFile.values()); } } Log.L.info("Installing {} complete packages, {} partial", completePackages.size(), partialPackages.size()); return new InstallDetails(ImmutableSet.copyOf(completePackages), mergeArchives(project, partialPackages)); }
public static InstallDetails install(Project project, ImmutableMap<String, Asset> add, Set<PackageManifest> targetManifests) { Map<String, File> filesByGUID = buildGUIDToUnitypackageMap(targetManifests); HashMultimap<File, String> guidsByFile = HashMultimap.create(); for (Map.Entry<String, Asset> entry : add.entrySet()) { Log.L.info("add " + entry.getKey() + " " + entry.getValue().getPath()); File f = filesByGUID.get(entry.getKey()); Log.L.info("Putting " + f.getPath() + " " + entry.getKey()); guidsByFile.put(f, entry.getKey()); } Set<File> completePackages = Sets.newHashSet(); HashMultimap<File, String> partialPackages = HashMultimap.create(); for (File file : guidsByFile.keys()) { PackageManifest manifest = findManifest(file, targetManifests); if (manifest.getFiles().size() == guidsByFile.get(file).size()) { Log.L.info("Install all {}", file.getName()); completePackages.add(file); } else { Log.L.info("Install partially {}", file.getName()); partialPackages.putAll(file, guidsByFile.values()); } } Log.L.info("Installing {} complete packages, {} partial", completePackages.size(), partialPackages.size()); return new InstallDetails(ImmutableSet.copyOf(completePackages), mergeArchives(project, partialPackages)); }