Example usage for com.google.common.base Functions forMap

List of usage examples for com.google.common.base Functions forMap

Introduction

In this page you can find the example usage for com.google.common.base Functions forMap.

Prototype

public static <K, V> Function<K, V> forMap(Map<K, V> map) 

Source Link

Document

Returns a function which performs a map lookup.

Usage

From source file:com.google.errorprone.refaster.UPlaceholderExpression.java

@Override
protected Choice<Unifier> defaultAction(Tree node, Unifier unifier) {
    // for now we only match JCExpressions
    if (placeholder().returnType().equals(UPrimitiveType.VOID) || !(node instanceof JCExpression)) {
        return Choice.none();
    }/*from www  .  j a v a2  s . co m*/
    final JCExpression expr = (JCExpression) node;

    PlaceholderVerificationVisitor verification = new PlaceholderVerificationVisitor(
            Collections2.transform(placeholder().requiredParameters(), Functions.forMap(arguments())),
            arguments().values());
    if (!verification.scan(node, unifier) || !verification.allRequiredMatched()) {
        return Choice.none();
    }

    /*
     * We copy the tree with a TreeCopier, replacing matches for the parameters with
     * PlaceholderParamIdents, and updating unifierHolder as we unify things, including forbidding
     * references to local variables, etc.
     */
    Choice<? extends PlaceholderUnificationVisitor.State<? extends JCExpression>> states = PlaceholderUnificationVisitor
            .create(TreeMaker.instance(unifier.getContext()), arguments()).unifyExpression(expr,
                    PlaceholderUnificationVisitor.State.create(List.<UVariableDecl>nil(), unifier, null));
    return states.thenOption(
            new Function<PlaceholderUnificationVisitor.State<? extends JCExpression>, Optional<Unifier>>() {
                @Override
                public Optional<Unifier> apply(
                        PlaceholderUnificationVisitor.State<? extends JCExpression> state) {
                    if (ImmutableSet.copyOf(state.seenParameters())
                            .containsAll(placeholder().requiredParameters())) {
                        Unifier resultUnifier = state.unifier();
                        JCExpression prevBinding = resultUnifier.getBinding(placeholder().exprKey());
                        if (prevBinding != null) {
                            return prevBinding.toString().equals(state.result().toString())
                                    ? Optional.of(resultUnifier)
                                    : Optional.<Unifier>absent();
                        }
                        JCExpression result = state.result();
                        if (!placeholder().matcher().matches(result,
                                UMatches.makeVisitorState(expr, resultUnifier))) {
                            return Optional.absent();
                        }
                        result.type = expr.type;
                        resultUnifier.putBinding(placeholder().exprKey(), result);
                        return Optional.of(resultUnifier);
                    } else {
                        return Optional.absent();
                    }
                }
            });
}

From source file:eu.project.ttc.engines.CasStatCounter.java

private void logStats() {
    Ordering<String> a = Ordering.natural().reverse().onResultOf(Functions.forMap(counters))
            .compound(Ordering.natural());
    Map<String, MutableInt> map = ImmutableSortedMap.copyOf(counters, a);

    Iterator<Entry<String, MutableInt>> it = map.entrySet().iterator();
    if (it.hasNext()) {// it will be empty if pipeline is run on empty collection
        Entry<String, MutableInt> mostFrequentAnno = it.next();
        LOGGER.info("[{}] {}: {} ", statName, mostFrequentAnno.getKey(),
                mostFrequentAnno.getValue().intValue());
    }//  w w w . j a  va 2  s. com
    int nbSyntacticVariants = 0;
    int nbMorphologicalVariants = 0;
    int nbGraphicalVariants = 0;
    int nbOccurrences = 0;
    int nbPrimaryOccOccurrences = 0;
    TermIndex tIndex = termIndexResource.getTermIndex();
    for (Term t : tIndex.getTerms()) {
        nbMorphologicalVariants += Iterables.size(t.getVariations(VariationType.MORPHOLOGICAL));
        nbSyntacticVariants += Iterables.size(t.getVariations(VariationType.SYNTACTICAL));
        nbGraphicalVariants += Iterables.size(t.getVariations(VariationType.GRAPHICAL));
        nbOccurrences += t.getOccurrences().size();
        for (TermOccurrence o : t.getOccurrences()) {
            if (o.isPrimaryOccurrence())
                nbPrimaryOccOccurrences++;
        }
    }
    // graphical variants are bidirectional
    nbGraphicalVariants /= 2;

    LOGGER.info("[{}] Nb terms:    {} [sw: {}, mw: {}]", statName, tIndex.getTerms().size(),
            Iterators.size(tIndex.singleWordTermIterator()), Iterators.size(tIndex.multiWordTermIterator()));
    LOGGER.info("[{}] Nb words:    {} [compounds: {}]", statName, tIndex.getWords().size(),
            Iterators.size(tIndex.compoundWordTermIterator()));
    LOGGER.info("[{}] Nb occurrences: {} [primary: {}]", statName, nbOccurrences, nbPrimaryOccOccurrences);
    LOGGER.info("[{}] Nb variants: {} [morph: {}, syn: {}, graph: {}]", statName,
            nbMorphologicalVariants + nbSyntacticVariants + nbGraphicalVariants, nbMorphologicalVariants,
            nbSyntacticVariants, nbGraphicalVariants);
}

