Example usage for org.apache.commons.lang3 StringUtils repeat

List of usage examples for org.apache.commons.lang3 StringUtils repeat

Introduction

In this page you can find the example usage for org.apache.commons.lang3 StringUtils repeat.

Prototype

public static String repeat(final char ch, final int repeat) 

Source Link

Document

<p>Returns padding using the specified delimiter repeated to a given length.</p> <pre> StringUtils.repeat('e', 0) = "" StringUtils.repeat('e', 3) = "eee" StringUtils.repeat('e', -2) = "" </pre> <p>Note: this method doesn't not support padding with <a href="http://www.unicode.org/glossary/#supplementary_character">Unicode Supplementary Characters</a> as they require a pair of char s to be represented.

Usage

From source file:org.apache.reef.io.network.NetworkServiceTest.java

/**
 * NetworkService messaging rate benchmark.
 *//*  w  w  w.  j  av a2 s  . co m*/
@Test
public void testMessagingNetworkServiceRate() throws Exception {

    Assume.assumeFalse("Use log level INFO to run benchmarking", LOG.isLoggable(Level.FINEST));

    LOG.log(Level.FINEST, name.getMethodName());

    final IdentifierFactory factory = new StringIdentifierFactory();

    final Injector injector = Tang.Factory.getTang().newInjector();
    injector.bindVolatileParameter(NameServerParameters.NameServerIdentifierFactory.class, factory);
    injector.bindVolatileInstance(LocalAddressProvider.class, this.localAddressProvider);

    try (final NameServer server = injector.getInstance(NameServer.class)) {
        final int nameServerPort = server.getPort();

        final int[] messageSizes = { 1, 16, 32, 64, 512, 64 * 1024, 1024 * 1024 };

        for (final int size : messageSizes) {
            final int numMessages = 300000 / (Math.max(1, size / 512));
            final Monitor monitor = new Monitor();

            // network service
            final String name2 = "task2";
            final String name1 = "task1";
            final Configuration nameResolverConf = Tang.Factory.getTang()
                    .newConfigurationBuilder(NameResolverConfiguration.CONF
                            .set(NameResolverConfiguration.NAME_SERVER_HOSTNAME, this.localAddress)
                            .set(NameResolverConfiguration.NAME_SERVICE_PORT, nameServerPort).build())
                    .build();

            final Injector injector2 = Tang.Factory.getTang().newInjector(nameResolverConf);

            LOG.log(Level.FINEST, "=== Test network service receiver start");
            LOG.log(Level.FINEST, "=== Test network service sender start");
            try (final NameResolver nameResolver = injector2.getInstance(NameResolver.class)) {
                injector2.bindVolatileParameter(NetworkServiceParameters.NetworkServiceIdentifierFactory.class,
                        factory);
                injector2.bindVolatileInstance(NameResolver.class, nameResolver);
                injector2.bindVolatileParameter(NetworkServiceParameters.NetworkServiceCodec.class,
                        new StringCodec());
                injector2.bindVolatileParameter(NetworkServiceParameters.NetworkServiceTransportFactory.class,
                        injector.getInstance(MessagingTransportFactory.class));
                injector2.bindVolatileParameter(NetworkServiceParameters.NetworkServiceExceptionHandler.class,
                        new ExceptionHandler());

                final Injector injectorNs2 = injector2.forkInjector();
                injectorNs2.bindVolatileParameter(NetworkServiceParameters.NetworkServiceHandler.class,
                        new MessageHandler<String>(name2, monitor, numMessages));
                final NetworkService<String> ns2 = injectorNs2.getInstance(NetworkService.class);

                final Injector injectorNs1 = injector2.forkInjector();
                injectorNs1.bindVolatileParameter(NetworkServiceParameters.NetworkServiceHandler.class,
                        new MessageHandler<String>(name1, null, 0));
                final NetworkService<String> ns1 = injectorNs1.getInstance(NetworkService.class);

                ns2.registerId(factory.getNewInstance(name2));
                final int port2 = ns2.getTransport().getListeningPort();
                server.register(factory.getNewInstance("task2"),
                        new InetSocketAddress(this.localAddress, port2));

                ns1.registerId(factory.getNewInstance(name1));
                final int port1 = ns1.getTransport().getListeningPort();
                server.register(factory.getNewInstance("task1"),
                        new InetSocketAddress(this.localAddress, port1));

                final Identifier destId = factory.getNewInstance(name2);
                final String message = StringUtils.repeat('1', size);

                final long start = System.currentTimeMillis();
                try (Connection<String> conn = ns1.newConnection(destId)) {
                    conn.open();
                    for (int i = 0; i < numMessages; i++) {
                        conn.write(message);
                    }
                    monitor.mwait();
                } catch (final NetworkException e) {
                    e.printStackTrace();
                    throw new RuntimeException(e);
                }
                final long end = System.currentTimeMillis();
                final double runtime = ((double) end - start) / 1000;
                LOG.log(Level.FINEST, "size: " + size + "; messages/s: " + numMessages / runtime
                        + " bandwidth(bytes/s): " + ((double) numMessages * 2 * size) / runtime); // x2 for unicode chars
            }
        }
    }
}

