// ============================================================================ // // 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.utils; import org.talend.mdm.repository.core.impl.transformerV2.ITransformerV2NodeConsDef; import org.talend.mdm.repository.core.impl.view.IViewNodeConstDef; import org.talend.mdm.repository.i18n.Messages; import com.amalto.workbench.service.bridge.ITransformService; /** * created by liusongbo on 2012-9-28 Detailled comment */ public class RepositoryTransformUtil implements ITransformService, ITransformerV2NodeConsDef, IViewNodeConstDef { private static final String SEPARATOR = "#"; //$NON-NLS-1$ public static RepositoryTransformUtil instance; public static RepositoryTransformUtil getInstance() { if (instance == null) { instance = new RepositoryTransformUtil(); } return instance; } public String transformToSilyViewName(final String internalName, boolean withDirName) { if (internalName == null || internalName.isEmpty()) { return internalName; } String filterName = null; String dirName = null; String prefix = null; String transformedName = internalName; int viewType = getViewType(internalName); if (viewType == TYPE_WEBFILTER) { prefix = PREFIX_VIEW_UPPER; filterName = transformedName; dirName = Messages.ViewLabelProvider_WebfilterNodeName; } else if (viewType == TYPE_SEARCHFILTER) { dirName = Messages.ViewLabelProvider_SearchfilterNodeName; } if (prefix != null) { transformedName = transformedName.substring(prefix.length()); } if (filterName != null) { int index = transformedName.lastIndexOf(SEPARATOR); if (index > 0) { filterName = transformedName.substring(index + 1); transformedName = transformedName.substring(0, index); int spaceIndex = filterName.indexOf(" "); //$NON-NLS-1$ if (spaceIndex > 0) { transformedName += filterName.substring(spaceIndex); filterName = filterName.substring(0, spaceIndex); } } else { filterName = null; } } return transformedName + getOptionalName(filterName) + (withDirName ? getDirectoryName(dirName) : ""); //$NON-NLS-1$ } private String getOptionalName(String optionalName) { if (optionalName == null || optionalName.trim().length() == 0) return ""; //$NON-NLS-1$ else return " (" + optionalName + ")"; //$NON-NLS-1$//$NON-NLS-2$ } private String getDirectoryName(String name) { if (name == null || name.trim().length() == 0) return ""; //$NON-NLS-1$ else return " [" + name + "]"; //$NON-NLS-1$ //$NON-NLS-2$ } public String transformToSilyProcessName(final String internalName, boolean withDirName) { if (internalName == null || internalName.trim().length() == 0) { return internalName; } String prefix = null; String optionalName = null; String dirName = null; String transformedName = internalName; int type = getProcessType(internalName); switch (type) { case TYPE_BEFORESAVE: prefix = PREFIX_BEFORESAVE_UPPER; dirName = Messages.TransformerV2XX_BeforeSaving; break; case TYPE_BEFOREDEL: prefix = PREFIX_BEFOREDEL_UPPER; dirName = Messages.TransformerV2XX_BeforeDeleting; break; case TYPE_ENTITYACTION: prefix = PREFIX_RUNNABLE_UPPER; optionalName = transformedName; dirName = Messages.TransformerV2XX_EntityAction; break; case TYPE_WELCOMEACTION: prefix = PREFIX_STANDLONE_UPPER; dirName = Messages.TransformerV2XX_WelcomeAction; break; case TYPE_SMARTVIEW: prefix = PREFIX_SMARTVIEW_UPPER; optionalName = transformedName; dirName = Messages.TransformerV2XX_SmartView; break; case TYPE_OTHER: dirName = Messages.TransformerV2XX_Other; break; default: break; } if (prefix != null) { transformedName = transformedName.substring(prefix.length()); } if (optionalName != null) { int index = transformedName.lastIndexOf(SEPARATOR); if (index > 0) { optionalName = transformedName.substring(index + 1); transformedName = transformedName.substring(0, index); int spaceIndex = optionalName.indexOf(" "); //$NON-NLS-1$ if (spaceIndex > 0) { transformedName += optionalName.substring(spaceIndex); optionalName = optionalName.substring(0, spaceIndex); } } else { optionalName = null; } } return transformedName + getOptionalName(optionalName) + (withDirName ? getDirectoryName(dirName) : ""); //$NON-NLS-1$ } public int getProcessType(String processName) { if (processName == null || processName.trim().length() == 0) { return -1; } if (processName.startsWith(PREFIX_BEFORESAVE_UPPER)) { return TYPE_BEFORESAVE; } else if (processName.startsWith(PREFIX_BEFOREDEL_UPPER)) { return TYPE_BEFOREDEL; } else if (processName.startsWith(PREFIX_RUNNABLE_UPPER)) { return TYPE_ENTITYACTION; } else if (processName.startsWith(PREFIX_STANDLONE_UPPER) || processName.startsWith(PREFIX_STANDLONE_UPPER_OLD)) { return TYPE_WELCOMEACTION; } else if (processName.startsWith(PREFIX_SMARTVIEW_UPPER)) { return TYPE_SMARTVIEW; } else { return TYPE_OTHER; } } public String getProcessPath(String processName, boolean withSeperator) { if (processName != null) { int processType = RepositoryTransformUtil.getInstance().getProcessType(processName); String prefix = withSeperator ? "/" : ""; //$NON-NLS-1$ //$NON-NLS-2$ String path = ""; //$NON-NLS-1$ switch (processType) { case ITransformerV2NodeConsDef.TYPE_BEFORESAVE: path = PATH_BEFORESAVE; break; case ITransformerV2NodeConsDef.TYPE_BEFOREDEL: path = PATH_BEFOREDEL; break; case ITransformerV2NodeConsDef.TYPE_ENTITYACTION: path = PATH_ENTITYACTION; break; case ITransformerV2NodeConsDef.TYPE_WELCOMEACTION: path = PATH_WELCOMEACTION; break; case ITransformerV2NodeConsDef.TYPE_SMARTVIEW: path = PATH_SMARTVIEW; break; case ITransformerV2NodeConsDef.TYPE_OTHER: path = PATH_OTHER; break; } return prefix + path; } return null; } public int getViewType(String viewName) { if (viewName == null || viewName.trim().length() == 0) { return -1; } if (viewName.startsWith(PREFIX_VIEW_UPPER)) { return TYPE_WEBFILTER; } else return TYPE_SEARCHFILTER; } public String getViewPath(String viewName) { if (viewName != null) { int viewType = getViewType(viewName); if (viewType == TYPE_WEBFILTER) { return PATH_WEBFILTER; } else return PATH_SEARCHFILTER; } return null; } }