Skip to content

Commit 493d252

Browse files
committed
AI model cloning
1 parent eded5d5 commit 493d252

File tree

3 files changed

+35
-9
lines changed

3 files changed

+35
-9
lines changed

logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/ai/AIService.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,18 @@ public interface AIService extends RemoteService {
133133
*/
134134
public GUIModel importModel(String modelName) throws ServerException;
135135

136+
/**
137+
* Clones a model
138+
*
139+
* @param modelId Identifier of the model to clone
140+
* @param newName The name to give to the clone
141+
*
142+
* @return The clone
143+
*
144+
* @throws ServerException an error happened in the server application
145+
*/
146+
public GUIModel cloneModel(long modelId, String newName) throws ServerException;
147+
136148
public static class Instance {
137149
private static AIServiceAsync inst;
138150

logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/ai/AIServiceAsync.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,6 @@ public interface AIServiceAsync {
3030
void query(long modelId, List<String> features, AsyncCallback<List<GUIQueryResult>> callback);
3131

3232
void importModel(String modelName, AsyncCallback<GUIModel> callback);
33+
34+
void cloneModel(long modelId, String newName, AsyncCallback<GUIModel> callback);
3335
}

logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/ai/model/ModelsPanel.java

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -263,14 +263,26 @@ public void onSuccess(Void result) {
263263

264264
MenuItem query = new MenuItem();
265265
query.setTitle(I18N.message("querymodel"));
266-
query.addClickHandler(event -> {
267-
AIService.Instance.get().getModel(selectedModelId, new DefaultAsyncCallback<>() {
268-
@Override
269-
public void onSuccess(GUIModel mdl) {
270-
new QueryDialog(mdl).show();
271-
}
272-
});
273-
});
266+
query.addClickHandler(event -> AIService.Instance.get().getModel(selectedModelId, new DefaultAsyncCallback<>() {
267+
@Override
268+
public void onSuccess(GUIModel mdl) {
269+
new QueryDialog(mdl).show();
270+
}
271+
}));
272+
query.setEnabled(!selection[0].getAttributeAsBoolean(TRAINING)
273+
&& !selection[0].getAttributeAsBoolean(EVALUATING) && selection[0].getAttribute(TRAINED) != null);
274+
275+
MenuItem clone = new MenuItem();
276+
clone.setTitle(I18N.message("clone"));
277+
clone.addClickHandler(click -> LD.askForString("clone", "name",
278+
selection[0].getAttributeAsString("name") + "Cloned",
279+
value -> AIService.Instance.get().cloneModel(selectedModelId, value, new DefaultAsyncCallback<>() {
280+
@Override
281+
public void onSuccess(GUIModel mdl) {
282+
refresh();
283+
}
284+
})));
285+
274286
query.setEnabled(!selection[0].getAttributeAsBoolean(TRAINING)
275287
&& !selection[0].getAttributeAsBoolean(EVALUATING) && selection[0].getAttribute(TRAINED) != null);
276288

@@ -281,7 +293,7 @@ public void onSuccess(GUIModel mdl) {
281293

282294
com.smartgwt.client.widgets.menu.MenuItemSeparator sep = new com.smartgwt.client.widgets.menu.MenuItemSeparator();
283295

284-
contextMenu.setItems(query, train, evaluate, sep, export, sep, delete);
296+
contextMenu.setItems(query, train, evaluate, sep, clone, export, sep, delete);
285297
contextMenu.showContextMenu();
286298
}
287299

0 commit comments

Comments
 (0)