From source file:org.apache.reef.io.network.NetworkServiceTest.java

/**
 * NetworkService messaging rate benchmark.
 *//*from   ww  w. j a  v  a2  s .co  m*/
@Test
public void testMessagingNetworkServiceRateDisjoint() throws Exception {

    Assume.assumeFalse("Use log level INFO to run benchmarking", LOG.isLoggable(Level.FINEST));

    LOG.log(Level.FINEST, name.getMethodName());

    final IdentifierFactory factory = new StringIdentifierFactory();

    final Injector injector = Tang.Factory.getTang().newInjector();
    injector.bindVolatileParameter(NameServerParameters.NameServerIdentifierFactory.class, factory);
    injector.bindVolatileInstance(LocalAddressProvider.class, this.localAddressProvider);

    try (final NameServer server = injector.getInstance(NameServer.class)) {
        final int nameServerPort = server.getPort();

        final BlockingQueue<Object> barrier = new LinkedBlockingQueue<>();

        final int numThreads = 4;
        final int size = 2000;
        final int numMessages = 300000 / (Math.max(1, size / 512));
        final int totalNumMessages = numMessages * numThreads;

        final ExecutorService e = Executors.newCachedThreadPool();
        for (int t = 0; t < numThreads; t++) {
            final int tt = t;

            e.submit(new Runnable() {
                @Override
                public void run() {
                    try {
                        final Monitor monitor = new Monitor();

                        // network service
                        final String name2 = "task2-" + tt;
                        final String name1 = "task1-" + tt;
                        final Configuration nameResolverConf = Tang.Factory.getTang()
                                .newConfigurationBuilder(NameResolverConfiguration.CONF
                                        .set(NameResolverConfiguration.NAME_SERVER_HOSTNAME, localAddress)
                                        .set(NameResolverConfiguration.NAME_SERVICE_PORT, nameServerPort)
                                        .build())
                                .build();

                        final Injector injector = Tang.Factory.getTang().newInjector(nameResolverConf);

                        LOG.log(Level.FINEST, "=== Test network service receiver start");
                        LOG.log(Level.FINEST, "=== Test network service sender start");
                        try (final NameResolver nameResolver = injector.getInstance(NameResolver.class)) {
                            injector.bindVolatileParameter(
                                    NetworkServiceParameters.NetworkServiceIdentifierFactory.class, factory);
                            injector.bindVolatileInstance(NameResolver.class, nameResolver);
                            injector.bindVolatileParameter(NetworkServiceParameters.NetworkServiceCodec.class,
                                    new StringCodec());
                            injector.bindVolatileParameter(
                                    NetworkServiceParameters.NetworkServiceTransportFactory.class,
                                    injector.getInstance(MessagingTransportFactory.class));
                            injector.bindVolatileParameter(
                                    NetworkServiceParameters.NetworkServiceExceptionHandler.class,
                                    new ExceptionHandler());

                            final Injector injectorNs2 = injector.forkInjector();
                            injectorNs2.bindVolatileParameter(
                                    NetworkServiceParameters.NetworkServiceHandler.class,
                                    new MessageHandler<String>(name2, monitor, numMessages));
                            final NetworkService<String> ns2 = injectorNs2.getInstance(NetworkService.class);

                            final Injector injectorNs1 = injector.forkInjector();
                            injectorNs1.bindVolatileParameter(
                                    NetworkServiceParameters.NetworkServiceHandler.class,
                                    new MessageHandler<String>(name1, null, 0));
                            final NetworkService<String> ns1 = injectorNs1.getInstance(NetworkService.class);

                            ns2.registerId(factory.getNewInstance(name2));
                            final int port2 = ns2.getTransport().getListeningPort();
                            server.register(factory.getNewInstance(name2),
                                    new InetSocketAddress(localAddress, port2));

                            ns1.registerId(factory.getNewInstance(name1));
                            final int port1 = ns1.getTransport().getListeningPort();
                            server.register(factory.getNewInstance(name1),
                                    new InetSocketAddress(localAddress, port1));

                            final Identifier destId = factory.getNewInstance(name2);
                            final String message = StringUtils.repeat('1', size);

                            try (Connection<String> conn = ns1.newConnection(destId)) {
                                conn.open();
                                for (int i = 0; i < numMessages; i++) {
                                    conn.write(message);
                                }
                                monitor.mwait();
                            } catch (final NetworkException e) {
                                e.printStackTrace();
                                throw new RuntimeException(e);
                            }
                        }
                    } catch (final Exception e) {
                        e.printStackTrace();
                        throw new RuntimeException(e);
                    }
                }
            });
        }

        // start and time
        final long start = System.currentTimeMillis();
        final Object ignore = new Object();
        for (int i = 0; i < numThreads; i++) {
            barrier.add(ignore);
        }
        e.shutdown();
        e.awaitTermination(100, TimeUnit.SECONDS);
        final long end = System.currentTimeMillis();

        final double runtime = ((double) end - start) / 1000;
        LOG.log(Level.FINEST, "size: " + size + "; messages/s: " + totalNumMessages / runtime
                + " bandwidth(bytes/s): " + ((double) totalNumMessages * 2 * size) / runtime); // x2 for unicode chars
    }
}

From source file:org.apache.reef.io.network.NetworkServiceTest.java

@Test
public void testMultithreadedSharedConnMessagingNetworkServiceRate() throws Exception {

    Assume.assumeFalse("Use log level INFO to run benchmarking", LOG.isLoggable(Level.FINEST));

    LOG.log(Level.FINEST, name.getMethodName());

    final IdentifierFactory factory = new StringIdentifierFactory();

    final Injector injector = Tang.Factory.getTang().newInjector();
    injector.bindVolatileParameter(NameServerParameters.NameServerIdentifierFactory.class, factory);
    injector.bindVolatileInstance(LocalAddressProvider.class, this.localAddressProvider);
    try (final NameServer server = injector.getInstance(NameServer.class)) {
        final int nameServerPort = server.getPort();

        final int[] messageSizes = { 2000 }; // {1,16,32,64,512,64*1024,1024*1024};

        for (final int size : messageSizes) {
            final int numMessages = 300000 / (Math.max(1, size / 512));
            final int numThreads = 2;
            final int totalNumMessages = numMessages * numThreads;
            final Monitor monitor = new Monitor();

            // network service
            final String name2 = "task2";
            final String name1 = "task1";
            final Configuration nameResolverConf = Tang.Factory.getTang()
                    .newConfigurationBuilder(NameResolverConfiguration.CONF
                            .set(NameResolverConfiguration.NAME_SERVER_HOSTNAME, this.localAddress)
                            .set(NameResolverConfiguration.NAME_SERVICE_PORT, nameServerPort).build())
                    .build();//from w  ww .j  a  v a2 s  .  c  om

            final Injector injector2 = Tang.Factory.getTang().newInjector(nameResolverConf);

            LOG.log(Level.FINEST, "=== Test network service receiver start");
            LOG.log(Level.FINEST, "=== Test network service sender start");
            try (final NameResolver nameResolver = injector2.getInstance(NameResolver.class)) {
                injector2.bindVolatileParameter(NetworkServiceParameters.NetworkServiceIdentifierFactory.class,
                        factory);
                injector2.bindVolatileInstance(NameResolver.class, nameResolver);
                injector2.bindVolatileParameter(NetworkServiceParameters.NetworkServiceCodec.class,
                        new StringCodec());
                injector2.bindVolatileParameter(NetworkServiceParameters.NetworkServiceTransportFactory.class,
                        injector.getInstance(MessagingTransportFactory.class));
                injector2.bindVolatileParameter(NetworkServiceParameters.NetworkServiceExceptionHandler.class,
                        new ExceptionHandler());

                final Injector injectorNs2 = injector2.forkInjector();
                injectorNs2.bindVolatileParameter(NetworkServiceParameters.NetworkServiceHandler.class,
                        new MessageHandler<String>(name2, monitor, totalNumMessages));
                final NetworkService<String> ns2 = injectorNs2.getInstance(NetworkService.class);

                final Injector injectorNs1 = injector2.forkInjector();
                injectorNs1.bindVolatileParameter(NetworkServiceParameters.NetworkServiceHandler.class,
                        new MessageHandler<String>(name1, null, 0));
                final NetworkService<String> ns1 = injectorNs1.getInstance(NetworkService.class);

                ns2.registerId(factory.getNewInstance(name2));
                final int port2 = ns2.getTransport().getListeningPort();
                server.register(factory.getNewInstance("task2"),
                        new InetSocketAddress(this.localAddress, port2));

                ns1.registerId(factory.getNewInstance(name1));
                final int port1 = ns1.getTransport().getListeningPort();
                server.register(factory.getNewInstance("task1"),
                        new InetSocketAddress(this.localAddress, port1));

                final Identifier destId = factory.getNewInstance(name2);

                try (final Connection<String> conn = ns1.newConnection(destId)) {
                    conn.open();

                    final String message = StringUtils.repeat('1', size);
                    final ExecutorService e = Executors.newCachedThreadPool();

                    final long start = System.currentTimeMillis();
                    for (int i = 0; i < numThreads; i++) {
                        e.submit(new Runnable() {

                            @Override
                            public void run() {
                                for (int i = 0; i < numMessages; i++) {
                                    conn.write(message);
                                }
                            }
                        });
                    }

                    e.shutdown();
                    e.awaitTermination(30, TimeUnit.SECONDS);
                    monitor.mwait();

                    final long end = System.currentTimeMillis();
                    final double runtime = ((double) end - start) / 1000;

                    LOG.log(Level.FINEST, "size: " + size + "; messages/s: " + totalNumMessages / runtime
                            + " bandwidth(bytes/s): " + ((double) totalNumMessages * 2 * size) / runtime); // x2 for unicode chars
                }
            }
        }
    }
}

