public static int[] buildPartitions(String[] partitionArray) throws ConfigurationException { IntSet partitions = new IntOpenHashSet(); try { for (int i = 0; i < partitionArray.length; ++i) { Matcher matcher = PARTITION_PATTERN.matcher(partitionArray[i]); if (!matcher.matches()) { throw new ConfigurationException("Invalid partition: " + partitionArray[i]); } String[] partitionRange = partitionArray[i].split("-"); int start = Integer.parseInt(partitionRange[0]); int end; if (partitionRange.length > 1) { end = Integer.parseInt(partitionRange[1]); if (end < start) { throw new ConfigurationException("invalid partition range: " + partitionArray[i]); } } else { end = start; } for (int k = start; k <= end; ++k) { partitions.add(k); } } } catch (Exception e) { throw new ConfigurationException( "Error parsing '" + SENSEI_PROPERTIES + "': " + PARTITIONS + "=" + Arrays.toString(partitionArray), e); } int[] ret = partitions.toIntArray(); Arrays.sort(ret); return ret; }
public static void main(String[] args) throws Exception { blacklist = loadCreation(PartitionsAndFiles.getBlackList()); whitelist = loadCreation(PartitionsAndFiles.getWhiteList()); System.out.println("Read lists: wl: " + whitelist.size() + " bl:" + blacklist.size()); PropagateBlacklist pb = initialPropagation(PartitionsAndFiles.getLinkFrom(), PartitionsAndFiles.getLinkTo()); int pass = 1; logger.info( "Pass:"******" wl: " + whitelist.size() + " bl:" + blacklist.size() + " remaining links:" + pb.linkFrom.size()); while (pb.blacklisted > 0) { pass++; PropagateBlacklist oldPb = pb; pb = new PropagateBlacklist(); pb.process(pb.linkFrom, pb.linkTo); logger.info( "Pass:"******" wl: " + whitelist.size() + " bl:" + blacklist.size() + " remaining links:" + pb.linkFrom.size()); } new FileOpener() .writeObject(PartitionsAndFiles.getExpandedBlackListFile(), blacklist.toIntArray()); }