use of org.finos.waltz.model.server_information.ServerInformation in project waltz by khartec.
the class MariaServerInformationSearch method searchFullText.
@Override
public List<ServerInformation> searchFullText(DSLContext dsl, EntitySearchOptions options) {
List<String> terms = SearchUtilities.mkTerms(options.searchQuery());
if (terms.isEmpty()) {
return Collections.emptyList();
}
Condition externalIdCondition = terms.stream().map(term -> SERVER_INFORMATION.EXTERNAL_ID.like(term + "%")).collect(Collectors.reducing(DSL.trueCondition(), (acc, frag) -> acc.and(frag)));
List<ServerInformation> serversViaExternalId = dsl.selectDistinct(SERVER_INFORMATION.fields()).from(SERVER_INFORMATION).where(externalIdCondition).orderBy(SERVER_INFORMATION.HOSTNAME).limit(options.limit()).fetch(ServerInformationDao.TO_DOMAIN_MAPPER);
Condition hostnameCondition = terms.stream().map(term -> SERVER_INFORMATION.HOSTNAME.like("%" + term + "%")).collect(Collectors.reducing(DSL.trueCondition(), (acc, frag) -> acc.and(frag)));
List<ServerInformation> serversViaHostname = dsl.selectDistinct(SERVER_INFORMATION.fields()).from(SERVER_INFORMATION).where(hostnameCondition).orderBy(SERVER_INFORMATION.HOSTNAME).limit(options.limit()).fetch(ServerInformationDao.TO_DOMAIN_MAPPER);
List<ServerInformation> serversViaFullText = dsl.select(SERVER_INFORMATION.fields()).from(SERVER_INFORMATION).where("MATCH(hostname, external_id, operating_system, location) AGAINST (?)", options.searchQuery()).limit(options.limit()).fetch(ServerInformationDao.TO_DOMAIN_MAPPER);
serversViaHostname.sort(SearchUtilities.mkRelevancyComparator(a -> a.hostname(), terms.get(0)));
serversViaExternalId.sort(SearchUtilities.mkRelevancyComparator(a -> a.externalId().orElse(null), terms.get(0)));
return new ArrayList<>(orderedUnion(serversViaExternalId, serversViaHostname, serversViaFullText));
}
use of org.finos.waltz.model.server_information.ServerInformation in project waltz by khartec.
the class ServerInformationSearchDao method search.
@Override
public List<ServerInformation> search(EntitySearchOptions options) {
checkNotNull(options, "options cannot be null");
List<String> terms = SearchUtilities.mkTerms(options.searchQuery());
if (terms.isEmpty()) {
return Collections.emptyList();
}
Condition externalIdCondition = JooqUtilities.mkStartsWithTermSearch(SERVER_INFORMATION.EXTERNAL_ID, terms);
List<ServerInformation> serversViaExternalId = dsl.select(SERVER_INFORMATION.fields()).from(SERVER_INFORMATION).where(externalIdCondition).orderBy(SERVER_INFORMATION.HOSTNAME).limit(options.limit()).fetch(ServerInformationDao.TO_DOMAIN_MAPPER);
Condition hostnameCondition = JooqUtilities.mkBasicTermSearch(SERVER_INFORMATION.HOSTNAME, terms);
List<ServerInformation> serversViaHostname = dsl.select(SERVER_INFORMATION.fields()).from(SERVER_INFORMATION).where(hostnameCondition).orderBy(SERVER_INFORMATION.HOSTNAME).limit(options.limit()).fetch(ServerInformationDao.TO_DOMAIN_MAPPER);
List<ServerInformation> serversViaFullText = searcher.searchFullText(dsl, options);
serversViaHostname.sort(SearchUtilities.mkRelevancyComparator(ServerInformation::hostname, terms.get(0)));
serversViaExternalId.sort(SearchUtilities.mkRelevancyComparator(a -> a.externalId().orElse(null), terms.get(0)));
return new ArrayList<>(orderedUnion(serversViaExternalId, serversViaHostname, serversViaFullText));
}
use of org.finos.waltz.model.server_information.ServerInformation in project waltz by khartec.
the class ServerGenerator method create.
@Override
public Map<String, Integer> create(ApplicationContext ctx) {
ServerInformationDao serverDao = ctx.getBean(ServerInformationDao.class);
DSLContext dsl = ctx.getBean(DSLContext.class);
commonHostNames.clear();
List<ServerInformation> servers = ListUtilities.newArrayList();
IntStream.range(0, 10_000).forEach(i -> {
String hostName = mkHostName(i);
boolean isCommonHost = commonHostNames.contains(hostName);
servers.add(ImmutableServerInformation.builder().hostname(hostName).location(isCommonHost ? SampleData.locations[0] : randomPick(SampleData.locations)).operatingSystem(isCommonHost ? SampleData.operatingSystems[0] : randomPick(SampleData.operatingSystems)).operatingSystemVersion(isCommonHost ? SampleData.operatingSystemVersions[0] : randomPick(SampleData.operatingSystemVersions)).country("UK").hardwareEndOfLifeDate(rnd.nextInt(10) > 5 ? Date.valueOf(LocalDate.now().plusMonths(rnd.nextInt(12 * 6) - (12 * 3))) : null).operatingSystemEndOfLifeDate(rnd.nextInt(10) > 5 ? Date.valueOf(LocalDate.now().plusMonths(rnd.nextInt(12 * 6) - (12 * 3))) : null).virtual(isCommonHost || rnd.nextInt(10) > 7).provenance(SAMPLE_DATA_PROVENANCE).lifecycleStatus(randomPick(LifecycleStatus.values())).externalId(mkExernalId(i)).build());
});
serverDao.bulkSave(servers);
// create server usages
List<Long> appIds = getAppIds(dsl);
List<Long> serverIds = getServerIds(dsl);
HashSet<Tuple2<Long, Long>> serverAppMappings = new HashSet<>();
IntStream.range(0, 20_000).forEach(i -> {
serverAppMappings.add(Tuple.tuple(randomPick(serverIds), randomPick(appIds)));
});
List<ServerUsageRecord> serverUsages = serverAppMappings.stream().map(t -> mkServerUsageRecord(t.v1, t.v2)).collect(Collectors.toList());
dsl.batchInsert(serverUsages).execute();
return null;
}
Aggregations