public static Optional<? extends Dbms> referencedDbmsIfPresent(Project project, String dbmsId) { return project.dbmses().filter(dbms -> dbmsId.equals(dbms.getId())).findAny(); }
public static Dbms referencedDbms(Project project, String dbmsId) { return project .dbmses().filter(dbms -> dbmsId.equals(dbms.getId())) .findAny().orElseThrow(() -> new SpeedmentConfigException( "Could not find referenced " + Dbms.class.getSimpleName() + " with name '" + dbmsId + "'." )); }
@ExecuteBefore(STARTED) void setupSingleDbms(@WithState(State.RESOLVED) ProjectComponent projectComponent) { final Set<Dbms> dbmses = projectComponent.getProject().dbmses().collect(toSet()); if (dbmses.size() == 1) { singleDbms = dbmses.iterator().next(); } }
/** * Set any compatible type mappers in Project <code>{@code to}</code> found in Project <code>{@code from}</code>. ** * @param to the project to mutate * @param from the project defining the type mappers */ private void setTypeMappersFrom(Project to, Project from) { from.dbmses().map(d -> (Dbms) d).forEach(dbms -> { dbms.schemas().map(s -> (Schema) s).forEach(schema -> { schema.tables().map(t -> (Table) t).forEach(table -> { table.columns().map(c -> (Column) c).filter(c -> c.getTypeMapper().isPresent()).forEach(column -> { String mapperName = column.getTypeMapper().get(); try { //noinspection unchecked @SuppressWarnings("unchecked") Class<? extends TypeMapper<?, ?>> mapperClass = (Class<? extends TypeMapper<?, ?>>)Class.forName(mapperName); setTypeMapper(to, dbms, schema, table, column, mapperClass); } catch (ClassNotFoundException | ClassCastException e) { throw new IllegalStateException("Unable to find mapper class " + mapperName); } }); }); }); }); }
tableId = parts[2]; return dbmses() .filter(d -> dbmsId.equals(d.getId())) .findAny()
/** * Debug method used to track type mappers of a project. May be of future use if one perhaps would venture to * investigate why we get several copies of the dbms from the database */ private void printTypeMappers(String heading, Project p) { System.out.println(heading); p.dbmses().map(d -> (Dbms) d).forEach(dbms -> { dbms.schemas().map(s -> (Schema) s).forEach(schema -> { schema.tables().map(t -> (Table) t).forEach(table -> { table.columns().map(c -> (Column) c).filter(c -> c.getTypeMapper().isPresent()).forEach(column -> { String mapperName = column.getTypeMapper().get(); if (mapperName.endsWith("PrimitiveTypeMapper")) { mapperName = "Primitive"; } System.out.println(" - " + dbms.getName() + ":" + schema.getName() + "/" + table.getName() + "." + column.getName() + " mapped by " + mapperName); }); }); }); }); }
public static void report(final InfoComponent info, final ProjectComponent projects, final Event event) { requireNonNull(info); requireNonNull(projects); requireNonNull(event); if (TestSettings.isTestMode()) { return; } final Project project = projects.getProject(); final Map<String, Object> ping = new HashMap<>(); ping.put("userId", InternalEmailUtil.getUserId().toString()); ping.put("appId", project.getAppId()); ping.put("eventType", event.eventName); ping.put("productName", info.getTitle()); ping.put("productVersion", info.getImplementationVersion()); ping.put("databases", project.dbmses() .map(Dbms::getTypeName) .distinct() .collect(toList()) ); ping.put("emailAddress", InternalEmailUtil.getEmail()); ping.put("computerName", HOST_NAME.getOrCompute(Statistics::getComputerName)); ping.put("dateStarted", STARTED.getOrCompute( () -> Instant.now(Clock.system(ZoneId.of("UTC"))).getEpochSecond() )); sendPostRequest(PING_URL, Json.toJson(ping)); }
if (!projectCopy.dbmses().map(Dbms::getId).allMatch(ids::add)) { final Set<String> duplicates = new HashSet<>(); ids.clear(); projectCopy.dbmses() .map(Dbms::getId) .forEach(s -> { final Dbms dbmsCopy = projectCopy.dbmses() .filter(d -> d.getId().equals(dbms.getId())) .findAny().orElseThrow(() -> new SpeedmentException(
if (!projectCopy.dbmses().map(Dbms::getId).allMatch(ids::add)) { final Set<String> duplicates = new HashSet<>(); ids.clear(); projectCopy.dbmses() .map(Dbms::getId) .forEach(s -> { final Dbms dbmsCopy = projectCopy.dbmses() .filter(d -> d.getId().equals(dbms.getId())) .findAny().orElseThrow(() -> new SpeedmentException(
to.dbmses() .filter(d -> d.getId().equals(dbms.getId())) .map(d -> (Dbms) d)
@Override public BUILDER withPassword(char[] password) { // password nullable injectorBuilder.before(started(PasswordComponent.class) .withStateResolved(ProjectComponent.class) .withExecute((passComp, projComp) -> projComp.getProject().dbmses().forEach( dbms -> passComp.put(dbms, password) ) ) ); return self(); }
protected void validateRuntimeConfig(Injector injector) { LOGGER.debug("Validating Runtime Configuration"); final Project project = injector.getOrThrow(ProjectComponent.class) .getProject(); if (project == null) { throw new SpeedmentException("No project defined"); } project.dbmses().forEach(d -> { final String typeName = d.getTypeName(); final Optional<DbmsType> oDbmsType = injector.getOrThrow( DbmsHandlerComponent.class).findByName(typeName); if (!oDbmsType.isPresent()) { throw new SpeedmentException("The database type " + typeName + " is not registered with the " + DbmsHandlerComponent.class.getSimpleName()); } final DbmsType dbmsType = oDbmsType.get(); if (!dbmsType.isSupported()) { LOGGER.error("The database driver class " + dbmsType.getDriverName() + " is not available. Make sure to include it in your " + "class path (e.g. in the POM file)" ); } }); }
project.dbmses().forEach(dbms -> { LOGGER.info("dbms: " + dbms.getName()); dbms.schemas().forEach(schema -> {
protected void checkDatabaseConnectivity(Injector injector) { LOGGER.debug("Checking Database Connectivity"); final Project project = injector.getOrThrow(ProjectComponent.class) .getProject(); project.dbmses().forEachOrdered(dbms -> { final DbmsHandlerComponent dbmsHandlerComponent = injector .getOrThrow(DbmsHandlerComponent.class); final DbmsType dbmsType = DatabaseUtil .dbmsTypeOf(dbmsHandlerComponent, dbms); final DbmsMetadataHandler handler = dbmsType.getMetadataHandler(); try { LOGGER.info(handler.getDbmsInfoString(dbms)); } catch (final SQLException sqle) { throw new SpeedmentException("Unable to establish initial " + "connection with the database named " + dbms.getName() + ".", sqle); } }); }
if (projects.getProject().dbmses().noneMatch(dbms -> true)) { loader.loadAndShow("Connect"); } else {
if (projects.getProject().dbmses().noneMatch(dbms -> true)) { loader.loadAndShow("Connect"); } else {
@ExecuteBefore(STARTED) void setupSingleDbms(@WithState(State.RESOLVED) ProjectComponent projectComponent) { final Set<Dbms> dbmses = projectComponent.getProject().dbmses().collect(toSet()); if (dbmses.size() == 1) { singleDbms = dbmses.iterator().next(); } }
@Override public BUILDER withPassword(char[] password) { // password nullable injectorBuilder.before(started(PasswordComponent.class) .withStateResolved(ProjectComponent.class) .withExecute((passComp, projComp) -> projComp.getProject().dbmses().forEach( dbms -> passComp.put(dbms, password) ) ) ); return self(); }