From source file:org.eclipse.sirius.business.internal.contribution.RepresentationExtensionsFinder.java

/**
 * Returns the subset of the viewpoints currently selected in the session
 * which are relevant for the specified representation description. This
 * includes the representation description's parent Sirius, all the
 * Viewpoints it reuses, all the Viewpoints which extend any of those, and
 * recursively all the Viewpoints those reuses or are extended by.
 * //w  w  w  .java2 s .  c o  m
 * @param session
 *            the session in which the representation description is used.
 * @return all the Viewpoints which are relevant for the computation of the
 *         effective representation description.
 */
public LinkedHashSet<Viewpoint> findAllRelevantViewpoints(Session session) {
    RepresentationDescription mainRepresentationDescription = extensionTarget;
    LinkedHashSet<Viewpoint> result = Sets.newLinkedHashSet();
    Viewpoint mainVP = new RepresentationDescriptionQuery(mainRepresentationDescription).getParentViewpoint();
    if (mainVP != null) {
        BiMap<URI, Viewpoint> candidates = HashBiMap.create();
        for (Viewpoint vp : session.getSelectedViewpoints(false)) {
            Option<URI> uri = new ViewpointQuery(vp).getViewpointURI();
            if (uri.some()) {
                candidates.put(uri.get(), vp);
            }
        }
        ViewpointRelations relations = ((org.eclipse.sirius.business.internal.movida.registry.ViewpointRegistry) ViewpointRegistry
                .getInstance()).getRelations();
        /*
         * Seed the result with the representation's parent Sirius and
         * augment it with the viewpoints we reuse or are extended by until
         * we reach a fixpoint. Guaranteed to terminate as the set of
         * Viewpoints we can add is finite (at the most, all the selected
         * Viewpoints).
         */
        boolean changed = result.add(mainVP);
        while (changed) {
            changed = false;
            // Add all the Viewpoints we reuse.
            for (Viewpoint v1 : Lists.newArrayList(result)) {
                URI uri = candidates.inverse().get(v1);
                changed = changed || Iterables.addAll(result,
                        Iterables.transform(relations.getReuse().apply(uri), Functions.forMap(candidates)));
            }
            // Add all the Viewpoints which extend any of us.
            for (Viewpoint v : session.getSelectedViewpoints(false)) {
                URI extenderUri = candidates.inverse().get(v);
                for (URI extendeeUri : relations.getCustomize().apply(extenderUri)) {
                    if (result.contains(candidates.get(extendeeUri))) {
                        changed = changed || result.add(v);
                    }
                }
            }
        }
    }
    return result;
}

From source file:org.apache.ctakes.temporal.data.analysis.EventPrinterPipeline.java

