Skip to content

Commit

Permalink
Fix sonar issues - 1
Browse files Browse the repository at this point in the history
Sonar issue fixed

Issue-ID: SMO-151
Change-Id: I18b60c84bf482dc53db4ea55de72c2dbe1e57ef3
Signed-off-by: aravind.est <[email protected]>
  • Loading branch information
aravindtga committed Oct 14, 2024
1 parent 02204ff commit d6d68aa
Show file tree
Hide file tree
Showing 8 changed files with 128 additions and 124 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
*/
package org.oran.smo.teiv.pgsqlgenerator;

import java.util.Objects;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
Expand All @@ -37,6 +38,8 @@
import java.util.Optional;

public class FileHelper {
private FileHelper() {
}

public static void copyResourceToFile(Resource resource, File destinationFile) throws IOException {
try {
Expand Down Expand Up @@ -71,10 +74,10 @@ public static List<File> getYangFilesFromResource(String resourcePath) throws IO
}

private static Optional<File> createTempFileFromJarResource(Resource resource, Path path) throws IOException {
if (resource.getFilename().isEmpty()) {
if (Objects.requireNonNull(resource.getFilename()).isEmpty()) {
return Optional.empty();
}
Path pathToFile = Path.of(path + "/" + resource.getFilename());
Path pathToFile = Path.of(path + File.pathSeparator + resource.getFilename());
File file = Files.createFile(pathToFile).toFile();
writeResourceToFile(file, resource);
return Optional.of(file);
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,9 @@ private String prepareGraphSource(String moduleName, List<Entity> entities) {
sb.append(" BackgroundColor<<Entity>> LightGray\n");
sb.append(" BackgroundColor<<Module>> LightBlue\n");
sb.append("}\n");
sb.append(String.format("class %s <<Module>> {\n}\n", moduleName));
sb.append(String.format("class %s <<Module>> {%n}%n", moduleName));
for (Entity entity : entities) {
sb.append(String.format("class %s <<Entity>> {\n", entity.getEntityName()));
sb.append(String.format("class %s <<Entity>> {%n", entity.getEntityName()));
List<Attribute> attributes = entity.getAttributes();
for (Attribute attribute : attributes) {
sb.append(String.format(" %s : %s\n", attribute.getName(), attribute.getYangDataType()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ public class BackwardCompatibilityChecker {

@Value("${green-field-installation}")
private boolean isGreenFieldInstallation;
String noNBCCheckMsg = "No NBC checks done as green field installation is enabled";

public void checkForNBCChangesInModel(List<Relationship> relationshipsInBaselineSql,
List<Relationship> relationshipsFromModelSvc) {
Expand All @@ -64,7 +65,7 @@ public void checkForNBCChangesInModel(List<Relationship> relationshipsInBaseline
});
});
} else {
log.info("No NBC checks done as green field installation is enabled");
log.info(noNBCCheckMsg);
}
}

Expand All @@ -73,16 +74,15 @@ public void checkForNBCChangesInData(List<Table> tablesInBaselineSql, List<Table
tablesInBaselineSql.forEach(baselineTable -> {
Optional<Table> matchingTable = tablesFromModelSvc.stream().filter(modelTable -> modelTable.getName()
.equals(baselineTable.getName())).findFirst();
matchingTable.ifPresentOrElse(table -> {
verifyTableColumns(baselineTable.getColumns(), table.getColumns(), table.getName());
}, () -> {
throw PgSchemaGeneratorException.nbcChangeIdentifiedException(String.format(
"modified/removed table(%s) present in baseline", baselineTable.getName()),
new UnsupportedOperationException());
});
matchingTable.ifPresentOrElse(table -> verifyTableColumns(baselineTable.getColumns(), table.getColumns(),
table.getName()), () -> {
throw PgSchemaGeneratorException.nbcChangeIdentifiedException(String.format(
"modified/removed table(%s) present in baseline", baselineTable.getName()),
new UnsupportedOperationException());
});
});
} else {
log.info("No NBC checks done as green field installation is enabled");
log.info(noNBCCheckMsg);
}
}

Expand All @@ -93,7 +93,7 @@ public void checkForNBCChangesInConsumerDataSchema(String baselineConsumerDataSc
final List<Table> skeletonTables = SchemaParser.extractDataFromBaseline(skeletonConsumerDataSchema);
checkForNBCChangesInData(baselineTables, skeletonTables);
} else {
log.info("No NBC checks done as green field installation is enabled");
log.info(noNBCCheckMsg);
}
}

Expand All @@ -118,24 +118,25 @@ private void validateColumnConstraints(Column baselineColumn, Column modelColumn
Optional<PostgresConstraint> matchingConstraint = modelColumn.getPostgresConstraints().stream().filter(
constraint1 -> constraint1.getConstraintName().equals(constraint.getConstraintName())).findFirst();

String modifiedOrRemovedConstraintFromBaseline = "modified/removed constraint for column(%s.%s) present in baseline";
matchingConstraint.ifPresentOrElse(constraint1 -> {
if (!constraint.getTableToAddConstraintTo().equals(constraint1.getTableToAddConstraintTo()) && !constraint
.getColumnToAddConstraintTo().equals(constraint1.getColumnToAddConstraintTo()) && !constraint
.getConstraintName().equals(constraint1.getConstraintName())) {
throw PgSchemaGeneratorException.nbcChangeIdentifiedException(String.format(
"modified/removed constraint for column(%s.%s) present in baseline", tableName, baselineColumn
.getName()), new UnsupportedOperationException());
modifiedOrRemovedConstraintFromBaseline, tableName, baselineColumn.getName()),
new UnsupportedOperationException());
}
if (constraint instanceof ForeignKeyConstraint && !constraint.getTableToAddConstraintTo().equals(constraint1
.getTableToAddConstraintTo())) {
throw PgSchemaGeneratorException.nbcChangeIdentifiedException(String.format(
"modified/removed constraint for column(%s.%s) present in baseline", tableName, baselineColumn
.getName()), new UnsupportedOperationException());
modifiedOrRemovedConstraintFromBaseline, tableName, baselineColumn.getName()),
new UnsupportedOperationException());
}
}, () -> {
throw PgSchemaGeneratorException.nbcChangeIdentifiedException(String.format(
"modified/removed constraint for column(%s.%s) present in baseline", tableName, baselineColumn
.getName()), new UnsupportedOperationException());
modifiedOrRemovedConstraintFromBaseline, tableName, baselineColumn.getName()),
new UnsupportedOperationException());
});
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,11 +168,8 @@ private String generateConstraintStatement(PostgresConstraint postgresConstraint

private StringBuilder generateIndexStatementForColumns(List<Column> columns) {
StringBuilder indexStmt = new StringBuilder();
columns.forEach(column -> {
column.getPostgresIndexList().forEach(postgresIndex -> {
indexStmt.append(generateIndexStatement(postgresIndex));
});
});
columns.forEach(column -> column.getPostgresIndexList().forEach(postgresIndex -> indexStmt.append(
generateIndexStatement(postgresIndex))));
return indexStmt;
}

Expand All @@ -181,12 +178,11 @@ private String generateConstraintSql(PostgresConstraint postgresConstraint) {
return String.format(ALTER_TABLE_TIES_DATA_S_ADD_CONSTRAINT_S + "PRIMARY KEY (\"%s\")", postgresConstraint
.getTableToAddConstraintTo(), postgresConstraint.getConstraintName(), postgresConstraint
.getColumnToAddConstraintTo());
} else if (postgresConstraint instanceof ForeignKeyConstraint) {
} else if (postgresConstraint instanceof ForeignKeyConstraint foreignKeyConstraint) {
return String.format(
ALTER_TABLE_TIES_DATA_S_ADD_CONSTRAINT_S + "FOREIGN KEY (\"%s\") REFERENCES ties_data.\"%s\" (id) ON DELETE CASCADE",
postgresConstraint.getTableToAddConstraintTo(), postgresConstraint.getConstraintName(),
postgresConstraint.getColumnToAddConstraintTo(), ((ForeignKeyConstraint) postgresConstraint)
.getReferencedTable());
postgresConstraint.getColumnToAddConstraintTo(), foreignKeyConstraint.getReferencedTable());
} else if (postgresConstraint instanceof UniqueConstraint) {
return String.format(ALTER_TABLE_TIES_DATA_S_ADD_CONSTRAINT_S + "UNIQUE (\"%s\")", postgresConstraint
.getTableToAddConstraintTo(), postgresConstraint.getConstraintName(), postgresConstraint
Expand Down Expand Up @@ -268,9 +264,7 @@ private StringBuilder generateIndexStatementsFromDifferences(List<Table> tables)
StringBuilder storeSchema = new StringBuilder();
for (Column column : table.getColumns()) {
if (!column.getPostgresIndexList().isEmpty()) {
column.getPostgresIndexList().forEach(index -> {
storeSchema.append(generateIndexStatement(index));
});
column.getPostgresIndexList().forEach(index -> storeSchema.append(generateIndexStatement(index)));
}
}
storeSchemaForIndexStatements.append(storeSchema);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,26 +96,25 @@ private void storeNewTables(List<Table> tablesFromModelService, List<String> tab
* Compare columns of each table from module service with columns of each table from baseline schema
*/
private void compareAndStoreChangesToColumns(List<Table> tablesFromModelService, List<Table> tablesFromBaselineSql) {
tablesFromModelService.forEach(tableFromModelService -> {
tablesFromBaselineSql.stream().filter(baselineTable -> tableFromModelService.getName().equals(baselineTable
.getName())).findFirst().ifPresent(baselineTable -> {

List<Column> columnsInBaseline = new ArrayList<>(baselineTable.getColumns());
List<Column> columnsFromModuleSvc = new ArrayList<>(tableFromModelService.getColumns());

columnsInBaseline.sort(Comparator.comparing(Column::getName));
columnsFromModuleSvc.sort(Comparator.comparing(Column::getName));

// Check for new columns in table
if (columnsFromModuleSvc.size() > columnsInBaseline.size()) {
storeNewColumns(tableFromModelService.getName(), columnsInBaseline, columnsFromModuleSvc);
}
detectAndStoreDefaultValueChanges(tableFromModelService.getName(), columnsInBaseline,
columnsFromModuleSvc);
detectAndStoreNewlyAddedIndex(tableFromModelService.getName(), columnsInBaseline,
columnsFromModuleSvc);
});
});
tablesFromModelService.forEach(tableFromModelService -> tablesFromBaselineSql.stream().filter(
baselineTable -> tableFromModelService.getName().equals(baselineTable.getName())).findFirst().ifPresent(
baselineTable -> {

List<Column> columnsInBaseline = new ArrayList<>(baselineTable.getColumns());
List<Column> columnsFromModuleSvc = new ArrayList<>(tableFromModelService.getColumns());

columnsInBaseline.sort(Comparator.comparing(Column::getName));
columnsFromModuleSvc.sort(Comparator.comparing(Column::getName));

// Check for new columns in table
if (columnsFromModuleSvc.size() > columnsInBaseline.size()) {
storeNewColumns(tableFromModelService.getName(), columnsInBaseline, columnsFromModuleSvc);
}
detectAndStoreDefaultValueChanges(tableFromModelService.getName(), columnsInBaseline,
columnsFromModuleSvc);
detectAndStoreNewlyAddedIndex(tableFromModelService.getName(), columnsInBaseline,
columnsFromModuleSvc);
}));
}

private List<String> extractTableNames(List<Table> tables) {
Expand All @@ -141,14 +140,12 @@ private void storeNewColumns(String tableName, List<Column> columnsInBaseline, L
private void detectAndStoreDefaultValueChanges(String tableName, List<Column> columnsInBaseline,
List<Column> columnsFromModuleSvc) {
List<Column> list = new ArrayList<>();
columnsInBaseline.forEach(columnInBaseline -> {
columnsFromModuleSvc.forEach(columnInGenerated -> {
if (columnInGenerated.getName().equals(columnInBaseline.getName()) && !Objects.equals(columnInGenerated
.getDefaultValue(), columnInBaseline.getDefaultValue())) {
list.add(columnInGenerated);
}
});
});
columnsInBaseline.forEach(columnInBaseline -> columnsFromModuleSvc.forEach(columnInGenerated -> {
if (columnInGenerated.getName().equals(columnInBaseline.getName()) && !Objects.equals(columnInGenerated
.getDefaultValue(), columnInBaseline.getDefaultValue())) {
list.add(columnInGenerated);
}
}));
if (!list.isEmpty()) {
identifiedChangesToModels.get(DEFAULT).add(Table.builder().name(tableName).columns(list).build());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
@SpringBootTest(classes = { DataSchemaGenerator.class, ModelComparator.class, DataSchemaHelper.class, TableBuilder.class,
HashInfoDataGenerator.class, BackwardCompatibilityChecker.class }, properties = {
"green-field-installation=false" })
public class DataSchemaGeneratorTest {
class DataSchemaGeneratorTest {
@Autowired
private DataSchemaGenerator dataSchemaGenerator;
@Value("${green-field-installation}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@

@SpringBootTest(classes = { DataSchemaGenerator.class, ModelComparator.class, DataSchemaHelper.class, TableBuilder.class,
HashInfoDataGenerator.class, BackwardCompatibilityChecker.class }, properties = { "green-field-installation=true" })
public class GreenFieldInstallationTest {
class GreenFieldInstallationTest {

static File outputSqlFile;
@Autowired
Expand Down

0 comments on commit d6d68aa

Please sign in to comment.