Skip to content

Commit

Permalink
feat: update ColumnTemplate
Browse files Browse the repository at this point in the history
Signed-off-by: Otavio Santana <otaviopolianasantana@gmail.com>
  • Loading branch information
otaviojava committed Mar 2, 2024
1 parent 9569582 commit 728e2e6
Show file tree
Hide file tree
Showing 14 changed files with 97 additions and 474 deletions.
12 changes: 1 addition & 11 deletions jnosql-mapping/jnosql-mapping-column/pom.xml
Expand Up @@ -26,21 +26,11 @@
<packaging>jar</packaging>

<dependencies>
<dependency>
<groupId>org.eclipse.jnosql.communication</groupId>
<artifactId>jnosql-communication-column</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>jnosql-mapping-core</artifactId>
<artifactId>jnosql-mapping-semistructured</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>jakarta.nosql</groupId>
<artifactId>nosql-column</artifactId>
<version>${jakarta.nosql.version}</version>
</dependency>
</dependencies>

</project>
Expand Up @@ -21,6 +21,20 @@
import org.eclipse.jnosql.mapping.semistructured.SemistructuredTemplate;


/**
* This interface extends the {@link SemistructuredTemplate} and represents a template for performing
* column-based operations in a semistructured database.
* <p>
* Implementations of this interface provide methods for CRUD (Create, Read, Update, Delete) operations
* on column-based data structures within a semistructured database.
* </p>
* <p>
* Users can utilize implementations of this interface to interact with column-based data in a semistructured database,
* abstracting away the complexities of the underlying database operations and providing a unified API for database access.
* </p>
*
* @see SemistructuredTemplate
*/
public interface ColumnTemplate extends SemistructuredTemplate {


Expand Down
Expand Up @@ -17,10 +17,12 @@
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.enterprise.inject.Vetoed;
import jakarta.inject.Inject;
import jakarta.nosql.column.ColumnTemplate;
import org.eclipse.jnosql.communication.column.ColumnManager;
import org.eclipse.jnosql.communication.semistructured.DatabaseManager;
import org.eclipse.jnosql.mapping.core.Converters;
import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
import org.eclipse.jnosql.mapping.semistructured.AbstractSemistructuredTemplate;
import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
import org.eclipse.jnosql.mapping.semistructured.EventPersistManager;

import java.util.Objects;
import java.util.function.Function;
Expand All @@ -29,14 +31,14 @@
* The producer of {@link ColumnTemplate}
*/
@ApplicationScoped
public class ColumnTemplateProducer implements Function<ColumnManager, JNoSQLColumnTemplate> {
public class ColumnTemplateProducer implements Function<DatabaseManager, ColumnTemplate> {


@Inject
private ColumnEntityConverter converter;
private EntityConverter converter;

@Inject
private ColumnEventPersistManager eventManager;
private EventPersistManager eventManager;

@Inject
private EntitiesMetadata entities;
Expand All @@ -45,29 +47,29 @@ public class ColumnTemplateProducer implements Function<ColumnManager, JNoSQLCol
private Converters converters;

@Override
public JNoSQLColumnTemplate apply(ColumnManager manager) {
public ColumnTemplate apply(DatabaseManager manager) {
Objects.requireNonNull(manager, "manager is required");
return new ProducerColumnTemplate(converter, manager,
eventManager, entities, converters);
}


@Vetoed
static class ProducerColumnTemplate extends AbstractColumnTemplate {
static class ProducerColumnTemplate extends AbstractSemistructuredTemplate implements ColumnTemplate {

private ColumnEntityConverter converter;
private final EntityConverter converter;

private ColumnManager manager;
private final DatabaseManager manager;

private ColumnEventPersistManager eventManager;
private final EventPersistManager eventManager;

private EntitiesMetadata entities;
private final EntitiesMetadata entities;

private Converters converters;
private final Converters converters;

ProducerColumnTemplate(ColumnEntityConverter converter,
ColumnManager manager,
ColumnEventPersistManager eventManager,
ProducerColumnTemplate(EntityConverter converter,
DatabaseManager manager,
EventPersistManager eventManager,
EntitiesMetadata entities,
Converters converters) {
this.converter = converter;
Expand All @@ -78,31 +80,33 @@ static class ProducerColumnTemplate extends AbstractColumnTemplate {
}

ProducerColumnTemplate() {
this(null, null, null, null, null);
}

@Override
protected ColumnEntityConverter getConverter() {
protected EntityConverter converter() {
return converter;
}

@Override
protected ColumnManager getManager() {
protected DatabaseManager manager() {
return manager;
}

@Override
protected ColumnEventPersistManager getEventManager() {
protected EventPersistManager eventManager() {
return eventManager;
}

@Override
protected EntitiesMetadata getEntities() {
protected EntitiesMetadata entities() {
return entities;
}

@Override
protected Converters getConverters() {
protected Converters converters() {
return converters;
}

}
}
Expand Up @@ -16,68 +16,75 @@

import jakarta.enterprise.context.ApplicationScoped;
import jakarta.enterprise.inject.Default;
import jakarta.enterprise.inject.Instance;
import jakarta.inject.Inject;
import org.eclipse.jnosql.communication.column.ColumnManager;
import org.eclipse.jnosql.communication.semistructured.DatabaseManager;
import org.eclipse.jnosql.mapping.core.Converters;
import org.eclipse.jnosql.mapping.Database;
import org.eclipse.jnosql.mapping.DatabaseType;
import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
import org.eclipse.jnosql.mapping.semistructured.AbstractSemistructuredTemplate;
import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
import org.eclipse.jnosql.mapping.semistructured.EventPersistManager;


/**
* The default implementation of {@link JNoSQLColumnTemplate}
*/
@Default
@Database(DatabaseType.COLUMN)
@ApplicationScoped
class DefaultColumnTemplate extends AbstractColumnTemplate {
class DefaultColumnTemplate extends AbstractSemistructuredTemplate implements ColumnTemplate {


private final EntityConverter converter;

private ColumnEntityConverter converter;
private final DatabaseManager manager;

private Instance<ColumnManager> manager;
private final EventPersistManager eventManager;

private ColumnEventPersistManager eventManager;
private final EntitiesMetadata entities;

private final Converters converters;

private EntitiesMetadata entities;

private Converters converters;

@Inject
DefaultColumnTemplate(ColumnEntityConverter converter, Instance<ColumnManager> manager,
ColumnEventPersistManager eventManager,
EntitiesMetadata entities, Converters converters) {
DefaultColumnTemplate(EntityConverter converter,
@Database(DatabaseType.COLUMN) DatabaseManager manager,
EventPersistManager eventManager,
EntitiesMetadata entities, Converters converters){
this.converter = converter;
this.manager = manager;
this.eventManager = eventManager;
this.entities = entities;
this.converters = converters;
}

DefaultColumnTemplate(){
DefaultColumnTemplate() {
this(null, null, null, null, null);
}

@Override
protected ColumnEntityConverter getConverter() {
protected EntityConverter converter() {
return converter;
}

@Override
protected ColumnManager getManager() {
return manager.get();
protected DatabaseManager manager() {
return manager;
}

@Override
protected ColumnEventPersistManager getEventManager() {
protected EventPersistManager eventManager() {
return eventManager;
}

@Override
protected EntitiesMetadata getEntities() {
protected EntitiesMetadata entities() {
return entities;
}

@Override
protected Converters getConverters() {
protected Converters converters() {
return converters;
}


}
Expand Up @@ -16,9 +16,10 @@

import jakarta.data.exceptions.MappingException;
import org.eclipse.jnosql.communication.Settings;
import org.eclipse.jnosql.communication.column.ColumnConfiguration;
import org.eclipse.jnosql.communication.column.ColumnManager;
import org.eclipse.jnosql.communication.column.ColumnManagerFactory;
import org.eclipse.jnosql.communication.semistructured.DatabaseConfiguration;
import org.eclipse.jnosql.communication.semistructured.DatabaseManager;
import org.eclipse.jnosql.mapping.Database;
import org.eclipse.jnosql.mapping.DatabaseType;
import org.eclipse.jnosql.mapping.core.config.MicroProfileSettings;
import org.eclipse.jnosql.mapping.reflection.Reflections;

Expand All @@ -35,36 +36,37 @@
import static org.eclipse.jnosql.mapping.core.config.MappingConfigurations.COLUMN_PROVIDER;

@ApplicationScoped
class ColumnManagerSupplier implements Supplier<ColumnManager> {
class ColumnManagerSupplier implements Supplier<DatabaseManager> {

private static final Logger LOGGER = Logger.getLogger(ColumnManagerSupplier.class.getName());

@Override
@Produces
@Database(DatabaseType.COLUMN)
@ApplicationScoped
public ColumnManager get() {
public DatabaseManager get() {
Settings settings = MicroProfileSettings.INSTANCE;

ColumnConfiguration configuration = settings.get(COLUMN_PROVIDER, Class.class)
.filter(ColumnConfiguration.class::isAssignableFrom)
DatabaseConfiguration<?> configuration = settings.get(COLUMN_PROVIDER, Class.class)
.filter(DatabaseConfiguration.class::isAssignableFrom)
.map(c -> {
final Reflections reflections = CDI.current().select(Reflections.class).get();
return (ColumnConfiguration) reflections.newInstance(c);
}).orElseGet(ColumnConfiguration::getConfiguration);
return (DatabaseConfiguration) reflections.newInstance(c);
}).orElseGet(DatabaseConfiguration::getConfiguration);

ColumnManagerFactory managerFactory = configuration.apply(settings);
var managerFactory = configuration.apply(settings);

Optional<String> database = settings.get(COLUMN_DATABASE, String.class);
String db = database.orElseThrow(() -> new MappingException("Please, inform the database filling up the property "
+ COLUMN_DATABASE.get()));
ColumnManager manager = managerFactory.apply(db);
DatabaseManager manager = managerFactory.apply(db);

LOGGER.log(Level.FINEST, "Starting a ColumnManager instance using Eclipse MicroProfile Config," +
" database name: " + db);
return manager;
}

public void close(@Disposes ColumnManager manager) {
public void close(@Disposes DatabaseManager manager) {
LOGGER.log(Level.FINEST, "Closing ColumnManager resource, database name: " + manager.name());
manager.close();
}
Expand Down

This file was deleted.

0 comments on commit 728e2e6

Please sign in to comment.