Example usage for org.apache.commons.lang3.tuple Pair getKey

List of usage examples for org.apache.commons.lang3.tuple Pair getKey

Introduction

In this page you can find the example usage for org.apache.commons.lang3.tuple Pair getKey.

Prototype

@Override
public final L getKey() 

Source Link

Document

Gets the key from this pair.

This method implements the Map.Entry interface returning the left element as the key.

Usage

From source file:org.deeplearning4j.clustering.cluster.ClusterSet.java

/**
 *
 * @param point// w  ww . j a  v a2s  .  c  o m
 * @param moveClusterCenter
 * @return
 */
public PointClassification classifyPoint(Point point, boolean moveClusterCenter) {
    Pair<Cluster, Double> nearestCluster = nearestCluster(point);
    Cluster newCluster = nearestCluster.getKey();
    boolean locationChange = isPointLocationChange(point, newCluster);
    addPointToCluster(point, newCluster, moveClusterCenter);
    return new PointClassification(nearestCluster.getKey(), nearestCluster.getValue(), locationChange);
}

From source file:org.deeplearning4j.clustering.kdtree.KDTree.java

public List<Pair<Double, INDArray>> knn(INDArray point, double distance) {
    List<Pair<Double, INDArray>> best = new ArrayList<>();
    knn(root, point, rect, distance, best, 0);
    Collections.sort(best, new Comparator<Pair<Double, INDArray>>() {
        @Override/*from   w ww  .  ja va  2 s.co m*/
        public int compare(Pair<Double, INDArray> o1, Pair<Double, INDArray> o2) {
            return Double.compare(o1.getKey(), o2.getKey());
        }
    });

    return best;
}

From source file:org.deeplearning4j.clustering.kdtree.KDTree.java

private Pair<Double, INDArray> nn(KDNode node, INDArray point, HyperRect rect, double dist, INDArray best,
        int _disc) {
    if (node == null || rect.minDistance(point) > dist)
        return Pair.of(Double.POSITIVE_INFINITY, null);

    int _discNext = (_disc + 1) % dims;
    double dist2 = Nd4j.getExecutioner().execAndReturn(new EuclideanDistance(point)).getFinalResult()
            .doubleValue();//from w w  w.  j  a v  a 2s.  c om
    if (dist2 < dist) {
        best = node.getPoint();
        dist = dist2;
    }

    HyperRect lower = rect.getLower(node.point, _disc);
    HyperRect upper = rect.getUpper(node.point, _disc);

    if (point.getDouble(_disc) < node.point.getDouble(_disc)) {
        Pair<Double, INDArray> left = nn(node.getLeft(), point, lower, dist, best, _discNext);
        Pair<Double, INDArray> right = nn(node.getRight(), point, upper, dist, best, _discNext);
        if (left.getKey() < dist)
            return left;
        else if (right.getKey() < dist)
            return right;

    } else {
        Pair<Double, INDArray> left = nn(node.getRight(), point, upper, dist, best, _discNext);
        Pair<Double, INDArray> right = nn(node.getLeft(), point, lower, dist, best, _discNext);
        if (left.getKey() < dist)
            return left;
        else if (right.getKey() < dist)
            return right;
    }

    return Pair.of(dist, best);

}

From source file:org.deeplearning4j.clustering.kdtree.KDTree.java

private KDNode delete(KDNode delete, int _disc) {
    if (delete.getLeft() != null && delete.getRight() != null) {
        if (delete.getParent() != null) {
            if (delete.getParent().getLeft() == delete)
                delete.getParent().setLeft(null);
            else//from  w  ww.  ja v a 2 s .  c o  m
                delete.getParent().setRight(null);

        }
        return null;
    }

    int disc = _disc;
    _disc = (_disc + 1) % dims;
    Pair<KDNode, Integer> qd = null;
    if (delete.getRight() != null) {
        qd = min(delete.getRight(), disc, _disc);
    } else if (delete.getLeft() != null)
        qd = max(delete.getLeft(), disc, _disc);
    delete.point = qd.getKey().point;
    KDNode qFather = qd.getKey().getParent();
    if (qFather.getLeft() == qd.getKey()) {
        qFather.setLeft(delete(qd.getKey(), disc));
    } else if (qFather.getRight() == qd.getKey()) {
        qFather.setRight(delete(qd.getKey(), disc));

    }

    return delete;

}

From source file:org.deeplearning4j.clustering.kdtree.KDTree.java

private Pair<KDNode, Integer> max(KDNode node, int disc, int _disc) {
    int discNext = (_disc + 1) % dims;
    if (_disc == disc) {
        KDNode child = node.getLeft();/* w  w  w  .  j a  v a 2  s.c o  m*/
        if (child != null) {
            return max(child, disc, discNext);
        }
    } else if (node.getLeft() != null || node.getRight() != null) {
        Pair<KDNode, Integer> left = null, right = null;
        if (node.getLeft() != null)
            left = max(node.getLeft(), disc, discNext);
        if (node.getRight() != null)
            right = max(node.getRight(), disc, discNext);
        if (left != null && right != null) {
            double pointLeft = left.getKey().getPoint().getDouble(disc);
            double pointRight = right.getKey().getPoint().getDouble(disc);
            if (pointLeft > pointRight)
                return left;
            else
                return right;
        } else if (left != null)
            return left;
        else
            return right;
    }

    return Pair.of(node, _disc);
}

