Skip to content

Commit 8f29958

Browse files
committed
Merge branch '1.2.x'
2 parents d920372 + e5961de commit 8f29958

File tree

13 files changed

+127
-37
lines changed

13 files changed

+127
-37
lines changed

app-builder/jane/plugins/aipp-plugin/src/main/java/modelengine/fit/jober/aipp/domains/appversion/ToolSchemaBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ private Map<String, Object> buildInputParamsSchema() {
104104
List<Map<String, Object>> inputParams = f.getInputParamsByName("input");
105105
inputParams.forEach(ip -> {
106106
String name = ip.getOrDefault("name", StringUtils.EMPTY).toString();
107-
String type = ip.getOrDefault("type", StringUtils.EMPTY).toString();
107+
String type = ObjectUtils.<String>cast(ip.getOrDefault("type", StringUtils.EMPTY)).toLowerCase();
108108
String description = ip.getOrDefault("description", StringUtils.EMPTY).toString();
109109
propertiesMapOfInputParam.put(name,
110110
MapBuilder.get().put("type", type).put("description", description).build());

carver/plugins/tool-repository-postgresql/src/main/java/modelengine/jade/carver/tool/repository/pgsql/mapper/ToolMapper.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,4 +141,11 @@ public interface ToolMapper {
141141
* @return 表示工具信息的 {@link List}{@code <}{@link ToolDo}{@code >}。
142142
*/
143143
List<ToolDo> getToolsByIdentifier(List<ToolIdentifier> toolIdentifiers);
144+
145+
/**
146+
* 查询所有工具信息。
147+
*
148+
* @return 表示工具信息的 {@link List}{@code <}{@link ToolDo}{@code >}。
149+
*/
150+
List<ToolDo> getAllTools();
144151
}

carver/plugins/tool-repository-postgresql/src/main/java/modelengine/jade/carver/tool/repository/pgsql/model/entity/ToolDo.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import modelengine.fel.tool.Tool;
1515
import modelengine.fitframework.serialization.ObjectSerializer;
1616
import modelengine.fitframework.util.MapUtils;
17+
import modelengine.fitframework.util.ObjectUtils;
1718
import modelengine.fitframework.util.StringUtils;
1819

1920
import java.util.Collections;
@@ -31,6 +32,8 @@
3132
@AllArgsConstructor
3233
@NoArgsConstructor
3334
public class ToolDo {
35+
public static final String SCHEMA_PARAMETERS_KEY = "parameters";
36+
public static final String SCHEMA_DESCRIPTION_KEY = "description";
3437
/**
3538
* 表示工具的名字。
3639
*/
@@ -114,13 +117,14 @@ public static ToolDo info2Do(String definitionGroupName, String groupName, Tool.
114117
* @return 领域类的 {@link Tool.Info}。
115118
*/
116119
public static Tool.Info do2Info(ToolDo toolDo, ObjectSerializer serializer) {
120+
Map<String, Object> schema = ObjectUtils.nullIf(json2obj(toolDo.getSchema(), serializer), new HashMap<>());
117121
return Tool.Info.custom()
118122
.namespace("")
119123
.name(toolDo.getName())
120-
.description("")
121-
.schema(json2obj(toolDo.getSchema(), serializer))
124+
.description(ObjectUtils.cast(schema.getOrDefault(SCHEMA_DESCRIPTION_KEY, StringUtils.EMPTY)))
125+
.schema(schema)
122126
.runnables(upperKeys(json2obj(toolDo.getRunnables(), serializer)))
123-
.parameters(new HashMap<>())
127+
.parameters(ObjectUtils.cast(schema.getOrDefault(SCHEMA_PARAMETERS_KEY, new HashMap<>())))
124128
.extensions(json2obj(toolDo.getExtensions(), serializer))
125129
.uniqueName(toolDo.getUniqueName())
126130
.version(toolDo.getVersion())

carver/plugins/tool-repository-postgresql/src/main/java/modelengine/jade/carver/tool/repository/pgsql/repository/ToolRepositoryInner.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,4 +152,11 @@ public interface ToolRepositoryInner {
152152
* @return 表示工具详细信息列表的 {@link List}{@code <}{@link Tool.Info}{@code >}。
153153
*/
154154
List<Tool.Info> getToolsByIdentifier(List<ToolIdentifier> toolIdentifiers);
155+
156+
/**
157+
* 查询所有工具信息。
158+
*
159+
* @return 表示工具详细信息列表的 {@link List}{@code <}{@link Tool.Info}{@code >}。
160+
*/
161+
List<Tool.Info> getAllTools();
155162
}

carver/plugins/tool-repository-postgresql/src/main/java/modelengine/jade/carver/tool/repository/pgsql/repository/support/DefaultToolRepositoryInner.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,4 +160,10 @@ public List<Tool.Info> getToolsByIdentifier(List<ToolIdentifier> toolIdentifiers
160160
List<ToolDo> toolDos = this.toolMapper.getToolsByIdentifier(toolIdentifiers);
161161
return toolDos.stream().map(toolDo -> ToolDo.do2Info(toolDo, this.serializer)).collect(Collectors.toList());
162162
}
163+
164+
@Override
165+
public List<Tool.Info> getAllTools() {
166+
List<ToolDo> toolDos = this.toolMapper.getAllTools();
167+
return toolDos.stream().map(toolDo -> ToolDo.do2Info(toolDo, this.serializer)).collect(Collectors.toList());
168+
}
163169
}

carver/plugins/tool-repository-postgresql/src/main/java/modelengine/jade/carver/tool/repository/pgsql/service/DefaultToolService.java

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import modelengine.fel.tool.model.ListResult;
1313
import modelengine.fel.tool.model.entity.ToolIdentifier;
1414
import modelengine.fel.tool.model.transfer.ToolData;
15+
import modelengine.fel.tool.service.ToolChangedObserver;
1516
import modelengine.fitframework.annotation.Component;
1617
import modelengine.fitframework.annotation.Fitable;
1718
import modelengine.fitframework.exception.FitException;
@@ -38,16 +39,22 @@ public class DefaultToolService implements ToolService {
3839

3940
private final ToolRepositoryInner toolRepo;
4041
private final DefinitionService definitionService;
42+
private final ToolChangedObserver toolChangedObserver;
4143

4244
/**
4345
* 通过持久层接口来初始化 {@link DefaultToolService} 的实例。
4446
*
4547
* @param toolRepo 表示持久层实例的 {@link ToolRepositoryInner}。
4648
* @param definitionService 表示定义服务的 {@link DefinitionService}。
49+
* @param toolChangedObserver 表示工具变更监听服务的 {@link ToolChangedObserver}。
4750
*/
48-
public DefaultToolService(ToolRepositoryInner toolRepo, DefinitionService definitionService) {
51+
public DefaultToolService(ToolRepositoryInner toolRepo, DefinitionService definitionService,
52+
ToolChangedObserver toolChangedObserver) {
4953
this.toolRepo = toolRepo;
5054
this.definitionService = definitionService;
55+
this.toolChangedObserver = toolChangedObserver;
56+
List<Tool.Info> allTools = this.toolRepo.getAllTools();
57+
allTools.forEach(this::onToolAdded);
5158
}
5259

5360
@Override
@@ -57,6 +64,7 @@ public String addTool(ToolData toolData) {
5764
ToolData.transform(toolData);
5865
Tool.Info info = ToolData.convertToInfo(toolData);
5966
this.toolRepo.addTool(info);
67+
this.onToolAdded(info);
6068
return toolData.getUniqueName();
6169
}
6270

@@ -69,6 +77,7 @@ public void addTools(List<ToolData> toolDataList) {
6977
.map(ToolData::convertToInfo)
7078
.collect(Collectors.toList());
7179
this.toolRepo.addTools(infos);
80+
infos.forEach(this::onToolAdded);
7281
}
7382

7483
@Override
@@ -80,13 +89,15 @@ public void addTools(String definitionGroupName, String groupName, List<ToolData
8089
.map(ToolData::convertToInfo)
8190
.collect(Collectors.toList());
8291
this.toolRepo.addTools(definitionGroupName, groupName, infos);
92+
infos.forEach(this::onToolAdded);
8393
}
8494

8595
@Override
8696
@Fitable(id = FITABLE_ID)
8797
@Transactional
8898
public String deleteTool(String toolUniqueName) {
8999
this.toolRepo.deleteTool(toolUniqueName);
100+
this.onToolRemoved(toolUniqueName);
90101
return toolUniqueName;
91102
}
92103

@@ -95,36 +106,45 @@ public String deleteTool(String toolUniqueName) {
95106
@Transactional
96107
public void deleteTools(List<String> uniqueNames) {
97108
this.toolRepo.deleteTools(uniqueNames);
109+
uniqueNames.forEach(this::onToolRemoved);
98110
}
99111

100112
@Override
101113
@Fitable(id = FITABLE_ID)
102114
@Transactional
103115
public void deleteTools(String definitionGroupName, String groupName) {
104-
this.toolRepo.deleteTools(definitionGroupName, groupName);
116+
List<Tool.Info> tools = this.toolRepo.getTools(definitionGroupName, groupName);
117+
List<String> uniqueNames = tools.stream().map(Tool.Info::uniqueName).toList();
118+
this.deleteTools(uniqueNames);
105119
}
106120

107121
@Override
108122
@Fitable(id = FITABLE_ID)
109123
@Transactional
110124
public void deleteToolsByDefinitionGroupName(String definitionGroupName) {
111-
this.toolRepo.deleteTools(definitionGroupName);
125+
List<Tool.Info> tools = this.toolRepo.getTools(definitionGroupName);
126+
List<String> uniqueNames = tools.stream().map(Tool.Info::uniqueName).toList();
127+
this.deleteTools(uniqueNames);
112128
}
113129

114130
@Override
115131
@Fitable(id = FITABLE_ID)
116132
@Transactional
117133
public String deleteToolByVersion(String uniqueName, String version) {
118134
this.toolRepo.deleteToolByVersion(uniqueName, version);
135+
this.onToolRemoved(uniqueName);
119136
return uniqueName;
120137
}
121138

122139
private void setLatest(String toolUniqueName, String version) {
123140
this.toolRepo.setLatest(toolUniqueName, version);
141+
Optional<Tool.Info> info = this.toolRepo.getToolByVersion(toolUniqueName, version);
142+
info.ifPresent(this::onToolAdded);
124143
}
125144

126145
private void setNotLatest(String toolUniqueName) {
127146
this.toolRepo.setNotLatest(toolUniqueName);
147+
this.onToolRemoved(toolUniqueName);
128148
}
129149

130150
@Override
@@ -219,4 +239,18 @@ public ListResult<ToolData> getToolsByIdentifier(List<ToolIdentifier> toolIdenti
219239
private List<ToolData> getToolDataList(List<Tool.Info> infos) {
220240
return infos.stream().map(ToolData::from).map(ToolData::transform).collect(Collectors.toList());
221241
}
242+
243+
private void onToolAdded(Tool.Info toolInfo) {
244+
if (this.toolChangedObserver == null) {
245+
return;
246+
}
247+
this.toolChangedObserver.onToolAdded(toolInfo.uniqueName(), toolInfo.description(), toolInfo.parameters());
248+
}
249+
250+
private void onToolRemoved(String toolUniqueName) {
251+
if (this.toolChangedObserver == null) {
252+
return;
253+
}
254+
this.toolChangedObserver.onToolRemoved(toolUniqueName);
255+
}
222256
}

carver/plugins/tool-repository-postgresql/src/main/resources/mapper/ToolMapper.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,4 +166,7 @@
166166
(i."unique_name" = #{toolIdentifier.uniqueName} AND i."version" = #{toolIdentifier.version})
167167
</foreach>
168168
</select>
169+
<select id="getAllTools" parameterType="List" resultMap="Tool">
170+
<include refid="selectToolColumns"/>
171+
</select>
169172
</mapper>

carver/plugins/tool-repository-postgresql/src/test/java/modelengine/jade/carver/tool/repository/pgsql/integration/DefinitionGroupIntegrationTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@
1010
import static org.assertj.core.api.Assertions.assertThat;
1111

1212
import modelengine.fel.tool.model.transfer.DefinitionGroupData;
13+
import modelengine.fel.tool.service.ToolChangedObserver;
1314
import modelengine.fitframework.annotation.Fit;
1415
import modelengine.fitframework.test.annotation.IntegrationTest;
16+
import modelengine.fitframework.test.annotation.Mock;
1517
import modelengine.fitframework.test.annotation.Spy;
1618
import modelengine.fitframework.test.annotation.Sql;
1719
import modelengine.jade.carver.tool.repository.pgsql.mapper.DefinitionMapper;
@@ -33,7 +35,7 @@
3335
* @since 2024-10-31
3436
*/
3537
@IntegrationTest(scanPackages = "modelengine.jade.carver.tool")
36-
@Sql(before = {"sql/create/definition.sql", "sql/create/definition-group.sql"})
38+
@Sql(before = {"sql/create/definition.sql", "sql/create/definition-group.sql", "sql/create/tool.sql"})
3739
@DisplayName("Definition group 集成测试")
3840
public class DefinitionGroupIntegrationTest {
3941
private static final String GROUP_NAME1 = "depth-estimation-definition-group-name";
@@ -44,6 +46,9 @@ public class DefinitionGroupIntegrationTest {
4446
@Spy
4547
private DefinitionMapper definitionMapper;
4648

49+
@Mock
50+
private ToolChangedObserver toolChangedObserver;
51+
4752
@Test
4853
@Sql(before = {"sql/create/definition.sql", "sql/create/definition-group.sql"})
4954
@DisplayName("测试插入工具定义组")

carver/plugins/tool-repository-postgresql/src/test/java/modelengine/jade/carver/tool/repository/pgsql/integration/DefinitionIntegrationTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@
99
import static org.assertj.core.api.Assertions.assertThat;
1010

1111
import modelengine.fel.tool.model.transfer.DefinitionData;
12+
import modelengine.fel.tool.service.ToolChangedObserver;
1213
import modelengine.fitframework.annotation.Fit;
1314
import modelengine.fitframework.test.annotation.IntegrationTest;
15+
import modelengine.fitframework.test.annotation.Mock;
1416
import modelengine.fitframework.test.annotation.Spy;
1517
import modelengine.fitframework.test.annotation.Sql;
1618
import modelengine.jade.carver.tool.repository.pgsql.ToolDataBuilder;
@@ -43,6 +45,9 @@ public class DefinitionIntegrationTest {
4345
@Spy
4446
private DefinitionMapper definitionMapper;
4547

48+
@Mock
49+
private ToolChangedObserver toolChangedObserver;
50+
4651
@Test
4752
@Sql(before = {"sql/create/definition.sql", "sql/create/tool.sql"})
4853
@DisplayName("测试插入工具定义")

carver/plugins/tool-repository-postgresql/src/test/java/modelengine/jade/carver/tool/repository/pgsql/integration/ToolGroupIntegrationTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@
1212

1313
import modelengine.fel.tool.model.transfer.DefinitionData;
1414
import modelengine.fel.tool.model.transfer.ToolGroupData;
15+
import modelengine.fel.tool.service.ToolChangedObserver;
1516
import modelengine.fitframework.annotation.Fit;
1617
import modelengine.fitframework.serialization.ObjectSerializer;
1718
import modelengine.fitframework.test.annotation.IntegrationTest;
19+
import modelengine.fitframework.test.annotation.Mock;
1820
import modelengine.fitframework.test.annotation.Spy;
1921
import modelengine.fitframework.test.annotation.Sql;
2022
import modelengine.jade.carver.tool.repository.pgsql.ToolDataBuilder;
@@ -64,6 +66,9 @@ public class ToolGroupIntegrationTest {
6466
@Fit(alias = "json")
6567
private ObjectSerializer serializer;
6668

69+
@Mock
70+
private ToolChangedObserver toolChangedObserver;
71+
6772
private void mockDefinitionInfo() {
6873
DefinitionData definitionData = ToolDataBuilder.mockDefinitionData();
6974
this.definitionService.delete(definitionData.getGroupName(), definitionData.getName());

0 commit comments

Comments
 (0)