List<DataPermissionSchema> dataPermissionSchemaList = new ArrayList<>(); for (DataPermissionSchemaEo dataPermissionSchemaEo : dataPermissionSchemaEoList) { List<SchemaRowRule> schemaRowRules = new ArrayList<>(); List<SchemaColumnRule> schemaColumnRules = new ArrayList<>(); DataPermissionSchema dataPermissionSchema = new DataPermissionSchema(); for (SchemaRowRule schemaRowRule : userRowRuleList) { if (schemaRowRule.getSchemaCode().equals(dataPermissionSchemaEo.getSchemaCode()) && dataPermissionSchemaEo.getDatabaseCode().equals(schemaRowRule.getDatabaseCode())) { dataPermissionSchema.setDatabaseCode(dataPermissionSchemaEo.getDatabaseCode()); dataPermissionSchema.setSchemaCode(dataPermissionSchemaEo.getSchemaCode()); schemaRowRules.add(schemaRowRule); } } for (SchemaColumnRule schemaColumnRule : userColumnRuleList) { if (schemaColumnRule.getSchemaCode().equals(dataPermissionSchemaEo.getSchemaCode()) && dataPermissionSchemaEo.getDatabaseCode().equals(schemaColumnRule.getDatabaseCode())) { dataPermissionSchema.setDatabaseCode(dataPermissionSchemaEo.getDatabaseCode()); dataPermissionSchema.setSchemaCode(dataPermissionSchemaEo.getSchemaCode()); schemaColumnRules.add(schemaColumnRule); } } if(dataPermissionSchema.getSchemaCode() == null || dataPermissionSchema.getDatabaseCode() == null){ continue; } dataPermissionSchema.setSchemaRowRuleList(schemaRowRules); dataPermissionSchema.setSchemaColumnRuleList(schemaColumnRules); dataPermissionSchemaList.add(dataPermissionSchema); } //设置UserAgent的数据权限 UserAgent.setDataPermissionSchema(dataPermissionSchemaList);代码优化
时间: 2023-12-14 19:39:19 浏览: 64
C#中数组Array,ArrayList,泛型List详细对比
可以优化的地方有:
1. 可以将以下两个if语句整合成一个,避免重复判断:
```
if(schemaRowRule.getSchemaCode().equals(dataPermissionSchemaEo.getSchemaCode()) && dataPermissionSchemaEo.getDatabaseCode().equals(schemaRowRule.getDatabaseCode())) {...}
if(schemaColumnRule.getSchemaCode().equals(dataPermissionSchemaEo.getSchemaCode()) && dataPermissionSchemaEo.getDatabaseCode().equals(schemaColumnRule.getDatabaseCode())) {...}
```
可以整合成:
```
if(dataPermissionSchemaEo.getDatabaseCode().equals(schemaRule.getDatabaseCode()) && dataPermissionSchemaEo.getSchemaCode().equals(schemaRule.getSchemaCode())) {...}
```
2. 可以将创建的空的`schemaRowRules`和`schemaColumnRules`移动到if语句内部,避免不必要的创建。
3. 可以用foreach循环代替for循环,使代码更加简洁易读。例如:
```
for (DataPermissionSchemaEo dataPermissionSchemaEo : dataPermissionSchemaEoList) {...}
```
可以改写为:
```
dataPermissionSchemaEoList.forEach(dataPermissionSchemaEo -> {...});
```
根据上述优化,代码可以改写如下:
```
List<DataPermissionSchema> dataPermissionSchemaList = new ArrayList<>();
dataPermissionSchemaEoList.forEach(dataPermissionSchemaEo -> {
List<SchemaRowRule> schemaRowRules = new ArrayList<>();
List<SchemaColumnRule> schemaColumnRules = new ArrayList<>();
userRowRuleList.stream()
.filter(schemaRule -> dataPermissionSchemaEo.getDatabaseCode().equals(schemaRule.getDatabaseCode()) && dataPermissionSchemaEo.getSchemaCode().equals(schemaRule.getSchemaCode()))
.forEach(schemaRowRules::add);
userColumnRuleList.stream()
.filter(schemaRule -> dataPermissionSchemaEo.getDatabaseCode().equals(schemaRule.getDatabaseCode()) && dataPermissionSchemaEo.getSchemaCode().equals(schemaRule.getSchemaCode()))
.forEach(schemaColumnRules::add);
if(!schemaRowRules.isEmpty() || !schemaColumnRules.isEmpty()) {
DataPermissionSchema dataPermissionSchema = new DataPermissionSchema();
dataPermissionSchema.setDatabaseCode(dataPermissionSchemaEo.getDatabaseCode());
dataPermissionSchema.setSchemaCode(dataPermissionSchemaEo.getSchemaCode());
dataPermissionSchema.setSchemaRowRuleList(schemaRowRules);
dataPermissionSchema.setSchemaColumnRuleList(schemaColumnRules);
dataPermissionSchemaList.add(dataPermissionSchema);
}
});
UserAgent.setDataPermissionSchema(dataPermissionSchemaList);
```
阅读全文