1.ei3_unit_map.csv 第一列是unitkey,第二列是数据库内的unitid,第三列是数据库对应的属性id。
2.可能有多个classfication,而classficationSystem的值以ISIC开头的才是真正的分类?其他的都是返回null.
classification的孩子classificatinSystenm 如果 以ISIC开头, ISIC rev.4 ecoinvent
将这个插入到种类表里面。根据refId。
3.中间交换的outputGroup 1510 3504 0 = ReferenceProduct参考产品(主产品); 2 = By-product副产品; 3 = Material for Treatment处理材料; 5=Stock Additions库存
判断一个ds是否有效的方法: 1.属性id和子节点的activityName不能为空
2.必须outputGroup 为0且属性amount不是0
存在这样的流才有效。
4.产生一个过程产品的id
找到ds内的主产品id,(有效方法同),然后属性intermediateExchangeId 就是流id。然后使用产品ID也就是流id与ds的id生产id.
查找过程表里面有没有这个新生成的id。如果存在,代表已经录入了。
否则录入该ds.
获取种类,然后种类的id。去找找对应的种类。
5.映射tags。 用,隔开
6.如果需要处理参数,处理参数;
流里有参数子节点。
交换里面也有参数。参数范围是过程---指的基本流
交换里的参数。获取的是产品的流的参数
从exchange里面获取,从exchange的properties里获取参数。 -返回都是指定为过程
7.创建输入输出交换:
数据库内存在两个默认的DQS:
private static final String EI_DQS = "e7ac7cf6-5457-453e-99f9-d889826fffe8";
private static final String ILCD_DQS = "506e2c14-4d09-49fd-9460-97e8085b2b55";
如果没有,会自动插入。
7.1创建产品的交换:
如果产品的amount属性是0,且配置里没有配置跳过空的交换, 并且其是主产品, 获取这个流(如果没有,提示)。然后创建交换(使用过程,流,流id,中间交换。具体见创建过程)
如果过程不是null。判断其流和过程是不是AvoidedProduct。 如果是,交换的isAvoided为true.。如果中间交换的activityLinkId不为抗,那么添加ActivityLink.(添加见添加过程)。如果是参考产品流,其将过程的quantitativeReference设为该交换。
映射prices.如果过程的定量参考是空,进行提示。
创建交换过程:
流不能为空,且流属性也不能是空.
获取其单位unit对象, 通过流属性,获取单位组,获取单位组的参考单位。
7.1.2什么是Avoid呢:
// If the sign of an product/waste input is different from the sign of
// the product/waste output of the linked activity it could be an
// avoided product. Not sure, if this is true for ecoinvent 3
// boolean isNeg = exchange.getAmountValue() < 0;
// return isNeg != index.isNegativeFlow(refId) && exchange.isInput();
翻译:如果产品/废物输入的符号与相关活动的产品/废物输出的符号不同,则可能是被避免的产品
7.2创建基础流的交换:
7.3处理doc。
技术,地理,时间,adminInfo, 表达
7.4更新到link。