From source file:org.apache.reef.io.network.NetworkServiceTest.java

/**
 * NetworkService messaging rate benchmark.
 *//*from w ww .j a  va2 s  .co  m*/
@Test
public void testMessagingNetworkServiceBatchingRate() throws Exception {

    Assume.assumeFalse("Use log level INFO to run benchmarking", LOG.isLoggable(Level.FINEST));

    LOG.log(Level.FINEST, name.getMethodName());

    final IdentifierFactory factory = new StringIdentifierFactory();

    final Injector injector = Tang.Factory.getTang().newInjector();
    injector.bindVolatileParameter(NameServerParameters.NameServerIdentifierFactory.class, factory);
    injector.bindVolatileInstance(LocalAddressProvider.class, this.localAddressProvider);

    try (final NameServer server = injector.getInstance(NameServer.class)) {
        final int nameServerPort = server.getPort();

        final int batchSize = 1024 * 1024;
        final int[] messageSizes = { 32, 64, 512 };

        for (final int size : messageSizes) {
            final int numMessages = 300 / (Math.max(1, size / 512));
            final Monitor monitor = new Monitor();

            // network service
            final String name2 = "task2";
            final String name1 = "task1";
            final Configuration nameResolverConf = Tang.Factory.getTang()
                    .newConfigurationBuilder(NameResolverConfiguration.CONF
                            .set(NameResolverConfiguration.NAME_SERVER_HOSTNAME, this.localAddress)
                            .set(NameResolverConfiguration.NAME_SERVICE_PORT, nameServerPort).build())
                    .build();

            final Injector injector2 = Tang.Factory.getTang().newInjector(nameResolverConf);

            LOG.log(Level.FINEST, "=== Test network service receiver start");
            LOG.log(Level.FINEST, "=== Test network service sender start");
            try (final NameResolver nameResolver = injector2.getInstance(NameResolver.class)) {
                injector2.bindVolatileParameter(NetworkServiceParameters.NetworkServiceIdentifierFactory.class,
                        factory);
                injector2.bindVolatileInstance(NameResolver.class, nameResolver);
                injector2.bindVolatileParameter(NetworkServiceParameters.NetworkServiceCodec.class,
                        new StringCodec());
                injector2.bindVolatileParameter(NetworkServiceParameters.NetworkServiceTransportFactory.class,
                        injector.getInstance(MessagingTransportFactory.class));
                injector2.bindVolatileParameter(NetworkServiceParameters.NetworkServiceExceptionHandler.class,
                        new ExceptionHandler());

                final Injector injectorNs2 = injector2.forkInjector();
                injectorNs2.bindVolatileParameter(NetworkServiceParameters.NetworkServiceHandler.class,
                        new MessageHandler<String>(name2, monitor, numMessages));
                final NetworkService<String> ns2 = injectorNs2.getInstance(NetworkService.class);

                final Injector injectorNs1 = injector2.forkInjector();
                injectorNs1.bindVolatileParameter(NetworkServiceParameters.NetworkServiceHandler.class,
                        new MessageHandler<String>(name1, null, 0));
                final NetworkService<String> ns1 = injectorNs1.getInstance(NetworkService.class);

                ns2.registerId(factory.getNewInstance(name2));
                final int port2 = ns2.getTransport().getListeningPort();
                server.register(factory.getNewInstance("task2"),
                        new InetSocketAddress(this.localAddress, port2));

                ns1.registerId(factory.getNewInstance(name1));
                final int port1 = ns1.getTransport().getListeningPort();
                server.register(factory.getNewInstance("task1"),
                        new InetSocketAddress(this.localAddress, port1));

                final Identifier destId = factory.getNewInstance(name2);
                final String message = StringUtils.repeat('1', batchSize);

                final long start = System.currentTimeMillis();
                try (Connection<String> conn = ns1.newConnection(destId)) {
                    conn.open();
                    for (int i = 0; i < numMessages; i++) {
                        conn.write(message);
                    }
                    monitor.mwait();
                } catch (final NetworkException e) {
                    e.printStackTrace();
                    throw new RuntimeException(e);
                }
                final long end = System.currentTimeMillis();
                final double runtime = ((double) end - start) / 1000;
                final long numAppMessages = numMessages * batchSize / size;
                LOG.log(Level.FINEST, "size: " + size + "; messages/s: " + numAppMessages / runtime
                        + " bandwidth(bytes/s): " + ((double) numAppMessages * 2 * size) / runtime); // x2 for unicode chars
            }
        }
    }
}

