// ============================================================================
//
// 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.core.marker;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.mdm.repository.core.IServerObjectRepositoryType;
import org.talend.mdm.repository.ui.views.MDMProblemView;
import org.talend.mdm.repository.utils.UIUtil;
/**
* created by HHB on 2013-2-28 Detailled comment
*
*/
public class ValidateMarkerUtil implements IValidationMarker {
static Logger log = Logger.getLogger(ValidateMarkerUtil.class);
private static Map<ERepositoryObjectType, String[]> viewTypeMarkerMap = new HashMap<ERepositoryObjectType, String[]>();
static {
initMarkerMap();
}
private static void initMarkerMap() {
// DATA Model
viewTypeMarkerMap.put(IServerObjectRepositoryType.TYPE_DATAMODEL, new String[] { MARKER_DATA_MODEL, MARKER_XSD_ERR });
}
private static String[] allMarkers = null;
public static String[] getMarkerTypeByViewType(ERepositoryObjectType type) {
return viewTypeMarkerMap.get(type);
}
public static String[] getAllToRemoveMarkers() {
return new String[] { MARKER_XSD_ERR, MARKER_MDM };
}
public static String[] getAllMarkers() {
if (allMarkers == null) {
List<String> markers = new LinkedList<String>();
for (String[] values : viewTypeMarkerMap.values()) {
for (String marker : values) {
markers.add(marker);
}
}
allMarkers = markers.toArray(new String[0]);
}
return allMarkers;
}
public static void updateProbleViewTitle() {
if (UIUtil.isWorkInUI()) {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
if (page != null && UIUtil.isMDMPerspective(page)) {
IViewPart view = null;
try {
view = page.findView(MDMProblemView.VIEW_ID);
if (view == null) {
view = page.showView(MDMProblemView.VIEW_ID, null, IWorkbenchPage.VIEW_CREATE);
}
if (view != null) {
((MDMProblemView) view).updateViewTitle();
}
} catch (PartInitException e) {
log.error(e.getMessage(), e);
}
}
}
});
}
}
}