@Override
  public Iterator<T> iterator() {
    pruneToDuration();
    try {
      @SuppressWarnings("unchecked")
      final List<TimeWrapped> dc = Arrays.asList(queue.toArray());
      Collections.sort(dc);
      return new Iterator<T>() {
        List<TimeWrapped> dataclone = dc;
        int index = 0;
        TimeWrapped last;

        @Override
        public boolean hasNext() {
          return index < dataclone.size();
        }

        @Override
        public T next() {
          return (last = dataclone.get(index++)).getWrapped();
        }

        @Override
        public void remove() {
          queue.remove(last);
          decrement(last.getWrapped());
        }
      };
    } catch (ClassCastException e) {
      System.out.print(queue.toString());
      e.printStackTrace();
      System.exit(1);
    }
    return null;
  }
  /* THIS SECTION IN STASIS. The plan is to use the WeightedDirectedGraph class with
   * an optimized exact solution to the MWIS. Not there yet though. **/
  public Iterable<Long> findBestNonOverlappingGraph(Long[] relIds) {

    boolean trivialTestCase = false;

    if (trivialTestCase) {
      return Arrays.asList(relIds);
    }

    // vertices in this graph represent candidate relationships
    // edges represent overlap in the mrca sets between pairs of candidate relationships
    WeightedUndirectedGraph G = new WeightedUndirectedGraph();

    for (long relId : relIds) {
      G.addNode(relId, getWeight(relId));
    }

    // attach this candidate rel to any others with overlapping descendant sets
    for (int i = 0; i < relIds.length; i++) {
      long a = getStartNodeId(relIds[i]);
      for (int j = i + 1; j < relIds.length; j++) {
        long b = getStartNodeId(relIds[j]);
        if (nodeMrcaTipsAndInternal.get(a).containsAny(nodeMrcaTipsAndInternal.get(b))) {
          G.getNode(a).attachTo(b);
        }
      }
    }

    // find a set S' of vertices such that the total weight of S' is maximized, and no two vertices
    // in S' share an edge
    // this corresponds to a set of non-overlapping candidate relationships with maximum weight
    //		return new LPWeightedIS(G);
    return null; // garbage...
  }
 @SuppressWarnings("unchecked")
 @RequestMapping(
     value = "timeAggregation",
     method = RequestMethod.GET,
     produces = "application/json")
 public @ResponseBody List<TimeAggregation> getTimeAggregation() {
   return Arrays.asList(TimeAggregation.values());
 }
