Search in sources :

Example 6 with IntSupplier

use of java.util.function.IntSupplier in project jena by apache.

the class Gen method rand.

/**
     * Generate a random sequence between low (inclusive) and high (exclusive) - with duplicates or not
     */
public static int[] rand(int numRand, int low, int high, boolean allDifferent) {
    Set<Integer> used = new HashSet<>();
    IntSupplier supplier = allDifferent ? () -> {
        int x = oneRandomInt(low, high);
        while (!used.add(x)) x = oneRandomInt(low, high);
        return x;
    } : () -> oneRandomInt(low, high);
    return IntStream.generate(supplier).limit(numRand).toArray();
}
Also used : IntSupplier(java.util.function.IntSupplier)

Example 7 with IntSupplier

use of java.util.function.IntSupplier in project intellij-community by JetBrains.

the class Foo method m.

void m() {
    Runnable r = Collections::emptyList;
    Runnable r2 = () -> {
        IntSupplier s = () -> 1;
        Runnable r3 = () -> {
        };
    };
    IntSupplier s2 = () -> 1;
}
Also used : IntSupplier(java.util.function.IntSupplier)

Example 8 with IntSupplier

use of java.util.function.IntSupplier in project intellij-community by JetBrains.

the class Foo method m2.

void m2() {
    Runnable r = () -> {
        Runnable r3 = () -> {
            IntSupplier s2 = () -> 1;
            Runnable r4 = () -> {
            };
        };
        IntSupplier s = () -> 1;
    };
}
Also used : IntSupplier(java.util.function.IntSupplier)

Example 9 with IntSupplier

use of java.util.function.IntSupplier in project Aeron by real-logic.

the class SelectReceiveSendUdpPong method run.

private void run() throws IOException {
    final InetSocketAddress sendAddress = new InetSocketAddress("localhost", Common.PONG_PORT);
    final ByteBuffer buffer = ByteBuffer.allocateDirect(Configuration.MTU_LENGTH_DEFAULT);
    final DatagramChannel receiveChannel = DatagramChannel.open();
    Common.init(receiveChannel);
    receiveChannel.bind(new InetSocketAddress("localhost", Common.PING_PORT));
    final DatagramChannel sendChannel = DatagramChannel.open();
    Common.init(sendChannel);
    final Selector selector = Selector.open();
    final IntSupplier handler = () -> {
        try {
            buffer.clear();
            receiveChannel.receive(buffer);
            final long receivedSequenceNumber = buffer.getLong(0);
            final long receivedTimestamp = buffer.getLong(SIZE_OF_LONG);
            buffer.clear();
            buffer.putLong(receivedSequenceNumber);
            buffer.putLong(receivedTimestamp);
            buffer.flip();
            sendChannel.send(buffer, sendAddress);
        } catch (final IOException ex) {
            ex.printStackTrace();
        }
        return 1;
    };
    receiveChannel.register(selector, OP_READ, handler);
    final AtomicBoolean running = new AtomicBoolean(true);
    SigInt.register(() -> running.set(false));
    while (true) {
        while (selector.selectNow() == 0) {
            if (!running.get()) {
                return;
            }
        }
        final Set<SelectionKey> selectedKeys = selector.selectedKeys();
        final Iterator<SelectionKey> iter = selectedKeys.iterator();
        while (iter.hasNext()) {
            final SelectionKey key = iter.next();
            if (key.isReadable()) {
                ((IntSupplier) key.attachment()).getAsInt();
            }
            iter.remove();
        }
    }
}
Also used : AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) SelectionKey(java.nio.channels.SelectionKey) IntSupplier(java.util.function.IntSupplier) InetSocketAddress(java.net.InetSocketAddress) DatagramChannel(java.nio.channels.DatagramChannel) IOException(java.io.IOException) ByteBuffer(java.nio.ByteBuffer) Selector(java.nio.channels.Selector)

Example 10 with IntSupplier

use of java.util.function.IntSupplier in project MantaroBot by Mantaro.

the class OwnerCmd method owner.

