Re: [XMLPipeDB-developer] GenMAPP multitaxon support - CMSI 486T
Brought to you by:
kdahlquist,
zugzugglug
From: Richard B. <rbr...@gm...> - 2011-07-13 02:46:50
|
OK, let me think on your comments and see how far I get. Thanks! rb On Tue, Jul 12, 2011 at 6:35 PM, John David N. Dionisio <do...@lm...>wrote: > Hi there, > > A code-oriented session is OK with me, though this particular question I > can take a stab at via e-mail. > > The trick with full control of a JList is to implement its model (a > ListModel). For this, I usually create a subclass of AbstractListModel and > implement the missing methods. This AbstractListModel subclass should be > able to see the list of species found. Then, the implementations of its > missing methods would be based on that list of species. > > With this ListModel class in hand, keeping the JList up to date is a matter > of instantiating the JList with this model: > > SpeciesListModel speciesListModel = new SpeciesListModel(); > speciesCheckList = new JList(speciesListModel); > > If the species list changes, have the species list model fire the > appropriate list change event (the JavaDoc API has a bunch of fire* > methods). To keep things simple, there is a "full update" event which just > says "rebuild the entire JList." That one should be OK. There are > finer-grained ones like "something got inserted" and "something got > removed," but that really is more for optimization purposes. > > As for the text display, the simplest approach is to implement the toString > method of the SpeciesProfile class so that they return something that is > appropriate for a JList. Sometimes that is too limiting though. If you > want greater flexibility, you will want to implement a ListCellRenderer. > There is a class called DefaultListCellRenderer that you can extend. > Typically the subclass would call the superclass's method, which returns a > JLabel. You can then change the content of the JLabel according to the list > item that you are trying to display. > > See if these leads are enough to go on. If not, I can talk you through > them more during the call. > > John David N. Dionisio, PhD > Associate Professor, Computer Science > Loyola Marymount University > > > On Jul 12, 2011, at 6:00 PM, Richard Brous wrote: > > > Update for tomorrow 7/13/11: > > > > Clear on what I need to do but can't seem to figure out a way to do it. I > think the best use of our time tomorrow is to make it a code discussion > session (giving Dr. Dahlquist the opportunity to bow out if so inclined) > > > > 1. In regard to the JList, I have been working on the best way to > implement it but am getting stuck on how to populate it and where to do so > in the code. > > > > I'm currently working in ExportPanel1.java and have done the following so > far: > > > > imported JList; > > imported javax.swing.event.*; > > > > > > public class ExportPanel1 extends JPanel { > > added: private JList speciesCheckList; > > > > private JPanel getContentPanel () { > > underneath the species combo box entry // species | JComboBox | > speciesFound |JLabel | Description | ... > > > > added: speciesCheckList = new JList ( speciesProfilesFound ); > > > > // registered the listeners > > speciesCheckList.addListSelectionListener ( new ListSelectionListener () > { > > // handle list selection > > public void valueChanged ( ListSelectionEvent e ) { > > // get selected indices > > int [] indices = speciesCheckList.getSelectedIndices (); > > } > > }); > > > > added: //leftPanel.add ( speciesComboBox ); > > leftPanel.add ( speciesCheckList ); > > > > The real issue here is how to populate the JList... I took a look at the > constructors but can't determine a way to populate it after instantiation... > maybe using abstract class somehow? > > > > So instead I have been working to add the speciesProfilesFound [] > ArrayList as a constructor argument. Then I can pre-populate it prior to the > contentPanel being initialized???... or possibly similar to the init() > method which pre-populates the Database profileComboBox? > > > > Once the initital population of the JList is done we can modify it for > the later methods which dynamically alter content in > databaseProfileSelected() and speciesProfileSelected(). This will effect the > selectedSpeciesProfile() method usage and its getter and setter. > > > > Also we can then work on the text indication which dynamically shows the > selected species and whether a custom or generic profile has been > associated. > > > > Dondi - I'm looking forward to your suggestions and assistance!!! > > > > Richard > > > > > > > > On Wed, Jul 6, 2011 at 10:58 PM, John David N. Dionisio <do...@lm...> > wrote: > > Hi Rich, > > > > OK, thanks for the discussion setup. We'll work through this during the > call. > > > > John David N. Dionisio, PhD > > Associate Professor, Computer Science > > Loyola Marymount University > > > > > > > > On Jul 6, 2011, at 7:37 PM, Richard Brous wrote: > > > > > Update on status: > > > > > > Over the past two weeks I have spent time doing the following: > > > > > > 1. Reviewed the taxon id code changes which Don Murphy coded and were > merged to create version 2.0 b64 > > > 2. Reviewed the UniprotDatabaseProfile, UniprotSpeciesProfile, > SpeciesProfile, Profile and DatabaseProfile files > > > 3. Reviewed and discussed the process by which GenMAPP matches single > taxon ids found in a Postgres db with the known species profiles. > > > > > > Current actions: > > > > > > During the last few days I have started coding in the ability for the > species matching functionality to surface multiple taxon ids from within a > Postgres db. > > > > > > The process being the following steps: > > > > > > 1. Grab all the taxon ids from the Postgres db > > > The current iteration of the software already does this. In the > checkRequirements method in UniprotDatabaseProfile.java, a query of the > Postgres db acquires all taxon id's and stores them in ResultSet result > variable. > > > > > > 2. Check to find match between the taxon ids from Postgres against > existing species profiles for known species. > > > > > > The current iteration compares each taxon id in ResultSet result > variable. > > > First taxon id from result: > > > If match was found, then that species profile with associated taxon id > was added to the speciesProfilesFound arraylist. > > > If no match was found, a generic species profile associated with the > current taxon id was added to the speciesProfilesFound arraylist. > > > > > > Next taxon id from result > > > If match was found, then that species profile with associated taxon id > was added to the speciesProfilesFound arraylist. > > > If no match was found, a generic species profile associated with the > current taxon id was added to the speciesProfilesFound arraylist. > > > > > > Repeat until no more taxon ids are found in ResultSet result variable. > > > > > > 3. Replace the JComboBox with a JList to allow the user to choose a > selection of multiple species to export. > > > > > > Use the getSelectedIndices method for JList to determine which species > have been selected for export. > > > > > > 4. Modify the export process to run a pass for each species selected > to generate a multispecies gdb. > > > details to be determined. > > > > > > > ----------------------------------------------------------------------------------------------------------------------------------------------------------- > > > > > > > > > Discussion for tomorrows call: > > > > > > > > > We previously discussed allowing user input to manually add taxon ids > and associate them to the generic profile. > > > > > > Unless I don't really understand the reasoning behind this, it seems to > me that it is unnecessary. Why would we add a taxon id during the export > process that isn't already in the Postgres data? > > > > > > The current implementation already captures every taxon id in > speciesProfilesFound regardless if its a known species or not. So it seems > that we don't need to make any modifications in surfacing taxon ids from a > Postgres db. > > > > > > Then we can go directly to #3 above which I have mostly coded, but > can't seem to figure out how and where to populate the JList. In reviewing > constructor documentation it indicates 4 ways to instantiate. > > > > > > My first choice was to create an empty JList [ JList () ] and populate > it later but I don't see a method to do so such as addItems or something > similar. > > > > > > I then tried to instantiate with speciesProfileFound as an array > argument: JList ( SpeciesProfile[] speciesProfilesFound ) but can't resolve. > > > > > > > > > Anyway, I look forward to our call at 9am tomorrow. > > > > > > Richard > > > <ATT00001..txt><ATT00002..txt> > > > > > > > ------------------------------------------------------------------------------ > > All of the data generated in your IT infrastructure is seriously > valuable. > > Why? It contains a definitive record of application performance, security > > threats, fraudulent activity, and more. Splunk takes this data and makes > > sense of it. IT sense. And common sense. > > http://p.sf.net/sfu/splunk-d2d-c2 > > _______________________________________________ > > xmlpipedb-developer mailing list > > xml...@li... > > https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > > > > <ATT00001..txt><ATT00002..txt> > > > > ------------------------------------------------------------------------------ > AppSumo Presents a FREE Video for the SourceForge Community by Eric > Ries, the creator of the Lean Startup Methodology on "Lean Startup > Secrets Revealed." This video shows you how to validate your ideas, > optimize your ideas and identify your business strategy. > http://p.sf.net/sfu/appsumosfdev2dev > _______________________________________________ > xmlpipedb-developer mailing list > xml...@li... > https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > |