// ============================================================================
//
// Copyright (C) 2006-2012 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.repository.ui.properties;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.emf.ecore.EClass;
import org.talend.commons.exception.PersistenceException;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.IESBService;
import org.talend.core.model.properties.Item;
import org.talend.core.model.properties.PropertiesPackage;
import org.talend.core.model.properties.Property;
import org.talend.core.model.properties.Status;
import org.talend.repository.model.IProxyRepositoryFactory;
/**
* DOC smallet class global comment. Detailled comment <br/>
*
* $Id: StatusHelper.java 914 2006-12-08 08:28:53 +0000 (星期五, 08 十二月 2006) bqian $
*
*/
public class StatusHelper {
private Map<String, Status> code2status;
private Map<String, String> label2code;
private IProxyRepositoryFactory repositoryFactory;
public StatusHelper(IProxyRepositoryFactory repositoryFactory) {
super();
this.repositoryFactory = repositoryFactory;
}
public String getStatusLabel(String statusCode) {
if (statusCode == null) {
return ""; //$NON-NLS-1$
}
Status status = null;
if (code2status != null) {
status = code2status.get(statusCode);
}
return status == null ? statusCode : status.getLabel();
}
public String getStatusCode(String label) {
String text;
text = label2code.get(label);
return (text == null ? label : text);
}
public List<Status> getStatusList(Property property) throws PersistenceException {
List<Status> status = null;
Item item = property.getItem();
if (item != null) {
EClass propertyEClass = item.eClass();
int i = propertyEClass.getClassifierID();
switch (propertyEClass.getClassifierID()) {
case PropertiesPackage.CSV_FILE_CONNECTION_ITEM:
case PropertiesPackage.DATABASE_CONNECTION_ITEM:
case PropertiesPackage.SAP_CONNECTION_ITEM:
case PropertiesPackage.DELIMITED_FILE_CONNECTION_ITEM:
case PropertiesPackage.POSITIONAL_FILE_CONNECTION_ITEM:
case PropertiesPackage.CONTEXT_ITEM:
case PropertiesPackage.PROCESS_ITEM:
case PropertiesPackage.JOBLET_PROCESS_ITEM:
case PropertiesPackage.ROUTINE_ITEM:
case PropertiesPackage.REG_EX_FILE_CONNECTION_ITEM:
case PropertiesPackage.GENERIC_SCHEMA_CONNECTION_ITEM:
case PropertiesPackage.LDAP_SCHEMA_CONNECTION_ITEM:
case PropertiesPackage.LDIF_FILE_CONNECTION_ITEM:
case PropertiesPackage.XML_FILE_CONNECTION_ITEM:
case PropertiesPackage.EXCEL_FILE_CONNECTION_ITEM:
case PropertiesPackage.SALESFORCE_SCHEMA_CONNECTION_ITEM:
case PropertiesPackage.WSDL_SCHEMA_CONNECTION_ITEM:
case PropertiesPackage.EBCDIC_CONNECTION_ITEM:
case PropertiesPackage.HL7_CONNECTION_ITEM:
case PropertiesPackage.FTP_CONNECTION_ITEM:
case PropertiesPackage.BRMS_CONNECTION_ITEM:
case PropertiesPackage.MDM_CONNECTION_ITEM:
case PropertiesPackage.JOB_SCRIPT_ITEM:
case PropertiesPackage.SQL_PATTERN_ITEM:
case PropertiesPackage.EDIFACT_CONNECTION_ITEM:
case PropertiesPackage.VALIDATION_RULES_CONNECTION_ITEM:
status = repositoryFactory.getTechnicalStatus();
break;
case PropertiesPackage.RULES_ITEM:
status = repositoryFactory.getTechnicalStatus();
break;
case PropertiesPackage.LINK_RULES_ITEM:
status = repositoryFactory.getTechnicalStatus();
break;
case PropertiesPackage.BUSINESS_PROCESS_ITEM:
case PropertiesPackage.SVG_BUSINESS_PROCESS_ITEM:
case PropertiesPackage.DOCUMENTATION_ITEM:
status = repositoryFactory.getDocumentationStatus();
break;
}
if (status == null) {
if (GlobalServiceRegister.getDefault().isServiceRegistered(IESBService.class)) {
IESBService service = (IESBService) GlobalServiceRegister.getDefault().getService(IESBService.class);
if (service != null) {
boolean flag = service.isServiceItem(i);
if (flag) {
status = repositoryFactory.getTechnicalStatus();
}
}
}
}
}
if (status == null) {
status = new ArrayList<Status>();
}
toMaps(status);
return status;
}
/**
* DOC tguiu Comment method "asMap".
*
* @param status
* @return
*/
private void toMaps(List<Status> status) {
code2status = new HashMap<String, Status>();
label2code = new HashMap<String, String>();
for (Status s : status) {
code2status.put(s.getCode(), s);
label2code.put(s.getLabel(), s.getCode());
}
}
}