From source file:org.deeplearning4j.clustering.kdtree.KDTree.java

private Pair<KDNode, Integer> min(KDNode node, int disc, int _disc) {
    int discNext = (_disc + 1) % dims;
    if (_disc == disc) {
        KDNode child = node.getLeft();//from w  w  w . j a v  a2  s .  c om
        if (child != null) {
            return min(child, disc, discNext);
        }
    } else if (node.getLeft() != null || node.getRight() != null) {
        Pair<KDNode, Integer> left = null, right = null;
        if (node.getLeft() != null)
            left = min(node.getLeft(), disc, discNext);
        if (node.getRight() != null)
            right = min(node.getRight(), disc, discNext);
        if (left != null && right != null) {
            double pointLeft = left.getKey().getPoint().getDouble(disc);
            double pointRight = right.getKey().getPoint().getDouble(disc);
            if (pointLeft < pointRight)
                return left;
            else
                return right;
        } else if (left != null)
            return left;
        else
            return right;
    }

    return Pair.of(node, _disc);
}

From source file:org.deeplearning4j.clustering.kdtree.KDTreeTest.java

@Test
public void testNN() {
    int n = 10;/*  w ww  .java  2 s . c om*/

    // make a KD-tree of dimension {#n}
    KDTree kdTree = new KDTree(n);
    for (int i = -1; i < n; i++) {
        // Insert a unit vector along each dimension
        List<Double> vec = new ArrayList<>(n);
        // i = -1 ensures the origin is in the Tree
        for (int k = 0; k < n; k++) {
            vec.add((k == i) ? 1.0 : 0.0);
        }
        INDArray indVec = Nd4j.create(Nd4j.createBuffer(Doubles.toArray(vec)));
        kdTree.insert(indVec);
    }
    Random rand = new Random();

    // random point in the Hypercube
    List<Double> pt = new ArrayList(n);
    for (int k = 0; k < n; k++) {
        pt.add(rand.nextDouble());
    }
    Pair<Double, INDArray> result = kdTree.nn(Nd4j.create(Nd4j.createBuffer(Doubles.toArray(pt))));

    // Always true for points in the unitary hypercube
    assertTrue(result.getKey() < Double.MAX_VALUE);

}

From source file:org.esigate.Driver.java

/**
 * Perform rendering on a single url content, and append result to "writer". Automatically follows redirects
 * //ww  w  .j a  va  2 s  .c o m
 * @param pageUrl
 *            Address of the page containing the template
 * @param incomingRequest
 *            originating request object
 * @param renderers
 *            the renderers to use in order to transform the output
 * @return The resulting response
 * @throws IOException
 *             If an IOException occurs while writing to the writer
 * @throws HttpErrorPage
 *             If an Exception occurs while retrieving the template
 */
public CloseableHttpResponse render(String pageUrl, IncomingRequest incomingRequest, Renderer... renderers)
        throws IOException, HttpErrorPage {
    DriverRequest driverRequest = new DriverRequest(incomingRequest, this, pageUrl);

    // Replace ESI variables in URL
    // TODO: should be performed in the ESI extension
    String resultingPageUrl = VariablesResolver.replaceAllVariables(pageUrl, driverRequest);

    String targetUrl = ResourceUtils.getHttpUrlWithQueryString(resultingPageUrl, driverRequest, false);

    String currentValue;
    CloseableHttpResponse response;

    // Retrieve URL
    // Get from cache to prevent multiple request to the same url if
    // multiple fragments are used.

    String cacheKey = CACHE_RESPONSE_PREFIX + targetUrl;
    Pair<String, CloseableHttpResponse> cachedValue = incomingRequest.getAttribute(cacheKey);
    // content and response were not in cache
    if (cachedValue == null) {
        OutgoingRequest outgoingRequest = requestExecutor.createOutgoingRequest(driverRequest, targetUrl,
                false);
        headerManager.copyHeaders(driverRequest, outgoingRequest);
        response = requestExecutor.execute(outgoingRequest);
        int redirects = MAX_REDIRECTS;
        try {
            while (redirects > 0
                    && redirectStrategy.isRedirected(outgoingRequest, response, outgoingRequest.getContext())) {
                redirects--;
                outgoingRequest = requestExecutor.createOutgoingRequest(driverRequest, redirectStrategy
                        .getLocationURI(outgoingRequest, response, outgoingRequest.getContext()).toString(),
                        false);
                headerManager.copyHeaders(driverRequest, outgoingRequest);
                response = requestExecutor.execute(outgoingRequest);
            }
        } catch (ProtocolException e) {
            throw new HttpErrorPage(HttpStatus.SC_BAD_GATEWAY, "Invalid response from server", e);
        }
        response = headerManager.copyHeaders(outgoingRequest, incomingRequest, response);
        currentValue = HttpResponseUtils.toString(response, this.eventManager);
        // Cache
        cachedValue = new ImmutablePair<String, CloseableHttpResponse>(currentValue, response);
        incomingRequest.setAttribute(cacheKey, cachedValue);
    }
    currentValue = cachedValue.getKey();
    response = cachedValue.getValue();

    logAction("render", pageUrl, renderers);

    // Apply renderers
    currentValue = performRendering(pageUrl, driverRequest, response, currentValue, renderers);

    response.setEntity(new StringEntity(currentValue, HttpResponseUtils.getContentType(response)));

    return response;
}