public static String expandToNP(JCas jCas, IdentifiedAnnotation identifiedAnnotation) {

    // map each covering treebank node to its character length
    Map<TreebankNode, Integer> treebankNodeSizes = new HashMap<TreebankNode, Integer>();
    for (TreebankNode treebankNode : JCasUtil.selectCovering(jCas, TreebankNode.class,
            identifiedAnnotation.getBegin(), identifiedAnnotation.getEnd())) {

        // only expand nouns (and not verbs or adjectives)
        if (treebankNode instanceof TerminalTreebankNode) {
            if (!treebankNode.getNodeType().startsWith("N")) {
                return identifiedAnnotation.getCoveredText();
            }// w ww.  java  2s .  c  o  m
        }

        // because only nouns are expanded, look for covering NPs
        if (treebankNode.getNodeType().equals("NP")) {
            treebankNodeSizes.put(treebankNode, treebankNode.getCoveredText().length());
        }
    }

    // find the shortest covering treebank node
    List<TreebankNode> sortedTreebankNodes = new ArrayList<TreebankNode>(treebankNodeSizes.keySet());
    Function<TreebankNode, Integer> getValue = Functions.forMap(treebankNodeSizes);
    Collections.sort(sortedTreebankNodes, Ordering.natural().onResultOf(getValue));

    if (sortedTreebankNodes.size() > 0) {
        return sortedTreebankNodes.get(0).getCoveredText();
    }

    return identifiedAnnotation.getCoveredText();
}

From source file:edu.uci.ics.jung.samples.DemoLensVertexImageShaperDemo.java

/**
 * create an instance of a simple graph with controls to
 * demo the zoom features.//  ww  w.  j av  a 2  s .  c o  m
 * 
 */
