// ============================================================================
//
// Copyright (C) 2006-2016 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.mdm.repository.ui.editors;
import org.apache.log4j.Logger;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.navigator.CommonViewer;
import org.talend.core.model.properties.Item;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.mdm.repository.core.service.ContainerCacheService;
import org.talend.mdm.repository.i18n.Messages;
import org.talend.mdm.repository.model.mdmproperties.MDMServerObjectItem;
import org.talend.mdm.repository.model.mdmproperties.WSDataModelItem;
import org.talend.mdm.repository.model.mdmserverobject.WSDataModelE;
import org.talend.mdm.repository.ui.actions.xsd.XSDDeleteConceptActionR;
import org.talend.mdm.repository.ui.actions.xsd.XSDSetAnnotationFKFilterActionR;
import org.talend.mdm.repository.ui.actions.xsd.XSDSetAnnotationForeignKeyActionR;
import org.talend.mdm.repository.ui.actions.xsd.XSDSetAnnotationForeignKeyInfoActionR;
import org.talend.mdm.repository.ui.dialogs.SelectImportedModulesDialog2;
import org.talend.mdm.repository.ui.dialogs.datamodel.DataModelFilterDialogR;
import org.talend.mdm.repository.ui.navigator.MDMRepositoryView;
import org.talend.mdm.repository.ui.wizards.view.AddBrowseItemsWizardR;
import org.talend.mdm.repository.utils.Bean2EObjUtil;
import org.talend.mdm.repository.utils.RepositoryResourceUtil;
import com.amalto.workbench.actions.XSDDeleteConceptAction;
import com.amalto.workbench.actions.XSDSetAnnotationFKFilterAction;
import com.amalto.workbench.actions.XSDSetAnnotationForeignKeyAction;
import com.amalto.workbench.actions.XSDSetAnnotationForeignKeyInfoAction;
import com.amalto.workbench.dialogs.AddBrowseItemsWizard;
import com.amalto.workbench.dialogs.DataModelFilterDialog;
import com.amalto.workbench.dialogs.SelectImportedModulesDialog;
import com.amalto.workbench.editors.DataModelMainPage;
import com.amalto.workbench.models.TreeObject;
import com.amalto.workbench.providers.datamodel.SchemaTreeContentProvider;
import com.amalto.workbench.webservices.WSDataModel;
/**
* DOC hbhong class global comment. Detailled comment
*/
public class DataModelMainPage2 extends DataModelMainPage {
private static Logger log = Logger.getLogger(DataModelMainPage2.class);
/**
* DOC hbhong DataModelMainPage2 constructor comment.
*
* @param obj
*/
public DataModelMainPage2(TreeObject obj) {
super(obj);
}
@Override
protected void doSave(WSDataModel wsObject) throws Exception {
XObjectEditorInput2 editorInput = (XObjectEditorInput2) getEditorInput();
MDMServerObjectItem serverObjectItem = (MDMServerObjectItem) editorInput.getInputItem();
updateSchemaToItem(serverObjectItem);//
xsdSchema = ((SchemaTreeContentProvider) viewer.getContentProvider()).getXsdSchema();
Item newItem = RepositoryResourceUtil.assertItem(serverObjectItem);
if (newItem != serverObjectItem) {
editorInput.updateViewObject(ContainerCacheService.get(newItem.getProperty()));
getEditorSite();
serverObjectItem = (MDMServerObjectItem) newItem;
}
EObject eObj = Bean2EObjUtil.getInstance().convertFromBean2EObj(wsObject, serverObjectItem.getMDMServerObject());
if (eObj != null) {
RepositoryResourceUtil.saveItem(serverObjectItem);
}
refreshDirtyCue();
}
//
public Item updateSchemaToItem(Item item) {
WSDataModelE wsDataModelE = ((WSDataModelItem) item).getWsDataModel();
WSDataModel wsDataModel = (WSDataModel) xobject.getWsObject();
wsDataModelE.setXsdSchema(wsDataModel.getXsdSchema());
return item;
}
private void refreshDirtyCue() {
IEditorInput input = getEditorInput();
XObjectEditorInput2 theInput = null;
if (input instanceof XObjectEditorInput2) {
theInput = (XObjectEditorInput2) input;
}
IRepositoryViewObject viewObj = theInput.getViewObject();
CommonViewer viewer = MDMRepositoryView.show().getCommonViewer();
viewer.refresh(viewObj);
}
@Override
public Object getAdapter(Class adapter) {
if (adapter == AddBrowseItemsWizard.class) {
return new AddBrowseItemsWizardR(this);
}
if (adapter == XSDSetAnnotationForeignKeyAction.class) {
return new XSDSetAnnotationForeignKeyActionR(this, dataModelName);
}
if (adapter == XSDSetAnnotationForeignKeyInfoAction.class) {
return new XSDSetAnnotationForeignKeyInfoActionR(this, dataModelName);
}
if (adapter == XSDSetAnnotationFKFilterAction.class) {
return new XSDSetAnnotationFKFilterActionR(this, dataModelName);
}
if (adapter == XSDDeleteConceptAction.class) {
return new XSDDeleteConceptActionR(this);
}
if (adapter == DataModelFilterDialog.class) {
return new DataModelFilterDialogR(getSite().getShell(), xobject, dataModelFilter,
getSchemaElementNameFilterDesByTreeViewer(targetTreeViewer));
}
return super.getAdapter(adapter);
}
@Override
protected SelectImportedModulesDialog createSelectImportedModulesDialog() {
return new SelectImportedModulesDialog2(getSite().getShell(), xobject, Messages.ImportXSDSchema);
}
}