Skip to content

Commit

Permalink
Merge Objects: models fix
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar authored and semancik committed Oct 21, 2016
1 parent 587c0b2 commit bdf337b
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 13 deletions.
Expand Up @@ -79,7 +79,9 @@ public class PageMergeObjects<F extends FocusType> extends PageAdminFocus {
private static final String OPERATION_DELETE_USER = DOT_CLASS + "deleteUser";
private static final Trace LOGGER = TraceManager.getTrace(PageMergeObjects.class);
private F mergeObject;
private IModel<F> mergeObjectModel;
private F mergeWithObject;
private IModel<F> mergeWithObjectModel;
private Class<F> type;
private MergeObjectsPanel mergeObjectsPanel;

Expand All @@ -91,12 +93,49 @@ public PageMergeObjects(F mergeObject, F mergeWithObject, Class<F> type){
this.mergeWithObject = mergeWithObject;
this.type = type;

initModels();

PageParameters parameters = new PageParameters();
parameters.add(OnePageParameterEncoder.PARAMETER, mergeObject.getOid());
getPageParameters().overwriteWith(parameters);
initialize(this.mergeObject.asPrismObject());
}

private void initModels(){
mergeObjectModel = new IModel<F>() {
@Override
public F getObject() {
return mergeObject;
}

@Override
public void setObject(F f) {
mergeObject = f;
}

@Override
public void detach() {

}
};
mergeWithObjectModel = new IModel<F>() {
@Override
public F getObject() {
return mergeWithObject;
}

@Override
public void setObject(F f) {
mergeWithObject = f;
}

@Override
public void detach() {

}
};
}

@Override
protected AbstractObjectMainPanel<UserType> createMainPanel(String id){
return new FocusMainPanel<UserType>(id, getObjectModel(), new LoadableModel<List<AssignmentEditorDto>>() {
Expand All @@ -121,7 +160,7 @@ protected List<ITab> createTabs(final PageAdminObjectDetails<UserType> parentPag

@Override
public WebMarkupContainer createPanel(String panelId) {
mergeObjectsPanel = new MergeObjectsPanel(panelId, mergeObject, mergeWithObject, type, PageMergeObjects.this);
mergeObjectsPanel = new MergeObjectsPanel(panelId, mergeObjectModel, mergeWithObjectModel, type, PageMergeObjects.this);
return mergeObjectsPanel;
}
});
Expand Down
Expand Up @@ -65,8 +65,8 @@ public class MergeObjectsPanel<F extends FocusType> extends BasePanel{
private static final String ID_SWITCH_DIRECTION_BUTTON = "switchDirectionButton";
private static final String ID_OBJECTS_PANEL = "objectsPanel";

private F mergeObject;
private F mergeWithObject;
private IModel<F> mergeObjectModel;
private IModel<F> mergeWithObjectModel;
private PrismObject<F> mergeResultObject;
private ObjectDelta<F> mergeDelta;
private Class<F> type;
Expand All @@ -80,10 +80,10 @@ public MergeObjectsPanel(String id){
super(id);
}

public MergeObjectsPanel(String id, F mergeObject, F mergeWithObject, Class<F> type, PageBase pageBase){
public MergeObjectsPanel(String id, IModel<F> mergeObjectModel, IModel<F> mergeWithObjectModel, Class<F> type, PageBase pageBase){
super(id);
this.mergeObject = mergeObject;
this.mergeWithObject = mergeWithObject;
this.mergeObjectModel = mergeObjectModel;
this.mergeWithObjectModel = mergeWithObjectModel;
this.type = type;
this.pageBase = pageBase;
mergeTypeChoices = getMergeTypeNames();
Expand Down Expand Up @@ -160,9 +160,9 @@ protected void onUpdate(AjaxRequestTarget target) {
pageBase.createStringResource("MergeObjectsPanel.switchDirection")) {
@Override
public void onClick(AjaxRequestTarget ajaxRequestTarget) {
F temp = mergeObject;
mergeObject = mergeWithObject;
mergeWithObject = temp;
F temp = mergeObjectModel.getObject();
mergeObjectModel.setObject(mergeWithObjectModel.getObject());
mergeWithObjectModel.setObject(temp);
initObjectsPanel(objectsPanel);

ajaxRequestTarget.add(objectsPanel);
Expand All @@ -175,12 +175,12 @@ public void onClick(AjaxRequestTarget ajaxRequestTarget) {
private void initObjectsPanel(WebMarkupContainer objectsPanel){

MergeObjectDetailsPanel mergeObjectPanel = new MergeObjectDetailsPanel(ID_MERGE_OBJECT_DETAILS_PANEL,
mergeObject, type);
mergeObjectModel.getObject(), type);
mergeObjectPanel.setOutputMarkupId(true);
objectsPanel.addOrReplace(mergeObjectPanel);

MergeObjectDetailsPanel mergeWithObjectPanel = new MergeObjectDetailsPanel(ID_MERGE_WITH_OBJECT_DETAILS_PANEL,
mergeWithObject, type);
mergeWithObjectModel.getObject(), type);
mergeWithObjectPanel.setOutputMarkupId(true);
objectsPanel.addOrReplace(mergeWithObjectPanel);

Expand Down Expand Up @@ -298,9 +298,9 @@ private PrismObject<F> getMergeObjectsResult(){
try {
Task task = pageBase.createSimpleTask(OPERATION_GET_MERGE_OBJECT_PREVIEW);
mergeResultObject = pageBase.getModelInteractionService().mergeObjectsPreviewObject(type,
mergeObject.getOid(), mergeWithObject.getOid(), currentMergeType, task, result);
mergeObjectModel.getObject().getOid(), mergeWithObjectModel.getObject().getOid(), currentMergeType, task, result);
mergeDelta = pageBase.getModelInteractionService().mergeObjectsPreviewDelta(type,
mergeObject.getOid(), mergeWithObject.getOid(), currentMergeType, task, result);
mergeObjectModel.getObject().getOid(), mergeWithObjectModel.getObject().getOid(), currentMergeType, task, result);
} catch (Exception ex) {
result.recomputeStatus();
result.recordFatalError("Couldn't get merge object for preview.", ex);
Expand Down

0 comments on commit bdf337b

Please sign in to comment.