public DemoLensVertexImageShaperDemo() {

    // create a simple graph for the demo
    graph = new DirectedSparseGraph<Number, Number>();
    Number[] vertices = createVertices(1);

    // a Map for the labels
    Map<Number, String> map = new HashMap<Number, String>();
    for (int i = 0; i < vertices.length; i++) {
        map.put(vertices[i], iconNames[i % iconNames.length]);
    }

    // a Map for the Icons
    Map<Number, Icon> iconMap = new HashMap<Number, Icon>();
    for (int i = 0; i < vertices.length; i++) {
        String name = "/images/topic" + iconNames[i] + ".gif";
        try {
            Icon icon = new LayeredIcon(
                    new ImageIcon(DemoLensVertexImageShaperDemo.class.getResource(name)).getImage());
            iconMap.put(vertices[i], icon);
        } catch (Exception ex) {
            System.err.println("You need slashdoticons.jar in your classpath to see the image " + name);
        }
    }

    createEdges(vertices);

    FRLayout<Number, Number> layout = new FRLayout<Number, Number>(graph);
    layout.setMaxIterations(100);
    vv = new VisualizationViewer<Number, Number>(layout, new Dimension(600, 600));

    Function<Number, Paint> vpf = new PickableVertexPaintTransformer<Number>(vv.getPickedVertexState(),
            Color.white, Color.yellow);
    vv.getRenderContext().setVertexFillPaintTransformer(vpf);
    vv.getRenderContext().setEdgeDrawPaintTransformer(
            new PickableEdgePaintTransformer<Number>(vv.getPickedEdgeState(), Color.black, Color.cyan));

    vv.setBackground(Color.white);

    final Function<Number, String> vertexStringerImpl = new VertexStringerImpl<Number>(map);
    vv.getRenderContext().setVertexLabelTransformer(vertexStringerImpl);
    vv.getRenderContext().setVertexLabelRenderer(new DefaultVertexLabelRenderer(Color.cyan));
    vv.getRenderContext().setEdgeLabelRenderer(new DefaultEdgeLabelRenderer(Color.cyan));

    // features on and off. For a real application, use VertexIconAndShapeFunction instead.
    final VertexIconShapeTransformer<Number> vertexImageShapeFunction = new VertexIconShapeTransformer<Number>(
            new EllipseVertexShapeTransformer<Number>());
    vertexImageShapeFunction.setIconMap(iconMap);

    final Function<Number, Icon> vertexIconFunction = Functions.forMap(iconMap);

    vv.getRenderContext().setVertexShapeTransformer(vertexImageShapeFunction);
    vv.getRenderContext().setVertexIconTransformer(vertexIconFunction);

    // Get the pickedState and add a listener that will decorate the
    // Vertex images with a checkmark icon when they are picked
    PickedState<Number> ps = vv.getPickedVertexState();
    ps.addItemListener(new PickWithIconListener(vertexIconFunction));

    vv.addPostRenderPaintable(new VisualizationViewer.Paintable() {
        int x;
        int y;
        Font font;
        FontMetrics metrics;
        int swidth;
        int sheight;
        String str = "Thank You, slashdot.org, for the images!";

        public void paint(Graphics g) {
            Dimension d = vv.getSize();
            if (font == null) {
                font = new Font(g.getFont().getName(), Font.BOLD, 20);
                metrics = g.getFontMetrics(font);
                swidth = metrics.stringWidth(str);
                sheight = metrics.getMaxAscent() + metrics.getMaxDescent();
                x = (d.width - swidth) / 2;
                y = (int) (d.height - sheight * 1.5);
            }
            g.setFont(font);
            Color oldColor = g.getColor();
            g.setColor(Color.lightGray);
            g.drawString(str, x, y);
            g.setColor(oldColor);
        }

        public boolean useTransform() {
            return false;
        }
    });

    // add a listener for ToolTips
    vv.setVertexToolTipTransformer(new ToStringLabeller());

    Container content = getContentPane();
    final GraphZoomScrollPane panel = new GraphZoomScrollPane(vv);
    content.add(panel);

    final DefaultModalGraphMouse<Number, Number> graphMouse = new DefaultModalGraphMouse<Number, Number>();
    vv.setGraphMouse(graphMouse);

    final ScalingControl scaler = new CrossoverScalingControl();

    JButton plus = new JButton("+");
    plus.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            scaler.scale(vv, 1.1f, vv.getCenter());
        }
    });
    JButton minus = new JButton("-");
    minus.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            scaler.scale(vv, 1 / 1.1f, vv.getCenter());
        }
    });

    JComboBox<Mode> modeBox = graphMouse.getModeComboBox();
    JPanel modePanel = new JPanel();
    modePanel.setBorder(BorderFactory.createTitledBorder("Mouse Mode"));
    modePanel.add(modeBox);

    JPanel scaleGrid = new JPanel(new GridLayout(1, 0));
    scaleGrid.setBorder(BorderFactory.createTitledBorder("Zoom"));
    JPanel controls = new JPanel();
    scaleGrid.add(plus);
    scaleGrid.add(minus);
    controls.add(scaleGrid);

    controls.add(modePanel);
    content.add(controls, BorderLayout.SOUTH);

    this.viewSupport = new MagnifyImageLensSupport<Number, Number>(vv);
    //           new ViewLensSupport<Number,Number>(vv, new HyperbolicShapeTransformer(vv, 
    //              vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW)), 
    //                new ModalLensGraphMouse());

    this.modelSupport = new LayoutLensSupport<Number, Number>(vv);

    graphMouse.addItemListener(modelSupport.getGraphMouse().getModeListener());
    graphMouse.addItemListener(viewSupport.getGraphMouse().getModeListener());

    ButtonGroup radio = new ButtonGroup();
    JRadioButton none = new JRadioButton("None");
    none.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent e) {
            if (viewSupport != null) {
                viewSupport.deactivate();
            }
            if (modelSupport != null) {
                modelSupport.deactivate();
            }
        }
    });
    none.setSelected(true);

    JRadioButton hyperView = new JRadioButton("View");
    hyperView.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent e) {
            viewSupport.activate(e.getStateChange() == ItemEvent.SELECTED);
        }
    });

    JRadioButton hyperModel = new JRadioButton("Layout");
    hyperModel.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent e) {
            modelSupport.activate(e.getStateChange() == ItemEvent.SELECTED);
        }
    });
    radio.add(none);
    radio.add(hyperView);
    radio.add(hyperModel);

    JMenuBar menubar = new JMenuBar();
    JMenu modeMenu = graphMouse.getModeMenu();
    menubar.add(modeMenu);

    JPanel lensPanel = new JPanel(new GridLayout(2, 0));
    lensPanel.setBorder(BorderFactory.createTitledBorder("Lens"));
    lensPanel.add(none);
    lensPanel.add(hyperView);
    lensPanel.add(hyperModel);
    controls.add(lensPanel);
}

