package com.hundsun.ares.studio.emfadapter;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
import org.dom4j.Element;
import org.eclipse.emf.ecore.xmi.XMLHelper;
import org.eclipse.emf.ecore.xmi.XMLResource;
import org.eclipse.emf.ecore.xmi.impl.XMILoadImpl;
import org.xml.sax.helpers.DefaultHandler;
import com.hundsun.ares.studio.core.model.extendable.ExtendModelConverterManager;
import com.hundsun.ares.studio.core.model.extendable.IExtendAbleModel;
import com.hundsun.ares.studio.core.util.PersistentUtil;
public class AresXMLLoadImpl extends XMILoadImpl {
public static final String EXTEND_STRING = "EXTEND_STRING";
public AresXMLLoadImpl(XMLHelper helper) {
super(helper);
}
@Override
protected DefaultHandler makeDefaultHandler() {
return new AresSAXXMLHandler(resource, helper, options);
}
@Override
public void load(XMLResource resource, InputStream inputStream,
Map<?, ?> options) throws IOException {
super.load(resource, inputStream, options);
if(options.get(EXTEND_STRING) != null){
String xmlString = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"+options.get(EXTEND_STRING).toString();
if(resource.getContents().size() > 0){
if(resource.getContents().get(0) instanceof IExtendAbleModel){
Element root = PersistentUtil.readRoot(new ByteArrayInputStream(xmlString.getBytes()));
if(root != null){
ExtendModelConverterManager.getDefault().readExtendMap((IExtendAbleModel)resource.getContents().get(0), root);
}
}
}
}
}
@Override
protected void handleErrors() throws IOException {
}
}