Here's the java code:

package edu.asu.wit.eadvisor.ds.t5.pages.t5.admin;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Comparator;

import javax.servlet.http.HttpServletRequest;

import org.apache.tapestry.annotations.Component;
import org.apache.tapestry5.OptionGroupModel;
import org.apache.tapestry5.OptionModel;
import org.apache.tapestry5.PersistenceConstants;
import org.apache.tapestry5.SelectModel;
import org.apache.tapestry5.annotations.InjectPage;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.internal.OptionModelImpl;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.util.AbstractSelectModel;

import edu.asu.wit.eadvisor.ds.hib.dao.TransferAgreementsDao;
import edu.asu.wit.eadvisor.ds.hib.eadvisor.TransferCaCollege;
import edu.asu.wit.eadvisor.ds.hib.eadvisor.TransferCaCollegeMajor;
import edu.asu.wit.eadvisor.ds.hib.eadvisor.TransferCaInterestArea;
import edu.asu.wit.eadvisor.ds.t5.components.MultipleValueEncoder;

public class TransferAddAreaToCollege {

        @Property
        //@Persist(PersistenceConstants.FLASH) 
        private List<MyObject> interestCodes;

        @Property
        private List<MyObject> ficeCodes;

        @Property
        private String notes;

        @Property
        private Map<String, String> collegesList;

        @Property
        private Map<String, String> areasList;

        @Property 
        private List<MyObject> myList; 
        
        @Property 
        private List<MyObject> myList1; 

        @Property 
        private List<MyObject> myList2; 
        
        @Property 
        @Persist("flash") 
        private String message;



        @Inject
        private TransferAgreementsDao dao;

        @Inject
        private HttpServletRequest request;

        @InjectPage
        private TransferAddAreaToCollege page; 

        public Object onActivate(){
                if(!request.getRequestURL().toString().contains("admin"))
                        return page;
                else{
                        if(interestCodes == null){ 
                                interestCodes = new ArrayList<MyObject>(); 
                        } 
                        
                        if(ficeCodes == null){ 
                                ficeCodes = new ArrayList<MyObject>(); 
                        } 

                        List<TransferCaCollege> colleges = dao.getCollegeList();
                        Map<String, String> m1 = new HashMap<String, String>();
                        for (int i=0; i<colleges.size(); i++) {
                                m1.put(colleges.get(i).getFiceCode(), 
colleges.get(i).getCollegeName());
                        }

                        Map&lt;String,String> sortedM1 =  sortByComparator(m1);
                        collegesList = sortedM1;

                        List<TransferCaInterestArea> areas = 
dao.getInterestAreaList();
                        Map<String, String> m2 = new HashMap<String, String>();
                        for (int i=0; i<areas.size(); i++) {
                                
m2.put(areas.get(i).getInterestCode().toString(),
areas.get(i).getAsuArea());
                        }
                        Map&lt;String,String> sortedM2 =  sortByComparator(m2);
                        areasList = sortedM2;

                        //myList = new ArrayList<MyObject>(); //notice this 
what i used first and
it worked with the model in the tml file set to model="myList"
                        myList1 = new ArrayList<MyObject>(); // this is added 
when I wanted to
have to fields with multiple select
                        myList2 = new ArrayList<MyObject>(); // this is added 
when I wanted to
have to fields with multiple select
                        Object[] keys1 = areasList.keySet().toArray();
                        Object[] keys2 = collegesList.keySet().toArray();
                        
                        for (int i=0; i< keys1.length; i++){
                                //System.out.println("-------> " + i + ":" 
+areasList.get(i) );
                                MyObject obj = new MyObject(new 
Integer((String)keys1[i]),
areasList.get((String)keys1[i]));
                                myList1.add(obj);
                        }
                        
                        for (int i=0; i< keys2.length; i++){
                                //System.out.println("-------> " + i + ":" 
+areasList.get(i) );
                                MyObject obj = new MyObject(new 
Integer((String)keys2[i]),
collegesList.get((String)keys2[i]));
                                myList2.add(obj);
                        }
                        
                        return null;
                }
        }


        public void onSuccess(){
                System.out.println("interestCodes.length = " + 
interestCodes.size());
                for (int i=0; i< interestCodes.size(); i++) {
                        
System.out.println("interstCodes("+interestCodes.get(i).getId()+"):
"+interestCodes.get(i).getName() );
                }
                
                System.out.println("ficeCodes.length = " + 
interestCodes.size());
                for (int i=0; i< interestCodes.size(); i++) {
                        
System.out.println("ficeCodes("+interestCodes.get(i).getId()+"):
"+ficeCodes.get(i).getName() );
                }

                System.out.println("myList.length = " + interestCodes.size());
                for (int i=0; i< myList.size(); i++) {
                        System.out.println("myLsit("+myList.get(i).getId()+"):
"+myList.get(i).getName() );
                }
                
                /*
                TransferCaCollegeMajor areaToColg = new
TransferCaCollegeMajor(interestCode, ficeCode, notes, new Date(),
(String)request.getSession().getAttribute("asuriteid"));
                boolean results = dao.insertTransferCaCollegeMajor(areaToColg);
                if(results)
                        message = "The selected area of interest was added to 
the selected
college.";
                else
                        message = "There was an error adding this area of 
interest to the
selected college.";
                 */
        }

        public static Map sortByComparator(Map unsortMap) {

                List list = new LinkedList(unsortMap.entrySet());

                //sort list based on comparator
                Collections.sort(list, new Comparator() {
                        public int compare(Object o1, Object o2) {
                                return ((Comparable) ((Map.Entry) 
(o1)).getValue())
                                .compareTo(((Map.Entry) (o2)).getValue());
                        }
                });

                //put sorted list into map again
                Map sortedMap = new LinkedHashMap();
                for (Iterator it = list.iterator(); it.hasNext();) {
                        Map.Entry entry = (Map.Entry)it.next();
                        sortedMap.put(entry.getKey(), entry.getValue());
                }
                return sortedMap;
        }


        public MultipleValueEncoder<MyObject> getEncoder(){ 
                return new MultipleValueEncoder<MyObject>(){ 

                        public String toClient(MyObject object) { 
                                return object.getId().toString(); 
                        } 

                        public List<MyObject> toValue(String[] values) { 
                                List<MyObject> objects = new 
ArrayList<MyObject>(); 
                                for(String value: values){ 
                                        for(MyObject myObject: myList) 
                                                
if(myObject.getId().equals(Integer.parseInt(value))){ 
                                                        objects.add(myObject); 
                                                } 
                                } 

                                return objects; 
                        } 

                }; 
        } 

        //Model 
        public SelectModel getModel(){ 
                return new AbstractSelectModel(){ 

                        public List<OptionGroupModel> getOptionGroups() { 
                                return null; 
                        } 

                        public List<OptionModel> getOptions() { 
                                final List<OptionModel> options = new 
ArrayList<OptionModel>(); 
                                for(final MyObject myObject: myList){ 
                                        options.add(new 
OptionModelImpl(myObject.getName(), 
                                                        myObject)); 
                                } 
                                return options; 
                        } 

                }; 
        } 
} 

====================

And this is part of what my tml look like

<t:MultipleSelect value='interestCodes' model='myList1' encoder='encoder'/> 
                                                                        
<t:MultipleSelect value='ficeCodes' model='myList2' encoder='encoder'/>


================== 
                                                                        

--
View this message in context: 
http://tapestry.1045711.n5.nabble.com/Tapestry-5-2-5-Select-component-s-multiple-property-tp4304338p5712212.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to