From source file:edu.uci.ics.jung.samples.LensVertexImageShaperDemo.java

/**
 * create an instance of a simple graph with controls to
 * demo the zoom features./*w w  w.  ja v a 2s  .  c o m*/
 * 
 */
public LensVertexImageShaperDemo() {

    // create a simple graph for the demo
    graph = new DirectedSparseGraph<Number, Number>();
    Number[] vertices = createVertices(11);

    // a Map for the labels
    Map<Number, String> map = new HashMap<Number, String>();
    for (int i = 0; i < vertices.length; i++) {
        map.put(vertices[i], iconNames[i % iconNames.length]);
    }

    // a Map for the Icons
    Map<Number, Icon> iconMap = new HashMap<Number, Icon>();
    for (int i = 0; i < vertices.length; i++) {
        String name = "/images/topic" + iconNames[i] + ".gif";
        try {
            Icon icon = new LayeredIcon(
                    new ImageIcon(LensVertexImageShaperDemo.class.getResource(name)).getImage());
            iconMap.put(vertices[i], icon);
        } catch (Exception ex) {
            System.err.println("You need slashdoticons.jar in your classpath to see the image " + name);
        }
    }

    createEdges(vertices);

    FRLayout<Number, Number> layout = new FRLayout<Number, Number>(graph);
    layout.setMaxIterations(100);
    vv = new VisualizationViewer<Number, Number>(layout, new Dimension(600, 600));

    Function<Number, Paint> vpf = new PickableVertexPaintTransformer<Number>(vv.getPickedVertexState(),
            Color.white, Color.yellow);
    vv.getRenderContext().setVertexFillPaintTransformer(vpf);
    vv.getRenderContext().setEdgeDrawPaintTransformer(
            new PickableEdgePaintTransformer<Number>(vv.getPickedEdgeState(), Color.black, Color.cyan));

    vv.setBackground(Color.white);

    final Function<Number, String> vertexStringerImpl = new VertexStringerImpl<Number>(map);
    vv.getRenderContext().setVertexLabelTransformer(vertexStringerImpl);
    vv.getRenderContext().setVertexLabelRenderer(new DefaultVertexLabelRenderer(Color.cyan));
    vv.getRenderContext().setEdgeLabelRenderer(new DefaultEdgeLabelRenderer(Color.cyan));

    // features on and off. For a real application, use VertexIconAndShapeFunction instead.
    final VertexIconShapeTransformer<Number> vertexImageShapeFunction = new VertexIconShapeTransformer<Number>(
            new EllipseVertexShapeTransformer<Number>());

    final Function<Number, Icon> vertexIconFunction = Functions.forMap(iconMap);

    vertexImageShapeFunction.setIconMap(iconMap);

    vv.getRenderContext().setVertexShapeTransformer(vertexImageShapeFunction);
    vv.getRenderContext().setVertexIconTransformer(vertexIconFunction);

    // Get the pickedState and add a listener that will decorate the
    // Vertex images with a checkmark icon when they are picked
    PickedState<Number> ps = vv.getPickedVertexState();
    ps.addItemListener(new PickWithIconListener(vertexIconFunction));

    vv.addPostRenderPaintable(new VisualizationViewer.Paintable() {
        int x;
        int y;
        Font font;
        FontMetrics metrics;
        int swidth;
        int sheight;
        String str = "Thank You, slashdot.org, for the images!";

        public void paint(Graphics g) {
            Dimension d = vv.getSize();
            if (font == null) {
                font = new Font(g.getFont().getName(), Font.BOLD, 20);
                metrics = g.getFontMetrics(font);
                swidth = metrics.stringWidth(str);
                sheight = metrics.getMaxAscent() + metrics.getMaxDescent();
                x = (d.width - swidth) / 2;
                y = (int) (d.height - sheight * 1.5);
            }
            g.setFont(font);
            Color oldColor = g.getColor();
            g.setColor(Color.lightGray);
            g.drawString(str, x, y);
            g.setColor(oldColor);
        }

        public boolean useTransform() {
            return false;
        }
    });

    // add a listener for ToolTips
    vv.setVertexToolTipTransformer(new ToStringLabeller());

    Container content = getContentPane();
    final GraphZoomScrollPane panel = new GraphZoomScrollPane(vv);
    content.add(panel);

    final DefaultModalGraphMouse<Number, Number> graphMouse = new DefaultModalGraphMouse<Number, Number>();
    vv.setGraphMouse(graphMouse);

    final ScalingControl scaler = new CrossoverScalingControl();

    JButton plus = new JButton("+");
    plus.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            scaler.scale(vv, 1.1f, vv.getCenter());
        }
    });
    JButton minus = new JButton("-");
    minus.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            scaler.scale(vv, 1 / 1.1f, vv.getCenter());
        }
    });

    JComboBox<Mode> modeBox = graphMouse.getModeComboBox();
    JPanel modePanel = new JPanel();
    modePanel.setBorder(BorderFactory.createTitledBorder("Mouse Mode"));
    modePanel.add(modeBox);

    JPanel scaleGrid = new JPanel(new GridLayout(1, 0));
    scaleGrid.setBorder(BorderFactory.createTitledBorder("Zoom"));
    JPanel controls = new JPanel();
    scaleGrid.add(plus);
    scaleGrid.add(minus);
    controls.add(scaleGrid);

    controls.add(modePanel);
    content.add(controls, BorderLayout.SOUTH);

    this.viewSupport = new MagnifyImageLensSupport<Number, Number>(vv);
    //           new ViewLensSupport<Number,Number>(vv, new HyperbolicShapeTransformer(vv, 
    //              vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW)), 
    //                new ModalLensGraphMouse());

    this.modelSupport = new LayoutLensSupport<Number, Number>(vv);

    graphMouse.addItemListener(modelSupport.getGraphMouse().getModeListener());
    graphMouse.addItemListener(viewSupport.getGraphMouse().getModeListener());

    ButtonGroup radio = new ButtonGroup();
    JRadioButton none = new JRadioButton("None");
    none.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent e) {
            if (viewSupport != null) {
                viewSupport.deactivate();
            }
            if (modelSupport != null) {
                modelSupport.deactivate();
            }
        }
    });
    none.setSelected(true);

    JRadioButton hyperView = new JRadioButton("View");
    hyperView.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent e) {
            viewSupport.activate(e.getStateChange() == ItemEvent.SELECTED);
        }
    });

    JRadioButton hyperModel = new JRadioButton("Layout");
    hyperModel.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent e) {
            modelSupport.activate(e.getStateChange() == ItemEvent.SELECTED);
        }
    });
    radio.add(none);
    radio.add(hyperView);
    radio.add(hyperModel);

    JMenuBar menubar = new JMenuBar();
    JMenu modeMenu = graphMouse.getModeMenu();
    menubar.add(modeMenu);

    JPanel lensPanel = new JPanel(new GridLayout(2, 0));
    lensPanel.setBorder(BorderFactory.createTitledBorder("Lens"));
    lensPanel.add(none);
    lensPanel.add(hyperView);
    lensPanel.add(hyperModel);
    controls.add(lensPanel);
}