From source file:org.forgerock.openidm.security.impl.CertificateResourceProvider.java

@Override
public void createDefaultEntry(String alias) throws Exception {
    Pair<X509Certificate, PrivateKey> pair = generateCertificate("local.openidm.forgerock.org",
            "OpenIDM Self-Signed Certificate", "None", "None", "None", "None", DEFAULT_ALGORITHM,
            DEFAULT_KEY_SIZE, DEFAULT_SIGNATURE_ALGORITHM, null, null);
    Certificate cert = pair.getKey();
    store.getStore().setCertificateEntry(alias, cert);
    store.store();//from   w  ww .j av  a2 s  .  c o  m
}

From source file:org.forgerock.openidm.security.impl.KeystoreResourceProvider.java

@Override
public Promise<ActionResponse, ResourceException> actionInstance(Context context, ActionRequest request) {
    try {//www  .j a v a2 s. c om
        String alias = request.getContent().get("alias").asString();
        if (ACTION_GENERATE_CERT.equalsIgnoreCase(request.getAction())
                || ACTION_GENERATE_CSR.equalsIgnoreCase(request.getAction())) {
            if (alias == null) {
                return new BadRequestException("A valid resource ID must be specified in the request")
                        .asPromise();
            }
            String algorithm = request.getContent().get("algorithm").defaultTo(DEFAULT_ALGORITHM).asString();
            String signatureAlgorithm = request.getContent().get("signatureAlgorithm")
                    .defaultTo(DEFAULT_SIGNATURE_ALGORITHM).asString();
            int keySize = request.getContent().get("keySize").defaultTo(DEFAULT_KEY_SIZE).asInteger();
            JsonValue result = null;
            if (ACTION_GENERATE_CERT.equalsIgnoreCase(request.getAction())) {
                // Generate self-signed certificate
                if (store.getStore().containsAlias(alias)) {
                    return new ConflictException("The resource with ID '" + alias
                            + "' could not be created because there is already another resource with the same ID")
                                    .asPromise();
                } else {
                    logger.info("Generating a new self-signed certificate with the alias {}", alias);
                    String domainName = request.getContent().get("domainName").required().asString();
                    String validFrom = request.getContent().get("validFrom").asString();
                    String validTo = request.getContent().get("validTo").asString();

                    // Generate the cert
                    Pair<X509Certificate, PrivateKey> pair = generateCertificate(domainName, algorithm, keySize,
                            signatureAlgorithm, validFrom, validTo);
                    Certificate cert = pair.getKey();
                    PrivateKey key = pair.getValue();

                    // Add it to the store and reload
                    logger.debug("Adding certificate entry under the alias {}", alias);
                    store.getStore().setEntry(alias,
                            new KeyStore.PrivateKeyEntry(key, new Certificate[] { cert }),
                            new KeyStore.PasswordProtection(store.getPassword().toCharArray()));
                    store.store();
                    manager.reload();
                    // Save the store to the repo (if clustered)
                    saveStore();

                    result = returnCertificate(alias, cert);
                    if (request.getContent().get("returnPrivateKey").defaultTo(false).asBoolean()) {
                        result.put("privateKey", getKeyMap(key));
                    }
                }
            } else {
                // Generate CSR
                Pair<PKCS10CertificationRequest, PrivateKey> csr = generateCSR(alias, algorithm,
                        signatureAlgorithm, keySize, request.getContent());
                result = returnCertificateRequest(alias, csr.getKey());
                if (request.getContent().get("returnPrivateKey").defaultTo(false).asBoolean()) {
                    result.put("privateKey", getKeyMap(csr.getRight()));
                }
            }
            return Responses.newActionResponse(result).asPromise();
        } else {
            return new BadRequestException("Unsupported action " + request.getAction()).asPromise();
        }
    } catch (JsonValueException e) {
        return new BadRequestException(e.getMessage(), e).asPromise();
    } catch (Exception e) {
        return new InternalServerErrorException(e).asPromise();
    }
}