/**
* Դ�������ƣ�DeMetadataItemImpl.java
* �������Ȩ���������ӹɷ�����˾ ��Ȩ����
* ϵͳ���ƣ�JRES Studio
* ģ�����ƣ�com.hundsun.ares.studio.jres.metadata.core
* ����˵����Ԫ����ģ�Ͷ��塢���������
* ����ĵ���
* ���ߣ�
*/
package com.hundsun.ares.studio.jres.model.metadata.decrypt.impl;
import org.apache.commons.lang.StringUtils;
import org.eclipse.emf.common.util.ECollections;
import org.eclipse.emf.common.util.EMap;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.impl.EObjectImpl;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.core.model.util.Pair;
import com.hundsun.ares.studio.jres.model.metadata.MetadataItem;
import com.hundsun.ares.studio.jres.model.metadata.decrypt.DeMetadataItem;
import com.hundsun.ares.studio.jres.model.metadata.decrypt.DecryptPackage;
import com.hundsun.ares.studio.jres.model.metadata.util.CircularReferenceException;
import com.hundsun.ares.studio.jres.model.metadata.util.MetadataUtil;
/**
* <!-- begin-user-doc -->
* An implementation of the model object '<em><b>De Metadata Item</b></em>'.
* <!-- end-user-doc -->
* <p>
* </p>
*
* @generated
*/
public class DeMetadataItemImpl<T extends MetadataItem> extends EObjectImpl implements DeMetadataItem<T> {
private IARESResource resource;
private T proxyItem;
private Pair<T, IARESResource> resolvedItem;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public DeMetadataItemImpl() {
super();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated NOT
*/
public DeMetadataItemImpl(T proxyItem, IARESResource resource) {
super();
this.proxyItem = proxyItem;
this.resource = resource;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
protected EClass eStaticClass() {
return DecryptPackage.Literals.DE_METADATA_ITEM;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public IARESResource getResource() {
return resource;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public T getProxyItem() {
return proxyItem;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public String getName() {
if (!checkStatus()) return StringUtils.EMPTY;
return getProxyItem().getName();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public String getChineseName() {
if (!checkStatus()) return StringUtils.EMPTY;
return getProxyItem().getChineseName();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public String getDescription() {
if (!checkStatus()) return StringUtils.EMPTY;
return getProxyItem().getDescription();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public String getDataMapValue(final String key) {
if (!checkStatus()) return StringUtils.EMPTY;
return getResolvedItem().first.getData().get(key);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EObject getData2MapValue(final String key) {
if (!checkStatus()) return null;
return getResolvedItem().first.getData2().get(key);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated NOT
*/
public Pair<T, IARESResource> getResolvedItem() {
if (!checkStatus()) return null;
// ��ʵʱ����
if (resolvedItem == null) {
if ( MetadataUtil.isUseRefFeature(resource) ) {
try {
resolvedItem = MetadataUtil.resolve(getProxyItem(), getResource());
} catch (CircularReferenceException e) {
}
}
if (resolvedItem == null) {
// ���û���ҵ����ö�����ʹ���Լ�
resolvedItem = new Pair<T, IARESResource>(getProxyItem(), getResource());
}
}
return resolvedItem;
}
protected boolean checkStatus() {
return getProxyItem() != null && getResource() != null;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EMap<String, String> getDataMap() {
if (!checkStatus()) return ECollections.emptyEMap();
return getResolvedItem().first.getData();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EMap<String, EObject> getData2Map() {
if (!checkStatus()) return ECollections.emptyEMap();
return getResolvedItem().first.getData2();
}
} //DeMetadataItemImpl