gmf 中保存 xml resource 的方法


写两个方法在这里,做个记录,免得以后忘了;


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;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值