Iterate through two lists

Hello,
I'm writing an application that generates two seperate sets of data from a database which are stored in two lists; list A & B. I need to cycle through one list (*B*) and remove data according to my search criteria. When I encounter data that I'm going to remove, it has to be done on list A as well.
Is it at all possible to use one iterator to cycle through list B and modify A at the same time? If so, please explain.

For those who are interested, here is the code I used to solve the problem. All the writers create an html booklet for easy interpretation. And yes, I did take into consideration the fact that removing an item from the list offsets the counter and will skip n+1. The use of while( cdList.contains( trimmedcdValue )) was introduced to handle such a case by continuing to delete duplicates (by grabbing their subscript) within the list.
          try{
               statWriter=new BufferedWriter(new FileWriter("results/"+directory+"/FileStatistics.html"));
               statWriter.write(this.buildHeader("File Statistics"));
               statWriter.write("<table class='file-stats'><tr><th>File #</th><th>File name</th><th>Lines read</th><th>Total matches</th></tr>");
               writer=new BufferedWriter(new FileWriter("./results/"+directory+"/MatchList.html"));               
               writer.write(this.buildHeader("Matched References"));
               writer.write("<table><tr><th>File Line</th><th>CD Reference</th><th>ATA Number</th><th>Log_Book</th><th>Description</th><th>File Found in</th></tr>");
               //loop through all new files
               for(int y=0; y<f.length; y++){
                         //update the progressbar information
                    this.updateProgress(f[y]);
                    //set file reader
                    reader=new BufferedReader(new FileReader("./id files/"+directory+"/"+f[y]));
                    int lineCount=0;     //keep track of lines read
                    int match=0;          //keep track of the matches
                    String line=null;
                    while((line=reader.readLine())!=null){
                         String trimmedLine=line.trim();          //remove leading/trailing whitespace
                         lineCount++;                              //increment line counter
                              //cycle through list and check for matches
                         for(int x=0; x<cdList.size();x++){
                              String cdValue=(String)cdList.get(x);               //current list subscript
                                   //remove leading/trailing whitespace
                              String trimmedcdValue=cdValue.trim();                    
                                   //if matched; remove row from list
                              if(trimmedLine.equalsIgnoreCase(trimmedcdValue)){     
                                        //while the value exists in the list; find & remove
                                   while(cdList.contains(trimmedcdValue)){
                                        match++;
                                        row=(match%2==0)?"<tr>":"<tr class='shaded'>";
                                        int index=cdList.indexOf(trimmedcdValue);
                                        writer.write(row+"<td>"+trimmedLine+"</td><td>"+cdList.get(index)+"</td><td>"+ataList.get(index)+"</td><td>"+logList.get(index)+"</td><td>"+descList.get(index)+"</td><td>"+f[y].toLowerCase()+"</td></tr>");
                                        this.removeRow(index);
                         }//end list for-loop
                    }//end line read while-loop
                    writer.flush();                    //flush writeMatch buffer
                         //write file statistics
                    row=(y%2==0)?"<tr>":"<tr class='shaded'>";
                    statWriter.write(row+"<td>"+(y+1)+" of "+f.length+"</td><td>"+f[y].toString()+"</td><td>"+lineCount+"</td><td>"+match+"</td></tr>");
               }//end file for-loop
               writer.write("</table></body></html>");
               writer.close();          //close write match stream
                    //reopen write stream for new file
               writer=new BufferedWriter(new FileWriter("./results/"+directory+"/RemainingList.html"));
               writer.write(this.buildHeader("Remaining List"));
               writer.write("<table><tr><th>CD Reference</th><th>ATA Number</th><th>Log Book</th><th>Description</th></tr>");
               for(int y=0; y<cdList.size(); y++){
                    row=(y%2==0)?"<tr>":"<tr class='shaded'>";
                    writer.write(row+"<td>"+cdList.get(y)+"</td><td>"+ataList.get(y)+"</td><td>"+logList.get(y)+"</td><td>"+descList.get(y)+"</td></tr>");
               writer.write("<tr><td colspan='4'>Remaining list size: "+cdList.size()+"</td></tr></table></body></html>");
               writer.flush();                    //flush writeList Stream
               writer.close();                    //close     writeList stream
                    //display operation statistics
               endingListSize=cdList.size();
               statWriter.write("<tr><td colspan='2'>Beginning list size:</td><td colspan='2'><strong>"+beginningListSize+"</strong></td></tr>");
               statWriter.write("<tr class='shaded'><td colspan='2'>Null CD References removed:</td><td colspan='2'><strong>"+nulls+"</strong></td></tr>");
               statWriter.write("<tr><td colspan='2'>ENG Log values removed:</td><td colspan='2'><strong>"+engs+"</strong></td></tr>");
               statWriter.write("<tr class='shaded'><td colspan='2'>Ending list size:</td><td colspan='2'><strong>"+endingListSize+"</strong></td></tr>");
               statWriter.write("</table></body></html>");
                    //flush and close stat writer stream
               statWriter.flush();
               statWriter.close();
          }catch(IOException ioe){
               ioe.printStackTrace();
          }     If you care to actually look through all this code, there is a call to removeRow which deletes the selected item from each list and is as follows...
     private void removeRow(int x){
               //remove identical row for each column
          cdList.remove(x);
          ataList.remove(x);
          logList.remove(x);
          descList.remove(x);
     }Thanks to everyone who invested time in this problem, but fortunately enough the problem was solved outside of this forum.

Similar Messages

  • Iterate through a list containing Map items using struts

    Hi friends,
    I have a small problem. I want to iterate through a list of items, using struts.
    The list actually contains map structres for example:
    list(0)
         map(..key..value..)
         map(..key..value..)
         map(..key..value..)
    list(1)
         map(..key..value..)
         map(..key..value..)
         map(..key..value..)
    list(2)
         map(..key..value..)
         map(..key..value..)
         map(..key..value..)can I use <logic:iterate/> for this? if yes how? Because I have used this tag for list containing bean objects not Map.
    Any suggestions are much appreciated.
    Thanks,
    Vishal

    Normally, each object exposed by the iterate tag is an element of the underlying collection you are iterating over. However, if you iterate over a Map, the exposed object is of type Map.Entry that has two properties:
    key - The key under which this item is stored in the underlying Map.
    value - The value that corresponds to this key.
    So, if you wish to iterate over the values of a Hashtable, you would implement code like the following:
    <logic:iterate id="element" name="myhashtable">
    Next element is <bean:write name="element" property="value"/>
    </logic:iterate>
    Best Regards
    Maruthi

  • In terms of memory utilization which is better to iterate through a LIST?

    For Loop or Iterator Class.?????

    1. For loop and Iterator are not mutually exclusive. One common way to iterate before the foreach loop introduced in 1.5 (my preferred way) was like so:
    for (Iterator iter = list.iterator(); iter.hasNext();) {
      Object obj = iter.next();
    }2. By "for loop" I assume you mean "using get()". NEVER iterate using get(). It will work fine on ArrayList, but will be crappy slow on LinkedList, and doesn't exist on Set or Collection. Using an Iterator (or foreach, which is syntactic sugar for an Iterator) means you'll get proper and consistent behavior on any colleciton.
    3. The memory usage will not be any different, or will be ridiculously insignificant. This kind of microoptimization without hardcore profiling numbers is a good way to gain a tiny, meaningless bit in one area at a much larger cost in another area.
    Just use a foreach loop, or in cases where you need to modify the collection under iteration, an explicit Iterator or ListIterator.

  • Iterate Through Lists Instead of Document Libraries, Or both

    System Info: SharePoint 2010 Enterprise w DEC 2013 CU. 2 WFEs (load balanced), App Server, SSRS Server, Dedicated CA Server (All running Win 2k8 R2).
    Background:I have a large (5,000 user) application that is completely customized on top of SP2010. I am the admin, and have been on the team for many years. Previously, we had a development team,
    but client has scaled costs back, and now its just me on the technical side. We have a Web app that houses multiple Site Collections, and each site collection has various subsites.
    My Problem: We have increased the LVT to 10k items (system has plenty of HP, although we do see performance degradation). Each subsite in the Site Collection holds data specific to an organization
    wtihin the Line of Business. There are two lists that frequently approach the 10k mark, and we have mitigation steps in place (essentially, we just create a new SubSite for them once they reach 10k). What I need is a single script that will traverse ALL subsites
    and return a count of their lists, perhaps I can work a couple of if statements in there to have specific data written to a SP List (if count is greater than 5000), and other wise everything gets written to the output file.
    I am trying to iterate through all lists and return a count of folders + items ... The script below works just fine, but it goes through Document Libraries only (per the baseType eq tag).
    I've tried changing baseType from DocumentLibrary to GenericList, but I continually get an error.
    I've also removed the where baseType = DocLib clause completely, and this has the desired results (all lists and doclibs are listed), except the 'WebUrl' field in the csv output is blank.
    Any thoughts on how I can make a small tweak to this script to get my desired results?
    Start-SPAssignment -Global
    $OutputFile ="D:\folder\DocCount3.csv"
    $results = @()
    $webApps = Get-SPWebApplication http://WebAppURL
    foreach($webApp in $webApps)
    foreach($siteColl in $webApp.Sites)
    foreach($web in $siteColl.AllWebs)
    $webUrl = $web.url
    $docLibs = $web.Lists | Where-Object {$_.baseType -eq "DocumentLibrary"}
    $docLibs | Add-Member -MemberType ScriptProperty -Name WebUrl -Value {$webUrl}
    $results += ($docLibs | Select-Object -Property WebUrl, Title, ItemCount)
    $results | Export-Csv -Path $OutputFile -NoTypeInformation
    Stop-SPAssignment –Global

    You guys won't believe this ... But, the script actually works as intended if I change the baseType tag to "GenericList"... I had been getting errors (about 14 of them) through PowerShell and
    assuming the script didn't process, but after looking at the output CSV, it seems that everything worked properly. I think the 14 errors MAY have been corrupted sites (or something?) as it gives me NullValueNotAllowed when trying to "Add-Member" and points
    to $WebUrl as being null.
    Next up -- working on getting this script to write specific objects to a SP list!

  • Iterate through list

    i have a list and i want to iterate through the list and get the names of the classes present in that..
    i have the following code
    Iterator it= list.iterator();
    String value;
    while(it.hasNext())
         Object obj= it.next();
         Class cls= obj.getClass();
         value = cls.getName();
    now if i want to check whether a class called test is present in that list how to do that...pls help

    mgv wrote:
    i have a list and i want to iterate through the list and get the names of the classes present in that..
    i have the following code
    Iterator it= list.iterator();
    String value;
    while(it.hasNext())
         Object obj= it.next();
         Class cls= obj.getClass();
         value = cls.getName();
    now if i want to check whether a class called test is present in that list how to do that...pls help
    while(it.hasNext()){
    Object obj = it.next();
    if(obj instanceof test){
        //do something
    }

  • Iteration through a list of map entries

    hi,
    I am facing a situation in which i have to write a rule to iterate through a list of map entries within a map and again iterate for a given attribute through a map of attributes within the selected map entry.
    Can anyone throw light on any function or expression in the XPRESS language in the Identity Manager to accomplish this.
    thanx in advance,
    yashuwyah

    HI,
    I cant help you out with full code at this point. But do make use of the following to determine the equivalency between GenericObject and HashMap as shown below.
    Basic Operations
    � map.keySet() == genObj[*].name
    � map.entrySet() == genObj[*]
    � map.get(attribute) == genObj.attribute
    � map.get(attribute1).get(attribute2).get(employeeNumber) ==
    genObj. attribute1. attribute2.employeeNumber� if attribute1 indexes a list object in the preceding example ==
    genObj. attribute1[attribute2].employeeNumber� Searches
    � find the object with the attribute fullname = �John Smith� ==
    genObj[fullname=John Smith]� get John Smith�s employeeNumber == genObj[fullname=John
    Smith].employeeNumber� List Operations
    � get the names of all permanent employees ==
    genObj[employeeType=permanent].nameFor your requirements, I figure that you can iterate through the list in the beginning and assign the initial result to a <defvar>. Then use the reference of this to determine the required attributes next.
    IC.

  • How to merge alphabetically two lists through a rational solution?

    Have two lists of captions it two languages and need to merge alphabetically, but this solution is very poor.
    (list x)
    Palacio Imperial, Barcelona, 2012
    Cementerio, 2009
    (list y)
    Imperial Palace
    Cemetery
    to obtain:
    Palacio Imperial, Barcelona, 2012
    Imperial Palace
    Cementerio, 2009
    Cemetery
    One method very naive:
    · number the lists
    · convert numbering to text
    · in list y add a constant to sort in order:
    1. Palacio Imperial, Barcelona, 2012
    2. Cementerio, 2009
    1a. Imperial Palace
    2a. Cemetery
    and sort:
    1. Palacio Imperial, Barcelona, 2012
    1a. Imperial Palace
    2. Cementerio, 2009
    2a. Cemetery
    delete the code:
    Palacio Imperial, Barcelona, 2012
    Imperial Palace
    Cementerio, 2009
    Cemetery
    (italics are not required)
    Thanks.

    Camilo,
    Another more original way with QuicKeys! [I love this little soft for a long time!] Only 1 click!
    For it, you need to use a different paragraph style for each list [eg. List1_Style and List2_Style].
    Eg, our list:
    A1
    A2
    A3
    A4
    B1
    B2
    B3
    B4
    Search: (?<=\r)(.+\r)+
    Search format: List1_Style
    Search-Research Windows must be open into ID.
    Shorcut in QuicKeys:
    1rst research
    1/ Click on the button: Search (actived - in blue)
    A2
    A3
    A4
    is selected.
    2/ Cut it (shortcut: Apple+X)
    3/ Down arrow (of the keyboard)
    4/ Copy it
    We obtain:
    A1
    B1
    A2
    A3
    A4
    B2
    B3
    B4
    2nd research
    1/ Click on the button: Search (actived - in blue)
    A3
    A4
    is selected.
    2/ Cut it (shortcut: Apple+X)
    3/ Down arrow (of the keyboard)
    4/ Copy it
    We obtain:
    A1
    B1
    A2
    B2
    A3
    A4
    B3
    B4
    3rd research
    1/ Click on the button: Search (actived - in blue)
    A4
    is selected.
    2/ Cut it (shortcut: Apple+X)
    3/ Down arrow (of the keyboard)
    4/ Copy it
    We obtain:
    A1
    B1
    A2
    B2
    A3
    B3
    A4
    B4
    The research stops automatically.
    The last work (after this test) is to create a loop in QuicKeys to run the steps 1/-2/-3/-4/ as many times as necessary until the end of the process. 

  • Struts 1.1 Iterate through input types of image

    Hi everyone,
    I'm using struts 1.1, and specifically the logic:iterate tag. Basically I'm looping through a List of Users. I print out username, userAccessLevel, two image input types (edit or remove). My actionForm associated with the JSP contains the List of Users.
    A User object has an AccessButtons field (among other things),
    an AccessButtons object contains two Buttons objects named edit and remove,
    a Button object has 3 String fields, x, y, and name, and a "pressed()" function
    Essentially I want the Action class to be able to pick up what button was pressed on the ActionForm. Specifically both the user and edit/remove action associated with the button. The code I have so far in the JSP is:
    <logic:iterate id="users" name="accessForm" property="users" indexId="index">
    <bean:define id="ssn" name="users" property="ssn"/>
    <bean:define id="accessButtons" name="users" property="accessButtons"/>
    <bean:write name="users" property="fullname"/>
    <bean:write name="users" property="accessLevel"/>
    <html:image property="accessButtons.edit" src="images/edit.gif" border="0" alt="edit" indexed="true"/>
    <html:image property="accessButtons.remove" src="images/remove.gif" border="0" alt="remove" indexed="true"/>
    </logic:iterate>
    This displays the desired output, but it doesn't help be differentiate the user for which the button was pressed. I left out some of the HTML formatting stuff to keep the code clean.
    Anyone have any ideas? I hope I explained what I wanted clearly and concisely...

    yes, this is a problem, isn't it...
    I would suggess make each user iterration include a separate form tag set and have a hidden field with the user id. but I think this will still have a problem of knowing which of the 2 buttons were pressed. There is a problem here, cuz Netscape 7 sends the button name of the button and button.x and button.y, whereas IE 6 only sends the button.x and button.y, and not the button as is... which presents a problem to figuring out what was clicked. (Plain submit type buttons seem to be fine for submitting). At least, I guess just check for the existance of the button_name.x to see which was pressed, but you still need the user ID in the forms.

  • How to Loop through another list and update a column with SharePoint Designer 2013 Workflow

    Hi,
    I am trying to get my head around the new 2013 Workflow Engine and SharePoint Designer 2013 Workflow Text-Based Designer.
    I have two lists.
    List A has 2 columns: Title, Completed (Yes/No)
    List B has 3 columns: Title, LookupListATitle, Completed (Yes/No)
    All the 2013 Workflow components have been installed and configured and I am selecting the 2013 Workflow option in SPD
    I am trying to set off a 2013 Workflow when an item in List A is edited to Loop through List B and select items where the LookupListATitle column's value is equal to the Title value of the current item, and set the value of the Completed column for those
    items in ListB to "Yes".
    I have the Workflow configured like this:
    Stage: Stage 1
    IF Current Item:Completed equals Yes
    Loop: 1
    The contents of this loop will run repeatedly while: ListB:LookupListATitle equals Current Item: Title
    Update item in ListB. 
    (The dialog options for the update item action as follows:
    List: ListB
    Field: Completed, Value: Yes
    In the Find the List Item section
    Field: LookupListATitle
    Value: Current Item: Title)
    Transition to stage
    Go to End of Workflow
    When I update an item in ListA and set its Completed column to Yes, I would expect the Workflow to find all the items in List B where the Lookup column is equal to ListA's Title (there are 2) and update their Completed column to Yes. But it doesn't work.
    When I look at the Workflow Status it says the Internal Status is "Canceled" and the information pop up has the following alien language (and may be truncated):
    RequestorId: 95f03b62-8956-ac14-c5cf-dc98c89c589c. Details: System.ArgumentException: Invalid JSON primitive: Item001. Parameter name: value at Microsoft.Workflow.Common.Json.JXmlToJsonValueConverter.ConvertStringToJsonNumber(String value) at Microsoft.Workflow.Common.Json.JXmlToJsonValueConverter.ReadPrimitive(String
    type, XmlDictionaryReader jsonReader) at Microsoft.Workflow.Common.Json.JXmlToJsonValueConverter.JXMLToJsonValue(XmlDictionaryReader jsonReader) at Microsoft.Workflow.Common.Json.JXmlToJsonValueConverter.JXMLToJsonValue(Stream jsonStream, Byte[] jsonBytes)
    at Microsoft.Activities.DynamicValue.ParseJson(String json) at System.Activities.CodeActivity`1.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager) at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor
    executor, BookmarkManager bookmarkManager, Location resultLocation)
    Unfortunately I don't have access to the server, logs etc.
    I would love to find some tutorials, or any books on SharePoint Designer 2013 in general and Workflows in particular but my searches haven't turned up much so far apart from a pre-release Beginning SharePoint Workflows which is in its very early stages and
    not much help yet.
    Can anyone give me some guidance on how to set up While Loops to iterate through a related list using SharePoint Designer 2013?
    Mark

    Hi,
    I understand that you wanted to update the items in the other list (Participants) where the Course equals the Current Item.
    You need to use “Call HTTP Web Service" action and “Build Dictionary" action to get the Maxid and then loop Participants to update the items.
    You can follow the steps as below to achieve what you want:
    Create a custom list named Courses, add columns: Title(Single line of text), Course ID(Single line of text), Course Finalised (Yes/No).
    Create a custom list named Participants, add columns: Title(Single line of text), Course(Lookup), CourseFinalised (Yes/No).
    Create workflow associated to Courses, start the workflow automatically when an item is created or changed.
    Add conditions and actions:
    The HTTP URL is set to
    https://sitename/_api/web/lists/GetByTitle('listname')/items?$orderby=Id%20desc and the HTTP method is set to “GET”. Then the list will be order by Id and desc.
    Then if Course Finalised is equal to Yes, the CourseFinalised  of the associated items in Participants will be updated to Yes.
    More information:
    http://sergeluca.wordpress.com/2013/04/09/calling-the-sharepoint-2013-rest-api-from-a-sharepoint-designer-workflow/
    Thank you for your understanding.
    Best Regards,
    Linda Li
    Linda Li
    TechNet Community Support

  • How to iterate through multiple records read from a file adapter?

    I am reading multiple records from a file using SyncRead file adapter.
    I want to iterate through the records to perform some action on every record. How to do this?
    I found few threads related to this..but did not get the solution.
    Please note that I am using Jdev 10.1.3.4
    Thanks

    For count expression, I am getting following error:
    <Faulthttp://schemas.oracle.com/bpel/extensionhttp://schemas.xmlsoap.org/soap/envelope/>
    <faultcode>null:subLanguageExecutionFault</faultcode>
    <faultstring>business exception</faultstring>
    <faultactor>cx-fault-actor</faultactor>
    <detail>
    <code>XPathExecutionError</code>
    <summary>XPath expression failed to execute. Error while processing xpath expression, the expression is "ora:countNodes(bpws:getVariableData('Invoke_3_SynchRead_OutputVariable','EmpCollection','/ns4:EmpCollection'))", the reason is FOTY0001: type error. Please verify the xpath query. </summary>
    </detail>
    </Fault>
    I hard-coded count, in order to proceed. Then I got following error
    <Faulthttp://schemas.oracle.com/bpel/extensionhttp://schemas.xmlsoap.org/soap/envelope/>
    <faultcode>null:bindingFault</faultcode>
    <faultstring>business exception</faultstring>
    <faultactor>cx-fault-actor</faultactor>
    <detail>
    <code>null</code>
    <summary>file:/C:/product/10.1.3.1/OracleAS_1/bpel/domains/default/tmp/.bpel_BPELProcess4_1.0_dc4a703c46a242f69d6cea305b2df3a3.tmp/WriteDA.wsdl [ WriteDA_ptt::insert(VbEmpCollection) ] - WSIF JCA Execute of operation 'insert' failed due to: Mapping Not Found Exception. The mapping [C1] for descriptor [class bpel___localhost_default_BPELProcess4_1_0__MD5_ad2539e1386433a9e059bcc969732f11_.WriteDA.VbEmp] could not be found. The input xml record had an element [VbEmp/C1]. ; nested exception is: ORABPEL-11627 Mapping Not Found Exception. The mapping [C1] for descriptor [class bpel___localhost_default_BPELProcess4_1_0__MD5_ad2539e1386433a9e059bcc969732f11_.WriteDA.VbEmp] could not be found. The input xml record had an element [VbEmp/C1]. Make sure that the input xml is valid relative to the xsd and that the mapping exists in the Mappings.xml. If an old version of the descriptor without this mapping has been loaded by the database adapter, you may need to bounce the app server. If the same descriptor is described in two separate Mappings.xml files, make sure both versions include this attribute/mapping. </summary>
    <detail>null</detail>
    </detail>
    </Fault>
    The bpel code is as follows (I can share entire BPEL project..But not sure how to attach to the thread :( )
    <?xml version = "1.0" encoding = "UTF-8" ?>
    <!--
    Oracle JDeveloper BPEL Designer
    Created: Wed Feb 03 18:00:26 IST 2010
    Author: administrator
    Purpose: Synchronous BPEL Process
    -->
    <process name="BPELProcess4"
    targetNamespace="http://xmlns.oracle.com/BPELProcess4"
    xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
    xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
    xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
    xmlns:ns4="http://TargetNamespace.com/InboundService"
    xmlns:ids="http://xmlns.oracle.com/bpel/services/IdentityService/xpath"
    xmlns:ldap="http://schemas.oracle.com/xpath/extension/ldap"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:client="http://xmlns.oracle.com/BPELProcess4"
    xmlns:ora="http://schemas.oracle.com/xpath/extension"
    xmlns:xref="http://www.oracle.com/XSL/Transform/java/oracle.tip.xref.xpath.XRefXPathFunctions"
    xmlns:hwf="http://xmlns.oracle.com/bpel/workflow/xpath"
    xmlns:ns1="http://xmlns.oracle.com/pcbpel/adapter/file/ReadFA/"
    xmlns:ehdr="http://www.oracle.com/XSL/Transform/java/oracle.tip.esb.server.headers.ESBHeaderFunctions"
    xmlns:ns3="http://xmlns.oracle.com/pcbpel/adapter/db/top/WriteDA"
    xmlns:ns2="http://xmlns.oracle.com/pcbpel/adapter/db/WriteDA/"
    xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
    xmlns:orcl="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc">
    <!--
    PARTNERLINKS
    List of services participating in this BPEL process
    -->
    <partnerLinks>
    <!--
    The 'client' role represents the requester of this service. It is
    used for callback. The location and correlation information associated
    with the client role are automatically set using WS-Addressing.
    -->
    <partnerLink name="client" partnerLinkType="client:BPELProcess4"
    myRole="BPELProcess4Provider"/>
    <partnerLink name="WriteDA" partnerRole="WriteDA_role"
    partnerLinkType="ns2:WriteDA_plt"/>
    <partnerLink name="ReadFA" partnerRole="SynchRead_role"
    partnerLinkType="ns1:SynchRead_plt"/>
    </partnerLinks>
    <!--
    VARIABLES
    List of messages and XML documents used within this BPEL process
    -->
    <variables>
    <!-- Reference to the message passed as input during initiation -->
    <!-- Reference to the message that will be returned to the requester-->
    <variable name="inputVariable"
    messageType="client:BPELProcess4RequestMessage"/>
    <variable name="outputVariable"
    messageType="client:BPELProcess4ResponseMessage"/>
    <variable name="Invoke_2_insert_InputVariable"
    messageType="ns2:VbEmpCollection_msg"/>
    <variable name="Invoke_3_SynchRead_InputVariable"
    messageType="ns1:Empty_msg"/>
    <variable name="Invoke_3_SynchRead_OutputVariable"
    messageType="ns1:EmpCollection_msg"/>
    <variable name="Invoke_3_SynchRead_InputVariable_1"
    messageType="ns1:Empty_msg"/>
    <variable name="Count" type="xsd:integer"/>
    <variable name="iterater" type="xsd:integer"/>
    </variables>
    <!--
    ORCHESTRATION LOGIC
    Set of activities coordinating the flow of messages across the
    services integrated within this business process
    -->
    <sequence name="main">
    <!-- Receive input from requestor. (Note: This maps to operation defined in BPELProcess4.wsdl) -->
    <receive name="receiveInput" partnerLink="client"
    portType="client:BPELProcess4" operation="process"
    variable="inputVariable" createInstance="yes"/>
    <!-- Generate reply to synchronous request -->
    <invoke name="Invoke_3" partnerLink="ReadFA" portType="ns1:SynchRead_ptt"
    operation="SynchRead"
    outputVariable="Invoke_3_SynchRead_OutputVariable"
    inputVariable="Invoke_3_SynchRead_InputVariable_1"/>
    <assign name="Assign_1">
    <copy>
    <from expression="1"/>
    <to variable="iterater"/>
    </copy>
    <copy>
    <from expression="1"/>
    <to variable="Count"/>
    </copy>
    </assign>
    <while name="While_1"
    condition="bpws:getVariableData('iterater') &lt;= bpws:getVariableData('Count')">
    <sequence name="Sequence_2">
    <switch name="Switch_1">
    <case condition="bpws:getVariableData('Invoke_3_SynchRead_OutputVariable','EmpCollection','/ns4:EmpCollection/ns4:Emp/ns4:C4') = &quot;Pune&quot;">
    <sequence name="Sequence_1">
    <assign name="Assign_3">
    <copy>
    <from expression="bpws:getVariableData('Invoke_3_SynchRead_OutputVariable','EmpCollection','/ns4:EmpCollection/ns4:Emp')[bpws:getVariableData('iterater')]"/>
    <to variable="Invoke_2_insert_InputVariable"
    part="VbEmpCollection"
    query="/ns3:VbEmpCollection/ns3:VbEmp"/>
    </copy>
    </assign>
    <invoke name="Invoke_2" partnerLink="WriteDA"
    portType="ns2:WriteDA_ptt" operation="insert"
    inputVariable="Invoke_2_insert_InputVariable"/>
    </sequence>
    </case>
    <otherwise>
    <sequence name="Sequence_3">
    <empty name="Empty_1"/>
    <assign name="Transform_1">
    <bpelx:annotation>
    <bpelx:pattern>transformation</bpelx:pattern>
    </bpelx:annotation>
    <copy>
    <from expression="ora:processXSLT('Transformation_3.xsl',bpws:getVariableData('Invoke_3_SynchRead_OutputVariable','EmpCollection'))"/>
    <to variable="Invoke_2_insert_InputVariable"
    part="VbEmpCollection"/>
    </copy>
    </assign>
    </sequence>
    </otherwise>
    </switch>
    <assign name="Assign_2">
    <copy>
    <from expression="bpws:getVariableData('iterater') + 1"/>
    <to variable="iterater"/>
    </copy>
    </assign>
    </sequence>
    </while>
    <reply name="replyOutput" partnerLink="client"
    portType="client:BPELProcess4" operation="process"
    variable="outputVariable"/>
    </sequence>
    </process>
    From the process flow, I can see that the array element expression works and the first employee record is correctly assigned to the Invoke_2_Input_Variable.
    However Invoke_2 is erroring out.
    Thanks
    Edited by: user8645981 on Feb 5, 2010 2:44 AM

  • How to listen to iTunes through two separate stereo systems simultaneouly?

    I was thinking of buying two Airport Express units in order to run iTunes to two seperate stereo systems in two different rooms. Can this be done, or is there a better way to accomplish this?
    thanks for any help!
    pjo
    iMac G4, 800 Mhz   Mac OS X (10.3.9)  

    Hi Pjo,
    Yes, you can listen to iTunes through two separate stereo systems simultaneously. The current version of iTunes allows you to stream your music to multiple Airport Express units. At the bottom of iTunes, where the different Airport Express units' names are listed, there is a "Multiple Speakers..." option; select this to choose from one or more of your units.
    Hope this helps.
    - Keith

  • Iterate through RichTable with custom cells

    Hi.
    I create a RichTable by drag and drop a view in DataControls. View is from table xxx and table contains only one column, binding description field in the table.
    This description is shown in an OutputText UI component.
    Then, I add a column with a SelectOneRadio component (to check Yes/No).
    Finally, I add another column with an Input Text to write comments.
    So, when I click one button, I capture the action event and want to process table content. But, how can I iterate through this table?
    How can I get each row, and each cell in its row (each radio, each text)?
    My JDeveloper version is 11.1.1.7.0
    Thanks in advance. Best regards
    EDIT: _________Final solution_________
    Add two transient attributes and iterate the VO object is very easy.
    For the specific issue about radio button, add a switcher and bind the radio group with the transient attribute.

    Hi,
    You could do something like
                   <af:switcher id="s1" defaultFacet="input" facetName="#{row.type eq 0?'radio':'input'"}>
                    <f:facet name="input">
                        <af:inputText id="it2" value="#{row.answer.inputValue"}/>
                    </f:facet>
                    <f:facet name="radio">
                        <af:selectBooleanRadio id="sbr1" value="#[row.answer.inputValue"}/>
                    </f:facet>
                    </af:switcher>
    -Arun

  • How do I iterate through a subform structure ?

      I have subforms which have individual fields which I have to set access either open or protected.  Instead of listing each single field, is there a way I can use a for loop to iterate through the subform and set each field access as needed?

    That’s unfortunate because we aren’t using Acrobat/Reader to read the forms.  We’re using a product called FormStream Filler.  Anyway, I stumbled onto a technique used in a previous form here.  I don’t understand everything about it, but I was able to replace enough code to get it to work with my form.  Suffice to say it has a lot to do with nodes. 
    Thanks for  answering.

  • Join two list of integer type field using CAML query

    Hi
    As i am struggling in Join two sharepoint list (Roles and Emplyees). As there is no lookup columns and lists are already existing and have almost 3000 + recodrs. As a part of enhancement work need to join these list. List structure is some thing as follows: 
    Roles :
    ID                              Title
    1                               Project Manager
    2                               Business Analyst
    3                              Developer
    Employees :
    Name                       Role
    1 James                  1
    2 Petar                    3
    3 John                     2
    Output should be like as follows:
    Name                       Role
    1 James                  Project Manager
    2 Petar                    Developer
    3 John                     Developer
    So please suggest, if the joining can be done other than lookup columns through the CAML query.
    Akhilesh Rao

    Follow below CAML query to add joins between two lists.
    SPList list = SPContext.Current.Site.RootWeb.Lists["Employees"];
    SPQuery query = new SPQuery();
    query.Joins = @" <Join Type="INNER" ListAlias="Roles">
    <Eq>
    <FieldRef Name="Employees" RefType="Role" />
    <FieldRef List="Roles" Name="ID" />
    </Eq>
    </Join>";
    query.ProjectedFields = @" <Field Name="RoleName" Type="Lookup" List="Roles" ShowField="Title">";
    query.ViewFields = @ "<FieldRef Name="Title">
    <FieldRef Name="RoleName"> ";
    SPListItemCollection result = tablea.GetItems(query);
    Adnan Amin MCT, SharePoint Architect | If you find this post useful kindly please mark it as an answer :)

  • Merging two lists?

    I need to know if it is possible to merge two lists using coldfusion.  I have one list uploaded to the site then they want the ability to upload a second list with may have additional fields and/or different number of records.  Need to know if this is possible, how to do it if it is, and how the two list will match up.  Thanks in advance for the help.

    Right, well in that case this isn't really anything to do with merging lists per se, hence the confusion I believe. Technically, you'd do this:
    <cfset newData = fileOpen("c:\newlist.csv","read") />
    <!--- Loop through your file, one line at a time --->
    <cfloop condition="NOT fileIsEof(newData)">
      <!--- Create a string of the line, this is a true list --->
      <cfset thisLine = fileReadLine(newData) />
      <!--- Get the elements of the list we want for the query --->
      <cfset thisForename = listGetAt(thisLine,1) />
      <cfset thisSurname = listGetAt(thisLine,2) />
      <!--- Check if this person exists --->
      <cfquery datasource/username/password name="qCheckExists">
        SELECT    id
        FROM      mytable
        WHERE     firstname = <cfqueryparam cfsqltype="cf_sql_varchar" value="#thisForename#" />
        AND       surname = <cfqueryparam cfsqltype="cf_sql_varchar" value="#thisSurname"#" />
      </cfquery>
      <!--- If we found rows, update --->
      <cfif qCheckExists.RECORDCOUNT eq 1 >
        <cfquery datasource/username/password>
            UPDATE   mytable
            SET      forename = <listGetAt,thisLine, FIELD>,
                     surname = <listGetAt,thisLine, FIELD>,
                     address = <listGetAt,thisLine, FIELD>,
                         etc etc etc
            WHERE    id = qCheckExists.id
        </cfquery>
      <cfelseif qCheckExists.RECORDCOUNT >
        <!--- here you found more than one matching row, up to you what to do --->
      <cfelse>
        <!--- here you didn't find a match, so do an insert --->
      </cfif>
    </cfloop>
    <cfset fileClose(newData) />
    That's how you'd do it on a technical level, the Business decisions are yours. What if it's John not Jon? What if it's Jonathan? That's not a programming problem, that's up to you to decide - I'm not sure we can help you there.
    O.

Maybe you are looking for