Re: [XMLPipeDB-developer] GenMAPP multitaxon support - CMSI 486T
Brought to you by:
kdahlquist,
zugzugglug
|
From: Richard B. <rbr...@gm...> - 2011-07-28 15:30:19
|
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
>
>
|