Java Code Examples for com.google.common.collect.SortedSetMultimap#get()

The following examples show how to use com.google.common.collect.SortedSetMultimap#get() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: HmfGenePanelSupplierTest.java    From hmftools with GNU General Public License v3.0 5 votes vote down vote up
@Test
public void allRegionsAreSortedCorrectly() {
    final SortedSetMultimap<String, HmfTranscriptRegion> geneRegions = HmfGenePanelSupplier.allGenesPerChromosomeMap37();
    for (final String chromosome : geneRegions.keySet()) {
        long start = 0;
        for (final HmfTranscriptRegion hmfTranscriptRegion : geneRegions.get(chromosome)) {
            assertTrue(hmfTranscriptRegion.start() >= start);
            start = hmfTranscriptRegion.start();
        }
    }
}
 
Example 2
Source File: MultithreadedTableProvider.java    From datacollector with Apache License 2.0 4 votes vote down vote up
/**
 * Checks whether any tables have had partitioning turned off or not, and updates the partition map appropriately
 *
 * @param reconstructedPartitions the reconstructed partitions (may be modified)
 */
private void handlePartitioningTurnedOffOrOn(
    SortedSetMultimap<TableContext, TableRuntimeContext> reconstructedPartitions
) {

  for (TableContext tableContext : reconstructedPartitions.keySet()) {
    final SortedSet<TableRuntimeContext> partitions = reconstructedPartitions.get(tableContext);
    final TableRuntimeContext lastPartition = partitions.last();
    final TableContext sourceTableContext = lastPartition.getSourceTableContext();
    Utils.checkState(
        sourceTableContext.equals(tableContext),
        String.format(
            "Source table context for %s should match TableContext map key of %s",
            lastPartition.getDescription(),
            tableContext.getQualifiedName()
        )
    );

    final boolean partitioningTurnedOff = lastPartition.isPartitioned()
        && sourceTableContext.getPartitioningMode() == PartitioningMode.DISABLED;
    final boolean partitioningTurnedOn = !lastPartition.isPartitioned()
        && sourceTableContext.isPartitionable()
        && sourceTableContext.getPartitioningMode() != PartitioningMode.DISABLED;

    if (!partitioningTurnedOff && !partitioningTurnedOn) {
      continue;
    }

    final Map<String, String> nextStartingOffsets = new HashMap<>();
    final Map<String, String> nextMaxOffsets = new HashMap<>();

    final int newPartitionSequence = lastPartition.getPartitionSequence() > 0 ? lastPartition.getPartitionSequence() + 1 : 1;
    if (partitioningTurnedOff) {
      LOG.info(
          "Table {} has switched from partitioned to non-partitioned; partition sequence {} will be the last (with" +
              " no max offsets)",
          sourceTableContext.getQualifiedName(),
          newPartitionSequence
      );

      lastPartition.getPartitionOffsetStart().forEach(
          (col, off) -> {
            String basedOnStartOffset = lastPartition.generateNextPartitionOffset(col, off);
            nextStartingOffsets.put(col, basedOnStartOffset);
          }
      );

    } else if (partitioningTurnedOn) {

      lastPartition.getPartitionOffsetStart().forEach(
          (col, off) -> {
            String basedOnStoredOffset = lastPartition.getInitialStoredOffsets().get(col);
            nextStartingOffsets.put(col, basedOnStoredOffset);
          }
      );

      nextStartingOffsets.forEach(
          (col, off) -> nextMaxOffsets.put(col, lastPartition.generateNextPartitionOffset(col, off))
      );

      if (!reconstructedPartitions.remove(sourceTableContext, lastPartition)) {
        throw new IllegalStateException(String.format(
            "Failed to remove partition %s for table %s in switching partitioning from off to on",
            lastPartition.getDescription(),
            sourceTableContext.getQualifiedName()
        ));
      }

      LOG.info(
          "Table {} has switched from non-partitioned to partitioned; using last stored offsets as the starting" +
              " offsets for the new partition {}",
          sourceTableContext.getQualifiedName(),
          newPartitionSequence
      );
    }

    final TableRuntimeContext nextPartition = new TableRuntimeContext(
        sourceTableContext,
        lastPartition.isUsingNonIncrementalLoad(),
        (lastPartition.isPartitioned() && !partitioningTurnedOff) || partitioningTurnedOn,
        newPartitionSequence,
        nextStartingOffsets,
        nextMaxOffsets
    );

    reconstructedPartitions.put(sourceTableContext, nextPartition);
  }
}
 
