cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

MAPPING: Increment counter while creating destination structures

Former Member
0 Likes
1,226

Hello,

i have the following source and destination structure:

<src_struct> (0-n)

<qualifier>

<value>

</src_struct>

<dest_struct> (0-n)

<counter>

<qualifier>

<value>

</src_struct>

only those dest structures have to be created where <qualifier="XX">.

Thus my mapping on structure level looks like:

if <qualifier> equalS "XX" createIf --> <dest_struct>

This works fine.

But additionally i need to increment <counter> in the dest_struct. I.e., when i have 10 src_struct where 5 of them has <qualifier="XX"> i need 5 dest_struct with counter 1 to 5.

I tried this with a UDF which has just a constant as input:

"MY_COUNTER" --> UDF:getNextCounter --> <counter>

This argument is the name under which the last counter was saved in the global container. My expectation was that for each time the field <counter> will be created, my UDF reads the las counter, increments it, saves it back to the container and returns the result.

but the bahavior is different:

For example:

if src_structures 6-10 have <qualifier>="XX" my UFD returns 6-10 in sequnce instead

of 1-5. The shows me, that my UDF runs 10 times even though just 5 dest_struct are created.

What do i wrong?

Her my UDF:

GlobalContainer gc = container.getGlobalContainer();

String counter = new String();

counter = (String) gc.getParameter(MY_COUNTER);

if(counter==null) {

counter = "1";

gc.setParameter(MY_COUNTER,counter);

return(counter);

}

Integer i_counter = new Integer(counter);

int i = i_counter.intValue() + 1;

Integer I = new Integer(i);

counter = I.toString();

gc.setParameter(ID_TYPE,counter);

return(counter);

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Likes

Hi

Check the condition on qualifier

i.e. if <qualifier> == "XX"

then only increment the counter

this should work

regards

Sheetal

Answers (2)

Answers (2)

Former Member
0 Likes

Hi,

Source node --> count ( arithmetic function)

Source node ---> equals ( not Qualifier XX ) --> count

subtract these two and you will get the count of nodes generated when qualifier is XX.

Abhi

former_member181959
Contributor
0 Likes

Hi,

Why dont you take qualifier as another argument (say b) for the same UDF.

so that you can check the value of the qualifier and run the logic as you needed.

as below,

if (b.equals("XX"))

{

GlobalContainer gc = container.getGlobalContainer();

String counter = new String();

counter = (String) gc.getParameter(MY_COUNTER);

if(counter==null) {

counter = "1";

gc.setParameter(MY_COUNTER,counter);

return(counter);

}

Integer i_counter = new Integer(counter);

int i = i_counter.intValue() + 1;

Integer I = new Integer(i);

counter = I.toString();

gc.setParameter(ID_TYPE,counter);

return(counter);

}

Let me know if its not working.

Hope this helps.

Prasad Babu.