From source file:it.anyplace.sync.bep.BlockPuller.java

public FileDownloadObserver pullBlocks(FileBlocks fileBlocks) throws InterruptedException {
    logger.info("pulling file = {}", fileBlocks);
    checkArgument(connectionHandler.hasFolder(fileBlocks.getFolder()),
            "supplied connection handler %s will not share folder %s", connectionHandler,
            fileBlocks.getFolder());// w ww . j a v a2 s. com
    final Object lock = new Object();
    final AtomicReference<Exception> error = new AtomicReference<>();
    final Object listener = new Object() {
        @Subscribe
        public void handleResponseMessageReceivedEvent(ResponseMessageReceivedEvent event) {
            synchronized (lock) {
                try {
                    if (!requestIds.contains(event.getMessage().getId())) {
                        return;
                    }
                    checkArgument(equal(event.getMessage().getCode(), ErrorCode.NO_ERROR),
                            "received error response, code = %s", event.getMessage().getCode());
                    byte[] data = event.getMessage().getData().toByteArray();
                    String hash = BaseEncoding.base16().encode(Hashing.sha256().hashBytes(data).asBytes());
                    blockCache.pushBlock(data);
                    if (missingHashes.remove(hash)) {
                        blocksByHash.put(hash, data);
                        logger.debug("aquired block, hash = {}", hash);
                        lock.notify();
                    } else {
                        logger.warn("received not-needed block, hash = {}", hash);
                    }
                } catch (Exception ex) {
                    error.set(ex);
                    lock.notify();
                }
            }
        }
    };
    FileDownloadObserver fileDownloadObserver = new FileDownloadObserver() {

        private long getReceivedData() {
            return blocksByHash.size() * BLOCK_SIZE;
        }

        private long getTotalData() {
            return (blocksByHash.size() + missingHashes.size()) * BLOCK_SIZE;
        }

        @Override
        public double getProgress() {
            return isCompleted() ? 1d : getReceivedData() / ((double) getTotalData());
        }

        @Override
        public String getProgressMessage() {
            return (Math.round(getProgress() * 1000d) / 10d) + "% "
                    + FileUtils.byteCountToDisplaySize(getReceivedData()) + " / "
                    + FileUtils.byteCountToDisplaySize(getTotalData());
        }

        @Override
        public boolean isCompleted() {
            return missingHashes.isEmpty();
        }

        @Override
        public void checkError() {
            if (error.get() != null) {
                throw new RuntimeException(error.get());
            }
        }

        @Override
        public double waitForProgressUpdate() throws InterruptedException {
            if (!isCompleted()) {
                synchronized (lock) {
                    checkError();
                    lock.wait();
                    checkError();
                }
            }
            return getProgress();
        }

        @Override
        public InputStream getInputStream() {
            checkArgument(missingHashes.isEmpty(), "pull failed, some blocks are still missing");
            List<byte[]> blockList = Lists
                    .newArrayList(Lists.transform(hashList, Functions.forMap(blocksByHash)));
            return new SequenceInputStream(Collections
                    .enumeration(Lists.transform(blockList, new Function<byte[], ByteArrayInputStream>() {
                        @Override
                        public ByteArrayInputStream apply(byte[] data) {
                            return new ByteArrayInputStream(data);
                        }
                    })));
        }

        @Override
        public void close() {
            missingHashes.clear();
            hashList.clear();
            blocksByHash.clear();
            try {
                connectionHandler.getEventBus().unregister(listener);
            } catch (Exception ex) {
            }
            if (closeConnection) {
                connectionHandler.close();
            }
        }
    };
    try {
        synchronized (lock) {
            hashList.addAll(Lists.transform(fileBlocks.getBlocks(), new Function<BlockInfo, String>() {
                @Override
                public String apply(BlockInfo block) {
                    return block.getHash();
                }
            }));
            missingHashes.addAll(hashList);
            for (String hash : missingHashes) {
                byte[] block = blockCache.pullBlock(hash);
                if (block != null) {
                    blocksByHash.put(hash, block);
                    missingHashes.remove(hash);
                }
            }
            connectionHandler.getEventBus().register(listener);
            for (BlockInfo block : fileBlocks.getBlocks()) {
                if (missingHashes.contains(block.getHash())) {
                    int requestId = Math.abs(new Random().nextInt());
                    requestIds.add(requestId);
                    connectionHandler.sendMessage(Request.newBuilder().setId(requestId)
                            .setFolder(fileBlocks.getFolder()).setName(fileBlocks.getPath())
                            .setOffset(block.getOffset()).setSize(block.getSize())
                            .setHash(ByteString.copyFrom(BaseEncoding.base16().decode(block.getHash())))
                            .build());
                    logger.debug("sent request for block, hash = {}", block.getHash());
                }
            }
            return fileDownloadObserver;
        }
    } catch (Exception ex) {
        fileDownloadObserver.close();
        throw ex;
    }
}