@Command
public static void owner(CommandRegistry cr) {
    Map<String, Evaluator> evals = new HashMap<>();
    evals.put("js", (event, code) -> {
        ScriptEngine script = new ScriptEngineManager().getEngineByName("nashorn");
        script.put("mantaro", MantaroBot.getInstance());
        script.put("db", MantaroData.db());
        script.put("jda", event.getJDA());
        script.put("event", event);
        script.put("guild", event.getGuild());
        script.put("channel", event.getChannel());
        try {
            return script.eval(String.join("\n", "load(\"nashorn:mozilla_compat.js\");", "imports = new JavaImporter(java.util, java.io, java.net);", "(function() {", "with(imports) {", code, "}", "})()"));
        } catch (Exception e) {
            return e;
        }
    });
    evals.put("bsh", (event, code) -> {
        Interpreter interpreter = new Interpreter();
        try {
            interpreter.set("mantaro", MantaroBot.getInstance());
            interpreter.set("db", MantaroData.db());
            interpreter.set("jda", event.getJDA());
            interpreter.set("event", event);
            interpreter.set("guild", event.getGuild());
            interpreter.set("channel", event.getChannel());
            return interpreter.eval(String.join("\n", "import *;", code));
        } catch (Exception e) {
            return e;
        }
    });
    evals.put("cw", (event, code) -> {
        Object[] returns;
        boolean errored = false;
        try {
            returns = MantaroData.connectionWatcher().eval(code);
        } catch (RuntimeException e) {
            errored = true;
            returns = new Object[] { e.getMessage() };
        }
        String result = returns.length == 1 ? returns[0] == null ? null : String.valueOf(returns[0]) : Arrays.asList(returns).toString();
        if (errored)
            return new Error(result == null ? "Internal error" : result) {

                @Override
                public String toString() {
                    return getMessage();
                }
            };
        return result;
    });
    cr.register("owner", new SimpleCommand(Category.OWNER) {

        @Override
        public CommandPermission permission() {
            return CommandPermission.OWNER;
        }

        @Override
        public MessageEmbed help(GuildMessageReceivedEvent event) {
            return helpEmbed(event, "Owner command").setDescription("`~>owner shutdown/forceshutdown`: Shutdowns the bot\n" + "`~>owner restart/forcerestart`: Restarts the bot.\n" + "`~>owner scheduleshutdown time <time>` - Schedules a fixed amount of seconds the bot will wait to be shutted down.\n" + "`~>owner varadd <pat/hug/greeting/splash>` - Adds a link or phrase to the specified list.\n" + "`~>owner eval <bsh/js/cw> <line of code>` - Evals a specified code snippet.\n" + "`~>owner cw <info/eval>` - Shows info or evals specified code in the Connection Watcher.\n" + "`~>owner premium add <id> <days>` - Adds premium to the specified user for x days.").addField("Shush.", "If you aren't Adrian or Kode you shouldn't be looking at this, huh 👀" + EmoteReference.EYES, false).build();
        }

        @Override
        public void call(GuildMessageReceivedEvent event, String content, String[] args) {
            if (args.length < 1) {
                onHelp(event);
                return;
            }
            String option = args[0];
            if (option.equals("cw")) {
                if (args.length < 2) {
                    onHelp(event);
                    return;
                }
                String sub = args[1].split("\\s+")[0];
                if (sub.equals("info")) {
                    event.getChannel().sendMessage(new EmbedBuilder().setAuthor("Connection Watcher info", null, null).setDescription(MantaroData.connectionWatcher().get().toString()).setColor(event.getGuild().getSelfMember().getColor()).setFooter("Asked by: " + event.getAuthor().getName(), null).build()).queue();
                } else if (sub.equals("eval")) {
                    String[] parts = event.getMessage().getRawContent().split(" ");
                    if (parts.length < 4) {
                        onHelp(event);
                        return;
                    }
                    Object[] returns;
                    boolean errored = false;
                    try {
                        returns = MantaroData.connectionWatcher().eval(String.join(" ", Arrays.copyOfRange(parts, 3, parts.length)));
                    } catch (RuntimeException e) {
                        errored = true;
                        returns = new Object[] { e.getMessage() };
                    }
                    String result = returns.length == 1 ? returns[0] == null ? null : String.valueOf(returns[0]) : Arrays.asList(returns).toString();
                    event.getChannel().sendMessage(new EmbedBuilder().setAuthor("Evaluated " + (errored ? "and errored" : "with success"), null, event.getAuthor().getAvatarUrl()).setColor(errored ? Color.RED : Color.GREEN).setDescription(result == null ? "Executed successfully with no objects returned" : ("Executed " + (errored ? "and errored: " : "successfully and returned: ") + result)).setFooter("Asked by: " + event.getAuthor().getName(), null).build()).queue();
                } else {
                    onHelp(event);
                }
                return;
            }
            if (option.equals("premium")) {
                String sub = args[1].substring(0, args[1].indexOf(' '));
                if (sub.equals("add")) {
                    try {
                        String[] values = SPLIT_PATTERN.split(args[1], 3);
                        try {
                            Long.parseLong(values[1]);
                        } catch (Exception e) {
                            event.getChannel().sendMessage(EmoteReference.ERROR + "Not a valid user id").queue();
                            return;
                        }
                        DBUser db = MantaroData.db().getUser(values[1]);
                        db.incrementPremium(TimeUnit.DAYS.toMillis(Long.parseLong(values[2])));
                        db.saveAsync();
                        event.getChannel().sendMessage(EmoteReference.CORRECT + "The premium feature for user " + db.getId() + " now is until " + new Date(db.getPremiumUntil())).queue();
                        return;
                    } catch (IndexOutOfBoundsException e) {
                        event.getChannel().sendMessage(EmoteReference.ERROR + "You need to specify id and number of days").queue();
                        e.printStackTrace();
                        return;
                    }
                }
                if (sub.equals("guild")) {
                    try {
                        String[] values = SPLIT_PATTERN.split(args[1], 3);
                        DBGuild db = MantaroData.db().getGuild(values[1]);
                        db.incrementPremium(TimeUnit.DAYS.toMillis(Long.parseLong(values[2])));
                        db.saveAsync();
                        event.getChannel().sendMessage(EmoteReference.CORRECT + "The premium feature for guild " + db.getId() + " now is until " + new Date(db.getPremiumUntil())).queue();
                        return;
                    } catch (IndexOutOfBoundsException e) {
                        event.getChannel().sendMessage(EmoteReference.ERROR + "You need to specify id and number of days").queue();
                        e.printStackTrace();
                        return;
                    }
                }
            }
            if (option.equals("shutdown") || option.equals("restart")) {
                if (args.length == 2) {
                    try {
                        notifyMusic(args[1]).get();
                    } catch (InterruptedException | ExecutionException ignored) {
                    }
                }
                try {
                    prepareShutdown(event);
                } catch (Exception e) {
                    log.warn(EmoteReference.ERROR + "Couldn't prepare shutdown." + e.toString(), e);
                    return;
                }
                if (option.equals("restart")) {
                    try {
                        MantaroData.connectionWatcher().reboot(false);
                    } catch (Exception e) {
                        log.error("Error restarting via manager, manual reboot required", e);
                        System.exit(-1);
                    }
                } else {
                    System.exit(0);
                }
                return;
            }
            if (option.equals("forceshutdown") || option.equals("forcerestart")) {
                if (args.length == 2) {
                    try {
                        notifyMusic(args[1]).get();
                    } catch (InterruptedException | ExecutionException ignored) {
                    }
                }
                try {
                    prepareShutdown(event);
                } catch (Exception e) {
                    log.warn(EmoteReference.ERROR + "Couldn't prepare shutdown. I don't care, I'm gonna restart anyway." + e.toString(), e);
                }
                if (option.equals("forcerestart")) {
                    try {
                        MantaroData.connectionWatcher().reboot(false);
                    } catch (Exception e) {
                        log.error("Error restarting via manager, manual reboot required", e);
                        System.exit(-1);
                    }
                } else {
                    System.exit(0);
                }
                return;
            }
            if (args.length < 2) {
                onHelp(event);
                return;
            }
            String value = args[1];
            if (option.equals("notifymusic")) {
                notifyMusic(value);
                event.getChannel().sendMessage(EmoteReference.MEGA + "Guilds playing music were notified!").queue();
                return;
            }
            String[] values = SPLIT_PATTERN.split(value, 2);
            if (values.length < 2) {
                onHelp(event);
                return;
            }
            String k = values[0], v = values[1];
            if (option.equals("scheduleshutdown") || option.equals("schedulerestart")) {
                boolean restart = option.equals("schedulerestart");
                if (k.equals("time")) {
                    double s = Double.parseDouble(v);
                    int millis = (int) (s * 1000);
                    Async.thread(millis, TimeUnit.MILLISECONDS, () -> {
                        try {
                            prepareShutdown(event);
                        } catch (Exception e) {
                            log.warn(EmoteReference.ERROR + "Couldn't prepare shutdown. I don't care, I'm gonna restart anyway." + e.toString(), e);
                        }
                        if (restart) {
                            try {
                                MantaroData.connectionWatcher().reboot(false);
                            } catch (Exception e) {
                                log.error("Error restarting via manager, manual reboot required", e);
                                System.exit(-1);
                            }
                        } else {
                            System.exit(0);
                        }
                    });
                    event.getChannel().sendMessage(EmoteReference.STOPWATCH + " Sleeping in " + s + " seconds...").queue();
                    return;
                }
                if (k.equals("connections")) {
                    int connections = Integer.parseInt(v);
                    IntSupplier currentConnections = () -> (int) event.getJDA().getVoiceChannels().stream().filter(voiceChannel -> voiceChannel.getMembers().contains(voiceChannel.getGuild().getSelfMember())).count();
                    Async.task("Watching Thread.", s -> {
                        if (currentConnections.getAsInt() > connections)
                            return;
                        try {
                            prepareShutdown(event);
                        } catch (Exception e) {
                            log.warn("Couldn't prepare shutdown. I don't care, I'm gonna do it anyway." + e.toString(), e);
                        }
                        if (restart) {
                            try {
                                MantaroData.connectionWatcher().reboot(false);
                            } catch (Exception e) {
                                log.error("Error restarting via manager, manual reboot required", e);
                                System.exit(-1);
                            }
                        } else {
                            System.exit(0);
                        }
                        s.shutdown();
                    }, 2, TimeUnit.SECONDS);
                    return;
                }
                onHelp(event);
                return;
            }
            if (option.equals("varadd")) {
                try {
                    String v1 = values[1];
                    switch(values[0]) {
                        case "pat":
                            ActionCmds.PATS.get().add(v1);
                            ActionCmds.PATS.save();
                            event.getChannel().sendMessage(EmoteReference.CORRECT + "Added to pat list: " + v).queue();
                            break;
                        case "hug":
                            ActionCmds.HUGS.get().add(v1);
                            ActionCmds.HUGS.save();
                            event.getChannel().sendMessage(EmoteReference.CORRECT + "Added to hug list: " + v).queue();
                            break;
                        case "greeting":
                            ActionCmds.GREETINGS.get().add(content.replace("varadd greeting ", ""));
                            ActionCmds.GREETINGS.save();
                            event.getChannel().sendMessage(EmoteReference.CORRECT + "Added to greet list: " + content.replace("greeting ", "")).queue();
                            break;
                        case "splash":
                            MantaroShard.SPLASHES.get().add(content.replace("varadd splash ", ""));
                            MantaroShard.SPLASHES.save();
                            event.getChannel().sendMessage(EmoteReference.CORRECT + "Added to splash list: " + content.replace("splash ", "")).queue();
                            break;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return;
            }
            if (option.equals("eval")) {
                Evaluator evaluator = evals.get(k);
                if (evaluator == null) {
                    onHelp(event);
                    return;
                }
                Object result = evaluator.eval(event, v);
                boolean errored = result instanceof Throwable;
                event.getChannel().sendMessage(new EmbedBuilder().setAuthor("Evaluated " + (errored ? "and errored" : "with success"), null, event.getAuthor().getAvatarUrl()).setColor(errored ? Color.RED : Color.GREEN).setDescription(result == null ? "Executed successfully with no objects returned" : ("Executed " + (errored ? "and errored: " : "successfully and returned: ") + result.toString())).setFooter("Asked by: " + event.getAuthor().getName(), null).build()).queue();
                return;
            }
            if (option.equals("query")) {
                try {
                    String[] values1 = SPLIT_PATTERN.split(content);
                    String expression = content.replace(values1[0] + " ", "");
                    SQLDatabase.getInstance().run((conn) -> {
                        try {
                            ResultSet set;
                            try {
                                set = conn.prepareStatement(expression).executeQuery();
                            } catch (SQLException e) {
                                try {
                                    conn.prepareStatement(expression).execute();
                                    event.getChannel().sendMessage(" Query was successfully executed!").queue();
                                } catch (SQLException e1) {
                                    event.getChannel().sendMessage("Failed to execute query! " + Utils.paste(getStackTrace(e1))).queue();
                                }
                                return;
                            }
                            List<String> header = new ArrayList<>();
                            List<List<String>> table = new ArrayList<>();
                            ResultSetMetaData metaData = set.getMetaData();
                            int columnsCount = metaData.getColumnCount();
                            for (int i = 0; i < columnsCount; i++) {
                                header.add(metaData.getColumnName(i + 1));
                            }
                            while (set.next()) {
                                List<String> row = new ArrayList<>();
                                for (int i = 0; i < columnsCount; i++) {
                                    String s = String.valueOf(set.getString(i + 1)).trim();
                                    row.add(s.substring(0, Math.min(30, s.length())));
                                }
                                table.add(row);
                            }
                            String output = makeAsciiTable(header, table, null);
                            event.getChannel().sendMessage(Utils.paste(output)).queue();
                        } catch (SQLException e) {
                            event.getChannel().sendMessage(" Failed to build ascii table! " + Utils.paste(getStackTrace(e))).queue();
                        }
                    }).queue();
                } catch (SQLException e) {
                    event.getChannel().sendMessage(" Failed to run query! " + Utils.paste(getStackTrace(e))).queue();
                }
                return;
            }
            onHelp(event);
        }

        @Override
        public String[] splitArgs(String content) {
            return SPLIT_PATTERN.split(content, 2);
        }
    });
}
Also used : SimpleCommand(net.kodehawa.mantarobot.modules.commands.SimpleCommand) Color(java.awt.Color) java.util(java.util) Async(br.com.brjdevs.java.utils.async.Async) Utils(net.kodehawa.mantarobot.utils.Utils) Module(net.kodehawa.mantarobot.modules.Module) CompletableFuture(java.util.concurrent.CompletableFuture) MantaroShard(net.kodehawa.mantarobot.MantaroShard) Message(net.dv8tion.jda.core.entities.Message) MantaroBot(net.kodehawa.mantarobot.MantaroBot) GuildMessageReceivedEvent(net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent) SQLException(java.sql.SQLException) DBGuild(net.kodehawa.mantarobot.data.entities.DBGuild) ResultSet(java.sql.ResultSet) CommandRegistry(net.kodehawa.mantarobot.modules.CommandRegistry) SQLDatabase(net.kodehawa.mantarobot.utils.sql.SQLDatabase) Command(net.kodehawa.mantarobot.modules.Command) MessageEmbed(net.dv8tion.jda.core.entities.MessageEmbed) IntSupplier(java.util.function.IntSupplier) PrintWriter(java.io.PrintWriter) Interpreter(bsh.Interpreter) DBUser(net.kodehawa.mantarobot.data.entities.DBUser) StringWriter(java.io.StringWriter) SPLIT_PATTERN(net.kodehawa.mantarobot.utils.StringUtils.SPLIT_PATTERN) ScriptEngineManager(javax.script.ScriptEngineManager) Category(net.kodehawa.mantarobot.modules.commands.base.Category) MantaroObj(net.kodehawa.mantarobot.data.entities.MantaroObj) EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) ExecutionException(java.util.concurrent.ExecutionException) TimeUnit(java.util.concurrent.TimeUnit) Slf4j(lombok.extern.slf4j.Slf4j) CollectionUtils.random(br.com.brjdevs.java.utils.collections.CollectionUtils.random) EmoteReference(net.kodehawa.mantarobot.utils.commands.EmoteReference) CommandPermission(net.kodehawa.mantarobot.modules.commands.CommandPermission) ScriptEngine(javax.script.ScriptEngine) MantaroData(net.kodehawa.mantarobot.data.MantaroData) ResultSetMetaData(java.sql.ResultSetMetaData) MessageEmbed(net.dv8tion.jda.core.entities.MessageEmbed) IntSupplier(java.util.function.IntSupplier) SQLException(java.sql.SQLException) ScriptEngineManager(javax.script.ScriptEngineManager) CommandPermission(net.kodehawa.mantarobot.modules.commands.CommandPermission) ResultSetMetaData(java.sql.ResultSetMetaData) ResultSet(java.sql.ResultSet) GuildMessageReceivedEvent(net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent) Interpreter(bsh.Interpreter) ScriptEngine(javax.script.ScriptEngine) SQLException(java.sql.SQLException) ExecutionException(java.util.concurrent.ExecutionException) EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) DBGuild(net.kodehawa.mantarobot.data.entities.DBGuild) SimpleCommand(net.kodehawa.mantarobot.modules.commands.SimpleCommand) DBUser(net.kodehawa.mantarobot.data.entities.DBUser) SimpleCommand(net.kodehawa.mantarobot.modules.commands.SimpleCommand) Command(net.kodehawa.mantarobot.modules.Command)

Aggregations

IntSupplier (java.util.function.IntSupplier)15 Test (org.junit.Test)7 UnitTest (org.apache.geode.test.junit.categories.UnitTest)6 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)3 IOException (java.io.IOException)2 InetSocketAddress (java.net.InetSocketAddress)2 ByteBuffer (java.nio.ByteBuffer)2 DatagramChannel (java.nio.channels.DatagramChannel)2 SelectionKey (java.nio.channels.SelectionKey)2 Selector (java.nio.channels.Selector)2 Async (br.com.brjdevs.java.utils.async.Async)1 CollectionUtils.random (br.com.brjdevs.java.utils.collections.CollectionUtils.random)1 Interpreter (bsh.Interpreter)1 Color (java.awt.Color)1 PrintWriter (java.io.PrintWriter)1 StringWriter (java.io.StringWriter)1 ResultSet (java.sql.ResultSet)1 ResultSetMetaData (java.sql.ResultSetMetaData)1 SQLException (java.sql.SQLException)1 Duration (java.time.Duration)1