Example 3
Source File: MergeAndroidResourcesStep.java    From buck with Apache License 2.0 4 votes vote down vote up
@VisibleForTesting
void writePerPackageRDotJava(
    SortedSetMultimap<String, RDotTxtEntry> packageToResources, ProjectFilesystem filesystem)
    throws IOException {
  for (String rDotJavaPackage : packageToResources.keySet()) {
    Path outputFile = getPathToRDotJava(rDotJavaPackage);
    filesystem.mkdirs(outputFile.getParent());
    try (ThrowingPrintWriter writer =
        new ThrowingPrintWriter(filesystem.newFileOutputStream(outputFile))) {
      writer.format("package %s;\n\n", rDotJavaPackage);
      writer.format("public class %s {\n", rName);

      ImmutableList.Builder<String> customDrawablesBuilder = ImmutableList.builder();
      ImmutableList.Builder<String> grayscaleImagesBuilder = ImmutableList.builder();
      RType lastType = null;

      for (RDotTxtEntry res : packageToResources.get(rDotJavaPackage)) {
        RType type = res.type;
        if (!type.equals(lastType)) {
          // If the previous type needs to be closed, close it.
          if (lastType != null) {
            writer.println("  }\n");
          }

          // Now start the block for the new type.
          writer.format("  public static class %s {\n", type);
          lastType = type;
        }

        // Write out the resource.
        // Write as an int.
        writer.format(
            "    public static%s%s %s=%s;\n",
            forceFinalResourceIds ? " final " : " ", res.idType, res.name, res.idValue);

        if (type == RType.DRAWABLE && res.customType == RDotTxtEntry.CustomDrawableType.CUSTOM) {
          customDrawablesBuilder.add(res.idValue);
        } else if (type == RType.DRAWABLE
            && res.customType == RDotTxtEntry.CustomDrawableType.GRAYSCALE_IMAGE) {
          grayscaleImagesBuilder.add(res.idValue);
        }
      }

      // If some type was written (e.g., the for loop was entered), then the last type needs to be
      // closed.
      if (lastType != null) {
        writer.println("  }\n");
      }

      ImmutableList<String> customDrawables = customDrawablesBuilder.build();
      if (customDrawables.size() > 0) {
        // Add a new field for the custom drawables.
        writer.format("  public static final int[] custom_drawables = ");
        writer.format("{ %s };\n", Joiner.on(",").join(customDrawables));
        writer.format("\n");
      }

      ImmutableList<String> grayscaleImages = grayscaleImagesBuilder.build();
      if (grayscaleImages.size() > 0) {
        // Add a new field for the custom drawables.
        writer.format("  public static final int[] grayscale_images = ");
        writer.format("{ %s };\n", Joiner.on(",").join(grayscaleImages));
        writer.format("\n");
      }

      // Close the class definition.
      writer.println("}");
    }
  }
}
 
Example 4
Source File: MergeAndroidResourcesStepTest.java    From buck with Apache License 2.0 4 votes vote down vote up
@Test
public void testGenerateRDotJavaForMultipleSymbolsFiles() throws DuplicateResourceException {
  RDotTxtEntryBuilder entriesBuilder = new RDotTxtEntryBuilder();

  // Merge everything into the same package space.
  String sharedPackageName = "com.facebook.abc";
  entriesBuilder.add(
      new RDotTxtFile(
          sharedPackageName,
          "a-R.txt",
          ImmutableList.of(
              "int id a1 0x7f010001", "int id a2 0x7f010002", "int string a1 0x7f020001")));

  entriesBuilder.add(
      new RDotTxtFile(
          sharedPackageName,
          "b-R.txt",
          ImmutableList.of(
              "int id b1 0x7f010001", "int id b2 0x7f010002", "int string a1 0x7f020001")));

  entriesBuilder.add(
      new RDotTxtFile(
          sharedPackageName,
          "c-R.txt",
          ImmutableList.of("int attr c1 0x7f010001", "int[] styleable c1 { 0x7f010001 }")));

  SortedSetMultimap<String, RDotTxtEntry> packageNameToResources =
      MergeAndroidResourcesStep.sortSymbols(
          entriesBuilder.buildFilePathToPackageNameSet(),
          Optional.empty(),
          ImmutableMap.of(),
          Optional.empty(),
          /* bannedDuplicateResourceTypes */ EnumSet.noneOf(RType.class),
          ImmutableSet.of(),
          entriesBuilder.getProjectFilesystem(),
          false);

  assertEquals(1, packageNameToResources.keySet().size());
  SortedSet<RDotTxtEntry> resources = packageNameToResources.get(sharedPackageName);
  assertEquals(7, resources.size());

  Set<String> uniqueEntries = new HashSet<>();
  for (RDotTxtEntry resource : resources) {
    if (!resource.type.equals(STYLEABLE)) {
      assertFalse(
          "Duplicate ids should be fixed by renumerate=true; duplicate was: " + resource.idValue,
          uniqueEntries.contains(resource.idValue));
      uniqueEntries.add(resource.idValue);
    }
  }

  assertEquals(6, uniqueEntries.size());

  // All good, no need to further test whether we can write the Java file correctly...
}
 
