I need to store in different tables, depending on the useful load received by the REST layer. I followed the guide of the Wiki, but I can not pass the value of the name of the table, from the impl class to the Config class
AppConfig.java
package com.bcol.vtd.config;
@Configuration
@EnableDynamoDBRepositories(dynamoDBMapperConfigRef = "dynamoDBMapperConfig", basePackages = "com.bcol.vtd.repository")
public class AppConfig {
@Bean(value = "dynamoDBMapperConfig")
public DynamoDBMapperConfig dynamoDBMapperConfig(TableNameOverride tableNameOverrider) {
// Create empty DynamoDBMapperConfig builder
DynamoDBMapperConfig.Builder builder = new DynamoDBMapperConfig.Builder();
// Inject the table name overrider bean
builder.setTableNameOverride(new TableNameOverride(tableNameOverrider.getTableName()));
return new DynamoDBMapperConfig(DynamoDBMapperConfig.DEFAULT, builder.build());
}
@Bean
public AmazonDynamoDB amazonDynamoDB() {
AmazonDynamoDB amazonDynamoDB = new AmazonDynamoDBClient(amazonAWSCredentials());
amazonDynamoDB.setRegion(Region.US_Standard.toAWSRegion());
return amazonDynamoDB;
}
@Bean
public AWSCredentials amazonAWSCredentials() {
return new BasicAWSCredentials(amazonAWSAccessKey, amazonAWSSecretKey);
}
@Bean
DynamoDB dynamoDB() {
return new DynamoDB(amazonDynamoDB());
}
@Bean
public TableNameOverride tableNameOverrider() {
return TableNameOverride.withTableNameReplacement("VtdLI"); //How do I send the value?
}
}
VtdBaseImp.java
package com.bcol.vtd.service.impl;
@Service
public class VtdBaseImpl implements VtdBaseService{
@Autowired
VtdBaseRepository vtdBaseRepository;
@Override
public VtdBase findByIdSesion(String idSesion) {
return vtdBaseRepository.findByIdSesion(idSesion);
}
@Override
public void saveVtdBase(VtdBaseRequest request) {
VtdBase vtdBase = new VtdBase();
vtdBase.setIdSesion(request.getIdSesion());
vtdBase.setTimestampTransaccion(request.getTimestampTransaccion());
vtdBase.setCanal(request.getCanal());
vtdBase.setIdAplicacion(request.getIdAplicacion());
vtdBase.setDispositivo(request.getDispositivo());
vtdBase.setInfoTransaccion(request.getInfoTransaccion());
vtdBase.setCliente(request.getCliente());
vtdBase.setDocumento(request.getDocumento());
vtdBase.setEncuesta(request.getEncuesta());
// here i should send the tablename value
vtdBaseRepository.save(vtdBase);
}
}
I need to store in different tables, depending on the useful load received by the REST layer. I followed the guide of the Wiki, but I can not pass the value of the name of the table, from the impl class to the Config class
AppConfig.java
VtdBaseImp.java
URL repo: https://github.com/jledesma84/spring-data-dynamoDB-dynamicTable.git Wiki: https://github.com/derjust/spring-data-dynamodb/wiki/Alter-table-name-during-runtime
Specifications
dependencies { compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.0.4.RELEASE' compile group: 'org.springframework.boot', name: 'spring-boot-starter-tomcat', version: '2.0.4.RELEASE' compile group: 'org.springframework', name: 'spring-web', version: '4.3.1.RELEASE' testCompile group: 'org.springframework', name: 'spring-test', version: '4.3.1.RELEASE' compile group: 'com.github.derjust', name: 'spring-data-dynamodb', version: '5.0.3' compile group: 'com.amazonaws', name:'aws-java-sdk-dynamodb', version:'1.11.396' }