com.khartec.waltz.jobs.ServerHarness.java Source code

Java tutorial

Introduction

Here is the source code for com.khartec.waltz.jobs.ServerHarness.java

Source

/*
 *  This file is part of Waltz.
 *
 *     Waltz is free software: you can redistribute it and/or modify
 *     it under the terms of the GNU General Public License as published by
 *     the Free Software Foundation, either version 3 of the License, or
 *     (at your option) any later version.
 *
 *     Waltz is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU General Public License for more details.
 *
 *     You should have received a copy of the GNU General Public License
 *     along with Waltz.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.khartec.waltz.jobs;

import com.khartec.waltz.common.FunctionUtilities;
import com.khartec.waltz.data.server_information.ServerInformationDao;
import com.khartec.waltz.model.*;
import com.khartec.waltz.service.DIConfiguration;
import com.khartec.waltz.service.server_information.ServerInformationService;
import org.jooq.DSLContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class ServerHarness {

    public static void main(String[] args) {

        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(DIConfiguration.class);
        ServerInformationService serverInfoService = ctx.getBean(ServerInformationService.class);
        ServerInformationDao serverInfoDao = ctx.getBean(ServerInformationDao.class);
        DSLContext dsl = ctx.getBean(DSLContext.class);

        IdSelectionOptions options = ImmutableIdSelectionOptions.builder()
                .entityReference(ImmutableEntityReference.builder().kind(EntityKind.ORG_UNIT).id(10).build())
                .scope(HierarchyQueryScope.CHILDREN).build();

        for (int i = 0; i < 5; i++) {
            HarnessUtilities.time("stats", () -> serverInfoService.findStatsForAppSelector(options));
        }

        String sql = "\n" + "select \n" + "  coalesce(\n"
                + "    sum(case [server_information].[is_virtual] when 1 then 1\n"
                + "                                               else 0\n" + "        end), \n"
                + "    0) [virtual_count], \n" + "  coalesce(\n"
                + "    sum(case [server_information].[is_virtual] when 1 then 0\n"
                + "                                               else 1\n" + "        end), \n"
                + "    0) [physical_count]\n" + "from [server_information]\n"
                + "where [server_information].[asset_code] in (\n" + "  select [application].[asset_code]\n"
                + "  from [application]\n" + "  where [application].[id] in (\n" + "    select [application].[id]\n"
                + "    from [application]\n" + "    where [application].[organisational_unit_id] in (\n"
                + "      130, 260, 70, 200, 10, 140, 270, 80, 210, 20, 150, 280, 90, 220, 30, 160, \n"
                + "      290, 100, 230, 40, 170, 300, 110, 240, 50, 180, 120, 250, 60, 190\n" + "    )\n" + "  )\n"
                + ");\n";

        FunctionUtilities.time("raw q", () -> {
            dsl.connection(conn -> {
                PreparedStatement stmt = conn.prepareStatement(sql);
                ResultSet rs = stmt.executeQuery();
                while (rs.next()) {
                    System.out.println(rs.getBigDecimal(1) + " - " + rs.getBigDecimal(2));
                }
            });
            return null;
        });

    }

}