Beispiel #4
0
 @SuppressWarnings("unchecked")
 @Override
 public List<ItemStack> getDrops(
     IBlockAccess world, BlockPos pos, IBlockState state, int fortune) {
   return new ArrayList<ItemStack>(
       Arrays.asList(
           new ItemStack[] {
             new ItemStack(
                 UItems.infectedcrop, MathHelper.getRandomIntegerInRange(new Random(), 1, 4))
           }));
 }
 /** Export this snapshot to GTFS, using the validity range in the snapshot. */
 public ProcessGtfsSnapshotExport(Snapshot snapshot, File output) {
   this(Arrays.asList(new Tuple2[] {snapshot.id}), output, snapshot.validFrom, snapshot.validTo);
 }
  @Test
  public void testRegistryEntries() throws Exception {
    int startingPort = 9090;
    System.err.println(executeCommand("fabric:create -n root"));
    CuratorFramework curator = getCurator();
    // Wait for zookeeper service to become available.
    System.err.println(
        executeCommand("fabric:profile-create --parents feature-camel fabric-camel"));
    System.err.println(
        executeCommand("fabric:profile-create --parents fabric-camel fabric-camel-server"));
    System.err.println(
        executeCommand("fabric:profile-create --parents fabric-camel fabric-camel-client"));
    System.err.println(
        executeCommand(
            "fabric:profile-edit --repositories mvn:org.fusesource.examples.fabric-camel-cluster/features/"
                + System.getProperty("fabric.version")
                + "/xml/features fabric-camel"));

    System.err.println(
        executeCommand("fabric:profile-edit --features camel-server fabric-camel-server"));
    executeCommand("fabric:profile-edit --features camel-client fabric-camel-client");

    Set<Container> containers =
        ContainerBuilder.create(3)
            .withName("fabric-camel")
            .withProfiles("fabric-camel")
            .assertProvisioningResult()
            .build();

    // We will use the first container as a client and the rest as servers.
    Container camelClientContainer = containers.iterator().next();
    containers.remove(camelClientContainer);
    Set<Container> camelServerContainers = new LinkedHashSet<Container>(containers);

    int index = 1;
    for (Container c : camelServerContainers) {
      setData(curator, ZkPath.CONTAINER_PROVISION_RESULT.getPath(c.getId()), "changing");
      executeCommand(
          "fabric:container-connect -u admin -p admin "
              + camelClientContainer.getId()
              + " log:set DEBUG");
      System.err.println(
          executeCommand(
              "fabric:profile-create --parents fabric-camel-server fabric-camel-server-" + index));
      System.err.println(
          executeCommand(
              "fabric:profile-edit --pid io.fabric8.examples.camel.loadbalancing.server/portNumber="
                  + (startingPort++)
                  + " fabric-camel-server-"
                  + index));
      System.err.println(executeCommand("fabric:profile-display fabric-camel-server-" + index));
      System.err.println(
          executeCommand(
              "fabric:container-change-profile "
                  + c.getId()
                  + " fabric-camel-server-"
                  + (index++)));
    }

    Provision.provisioningSuccess(camelServerContainers, PROVISION_TIMEOUT);
    setData(
        curator,
        ZkPath.CONTAINER_PROVISION_RESULT.getPath(camelClientContainer.getId()),
        "changing");
    System.err.println(
        executeCommand(
            "fabric:container-change-profile "
                + camelClientContainer.getId()
                + " fabric-camel-client"));
    Provision.provisioningSuccess(
        Arrays.asList(new Container[] {camelClientContainer}), PROVISION_TIMEOUT);

    System.err.println(executeCommand("fabric:container-list"));
    System.err.println(executeCommand("fabric:profile-display --overlay fabric-camel-server"));

    // Check that the entries have been properly propagated.
    Assert.assertNotNull(exists(curator, "/fabric/registry/camel/endpoints/"));
    Assert.assertEquals(1, getChildren(curator, "/fabric/registry/camel/endpoints/").size());
    Thread.sleep(5000);
    System.err.println(
        executeCommand(
            "fabric:container-connect -u admin -p admin "
                + camelClientContainer.getId()
                + " camel:route-list"));
    String response =
        new AnsiString(
                executeCommand(
                    "fabric:container-connect -u admin -p admin "
                        + camelClientContainer.getId()
                        + " camel:route-info fabric-client | grep Failed"))
            .getPlain()
            .toString();
    System.err.println(response);
    int failed = Integer.parseInt(response.replaceAll("[^0-9]", ""));
    Assert.assertEquals("Failed exchanges found on client", 0, failed);

    // We want to kill all but one server, so we take out the first and keep it to the end.
    Container lastActiveServerContainer = camelServerContainers.iterator().next();
    camelServerContainers.remove(lastActiveServerContainer);
    for (Container c : camelServerContainers) {
      c.destroy();
      Thread.sleep(25000);
      response =
          new AnsiString(
                  executeCommand(
                      "fabric:container-connect -u admin -p admin "
                          + camelClientContainer.getId()
                          + " camel:route-info fabric-client | grep Failed"))
              .getPlain()
              .toString();
      System.err.println(response);
      failed = Integer.parseInt(response.replaceAll("[^0-9]", ""));
      Assert.assertEquals(
          "Failed exchanges found after container:" + c.getId() + " shut down", 0, failed);
    }
  }
  private List<Long> findBestNonOverlapping(Collection<Relationship> rels) {

    if (rels.size() < 1) {
      if (VERBOSE) {
        System.out.println("(no non-singleton rels to select from)");
      }
      return new ArrayList<Long>();
    }

    TLongBitArraySet[] mrcaSetsForRels = new TLongBitArraySet[rels.size()];
    double[] weights = new double[rels.size()];
    Long[] relIds = new Long[rels.size()];

    // used to check if no overlap exists among any rels, if not don't bother with the mwis
    // really we could be smarter about this and find the rels that have no overlap and exclude them
    int taxSum = 0;

    HashSet<Long> uniqueTips = new HashSet<Long>();

    Iterator<Relationship> relsIter = rels.iterator();
    for (int i = 0; relsIter.hasNext(); i++) {
      Relationship rel = relsIter.next();

      TLongBitArraySet currDesc = mrcaTipsAndInternal(rel);

      // this represents a pathological case, so die horribly
      if (currDesc == null) {
        throw new IllegalStateException("Found a rel with no descendants: " + rel);
      }

      relIds[i] = rel.getId();
      mrcaSetsForRels[i] = currDesc;
      weights[i] = getScoreNodeCount(rel);

      //			long [] currTips = mrcaTips(rel);
      TLongBitArraySet currTips = mrcaTips(rel.getStartNode());
      taxSum += currTips.size();
      //			for (int j = 0; j < currTips.size(); j++) {
      //				uniqueTips.add(currTips.get(j));
      //			}
      for (long t : currTips) {
        uniqueTips.add(t);
      }

      if (VERBOSE) {
        System.out.println(
            rel.getId()
                + ": nodeMrca("
                + rel.getStartNode().getId()
                + ") = "
                + nodeMrcaTipsAndInternal.get(rel.getStartNode().getId())
                + ". score = "
                + weights[i]);
      }
    }

    System.out.println(
        "taxSum = "
            + taxSum
            + "; uniqueTips size = "
            + uniqueTips.size()
            + "; incoming rels = "
            + relIds.length);

    if (taxSum
        == uniqueTips
            .size()) { // if there is no conflict, skip the set comparisons and just add everything
                       // (saves major time)
      System.out.println("no conflict! saving all incoming rels.");
      return new ArrayList<Long>(Arrays.asList(relIds));

    } else if (relIds.length
        <= BruteWeightedIS
            .MAX_TRACTABLE_N) { // otherwise if the set is small enough find the exact MWIS solution
      return new BruteWeightedIS(relIds, weights, mrcaSetsForRels).best();

    } else { // otherwise we need to use the approximation method
      return new GreedyApproximateWeightedIS(relIds, weights, mrcaSetsForRels).best();
    }
  }