From source file:org.sosy_lab.cpachecker.cfa.postprocessing.function.CFunctionPointerResolver.java

public CFunctionPointerResolver(MutableCFA pCfa, List<Pair<ADeclaration, String>> pGlobalVars,
        Configuration config, LogManager pLogger) throws InvalidConfigurationException {
    cfa = pCfa;/*from w w w .j  a v  a  2s .  co  m*/
    logger = pLogger;

    config.inject(this);

    matchingFunctionCall = getFunctionSetPredicate(functionSets);

    if (functionSets.contains(FunctionSet.USED_IN_CODE)) {
        CReferencedFunctionsCollector varCollector = new CReferencedFunctionsCollector();
        for (CFANode node : cfa.getAllNodes()) {
            for (CFAEdge edge : leavingEdges(node)) {
                varCollector.visitEdge(edge);
            }
        }
        for (Pair<ADeclaration, String> decl : pGlobalVars) {
            if (decl.getFirst() instanceof CVariableDeclaration) {
                CVariableDeclaration varDecl = (CVariableDeclaration) decl.getFirst();
                varCollector.visitDeclaration(varDecl);
            }
        }
        Set<String> addressedFunctions = varCollector.getCollectedFunctions();
        candidateFunctions = from(Sets.intersection(addressedFunctions, cfa.getAllFunctionNames()))
                .transform(Functions.forMap(cfa.getAllFunctions())).toList();

        if (logger.wouldBeLogged(Level.ALL)) {
            logger.log(Level.ALL, "Possible target functions of function pointers:\n",
                    Joiner.on('\n').join(candidateFunctions));
        }
    } else {
        candidateFunctions = cfa.getAllFunctionHeads();
    }

}

