Groovy - jak vypsat výstupní ID po sebou?
Ahoj,
mám vstup X a Y. Do každého vstupu chodí user ID's. Já si je pomocí intersectu porovnám a výstup jsou všechny Y které nejsou v X. Výstup kódu níže je tedy - [5845, 41845901, 41901]
Ještě pak přeskakuji určitá ID definované v properties jako skipIds.. Každopádně, potřeboval bych výstupní ID vypsat pod sebou. Může mi někdo pomoct ? Díky.
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import groovy.xml.XmlUtil;
import groovy.xml.StreamingMarkupBuilder;
import groovy.xml.*;
def Message processData(Message message) {
// get body
def body = message.getBody(java.io.Reader);
def skipIds = message.getProperty('skipIds');
// parse xml body
def result = new XmlSlurper().parse(body);
def message1 = result.Message1;
def message2 = result.Message2;
def one = message1.X.collect { it.userId.text() }
def two = message2.Y.collect { it.userId.text() }
def intersect = one.intersect(two)
def ids = two - intersect
def newIds = [];
ids.each{ userId ->
if(!skipIds.contains(',' + userId + ',')) {
newIds.push(userId);
}
}
message.setBody(newIds.toString())
return message;
}
Změna tupého předmětu, původně: Groovy (host)
Mimochodem, jsi si jistý, že tohle bude fungovat na první a poslední prvek?
Supr, funguje, dík !
skipIds mám ozkoušené, bere to všechny a funguje to v pořádku.