From source file:org.apache.rya.indexing.pcj.fluo.client.util.Report.java

@Override
public String toString() {
    // Figure out how long each line will be.
    final int lineLength = "| ".length() + maxTitleLength + " | ".length() + maxValueLineLength + " |".length();

    // Format that may be used to write each line.
    final String lineFormat = "| %-" + maxTitleLength + "s | %-" + maxValueLineLength + "s |\n";

    // The line that is used as the first and last line of the report.
    final String dashLine = StringUtils.repeat("-", lineLength);

    // Build the String verison of the report.
    final StringBuilder builder = new StringBuilder();
    builder.append(dashLine).append("\n");

    for (final ReportItem item : items) {
        final String[] valueLines = item.getValueLines();
        switch (valueLines.length) {
        case 0:/*from  w ww.  ja v  a2  s.c om*/
            // Write an empty value cell.
            builder.append(String.format(lineFormat, item.getTitle(), ""));
            break;

        case 1:
            // Write the value cell.
            builder.append(String.format(lineFormat, item.getTitle(), valueLines[0]));
            break;

        default:
            builder.append(String.format(lineFormat, item.getTitle(), valueLines[0]));
            for (int i = 1; i < valueLines.length; i++) {
                builder.append(String.format(lineFormat, "", valueLines[i]));
            }
            break;
        }
    }

    builder.append(dashLine).append("\n");
    return builder.toString();
}

From source file:org.apache.sling.nosql.couchbase.client.CouchbaseKeyTest.java

@Test
public void testLongKey() {
    String key = CouchbaseKey.build("/long/key/" + StringUtils.repeat("/aaa", 500), PREFIX);
    assertTrue(StringUtils.startsWith(key, PREFIX + "/long/key/"));
    assertEquals(CouchbaseKey.MAX_KEY_LENGTH, key.length());
}

From source file:org.apereo.portal.rest.oauth.OidcUserInfoController.java

/**
 * Obtain an OIDC Id token for the specified <code>client_id</code>. At least one bean of type
 * {@link OAuthClient} is required to use this endpoint.
 *
 * <p>This token strategy supports Spring's <code>OAuth2RestTemplate</code> for accessing
 * uPortal REST APIs from external systems. Use a <code>ClientCredentialsResourceDetails</code>
 * with <code>clientAuthenticationScheme=AuthenticationScheme.form</code>, together with a
 * <code>ClientCredentialsAccessTokenProvider</code>.
 *
 * @since 5.5/*w ww.  j a v  a  2 s . co  m*/
 */