From source file:no.ssb.jsonstat.v2.deser.DimensionDeserializer.java

private ImmutableMap<String, String> parseIndexAsMap(JsonParser p) throws IOException {
    ImmutableMap<String, String> index;

    Map<String, Integer> mapIndex = p.readValueAs(INDEX_MAP);

    // Even though the type is String, the sorting actually uses the
    // integer value thanks to the forMap function.
    Ordering<String> byValue = Ordering.natural().onResultOf(Functions.forMap(mapIndex));

    index = ImmutableSortedMap.copyOf(Maps.transformValues(mapIndex, Object::toString), byValue);
    return index;
}

From source file:org.pentaho.di.trans.dataservice.serialization.DataServiceMetaStoreUtil.java

public Iterable<DataServiceMeta> getDataServices(final Repository repository, IMetaStore metaStore,
        final Function<Exception, Void> exceptionHandler) {
    MetaStoreFactory<ServiceTrans> serviceTransFactory = getServiceTransFactory(metaStore);

    List<ServiceTrans> serviceTransList;
    try {/*w  ww  .  ja  v a 2 s .  co  m*/
        serviceTransList = serviceTransFactory.getElements();
    } catch (Exception e) {
        exceptionHandler.apply(e);
        serviceTransList = Collections.emptyList();
    }

    Map<ServiceTrans.Reference, Supplier<TransMeta>> transMetaMap = FluentIterable.from(serviceTransList)
            .transformAndConcat(new Function<ServiceTrans, Iterable<ServiceTrans.Reference>>() {
                @Override
                public Iterable<ServiceTrans.Reference> apply(ServiceTrans serviceTrans) {
                    return serviceTrans.getReferences();
                }
            }).toMap(createTransMetaLoader(repository, exceptionHandler));

    List<DataServiceMeta> dataServices = Lists.newArrayListWithExpectedSize(serviceTransList.size());
    for (ServiceTrans serviceTrans : serviceTransList) {
        Optional<TransMeta> transMeta = FluentIterable.from(serviceTrans.getReferences())
                .transform(Functions.forMap(transMetaMap)).transform(Suppliers.<TransMeta>supplierFunction())
                .firstMatch(Predicates.notNull());
        if (transMeta.isPresent()) {
            try {
                dataServices.add(getDataService(serviceTrans.getName(), transMeta.get()));
            } catch (Exception e) {
                exceptionHandler.apply(e);
            }
        } else {
            try {
                if (PentahoSessionHolder.getSession() != null && SecurityHelper.getInstance()
                        .runAsSystem(() -> !ServiceTrans.isValid(repository).apply(serviceTrans))) {
                    serviceTransFactory.deleteElement(serviceTrans.getName());
                }
            } catch (Exception e) {
                exceptionHandler.apply(e);
            }
        }
    }
    return dataServices;
}