Example 5
Source File: MergeAndroidResourcesStepTest.java    From buck with Apache License 2.0 4 votes vote down vote up
@Test
public void testGenerateRDotJavaForWithStyleables() throws DuplicateResourceException {
  RDotTxtEntryBuilder entriesBuilder = new RDotTxtEntryBuilder();

  // Merge everything into the same package space.
  String sharedPackageName = "com.facebook.abc";
  entriesBuilder.add(
      new RDotTxtFile(
          sharedPackageName,
          "a-R.txt",
          ImmutableList.of(
              "int attr android_layout 0x010100f2",
              "int attr buttonPanelSideLayout 0x7f01003a",
              "int attr listLayout 0x7f01003b",
              "int[] styleable AlertDialog { 0x7f01003a, 0x7f01003b, 0x010100f2 }",
              "int styleable AlertDialog_android_layout 2",
              "int styleable AlertDialog_buttonPanelSideLayout 0",
              "int styleable AlertDialog_multiChoiceItemLayout 1")));
  entriesBuilder.add(
      new RDotTxtFile(
          sharedPackageName,
          "b-R.txt",
          ImmutableList.of(
              "int id a1 0x7f010001",
              "int id a2 0x7f010002",
              "int attr android_layout_gravity 0x7f078008",
              "int attr background 0x7f078009",
              "int attr backgroundSplit 0x7f078008",
              "int attr backgroundStacked 0x7f078010",
              "int attr layout_heightPercent 0x7f078012",
              "int[] styleable ActionBar {  }",
              "int styleable ActionBar_background 10",
              "int styleable ActionBar_backgroundSplit 12",
              "int styleable ActionBar_backgroundStacked 11",
              "int[] styleable ActionBarLayout { 0x7f060008 }",
              "int styleable ActionBarLayout_android_layout 0",
              "int styleable ActionBarLayout_android_layout_gravity 1",
              "int[] styleable PercentLayout_Layout { }",
              "int styleable PercentLayout_Layout_layout_aspectRatio 9",
              "int styleable PercentLayout_Layout_layout_heightPercent 1")));

  SortedSetMultimap<String, RDotTxtEntry> packageNameToResources =
      MergeAndroidResourcesStep.sortSymbols(
          entriesBuilder.buildFilePathToPackageNameSet(),
          Optional.empty(),
          ImmutableMap.of(),
          Optional.empty(),
          /* bannedDuplicateResourceTypes */ EnumSet.noneOf(RType.class),
          ImmutableSet.of(),
          entriesBuilder.getProjectFilesystem(),
          false);

  assertEquals(23, packageNameToResources.size());

  ArrayList<RDotTxtEntry> resources =
      new ArrayList<>(packageNameToResources.get(sharedPackageName));
  assertEquals(23, resources.size());

  System.out.println(resources);

  ImmutableList<RDotTxtEntry> fakeRDotTxtEntryWithIDS =
      ImmutableList.of(
          FakeEntry.createWithId(INT, ATTR, "android_layout_gravity", "0x07f01005"),
          FakeEntry.createWithId(INT, ATTR, "background", "0x07f01006"),
          FakeEntry.createWithId(INT, ATTR, "backgroundSplit", "0x07f01007"),
          FakeEntry.createWithId(INT, ATTR, "backgroundStacked", "0x07f01008"),
          FakeEntry.createWithId(INT, ATTR, "buttonPanelSideLayout", "0x07f01001"),
          FakeEntry.createWithId(INT, ATTR, "layout_heightPercent", "0x07f01009"),
          FakeEntry.createWithId(INT, ATTR, "listLayout", "0x07f01002"),
          FakeEntry.createWithId(INT, ID, "a1", "0x07f01003"),
          FakeEntry.createWithId(INT, ID, "a2", "0x07f01004"),
          FakeEntry.createWithId(
              INT_ARRAY, STYLEABLE, "ActionBar", "{ 0x07f01006,0x07f01007,0x07f01008 }"),
          FakeEntry.createWithId(INT, STYLEABLE, "ActionBar_background", "0"),
          FakeEntry.createWithId(INT, STYLEABLE, "ActionBar_backgroundSplit", "1"),
          FakeEntry.createWithId(INT, STYLEABLE, "ActionBar_backgroundStacked", "2"),
          FakeEntry.createWithId(
              INT_ARRAY, STYLEABLE, "ActionBarLayout", "{ 0x010100f2,0x07f01005 }"),
          FakeEntry.createWithId(INT, STYLEABLE, "ActionBarLayout_android_layout", "0"),
          FakeEntry.createWithId(INT, STYLEABLE, "ActionBarLayout_android_layout_gravity", "1"),
          FakeEntry.createWithId(
              INT_ARRAY, STYLEABLE, "AlertDialog", "{ 0x010100f2,0x07f01001,0x7f01003b }"),
          FakeEntry.createWithId(INT, STYLEABLE, "AlertDialog_android_layout", "0"),
          FakeEntry.createWithId(INT, STYLEABLE, "AlertDialog_buttonPanelSideLayout", "1"),
          FakeEntry.createWithId(INT, STYLEABLE, "AlertDialog_multiChoiceItemLayout", "2"),
          FakeEntry.createWithId(
              INT_ARRAY, STYLEABLE, "PercentLayout_Layout", "{ 0x00000000,0x07f01009 }"),
          FakeEntry.createWithId(INT, STYLEABLE, "PercentLayout_Layout_layout_aspectRatio", "0"),
          FakeEntry.createWithId(
              INT, STYLEABLE, "PercentLayout_Layout_layout_heightPercent", "1"));

  assertEquals(createTestingFakesWithIds(resources), fakeRDotTxtEntryWithIDS);
}