Re: [XMLPipeDB-developer] GenMAPP multitaxon support - CMSI 486T
Brought to you by:
kdahlquist,
zugzugglug
From: John D. N. D. <do...@lm...> - 2011-08-01 06:42:14
|
Hi Rich, OK, I took a gander at the commit and have committed my own changes. In the end, I found it easier to just edit your code "in place" and go right to a working version. To that end, I suggest looking at the side-by-side comparison to get a handle on what I did to get things going. Big-picture-wise, this is what I did: - Blew away the ListSelectionListener code from the initialization and turned it into that one-liner that we talked about (since we knew we were moving this code down anyway). - Deleted code from the moved ListSelectionListener code that was no longer needed, then rewrote the iteration loop. I didn't quite do a play-by-play of what I was changing; the changes were too widespread to talk about the changes one by one. If the side-by-side comparison leaves some gaps in your understanding of how things got fixed, let me know. There is one lengthy comment block where I try to put a finger on a specific point for improvement (which I think is instructive of the overall set of difficulties that you encountered). Go through that block and let me know if anything is unclear. OK, your turn :) John David N. Dionisio, PhD Assistant Professor, Computer Science Loyola Marymount University On Jul 31, 2011, at 3:39 PM, Richard Brous wrote: > OK, attempted to clean up a few things this weekend but hit snags here and there so there lots of commented code which almost works, ie. using the iteration style loop and StringBuilder (append isn't recognized for some reason). > > I also moved the speciesCheckList selectionEventListener code block over within the speciesProfileSelected(Object selectedItem) and got compile errors which I'm still trying to sort. > > What I didn't want to do was miss an iteration with you as I continue to work on the code. I'm sure your quick insight will save me from going down the wrong path as usual. > > Submitting into subversion shortly. > > Richard > On Fri, Jul 29, 2011 at 12:16 AM, John David N. Dionisio <do...@lm...> wrote: > Greetings, > > I committed some comments/questions on how you handle the multiple selections; just update your code to see them. We can talk through them during the conference call. > > John David N. Dionisio, PhD > Associate Professor, Computer Science > Loyola Marymount University > > > > On Jul 28, 2011, at 11:05 PM, Richard Brous wrote: > > > ok, comitted some new changes. I have selections showing up in the species text box now but only the last species selected is appearing... I'm too fried to look at code anymore tonight but will solve that in the morning. > > > > also it only puts the species name in the text box, I need to think about how it will pull the association of which profile is selected. > > > > sorry to fall short this week. I work to catch up over the weekend and get some db chapters read. > > > > See you tomorrow at 9am. > > > > Richard > > > > On Thu, Jul 28, 2011 at 8:30 AM, Richard Brous <rbr...@gm...> wrote: > > yes fri works for me. thank you! > > > > richard > > > > On Wed, Jul 27, 2011 at 9:42 PM, John David N. Dionisio <do...@lm...> wrote: > > Greetings, > > > > 3pm Thursday won't work for me unfortunately. How about 9am Friday? I can't stay too long even then but it will still be better than not talking at all. > > > > > > John David N. Dionisio, PhD > > Associate Professor, Computer Science > > Loyola Marymount University > > > > > > On Jul 27, 2011, at 7:42 PM, Richard Brous <rbr...@gm...> wrote: > > > >> Hi all, > >> > >> Sorry to fall out of touch but with finals and papers due this week and and my mother in law back in the hospital, I'm about at my wits end. > >> > >> That said, I was wondering if we could move our con call to tomorrow afternoon if possible instead of 9am? ... Say 3pm 'ish? I don't want to miss it as I would like to discuss a few things but I just can't make it at 9am and then rushing to a 10am final exam. > >> > >> Sorry for the late notice but I hope you both understand... smc classes will be over tomorrow and I can focus much, much more on this afterwards. > >> > >> Richard > >> > >> On Wed, Jul 20, 2011 at 10:38 PM, John David N. Dionisio <do...@lm...> wrote: > >> Hi Rich, > >> > >> Congratulations! Welcome to the world of Swing GUI programming :) It has its share of tics and idiosyncrasies, but with some practice one gets the hang of it. > >> > >> I've reviewed your new code and have interspersed commentary in the context of your notes below. We don't have a lot of time tomorrow, so perhaps pick and choose the ones that you feel will benefit the most from synchronous discussion. > >> > >> John David N. Dionisio, PhD > >> Associate Professor, Computer Science > >> Loyola Marymount University > >> > >> > >> On Jul 20, 2011, at 9:22 PM, Richard Brous wrote: > >> > >> > Hallelujah!!! - a list box with multiple species of which any combination can be selected now exists!!! Thanks Dondi!! (see attachment) > >> > > >> > > >> > OK, had a chance to review the code corrections, other comments and think on the next steps surrounding the selection of multiple species and their dynamic text updating. Here is where I am at the moment: > >> > > >> > A. Dondis corrections/additions to my last submission > >> > > >> > 1. Creating a private class called SpeciesListModel which extended AbstractListModel > >> > > >> > As soon as I saw your code I realized that I had sort of coded it backwards, thinking about implementing an interface instead of just extending the abstract object and adding methods... duh. My face turned a bit red on that one. > >> > > >> > The idea still of creating a list model to manage the entries in the JList still seems a bit complicated and foreign but I guess the more I work with the java ui stuff, the better I will become with it. > >> > >> Yes, it can be unwieldy in simple cases (like this one) and can sometimes result in repetitive code. However, it is very flexible and truly encapsulates the list data from the list presentation (for example, with this approach, you can even create a ListModel that does not have a data structure behind it; or perhaps one that queries for the list contents dynamically). > >> > >> > Additionally I did attempt to add a new method under this class called clearSpeciesProfiles. This was meant to clear the JList of all species found each time the export1 panel was opened instead of aggregating the species in the list. It doesn't seem to be working though so I commented it out for now. Please let me know if I'm adding this functionality in the wrong way and/or in the incorrect location. > >> > >> A couple of notes on this one. Observe how setSpeciesProfile *replaces* the list of species profiles returned by the list model, and does not add to it. Thus, I do not think that the duplication occurs at this level --- I believe it occurs at the UniProtDatabaseProfile.checkRequirements method. Follow the code from GenMAPPBuilder.doExportToGenMAPP and see if you spot the issue. Remember that the symptom occurs when one tries to export more than once. Thus, see what the code does to the relevant data structures when GenMAPPBuilder.doExportToGenMAPP is called more than once. > >> > >> > 2. SpringLayout > >> > > >> > I took a look at the website and got a feel for how to adjust panel component locations. Seems like I can use those commands to make the adjustment to the species label that you mentioned in comments. > >> > > >> > Interesting how the leftPanel uses SpringUtilities.makeCompactGrid while the rightPanel uses GridLayout... didn't realize you could combine both kinds on content panel. > >> > >> Yes, this is the power and complexity of Swing layout management --- you can nest them as much as you like, and mix and match them as much as you like. Powerful and flexible, yes; potentially complicated, yes also. > >> > >> > B. further UI enhancements: > >> > > >> > 1. I dug into export1 design in regard to the text description areas of both the Database and Species profiles. They are both JTextAreas(3, 15) where 3 denotes rows and 15 denotes columns. I changed both fields to be editable and compiled just so I could see how big each text field really is. I was able to type in 23 characters across and 7 rows downward until the next row was cutoff by the bottom edge of the box. I also changed the row and column arguments to JTextAreas(2, 15) and JTextAreas(3, 10) and recompiled but didn't see any change in the volume of text I could enter... must not understand it completely... are the arguments only to manage components placed within the textArea maybe while loose text just starts top left and word/line wraps? > >> > > >> > My reason for fooling with this was to see what would happen of course but really I had the idea that I would shrink the size of the database profileDescriptiontextArea to allow for a larger speciesDescriptionTextArea below it. Also I had been thinking of how to represent the species and its associated custom or default species profile in a way that made the most sense. The species names are pretty long so was going to suggest to simply use taxon id, profile type (custom or default) since the user could cross reference in the JList just to the left. > >> > >> This issue rests in some of the tricks behind Swing layout management. Unlike conventional GUI design, where components are given fixed, absolute coordinates and sizes, Swing tries to "compute" the layout dynamically, based on a combination of rules, "preferred sizes," and min/max sizes. The exact algorithm for determining the final layout is placed in the LayoutManager class. The row/column settings given to JTextArea typically pertain to *preferred* sizing, not final sizing. As in, the JTextArea "asks" its containing panel that "if possible, I prefer to have this many rows and columns." The rule of thumb is that a layout manager tries to give its components their preferred sizes *or greater*, if available (the idea being that most UI components wouldn't mind getting more space than they originally asked for). > >> > >> To exercise greater control over this, you'll need to get a better handle on the behavior or the various layout managers. Certain layout managers *do* cap a UI component's size to no greater than its preference. This takes some practice, however, and some familiarity with the layout manager "zoo." My suggestion: let's leave well enough alone here for now, get the functionality done first, then come back to this later. > >> > >> > 2. Dynamic insertion of desired species info into the speciesDescriptionTextArea > >> > > >> > In thinking of how to solve this I went back to code I had commented out in my last submission - the protected method which detected a change in species choice occurred within the JComboBox: speciesProfileSelected( Object selectedItem ) { > >> > >> Yes, the fundamental change that you are making now is that *more than one species profile may be active*. What you need to do, then, is to maintain the selected species profiles as a collection, and not as a single value. Then, all the code that used to assume that only a species profile gets selected need to be modified so that they can accommodate a collection of species profiles. Cases in point... > >> > >> > I had been struggling with what that method really should be doing now that we have a JList where multiple species could be selected. And after some review and then walking away from it for a few, I think it only needs to handle two things: > >> > a. ensure that all the selected species are added to the export dataset. (We then modify the export process itself to account for and properly process multiple species.) > >> > >> ...This is the fundamental change that dominoes through the rest of the export code. Instead of holding on to a single selected species profile, you need to maintain a collection of them. Also... > >> > >> > b. use the selected indices to populate/depopulate the speciesDescriptionTextArea dynamically as a selection/deselection is made within the JList. > >> > I have some ideas but would like to talk them through on the call tomorrow. I'll also submit my latest pass on the code for review. > >> > >> ...This part requires some rewriting so that the generated descriptive text can accommodate a collection of species profiles. The message generation thus gets a little more complicated. But it's just additional logic, iterating through the species profiles and incrementally appending a message string until you've gone through all of the selected profiles. e.g., "This export will use a customized profile for S. typhimurium, a general-purpose profile for B. anthracis, and a customized species profile for H. pylori." Hope you can see how that string can be computed via iteration through a species profile collection. > >> > >> OK, that would be my 2 cents...let's see what needs live discussion tomorrow morning. > >> > >> > Richard > >> > > >> > > >> > > >> > On Wed, Jul 20, 2011 at 9:00 AM, John David N. Dionisio <do...@lm...> wrote: > >> > Sounds good, talk to everyone Thursday 9am then :) > >> > > >> > John David N. Dionisio, PhD > >> > Associate Professor, Computer Science > >> > Loyola Marymount University > >> > > >> > > >> > On Jul 20, 2011, at 8:47 AM, Kam Dahlquist <kda...@lm...> wrote: > >> > > >> > > Hi, > >> > > > >> > > I'm OK for Thursday, too. Sorry, I don't generally check my e-mail > >> > > at night. Hope everything is OK. In the future, don't hesitate to > >> > > move things if I'm not responding, I'll catch up eventually :) > >> > > > >> > > Best, > >> > > Kam > >> > > > >> > > At 08:29 AM 7/20/2011, John David N. Dionisio wrote: > >> > >> OK, acknowledged. Take care. > >> > >> > >> > >> John David N. Dionisio, PhD > >> > >> Associate Professor, Computer Science > >> > >> Loyola Marymount University > >> > >> > >> > >> > >> > >> > >> > >> On Jul 20, 2011, at 8:25 AM, Richard Brous wrote: > >> > >> > >> > >>> OK, I am forced to push to tomorrow now because our nanny is > >> > >> stuck in traffic, christina is back at the hospital and I have to > >> > >> drive my boys to MDR for their camp. > >> > >>> > >> > >>> I'm sorry this is so crazy but all is upside down atm. > >> > >>> > >> > >>> I already have a bunch of questions which I will lay out via > >> > >> email since they are more high level than can be placed in code > >> > >> comments... at least I think so atm. > >> > >>> > >> > >>> Either way come hell or high-water I'll get another iteration on > >> > >> this prior to a call. > >> > >>> > >> > >>> rb > >> > >>> > >> > >>> On Tue, Jul 19, 2011 at 11:21 PM, John David N. Dionisio > >> > >> <do...@lm...> wrote: > >> > >>> Hi Rich, > >> > >>> > >> > >>> Sorry to hear about your mother-in-law. Hospital wait states are > >> > >> never fun. > >> > >>> > >> > >>> I can do Thursday morning at 9am if needed. Let's watch the > >> > >> e-mail in the morning to see if Kam can do that too; if so, then > >> > >> Thursday it is, but if not, then we can still push for Wednesday 9am. > >> > >>> > >> > >>> John David N. Dionisio, PhD > >> > >>> Associate Professor, Computer Science > >> > >>> Loyola Marymount University > >> > >>> > >> > >>> > >> > >>> > >> > >>> On Jul 19, 2011, at 10:26 PM, Richard Brous wrote: > >> > >>> > >> > >>>> ok, can't get a break... sitting in the ER after admitting my > >> > >> mother in law at St. Johns in Santa Monica. We are waiting to get > >> > >> her a bed but not sure how long it will take. > >> > >>>> > >> > >>>> Luckily I have my laptop with me so I was able to scan the new > >> > >> code with all the Dondi comments and compile a build which runs. I > >> > >> will review Dondi's changes as best I can from here but likely > >> > >> won't be able to do much with it by our call tomorrow. > >> > >>>> > >> > >>>> I'm happy to push our call to Thursday morning instead of > >> > >> tomorrow to allow more time... but it is late so unless I hear > >> > >> otherwise, tomorrow at 9am is still a go. > >> > >>>> > >> > >>>> Richard > >> > >>>> > >> > >>>> On Tue, Jul 19, 2011 at 3:00 PM, Richard Brous > >> > >> <rbr...@gm...> wrote: > >> > >>>> Thanks will review later this afternoon. Sorry got hung up on > >> > >> this but continuing forward comments in code should speed this way up. > >> > >>>> > >> > >>>> Rb > >> > >>>> > >> > >>>> Sent from my iPhone > >> > >>>> > >> > >>>> On Jul 19, 2011, at 12:04 AM, "John David N. Dionisio" > >> > >> <do...@lm...> wrote: > >> > >>>> > >> > >>>>> Greetings, > >> > >>>>> > >> > >>>>> OK, my responses are committed. As noted in my "Dondi -" > >> > >> comments, you were fairly close. The main miss was how > >> > >> AbstractListModel was to be used. Give it a gander and holler if > >> > >> anything else remains unclear. > >> > >>>>> > >> > >>>>> At this point, you'll need to start managing what should > >> > >> happen as the user selects/deselects species. You'll also want > >> > >> that little informational panel on the right that summarizes (for > >> > >> tech types) whether the selected species will be using a customized > >> > >> species profile or the generic one. > >> > >>>>> > >> > >>>>> Carry on, see how this goes. :) > >> > >>>>> > >> > >>>>> John David N. Dionisio, PhD > >> > >>>>> Associate Professor, Computer Science > >> > >>>>> Loyola Marymount University > >> > >>>>> > >> > >>>>> > >> > >>>>> On Jul 18, 2011, at 10:14 AM, Richard Brous wrote: > >> > >>>>> > >> > >>>>>> Ok , took the code as far as I could and submitted export 1 > >> > >> - unfortunately broken code even though I made a point not to by > >> > >> commenting out unfinished blocks. Take a look at the commit comments for info. > >> > >>>>>> > >> > >>>>>> I look forward to your comments which I'm sure will help > >> > >> straighten this out! > >> > >>>>>> > >> > >>>>>> Rb > >> > >>>>>> > >> > >>>>>> Sent from my iPhone > >> > >>>>>> > >> > >>>>>> On 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 > >> > >>>>>> > >> > >>>>>> > >> > >> ------------------------------------------------------------------------------ > >> > >>>>>> 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 > >> > >>>>> > >> > >>>>> > >> > >>>>> > >> > >> ------------------------------------------------------------------------------ > >> > >>>>> Magic Quadrant for Content-Aware Data Loss Prevention > >> > >>>>> Research study explores the data loss prevention market. > >> > >> Includes in-depth > >> > >>>>> analysis on the changes within the DLP market, and the criteria used to > >> > >>>>> evaluate the strengths and weaknesses of these DLP solutions. > >> > >>>>> http://www.accelacomm.com/jaw/sfnl/114/51385063/ > >> > >>>>> _______________________________________________ > >> > >>>>> xmlpipedb-developer mailing list > >> > >>>>> xml...@li... > >> > >>>>> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > >> > >>>> > >> > >>>> <ATT00001..txt><ATT00002..txt> > >> > >>> > >> > >>> > >> > >>> > >> > >> ------------------------------------------------------------------------------ > >> > >>> 10 Tips for Better Web Security > >> > >>> Learn 10 ways to better secure your business today. Topics covered include: > >> > >>> Web security, SSL, hacker attacks & Denial of Service (DoS), private keys, > >> > >>> security Microsoft Exchange, secure Instant Messaging, and much more. > >> > >>> http://www.accelacomm.com/jaw/sfnl/114/51426210/ > >> > >>> _______________________________________________ > >> > >>> xmlpipedb-developer mailing list > >> > >>> xml...@li... > >> > >>> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > >> > >>> > >> > >>> <ATT00001..txt><ATT00002..txt> > >> > >> > >> > >> > >> > >> ------------------------------------------------------------------------------ > >> > >> 10 Tips for Better Web Security > >> > >> Learn 10 ways to better secure your business today. Topics covered include: > >> > >> Web security, SSL, hacker attacks & Denial of Service (DoS), private keys, > >> > >> security Microsoft Exchange, secure Instant Messaging, and much more. > >> > >> http://www.accelacomm.com/jaw/sfnl/114/51426210/ > >> > >> _______________________________________________ > >> > >> xmlpipedb-developer mailing list > >> > >> xml...@li... > >> > >> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > >> > > > >> > > > >> > > ------------------------------------------------------------------------------ > >> > > 10 Tips for Better Web Security > >> > > Learn 10 ways to better secure your business today. Topics covered include: > >> > > Web security, SSL, hacker attacks & Denial of Service (DoS), private keys, > >> > > security Microsoft Exchange, secure Instant Messaging, and much more. > >> > > http://www.accelacomm.com/jaw/sfnl/114/51426210/ > >> > > _______________________________________________ > >> > > xmlpipedb-developer mailing list > >> > > xml...@li... > >> > > https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > >> > > >> > ------------------------------------------------------------------------------ > >> > 10 Tips for Better Web Security > >> > Learn 10 ways to better secure your business today. Topics covered include: > >> > Web security, SSL, hacker attacks & Denial of Service (DoS), private keys, > >> > security Microsoft Exchange, secure Instant Messaging, and much more. > >> > http://www.accelacomm.com/jaw/sfnl/114/51426210/ > >> > _______________________________________________ > >> > xmlpipedb-developer mailing list > >> > xml...@li... > >> > https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > >> > > >> > <export1-crop.jpg><ATT00001..txt><ATT00002..txt> > >> > >> > >> ------------------------------------------------------------------------------ > >> 5 Ways to Improve & Secure Unified Communications > >> Unified Communications promises greater efficiencies for business. UC can > >> improve internal communications as well as offer faster, more efficient ways > >> to interact with customers and streamline customer service. Learn more! > >> http://www.accelacomm.com/jaw/sfnl/114/51426253/ > >> _______________________________________________ > >> xmlpipedb-developer mailing list > >> xml...@li... > >> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > >> > >> ------------------------------------------------------------------------------ > >> Got Input? Slashdot Needs You. > >> Take our quick survey online. Come on, we don't ask for help often. > >> Plus, you'll get a chance to win $100 to spend on ThinkGeek. > >> http://p.sf.net/sfu/slashdot-survey > >> _______________________________________________ > >> xmlpipedb-developer mailing list > >> xml...@li... > >> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > > > > ------------------------------------------------------------------------------ > > Got Input? Slashdot Needs You. > > Take our quick survey online. Come on, we don't ask for help often. > > Plus, you'll get a chance to win $100 to spend on ThinkGeek. > > http://p.sf.net/sfu/slashdot-survey > > _______________________________________________ > > xmlpipedb-developer mailing list > > xml...@li... > > https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > > > > > > > > <ATT00001..txt><ATT00002..txt> > > > ------------------------------------------------------------------------------ > Got Input? Slashdot Needs You. > Take our quick survey online. Come on, we don't ask for help often. > Plus, you'll get a chance to win $100 to spend on ThinkGeek. > http://p.sf.net/sfu/slashdot-survey > _______________________________________________ > xmlpipedb-developer mailing list > xml...@li... > https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > > <ATT00001..txt><ATT00002..txt> |