MyTetra Share
Делитесь знаниями!
Contract data
Время создания: 23.03.2020 17:05
Раздел: INFO - JOB - rtneo - Рефакторинг - Доп
Запись: wwwlir/Tetra/master/base/1584954314g2utlumefo/text.html на raw.githubusercontent.com

import com.groupstp.rtneo.util.JsonUtil;


//Если есть сохраненные данные, используем их

def rootContractData = loadContractData(contract)

if(rootContractData != null){

return rootContractData

}


//Сохраняем полученные данные

saveContractData(root, contract)


/**/

private void saveContractData(def data, Contract contract){

ContractData cdata = metadata.create(ContractData.class)

JsonUtil jsonUtil = AppBeans.get(JsonUtil.NAME)

String json;

try{

json = jsonUtil.toJson(data)

}

catch(Exception e){log("LOG.ERROR: JSON object serialization failed")}

cdata.setJsonData(json)

cdata.setContract(contract)

dataManager.commit(cdata)

contract.setContractData(cdata)

dataManager.commit(contract)

}


private def loadContractData(Contract contract){

JsonUtil jsonUtil = AppBeans.get(JsonUtil.NAME)

ContractData cdata = dataManager.load(ContractData.class)

.query('select c from rtneo$ContractData c where c.contract.id = :contract')

.parameter("contract", contract.getId())

.view("_local")

.optional()

.orElse(null);

if(cdata == null)return null

//Если версия контракта изменилась, удаляем данные контракта

if(contract.getVersion() != cdata.contract.getVersion()){

dataManager.remove(cdata)

return null

}

String json;

try{

json = cdata.getJsonData();

}catch(Exception e){}

def arr = jsonUtil.fromJson(json, ArrayList.class)

return arr;

}

 
MyTetra Share v.0.55
Яндекс индекс цитирования