@PostMapping(value = TOKEN_ENDPOINT_URI, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity oauthToken(@RequestParam(value = "client_id") String clientId,
        @RequestParam(value = "client_secret") String clientSecret,
        @RequestParam(value = "grant_type", required = false, defaultValue = "client_credentials") String grantType,
        @RequestParam(value = "scope", required = false, defaultValue = "/all") String scope,
        @RequestParam(value = "claims", required = false) String claims,
        @RequestParam(value = "groups", required = false) String groups) {

    /*
     * NB:  Several of this method's parameters are not consumed (yet) in any way.  They are
     * defined to match a two-legged OAuth strategy and for future use.
     */

    final String msg = "Processing request for OAuth access token;  client_id='{}', client_secret='{}', "
            + "grant_type='{}', scope='{}', claims='{}', groups='{}'";
    logger.debug(msg, clientId, StringUtils.repeat("*", clientSecret.length()), grantType, scope, claims,
            groups);

    // STEP 1:  identify the client
    final OAuthClient oAuthClient = clientMap.get(clientId);
    if (oAuthClient == null) {
        return ResponseEntity.status(HttpStatus.FORBIDDEN)
                .body(Collections.singletonMap("message", "client_id not found"));
    }

    logger.debug("Selected known OAuthClient with client_id='{}' for access token request",
            oAuthClient.getClientId());

    // STEP 2:  validate the client_secret
    if (!oAuthClient.getClientSecret().equals(clientSecret)) {
        return ResponseEntity.status(HttpStatus.FORBIDDEN)
                .body(Collections.singletonMap("message", "authentication failed"));
    }

    // STEP 3:  obtain the specified user
    final IPerson person = personService.getPerson(oAuthClient.getPortalUserAccount());
    if (person == null) {
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(Collections.singletonMap("message",
                "portal user account not found: " + oAuthClient.getPortalUserAccount()));
    }

    logger.debug("Selected portal Person with username='{}' for client_id='{}'", person.getUserName(),
            oAuthClient.getClientId());

    // STEP 4:  build a standard OAuth2 access token response
    final String token = createToken(person, claims, groups);
    final Map<String, Object> rslt = new HashMap<>();
    rslt.put("access_token", token);
    rslt.put("token_type", "bearer");
    rslt.put("expires_in", timeoutSeconds > 2 ? timeoutSeconds - 2L /* fudge factor */ : timeoutSeconds);
    rslt.put("scope", scope);

    logger.debug("Produced the following access token for client_id='{}':  {}", oAuthClient.getClientId(),
            rslt);

    return ResponseEntity.ok(rslt);
}

From source file:org.audit4j.core.annotation.DeIdentifyUtil.java

/**
 * Deidentify left./* w  w w  .  ja  v  a  2s  . c  o m*/
 *
 * @param str the str
 * @param size the size
 * @return the string
 * 
 * @since 2.0.0
 */
public static String deidentifyLeft(String str, int size) {
    int repeat;
    if (size > str.length()) {
        repeat = str.length();
    } else {
        repeat = size;
    }
    return StringUtils.overlay(str, StringUtils.repeat('*', repeat), 0, size);
}

From source file:org.audit4j.core.annotation.DeIdentifyUtil.java

/**
 * Deidentify right.//w  ww.  jav a 2s . co m
 *
 * @param str the str
 * @param size the size
 * @return the string
 * 
 * @since 2.0.0
 */
public static String deidentifyRight(String str, int size) {
    int end = str.length();
    int repeat;
    if (size > str.length()) {
        repeat = str.length();
    } else {
        repeat = size;
    }
    return StringUtils.overlay(str, StringUtils.repeat('*', repeat), end - size, end);
}

From source file:org.audit4j.core.annotation.DeIdentifyUtil.java

/**
 * Deidentify from left.//from   w  w  w .jav  a  2  s  .  c o  m
 *
 * @param str the str
 * @param size the size
 * @return the string
 * 
 * @since 2.0.0
 */
public static String deidentifyFromLeft(String str, int size) {
    int end = str.length();
    int repeat;
    if (size > str.length()) {
        repeat = 0;
    } else {
        repeat = str.length() - size;
    }
    return StringUtils.overlay(str, StringUtils.repeat('*', repeat), size, end);
}