写两个方法在这里,做个记录,免得以后忘了;
public void save(IFileDelegate file, Object object) throws IOException {
SysDesignDiagram designDiagram = (SysDesignDiagram) object;
if(StringUtils.isEmpty(designDiagram.getName())){
String path = FileUtil.toPackageWithoutExtension(file.getSourceRelativePath());
designDiagram.setName(path);
}
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
Resource resource = this.createResource();
SysDesignFactory SysDesignFactory = new SysDesignFactoryImpl();
DocumentRoot documentRoot = (DocumentRoot) SysDesignFactory
.createDocumentRoot();
documentRoot
.getMixed()
.add(
SysDesignPackage.Literals.DOCUMENT_ROOT__SYS_DESIGN_DIAGRAM,
object);
resource.getContents().add(documentRoot);
resource.save(outStream, getOptions());
ByteArrayInputStream inStream = new ByteArrayInputStream(outStream
.toByteArray());
try {
if(!file.exists())
file.create(inStream);
else
file.setContents(inStream);
} catch (Exception e) {
throw new IOException("save file error.");
} finally {
IOUtils.closeQuietly(inStream);
}
}
创建资源
protected
Resource createResource()
{
ResourceFactoryImpl resourceFactory = new SysDesignResourceFactoryImpl();
return resourceFactory.createResource(URI
.createURI(SysDesignPackage.eNS_URI));
}
public Object parse(IFileDelegate file, IProgressMonitor monitor)
throws ModelParseException {
if (file.exists()) {
InputStream inStream = null;
try {
inStream = file.getContents();
SysDesignDiagram diagram = (SysDesignDiagram) this.parse(
inStream, monitor);
return diagram;
} finally {
IOUtils.closeQuietly(inStream);
}
}
return null;
}
ResourceFactoryImpl resourceFactory = new SysDesignResourceFactoryImpl();
return resourceFactory.createResource(URI
.createURI(SysDesignPackage.eNS_URI));
}
public Object parse(IFileDelegate file, IProgressMonitor monitor)
throws ModelParseException {
if (file.exists()) {
InputStream inStream = null;
try {
inStream = file.getContents();
SysDesignDiagram diagram = (SysDesignDiagram) this.parse(
inStream, monitor);
return diagram;
} finally {
IOUtils.closeQuietly(inStream);
}
}
return null;
}