xmlpipedb-developer Mailing List for XMLPipeDB (Page 8)
Brought to you by:
kdahlquist,
zugzugglug
You can subscribe to this list here.
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(16) |
Sep
|
Oct
(9) |
Nov
(3) |
Dec
(6) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2010 |
Jan
(2) |
Feb
(8) |
Mar
|
Apr
(22) |
May
(1) |
Jun
|
Jul
|
Aug
(3) |
Sep
(32) |
Oct
(2) |
Nov
|
Dec
|
2011 |
Jan
|
Feb
(60) |
Mar
(42) |
Apr
(35) |
May
(17) |
Jun
(2) |
Jul
(23) |
Aug
(72) |
Sep
(15) |
Oct
(10) |
Nov
(14) |
Dec
(4) |
2012 |
Jan
(6) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(11) |
Dec
|
2014 |
Jan
(1) |
Feb
(12) |
Mar
(14) |
Apr
(8) |
May
|
Jun
(14) |
Jul
(2) |
Aug
|
Sep
(5) |
Oct
(6) |
Nov
|
Dec
|
2015 |
Jan
|
Feb
(5) |
Mar
(2) |
Apr
|
May
|
Jun
(2) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Richard B. <rbr...@gm...> - 2011-08-12 16:25:28
|
Saw your comments, some silly mistakes you caught. I re-ran the export using your changes, checked original row counts and they were identical to the previous two exports. The file size was also near identical to the multi-species aware export at 21.0 MB (22,036,480 bytes). I'm stumped on this but did confirm that GO data was processed. Richard On Thu, Aug 11, 2011 at 3:21 PM, John David N. Dionisio <do...@lm...>wrote: > Greetings, > > Sorry for the delay; stuff kept interceding through last night and today. > > I did finally manage to look at your latest commits then committed back > some tweaks and comments. Look in particular at the stuff I mentioned > regarding taxonIDs. If things aren't self-explanatory, just holler. > > I also scanned your changes to see if anything might have affected the file > size. Nothing jumped at me, unfortunately. Did you do the "Process GO > Data" step prior to exporting? That's the only [highly slim] lead that I > could think of. > > John David N. Dionisio, PhD > Associate Professor, Computer Science > Loyola Marymount University > > > On Aug 10, 2011, at 10:07 PM, Richard Brous wrote: > > > OK, will hold up until we discuss further... > > > > > > > > **On a side note I exported two Msmegmatis gdb's to see how they compared > and found the following: > > > > pre multispecies aware build b64: gdb filesize = 24.5 MB (25,792,512 > bytes) > > > > multispecies current working copy: gdb filesize = 20.8 MB (21,905,408 > bytes) > > > > BUT when I checked orginal row counts for each they were identical... i > even checked a second time to be sure... > > > > See attached spreadsheet and I'll post the files on the biodb wiki as > well in a few. > > > > > > I'm highly suspicious of the file sizes being that different with > identical original row counts. > > > > Dondi would you take a look at my committed code to see if there are > glaring issues I am not aware of? > > > > Thanks. > > > > Richard > > > > On Wed, Aug 10, 2011 at 9:45 PM, John David N. Dionisio <do...@lm...> > wrote: > > Greetings, > > > > I think we have to turn to Dr. Dahlquist's GenMAPP knowledge here to get > the definitive answer. I see two choices: > > > > - The Info table should have one record for each species that the .gdb > holds, in which case the change you need is to wrap that single submit call > inside a loop, so that submit is called once for each chosen species. > > > > - The Info table should always have one record, and if the .gdb holds > multiple species, the "Species" column should be some concatenation of > multiple species names. In this case, you would still call submit only > once, but the value you send into the "Species" column is some accumulation > of all chosen species names. > > > > Admittedly I don't know which way is right (I assumed the former as of > our Tuesday meeting, but on further examination I'm no longer quite so > sure). > > > > For Kam --- what does GenMAPP expect to see in the Info table if the > opened .gdb contains multiple species? > > > > John David N. Dionisio, PhD > > Associate Professor, Computer Science > > Loyola Marymount University > > > > > > On Aug 10, 2011, at 9:36 PM, Richard Brous wrote: > > > > > OK, continued to review ExportToGenMAPP and dug into the creation of > the first TableManager tmA on line 118. > > > > > > In reading through the method, my understanding is that it creates a > new TableManager based on the selectedDatabaseProfile (which is UniProt). > > > > > > This is performed by the method getInfoTableManager() which then calls > method submit(String tableName, QueryType queryType, String[][] > columnNamesToValues); > > > > > > the code is as follows: > > > > > > tableManager.submit("Info", QueryType.insert, new String[][] { { > "Owner", owner }, { "Version", new > SimpleDateFormat("yyyyMMdd").format(version) }, { "MODSystem", modSystem }, > { "Species", speciesProfile.getSpeciesName() }, { "Modify", new > SimpleDateFormat("yyyyMMdd").format(modify) }, { "DisplayOrder", > displayOrder }, { "Notes", notes } }); > > > > > > > > > The modification of this line centers on { "Species", > speciesProfile.getSpeciesName() }, since it originally processed a single > species. > > > > > > So now I need to populate the arguments with the species contained > within selectedDatabaseprofile.selectedSpeciesProfiles. > > > > > > I think I'll start with the baseArgument up to MODSystem, then append > as many species as necessary, and then cap off the end with the rest > starting at Modify. (similar to your approach in ExportGoData, > populateUniprotGoTableFromSQL(char chosenAspect, List<Integer> taxonIds) > line 513 > > > > > > Please let me know if this approach or analysis is off track. > > > > > > Thanks! > > > > > > Richard > > > > > > > > > > > > > > > > > > > > > On Wed, Aug 10, 2011 at 5:50 PM, Richard Brous <rbr...@gm...> > wrote: > > > Updated repository to include all Gene Ontology changes discussed > during our meeting yesterday. > > > > > > Digging into TableManager next. > > > > > > Richard > > > > > > On Fri, Aug 5, 2011 at 10:06 AM, Richard Brous <rbr...@gm...> > wrote: > > > whew... thanks for the detailed reply. I will digest this a bit and get > back to you with further questions. > > > > > > rb > > > > > > On Thu, Aug 4, 2011 at 11:18 PM, John David N. Dionisio <do...@lm...> > wrote: > > > Greetings, > > > > > > Sorry for the delay. I wasn't able to walk through the relevant code > until this evening. > > > > > > As Kam said, GOA serves as the link between the UniProt and GO IDs. It > essentially determines which GO IDs get exported by using GOA to see which > GO IDs are associated with an exported UniProt ID. The > populateUniprotGoTableFromSQL, in its current form, extracts the GO > association records that match the given taxon ID then exports, as > UniProt-GO pairs, the GO and UniProt IDs referenced within that GO > association record. Processing that follows this is then based on the GO > IDs that got exported --- and that's how the current code avoids exporting > the entire list of GO terms. > > > > > > The operative query is on the second line of > populateUniprotGoTableFromSQL: > > > > > > String uniProtAndGOIDSQL = "select db_object_id, go_id, > evidence_code, with_or_from from goa where db like '%UniProt%' and taxon = > 'taxon:" + taxon + "'"; > > > > > > In plain English, this selects the GOA records whose database is > UniProt and whose taxon ID is the given taxon. An additional condition is > added for the "aspect" (All, Component, Function, or Process) that is to be > exported. This is another reduction filter, to further shrink the number of > exported GO terms and thus avoid MAPPFinder issues later on. > > > > > > Given this, the proper expansion here is to change the taxon predicate > to a multiple predicate. That is, this method can be changed to now accept > a collection or array of taxon IDs, and the base query should then be > changed so that it accepts any taxon from that collection. More or less, > you want: > > > > > > private void populateUniprotGoTableFromSQL(char chosenAspect, int[] > taxons) throws SQLException { > > > > > > ...then, instead of the single string, you want to iterate through the > taxon IDs: > > > > > > StringBuilder baseQueryBuilder = new StringBuilder("select > db_object_id, go_id, evidence_code, with_or_from from goa where db like > '%UniProt%'"); > > > boolean first = true; > > > for (int taxon: taxons) { > > > baseQueryBuilder.append(first ? " and (" : " or "); > > > baseQueryBuilder > > > .append("taxon = 'taxon:") > > > .append(taxon).append("'"); > > > first = false; > > > } > > > baseQueryBuilder.append(")"); > > > > > > ...and so on. I just sort of rattled this off so there may be little > glitches, but anyway this is just to give you an overall idea. > > > > > > Put another way, no, you do not need to iterate this method for each > taxon ID. Instead, you can still call this method once, with the > multiplicity of taxon IDs emerging in terms of the actual condition used for > selecting the GO terms to be exported (based on the available GOA records, > which as you may recall are loaded from .goa files). > > > > > > As a side note, right here you have an opportunity for a little sanity > check regarding the content of the relational database: GO terms will only > be exported if GOA records for the desired taxon IDs have been imported into > the database. So, as a pre-flight check, one can see if there are any GOA > records at all for each chosen taxon ID. If there are none, then the .goa > file for that species needs to be imported into the relational database. > > > > > > Hope this helps... > > > > > > John David N. Dionisio, PhD > > > Associate Professor, Computer Science > > > Loyola Marymount University > > > > > > > > > On Aug 4, 2011, at 1:00 PM, Kam Dahlquist wrote: > > > > > > > Hi, > > > > > > > > Dondi will have to chime in on this, but I think this is where things > are going to get tricky. > > > > > > > > The final gdb does not actually contain the entire GO, it gets > trimmed somehow based on the GO associations for a particular species. This > is because MAPPFinder cannot handle loading the entire GO. Since there is > some type of species-specific trimming going on, it's quite possible that > this will need to iterate. > > > > > > > > However, I don't have the foggiest idea of how this works, so Dondi > will have to chime in. > > > > > > > > Best, > > > > Kam > > > > > > > > At 12:09 AM 8/4/2011, you wrote: > > > >> Wednesday 8/3/11 progress: > > > >> > > > >> 1. After following the ExportPanel1.java ground zero code of: > databaseProfile.setSelectedSpeciesProfile( selectedProfile ); > > > >> > > > >> I found the method in DatabaseProfile.java plus a getter method; > > > >> SpeciesProfile setSelectedSpeciesProfile( speciesProfile ) and > SpeciesProfile getSelectedSpeciesProfile( speciesProfile ) > > > >> > > > >> I created two new methods that each handle List<Object> of > SpeciesProfiles argument instead of a single SpeciesProfile; > setSelectedSpeciesProfiles and getSelectedSpeciesProfiles. > > > >> > > > >> This enabled the ExportPanel1 ground zero code to become: > databaseProfile.setSelectedSpeciesProfiles(selectedSpecies); > > > >> > > > >> 2. public static void export() on line 104 in ExportToGenMAPP.java > > > >> > > > >> On line 107 ExportGoData is instantiated which I found in > ExportGoData.java and calls a method: public void export(char chosenAspect, > int taxon). > > > >> > > > >> Within export, taxon id is required for another method: private void > populateGoTables(char chosenAspect, int taxon). > > > >> > > > >> Within populateGoTables, taxon id is required for another method: > private void populateUniprotGoTableFromSQL( char chosenAspect, int taxon). > > > >> > > > >> But, if the export to GDB process starts off with exporting GO data, > doesn't it only need to do that once no matter how many species are > selected? As you probably realize, I'm leading towards not having to iterate > through this for each taxon id if possible. > > > >> > > > >> Also, how does the export actually work? How are GO ids and UniProt > ids related within the table? > > > >> > > > >> Thanks! > > > >> > > > >> Richard > > > >> > > > >> > > > > <ATT00001..txt><ATT00002..txt> > > > > > > > > > > ------------------------------------------------------------------------------ > > > BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA > > > The must-attend event for mobile developers. Connect with experts. > > > Get tools for creating Super Apps. See the latest technologies. > > > Sessions, hands-on labs, demos & much more. Register early & save! > > > http://p.sf.net/sfu/rim-blackberry-1 > > > _______________________________________________ > > > xmlpipedb-developer mailing list > > > xml...@li... > > > https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > > > > > > > > > > > > <ATT00001..txt><ATT00002..txt> > > > > > > > ------------------------------------------------------------------------------ > > Get a FREE DOWNLOAD! and learn more about uberSVN rich system, > > user administration capabilities and model configuration. Take > > the hassle out of deploying and managing Subversion and the > > tools developers use with it. > > http://p.sf.net/sfu/wandisco-dev2dev > > _______________________________________________ > > xmlpipedb-developer mailing list > > xml...@li... > > https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > > > > <CompareOriginalRowCounts.xlsx><ATT00001..txt><ATT00002..txt> > > > > ------------------------------------------------------------------------------ > Get a FREE DOWNLOAD! and learn more about uberSVN rich system, > user administration capabilities and model configuration. Take > the hassle out of deploying and managing Subversion and the > tools developers use with it. > http://p.sf.net/sfu/wandisco-dev2dev > _______________________________________________ > xmlpipedb-developer mailing list > xml...@li... > https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > |
From: John D. N. D. <do...@lm...> - 2011-08-11 22:21:32
|
Greetings, Sorry for the delay; stuff kept interceding through last night and today. I did finally manage to look at your latest commits then committed back some tweaks and comments. Look in particular at the stuff I mentioned regarding taxonIDs. If things aren't self-explanatory, just holler. I also scanned your changes to see if anything might have affected the file size. Nothing jumped at me, unfortunately. Did you do the "Process GO Data" step prior to exporting? That's the only [highly slim] lead that I could think of. John David N. Dionisio, PhD Associate Professor, Computer Science Loyola Marymount University On Aug 10, 2011, at 10:07 PM, Richard Brous wrote: > OK, will hold up until we discuss further... > > > > **On a side note I exported two Msmegmatis gdb's to see how they compared and found the following: > > pre multispecies aware build b64: gdb filesize = 24.5 MB (25,792,512 bytes) > > multispecies current working copy: gdb filesize = 20.8 MB (21,905,408 bytes) > > BUT when I checked orginal row counts for each they were identical... i even checked a second time to be sure... > > See attached spreadsheet and I'll post the files on the biodb wiki as well in a few. > > > I'm highly suspicious of the file sizes being that different with identical original row counts. > > Dondi would you take a look at my committed code to see if there are glaring issues I am not aware of? > > Thanks. > > Richard > > On Wed, Aug 10, 2011 at 9:45 PM, John David N. Dionisio <do...@lm...> wrote: > Greetings, > > I think we have to turn to Dr. Dahlquist's GenMAPP knowledge here to get the definitive answer. I see two choices: > > - The Info table should have one record for each species that the .gdb holds, in which case the change you need is to wrap that single submit call inside a loop, so that submit is called once for each chosen species. > > - The Info table should always have one record, and if the .gdb holds multiple species, the "Species" column should be some concatenation of multiple species names. In this case, you would still call submit only once, but the value you send into the "Species" column is some accumulation of all chosen species names. > > Admittedly I don't know which way is right (I assumed the former as of our Tuesday meeting, but on further examination I'm no longer quite so sure). > > For Kam --- what does GenMAPP expect to see in the Info table if the opened .gdb contains multiple species? > > John David N. Dionisio, PhD > Associate Professor, Computer Science > Loyola Marymount University > > > On Aug 10, 2011, at 9:36 PM, Richard Brous wrote: > > > OK, continued to review ExportToGenMAPP and dug into the creation of the first TableManager tmA on line 118. > > > > In reading through the method, my understanding is that it creates a new TableManager based on the selectedDatabaseProfile (which is UniProt). > > > > This is performed by the method getInfoTableManager() which then calls method submit(String tableName, QueryType queryType, String[][] columnNamesToValues); > > > > the code is as follows: > > > > tableManager.submit("Info", QueryType.insert, new String[][] { { "Owner", owner }, { "Version", new SimpleDateFormat("yyyyMMdd").format(version) }, { "MODSystem", modSystem }, { "Species", speciesProfile.getSpeciesName() }, { "Modify", new SimpleDateFormat("yyyyMMdd").format(modify) }, { "DisplayOrder", displayOrder }, { "Notes", notes } }); > > > > > > The modification of this line centers on { "Species", speciesProfile.getSpeciesName() }, since it originally processed a single species. > > > > So now I need to populate the arguments with the species contained within selectedDatabaseprofile.selectedSpeciesProfiles. > > > > I think I'll start with the baseArgument up to MODSystem, then append as many species as necessary, and then cap off the end with the rest starting at Modify. (similar to your approach in ExportGoData, populateUniprotGoTableFromSQL(char chosenAspect, List<Integer> taxonIds) line 513 > > > > Please let me know if this approach or analysis is off track. > > > > Thanks! > > > > Richard > > > > > > > > > > > > > > On Wed, Aug 10, 2011 at 5:50 PM, Richard Brous <rbr...@gm...> wrote: > > Updated repository to include all Gene Ontology changes discussed during our meeting yesterday. > > > > Digging into TableManager next. > > > > Richard > > > > On Fri, Aug 5, 2011 at 10:06 AM, Richard Brous <rbr...@gm...> wrote: > > whew... thanks for the detailed reply. I will digest this a bit and get back to you with further questions. > > > > rb > > > > On Thu, Aug 4, 2011 at 11:18 PM, John David N. Dionisio <do...@lm...> wrote: > > Greetings, > > > > Sorry for the delay. I wasn't able to walk through the relevant code until this evening. > > > > As Kam said, GOA serves as the link between the UniProt and GO IDs. It essentially determines which GO IDs get exported by using GOA to see which GO IDs are associated with an exported UniProt ID. The populateUniprotGoTableFromSQL, in its current form, extracts the GO association records that match the given taxon ID then exports, as UniProt-GO pairs, the GO and UniProt IDs referenced within that GO association record. Processing that follows this is then based on the GO IDs that got exported --- and that's how the current code avoids exporting the entire list of GO terms. > > > > The operative query is on the second line of populateUniprotGoTableFromSQL: > > > > String uniProtAndGOIDSQL = "select db_object_id, go_id, evidence_code, with_or_from from goa where db like '%UniProt%' and taxon = 'taxon:" + taxon + "'"; > > > > In plain English, this selects the GOA records whose database is UniProt and whose taxon ID is the given taxon. An additional condition is added for the "aspect" (All, Component, Function, or Process) that is to be exported. This is another reduction filter, to further shrink the number of exported GO terms and thus avoid MAPPFinder issues later on. > > > > Given this, the proper expansion here is to change the taxon predicate to a multiple predicate. That is, this method can be changed to now accept a collection or array of taxon IDs, and the base query should then be changed so that it accepts any taxon from that collection. More or less, you want: > > > > private void populateUniprotGoTableFromSQL(char chosenAspect, int[] taxons) throws SQLException { > > > > ...then, instead of the single string, you want to iterate through the taxon IDs: > > > > StringBuilder baseQueryBuilder = new StringBuilder("select db_object_id, go_id, evidence_code, with_or_from from goa where db like '%UniProt%'"); > > boolean first = true; > > for (int taxon: taxons) { > > baseQueryBuilder.append(first ? " and (" : " or "); > > baseQueryBuilder > > .append("taxon = 'taxon:") > > .append(taxon).append("'"); > > first = false; > > } > > baseQueryBuilder.append(")"); > > > > ...and so on. I just sort of rattled this off so there may be little glitches, but anyway this is just to give you an overall idea. > > > > Put another way, no, you do not need to iterate this method for each taxon ID. Instead, you can still call this method once, with the multiplicity of taxon IDs emerging in terms of the actual condition used for selecting the GO terms to be exported (based on the available GOA records, which as you may recall are loaded from .goa files). > > > > As a side note, right here you have an opportunity for a little sanity check regarding the content of the relational database: GO terms will only be exported if GOA records for the desired taxon IDs have been imported into the database. So, as a pre-flight check, one can see if there are any GOA records at all for each chosen taxon ID. If there are none, then the .goa file for that species needs to be imported into the relational database. > > > > Hope this helps... > > > > John David N. Dionisio, PhD > > Associate Professor, Computer Science > > Loyola Marymount University > > > > > > On Aug 4, 2011, at 1:00 PM, Kam Dahlquist wrote: > > > > > Hi, > > > > > > Dondi will have to chime in on this, but I think this is where things are going to get tricky. > > > > > > The final gdb does not actually contain the entire GO, it gets trimmed somehow based on the GO associations for a particular species. This is because MAPPFinder cannot handle loading the entire GO. Since there is some type of species-specific trimming going on, it's quite possible that this will need to iterate. > > > > > > However, I don't have the foggiest idea of how this works, so Dondi will have to chime in. > > > > > > Best, > > > Kam > > > > > > At 12:09 AM 8/4/2011, you wrote: > > >> Wednesday 8/3/11 progress: > > >> > > >> 1. After following the ExportPanel1.java ground zero code of: databaseProfile.setSelectedSpeciesProfile( selectedProfile ); > > >> > > >> I found the method in DatabaseProfile.java plus a getter method; > > >> SpeciesProfile setSelectedSpeciesProfile( speciesProfile ) and SpeciesProfile getSelectedSpeciesProfile( speciesProfile ) > > >> > > >> I created two new methods that each handle List<Object> of SpeciesProfiles argument instead of a single SpeciesProfile; setSelectedSpeciesProfiles and getSelectedSpeciesProfiles. > > >> > > >> This enabled the ExportPanel1 ground zero code to become: databaseProfile.setSelectedSpeciesProfiles(selectedSpecies); > > >> > > >> 2. public static void export() on line 104 in ExportToGenMAPP.java > > >> > > >> On line 107 ExportGoData is instantiated which I found in ExportGoData.java and calls a method: public void export(char chosenAspect, int taxon). > > >> > > >> Within export, taxon id is required for another method: private void populateGoTables(char chosenAspect, int taxon). > > >> > > >> Within populateGoTables, taxon id is required for another method: private void populateUniprotGoTableFromSQL( char chosenAspect, int taxon). > > >> > > >> But, if the export to GDB process starts off with exporting GO data, doesn't it only need to do that once no matter how many species are selected? As you probably realize, I'm leading towards not having to iterate through this for each taxon id if possible. > > >> > > >> Also, how does the export actually work? How are GO ids and UniProt ids related within the table? > > >> > > >> Thanks! > > >> > > >> Richard > > >> > > >> > > > <ATT00001..txt><ATT00002..txt> > > > > > > ------------------------------------------------------------------------------ > > BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA > > The must-attend event for mobile developers. Connect with experts. > > Get tools for creating Super Apps. See the latest technologies. > > Sessions, hands-on labs, demos & much more. Register early & save! > > http://p.sf.net/sfu/rim-blackberry-1 > > _______________________________________________ > > xmlpipedb-developer mailing list > > xml...@li... > > https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > > > > > > > > <ATT00001..txt><ATT00002..txt> > > > ------------------------------------------------------------------------------ > Get a FREE DOWNLOAD! and learn more about uberSVN rich system, > user administration capabilities and model configuration. Take > the hassle out of deploying and managing Subversion and the > tools developers use with it. > http://p.sf.net/sfu/wandisco-dev2dev > _______________________________________________ > xmlpipedb-developer mailing list > xml...@li... > https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > > <CompareOriginalRowCounts.xlsx><ATT00001..txt><ATT00002..txt> |
From: John D. N. D. <do...@lm...> - 2011-08-11 04:45:42
|
Greetings, I think we have to turn to Dr. Dahlquist's GenMAPP knowledge here to get the definitive answer. I see two choices: - The Info table should have one record for each species that the .gdb holds, in which case the change you need is to wrap that single submit call inside a loop, so that submit is called once for each chosen species. - The Info table should always have one record, and if the .gdb holds multiple species, the "Species" column should be some concatenation of multiple species names. In this case, you would still call submit only once, but the value you send into the "Species" column is some accumulation of all chosen species names. Admittedly I don't know which way is right (I assumed the former as of our Tuesday meeting, but on further examination I'm no longer quite so sure). For Kam --- what does GenMAPP expect to see in the Info table if the opened .gdb contains multiple species? John David N. Dionisio, PhD Associate Professor, Computer Science Loyola Marymount University On Aug 10, 2011, at 9:36 PM, Richard Brous wrote: > OK, continued to review ExportToGenMAPP and dug into the creation of the first TableManager tmA on line 118. > > In reading through the method, my understanding is that it creates a new TableManager based on the selectedDatabaseProfile (which is UniProt). > > This is performed by the method getInfoTableManager() which then calls method submit(String tableName, QueryType queryType, String[][] columnNamesToValues); > > the code is as follows: > > tableManager.submit("Info", QueryType.insert, new String[][] { { "Owner", owner }, { "Version", new SimpleDateFormat("yyyyMMdd").format(version) }, { "MODSystem", modSystem }, { "Species", speciesProfile.getSpeciesName() }, { "Modify", new SimpleDateFormat("yyyyMMdd").format(modify) }, { "DisplayOrder", displayOrder }, { "Notes", notes } }); > > > The modification of this line centers on { "Species", speciesProfile.getSpeciesName() }, since it originally processed a single species. > > So now I need to populate the arguments with the species contained within selectedDatabaseprofile.selectedSpeciesProfiles. > > I think I'll start with the baseArgument up to MODSystem, then append as many species as necessary, and then cap off the end with the rest starting at Modify. (similar to your approach in ExportGoData, populateUniprotGoTableFromSQL(char chosenAspect, List<Integer> taxonIds) line 513 > > Please let me know if this approach or analysis is off track. > > Thanks! > > Richard > > > > > > > On Wed, Aug 10, 2011 at 5:50 PM, Richard Brous <rbr...@gm...> wrote: > Updated repository to include all Gene Ontology changes discussed during our meeting yesterday. > > Digging into TableManager next. > > Richard > > On Fri, Aug 5, 2011 at 10:06 AM, Richard Brous <rbr...@gm...> wrote: > whew... thanks for the detailed reply. I will digest this a bit and get back to you with further questions. > > rb > > On Thu, Aug 4, 2011 at 11:18 PM, John David N. Dionisio <do...@lm...> wrote: > Greetings, > > Sorry for the delay. I wasn't able to walk through the relevant code until this evening. > > As Kam said, GOA serves as the link between the UniProt and GO IDs. It essentially determines which GO IDs get exported by using GOA to see which GO IDs are associated with an exported UniProt ID. The populateUniprotGoTableFromSQL, in its current form, extracts the GO association records that match the given taxon ID then exports, as UniProt-GO pairs, the GO and UniProt IDs referenced within that GO association record. Processing that follows this is then based on the GO IDs that got exported --- and that's how the current code avoids exporting the entire list of GO terms. > > The operative query is on the second line of populateUniprotGoTableFromSQL: > > String uniProtAndGOIDSQL = "select db_object_id, go_id, evidence_code, with_or_from from goa where db like '%UniProt%' and taxon = 'taxon:" + taxon + "'"; > > In plain English, this selects the GOA records whose database is UniProt and whose taxon ID is the given taxon. An additional condition is added for the "aspect" (All, Component, Function, or Process) that is to be exported. This is another reduction filter, to further shrink the number of exported GO terms and thus avoid MAPPFinder issues later on. > > Given this, the proper expansion here is to change the taxon predicate to a multiple predicate. That is, this method can be changed to now accept a collection or array of taxon IDs, and the base query should then be changed so that it accepts any taxon from that collection. More or less, you want: > > private void populateUniprotGoTableFromSQL(char chosenAspect, int[] taxons) throws SQLException { > > ...then, instead of the single string, you want to iterate through the taxon IDs: > > StringBuilder baseQueryBuilder = new StringBuilder("select db_object_id, go_id, evidence_code, with_or_from from goa where db like '%UniProt%'"); > boolean first = true; > for (int taxon: taxons) { > baseQueryBuilder.append(first ? " and (" : " or "); > baseQueryBuilder > .append("taxon = 'taxon:") > .append(taxon).append("'"); > first = false; > } > baseQueryBuilder.append(")"); > > ...and so on. I just sort of rattled this off so there may be little glitches, but anyway this is just to give you an overall idea. > > Put another way, no, you do not need to iterate this method for each taxon ID. Instead, you can still call this method once, with the multiplicity of taxon IDs emerging in terms of the actual condition used for selecting the GO terms to be exported (based on the available GOA records, which as you may recall are loaded from .goa files). > > As a side note, right here you have an opportunity for a little sanity check regarding the content of the relational database: GO terms will only be exported if GOA records for the desired taxon IDs have been imported into the database. So, as a pre-flight check, one can see if there are any GOA records at all for each chosen taxon ID. If there are none, then the .goa file for that species needs to be imported into the relational database. > > Hope this helps... > > John David N. Dionisio, PhD > Associate Professor, Computer Science > Loyola Marymount University > > > On Aug 4, 2011, at 1:00 PM, Kam Dahlquist wrote: > > > Hi, > > > > Dondi will have to chime in on this, but I think this is where things are going to get tricky. > > > > The final gdb does not actually contain the entire GO, it gets trimmed somehow based on the GO associations for a particular species. This is because MAPPFinder cannot handle loading the entire GO. Since there is some type of species-specific trimming going on, it's quite possible that this will need to iterate. > > > > However, I don't have the foggiest idea of how this works, so Dondi will have to chime in. > > > > Best, > > Kam > > > > At 12:09 AM 8/4/2011, you wrote: > >> Wednesday 8/3/11 progress: > >> > >> 1. After following the ExportPanel1.java ground zero code of: databaseProfile.setSelectedSpeciesProfile( selectedProfile ); > >> > >> I found the method in DatabaseProfile.java plus a getter method; > >> SpeciesProfile setSelectedSpeciesProfile( speciesProfile ) and SpeciesProfile getSelectedSpeciesProfile( speciesProfile ) > >> > >> I created two new methods that each handle List<Object> of SpeciesProfiles argument instead of a single SpeciesProfile; setSelectedSpeciesProfiles and getSelectedSpeciesProfiles. > >> > >> This enabled the ExportPanel1 ground zero code to become: databaseProfile.setSelectedSpeciesProfiles(selectedSpecies); > >> > >> 2. public static void export() on line 104 in ExportToGenMAPP.java > >> > >> On line 107 ExportGoData is instantiated which I found in ExportGoData.java and calls a method: public void export(char chosenAspect, int taxon). > >> > >> Within export, taxon id is required for another method: private void populateGoTables(char chosenAspect, int taxon). > >> > >> Within populateGoTables, taxon id is required for another method: private void populateUniprotGoTableFromSQL( char chosenAspect, int taxon). > >> > >> But, if the export to GDB process starts off with exporting GO data, doesn't it only need to do that once no matter how many species are selected? As you probably realize, I'm leading towards not having to iterate through this for each taxon id if possible. > >> > >> Also, how does the export actually work? How are GO ids and UniProt ids related within the table? > >> > >> Thanks! > >> > >> Richard > >> > >> > > <ATT00001..txt><ATT00002..txt> > > > ------------------------------------------------------------------------------ > BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA > The must-attend event for mobile developers. Connect with experts. > Get tools for creating Super Apps. See the latest technologies. > Sessions, hands-on labs, demos & much more. Register early & save! > http://p.sf.net/sfu/rim-blackberry-1 > _______________________________________________ > xmlpipedb-developer mailing list > xml...@li... > https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > > > > <ATT00001..txt><ATT00002..txt> |
From: Richard B. <rbr...@gm...> - 2011-08-11 04:36:24
|
OK, continued to review ExportToGenMAPP and dug into the creation of the first TableManager tmA on line 118. In reading through the method, my understanding is that it creates a new TableManager based on the selectedDatabaseProfile (which is UniProt). This is performed by the method getInfoTableManager() which then calls method submit(String tableName, QueryType queryType, String[][] columnNamesToValues); the code is as follows: tableManager.submit("Info", QueryType.*insert*, *new* String[][] { { "Owner", owner }, { "Version", *new* SimpleDateFormat("yyyyMMdd").format(version) }, { "MODSystem", modSystem }, { "Species", speciesProfile.getSpeciesName() }, { "Modify", *new* SimpleDateFormat("yyyyMMdd").format(modify) }, { "DisplayOrder", displayOrder }, { "Notes", notes } }); The modification of this line centers on { "Species", speciesProfile.getSpeciesName() }, since it originally processed a single species. So now I need to populate the arguments with the species contained within selectedDatabaseprofile.selectedSpeciesProfiles. I think I'll start with the baseArgument up to MODSystem, then append as many species as necessary, and then cap off the end with the rest starting at Modify. (similar to your approach in ExportGoData, populateUniprotGoTableFromSQL(*char* chosenAspect, List<Integer> taxonIds) line 513 Please let me know if this approach or analysis is off track. Thanks! Richard On Wed, Aug 10, 2011 at 5:50 PM, Richard Brous <rbr...@gm...> wrote: > Updated repository to include all Gene Ontology changes discussed during > our meeting yesterday. > > Digging into TableManager next. > > Richard > > On Fri, Aug 5, 2011 at 10:06 AM, Richard Brous <rbr...@gm...>wrote: > >> whew... thanks for the detailed reply. I will digest this a bit and get >> back to you with further questions. >> >> rb >> >> On Thu, Aug 4, 2011 at 11:18 PM, John David N. Dionisio <do...@lm...>wrote: >> >>> Greetings, >>> >>> Sorry for the delay. I wasn't able to walk through the relevant code >>> until this evening. >>> >>> As Kam said, GOA serves as the link between the UniProt and GO IDs. It >>> essentially determines which GO IDs get exported by using GOA to see which >>> GO IDs are associated with an exported UniProt ID. The >>> populateUniprotGoTableFromSQL, in its current form, extracts the GO >>> association records that match the given taxon ID then exports, as >>> UniProt-GO pairs, the GO and UniProt IDs referenced within that GO >>> association record. Processing that follows this is then based on the GO >>> IDs that got exported --- and that's how the current code avoids exporting >>> the entire list of GO terms. >>> >>> The operative query is on the second line of >>> populateUniprotGoTableFromSQL: >>> >>> String uniProtAndGOIDSQL = "select db_object_id, go_id, >>> evidence_code, with_or_from from goa where db like '%UniProt%' and taxon = >>> 'taxon:" + taxon + "'"; >>> >>> In plain English, this selects the GOA records whose database is UniProt >>> and whose taxon ID is the given taxon. An additional condition is added for >>> the "aspect" (All, Component, Function, or Process) that is to be exported. >>> This is another reduction filter, to further shrink the number of exported >>> GO terms and thus avoid MAPPFinder issues later on. >>> >>> Given this, the proper expansion here is to change the taxon predicate to >>> a multiple predicate. That is, this method can be changed to now accept a >>> collection or array of taxon IDs, and the base query should then be changed >>> so that it accepts any taxon from that collection. More or less, you want: >>> >>> private void populateUniprotGoTableFromSQL(char chosenAspect, int[] >>> taxons) throws SQLException { >>> >>> ...then, instead of the single string, you want to iterate through the >>> taxon IDs: >>> >>> StringBuilder baseQueryBuilder = new StringBuilder("select >>> db_object_id, go_id, evidence_code, with_or_from from goa where db like >>> '%UniProt%'"); >>> boolean first = true; >>> for (int taxon: taxons) { >>> baseQueryBuilder.append(first ? " and (" : " or "); >>> baseQueryBuilder >>> .append("taxon = 'taxon:") >>> .append(taxon).append("'"); >>> first = false; >>> } >>> baseQueryBuilder.append(")"); >>> >>> ...and so on. I just sort of rattled this off so there may be little >>> glitches, but anyway this is just to give you an overall idea. >>> >>> Put another way, no, you do not need to iterate this method for each >>> taxon ID. Instead, you can still call this method once, with the >>> multiplicity of taxon IDs emerging in terms of the actual condition used for >>> selecting the GO terms to be exported (based on the available GOA records, >>> which as you may recall are loaded from .goa files). >>> >>> As a side note, right here you have an opportunity for a little sanity >>> check regarding the content of the relational database: GO terms will only >>> be exported if GOA records for the desired taxon IDs have been imported into >>> the database. So, as a pre-flight check, one can see if there are any GOA >>> records at all for each chosen taxon ID. If there are none, then the .goa >>> file for that species needs to be imported into the relational database. >>> >>> Hope this helps... >>> >>> John David N. Dionisio, PhD >>> Associate Professor, Computer Science >>> Loyola Marymount University >>> >>> >>> On Aug 4, 2011, at 1:00 PM, Kam Dahlquist wrote: >>> >>> > Hi, >>> > >>> > Dondi will have to chime in on this, but I think this is where things >>> are going to get tricky. >>> > >>> > The final gdb does not actually contain the entire GO, it gets trimmed >>> somehow based on the GO associations for a particular species. This is >>> because MAPPFinder cannot handle loading the entire GO. Since there is some >>> type of species-specific trimming going on, it's quite possible that this >>> will need to iterate. >>> > >>> > However, I don't have the foggiest idea of how this works, so Dondi >>> will have to chime in. >>> > >>> > Best, >>> > Kam >>> > >>> > At 12:09 AM 8/4/2011, you wrote: >>> >> Wednesday 8/3/11 progress: >>> >> >>> >> 1. After following the ExportPanel1.java ground zero code of: >>> databaseProfile.setSelectedSpeciesProfile( selectedProfile ); >>> >> >>> >> I found the method in DatabaseProfile.java plus a getter method; >>> >> SpeciesProfile setSelectedSpeciesProfile( speciesProfile ) and >>> SpeciesProfile getSelectedSpeciesProfile( speciesProfile ) >>> >> >>> >> I created two new methods that each handle List<Object> of >>> SpeciesProfiles argument instead of a single SpeciesProfile; >>> setSelectedSpeciesProfiles and getSelectedSpeciesProfiles. >>> >> >>> >> This enabled the ExportPanel1 ground zero code to become: >>> databaseProfile.setSelectedSpeciesProfiles(selectedSpecies); >>> >> >>> >> 2. public static void export() on line 104 in ExportToGenMAPP.java >>> >> >>> >> On line 107 ExportGoData is instantiated which I found in >>> ExportGoData.java and calls a method: public void export(char chosenAspect, >>> int taxon). >>> >> >>> >> Within export, taxon id is required for another method: private void >>> populateGoTables(char chosenAspect, int taxon). >>> >> >>> >> Within populateGoTables, taxon id is required for another method: >>> private void populateUniprotGoTableFromSQL( char chosenAspect, int taxon). >>> >> >>> >> But, if the export to GDB process starts off with exporting GO data, >>> doesn't it only need to do that once no matter how many species are >>> selected? As you probably realize, I'm leading towards not having to iterate >>> through this for each taxon id if possible. >>> >> >>> >> Also, how does the export actually work? How are GO ids and UniProt >>> ids related within the table? >>> >> >>> >> Thanks! >>> >> >>> >> Richard >>> >> >>> >> >>> > <ATT00001..txt><ATT00002..txt> >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA >>> The must-attend event for mobile developers. Connect with experts. >>> Get tools for creating Super Apps. See the latest technologies. >>> Sessions, hands-on labs, demos & much more. Register early & save! >>> http://p.sf.net/sfu/rim-blackberry-1 >>> _______________________________________________ >>> xmlpipedb-developer mailing list >>> xml...@li... >>> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer >>> >> >> > |
From: Richard B. <rbr...@gm...> - 2011-08-11 00:51:44
|
Updated repository to include all Gene Ontology changes discussed during our meeting yesterday. Digging into TableManager next. Richard On Fri, Aug 5, 2011 at 10:06 AM, Richard Brous <rbr...@gm...> wrote: > whew... thanks for the detailed reply. I will digest this a bit and get > back to you with further questions. > > rb > > On Thu, Aug 4, 2011 at 11:18 PM, John David N. Dionisio <do...@lm...>wrote: > >> Greetings, >> >> Sorry for the delay. I wasn't able to walk through the relevant code >> until this evening. >> >> As Kam said, GOA serves as the link between the UniProt and GO IDs. It >> essentially determines which GO IDs get exported by using GOA to see which >> GO IDs are associated with an exported UniProt ID. The >> populateUniprotGoTableFromSQL, in its current form, extracts the GO >> association records that match the given taxon ID then exports, as >> UniProt-GO pairs, the GO and UniProt IDs referenced within that GO >> association record. Processing that follows this is then based on the GO >> IDs that got exported --- and that's how the current code avoids exporting >> the entire list of GO terms. >> >> The operative query is on the second line of >> populateUniprotGoTableFromSQL: >> >> String uniProtAndGOIDSQL = "select db_object_id, go_id, >> evidence_code, with_or_from from goa where db like '%UniProt%' and taxon = >> 'taxon:" + taxon + "'"; >> >> In plain English, this selects the GOA records whose database is UniProt >> and whose taxon ID is the given taxon. An additional condition is added for >> the "aspect" (All, Component, Function, or Process) that is to be exported. >> This is another reduction filter, to further shrink the number of exported >> GO terms and thus avoid MAPPFinder issues later on. >> >> Given this, the proper expansion here is to change the taxon predicate to >> a multiple predicate. That is, this method can be changed to now accept a >> collection or array of taxon IDs, and the base query should then be changed >> so that it accepts any taxon from that collection. More or less, you want: >> >> private void populateUniprotGoTableFromSQL(char chosenAspect, int[] >> taxons) throws SQLException { >> >> ...then, instead of the single string, you want to iterate through the >> taxon IDs: >> >> StringBuilder baseQueryBuilder = new StringBuilder("select >> db_object_id, go_id, evidence_code, with_or_from from goa where db like >> '%UniProt%'"); >> boolean first = true; >> for (int taxon: taxons) { >> baseQueryBuilder.append(first ? " and (" : " or "); >> baseQueryBuilder >> .append("taxon = 'taxon:") >> .append(taxon).append("'"); >> first = false; >> } >> baseQueryBuilder.append(")"); >> >> ...and so on. I just sort of rattled this off so there may be little >> glitches, but anyway this is just to give you an overall idea. >> >> Put another way, no, you do not need to iterate this method for each taxon >> ID. Instead, you can still call this method once, with the multiplicity of >> taxon IDs emerging in terms of the actual condition used for selecting the >> GO terms to be exported (based on the available GOA records, which as you >> may recall are loaded from .goa files). >> >> As a side note, right here you have an opportunity for a little sanity >> check regarding the content of the relational database: GO terms will only >> be exported if GOA records for the desired taxon IDs have been imported into >> the database. So, as a pre-flight check, one can see if there are any GOA >> records at all for each chosen taxon ID. If there are none, then the .goa >> file for that species needs to be imported into the relational database. >> >> Hope this helps... >> >> John David N. Dionisio, PhD >> Associate Professor, Computer Science >> Loyola Marymount University >> >> >> On Aug 4, 2011, at 1:00 PM, Kam Dahlquist wrote: >> >> > Hi, >> > >> > Dondi will have to chime in on this, but I think this is where things >> are going to get tricky. >> > >> > The final gdb does not actually contain the entire GO, it gets trimmed >> somehow based on the GO associations for a particular species. This is >> because MAPPFinder cannot handle loading the entire GO. Since there is some >> type of species-specific trimming going on, it's quite possible that this >> will need to iterate. >> > >> > However, I don't have the foggiest idea of how this works, so Dondi will >> have to chime in. >> > >> > Best, >> > Kam >> > >> > At 12:09 AM 8/4/2011, you wrote: >> >> Wednesday 8/3/11 progress: >> >> >> >> 1. After following the ExportPanel1.java ground zero code of: >> databaseProfile.setSelectedSpeciesProfile( selectedProfile ); >> >> >> >> I found the method in DatabaseProfile.java plus a getter method; >> >> SpeciesProfile setSelectedSpeciesProfile( speciesProfile ) and >> SpeciesProfile getSelectedSpeciesProfile( speciesProfile ) >> >> >> >> I created two new methods that each handle List<Object> of >> SpeciesProfiles argument instead of a single SpeciesProfile; >> setSelectedSpeciesProfiles and getSelectedSpeciesProfiles. >> >> >> >> This enabled the ExportPanel1 ground zero code to become: >> databaseProfile.setSelectedSpeciesProfiles(selectedSpecies); >> >> >> >> 2. public static void export() on line 104 in ExportToGenMAPP.java >> >> >> >> On line 107 ExportGoData is instantiated which I found in >> ExportGoData.java and calls a method: public void export(char chosenAspect, >> int taxon). >> >> >> >> Within export, taxon id is required for another method: private void >> populateGoTables(char chosenAspect, int taxon). >> >> >> >> Within populateGoTables, taxon id is required for another method: >> private void populateUniprotGoTableFromSQL( char chosenAspect, int taxon). >> >> >> >> But, if the export to GDB process starts off with exporting GO data, >> doesn't it only need to do that once no matter how many species are >> selected? As you probably realize, I'm leading towards not having to iterate >> through this for each taxon id if possible. >> >> >> >> Also, how does the export actually work? How are GO ids and UniProt ids >> related within the table? >> >> >> >> Thanks! >> >> >> >> Richard >> >> >> >> >> > <ATT00001..txt><ATT00002..txt> >> >> >> >> ------------------------------------------------------------------------------ >> BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA >> The must-attend event for mobile developers. Connect with experts. >> Get tools for creating Super Apps. See the latest technologies. >> Sessions, hands-on labs, demos & much more. Register early & save! >> http://p.sf.net/sfu/rim-blackberry-1 >> _______________________________________________ >> xmlpipedb-developer mailing list >> xml...@li... >> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer >> > > |
From: Richard B. <rbr...@gm...> - 2011-08-05 17:06:28
|
whew... thanks for the detailed reply. I will digest this a bit and get back to you with further questions. rb On Thu, Aug 4, 2011 at 11:18 PM, John David N. Dionisio <do...@lm...>wrote: > Greetings, > > Sorry for the delay. I wasn't able to walk through the relevant code until > this evening. > > As Kam said, GOA serves as the link between the UniProt and GO IDs. It > essentially determines which GO IDs get exported by using GOA to see which > GO IDs are associated with an exported UniProt ID. The > populateUniprotGoTableFromSQL, in its current form, extracts the GO > association records that match the given taxon ID then exports, as > UniProt-GO pairs, the GO and UniProt IDs referenced within that GO > association record. Processing that follows this is then based on the GO > IDs that got exported --- and that's how the current code avoids exporting > the entire list of GO terms. > > The operative query is on the second line of populateUniprotGoTableFromSQL: > > String uniProtAndGOIDSQL = "select db_object_id, go_id, > evidence_code, with_or_from from goa where db like '%UniProt%' and taxon = > 'taxon:" + taxon + "'"; > > In plain English, this selects the GOA records whose database is UniProt > and whose taxon ID is the given taxon. An additional condition is added for > the "aspect" (All, Component, Function, or Process) that is to be exported. > This is another reduction filter, to further shrink the number of exported > GO terms and thus avoid MAPPFinder issues later on. > > Given this, the proper expansion here is to change the taxon predicate to a > multiple predicate. That is, this method can be changed to now accept a > collection or array of taxon IDs, and the base query should then be changed > so that it accepts any taxon from that collection. More or less, you want: > > private void populateUniprotGoTableFromSQL(char chosenAspect, int[] > taxons) throws SQLException { > > ...then, instead of the single string, you want to iterate through the > taxon IDs: > > StringBuilder baseQueryBuilder = new StringBuilder("select db_object_id, > go_id, evidence_code, with_or_from from goa where db like '%UniProt%'"); > boolean first = true; > for (int taxon: taxons) { > baseQueryBuilder.append(first ? " and (" : " or "); > baseQueryBuilder > .append("taxon = 'taxon:") > .append(taxon).append("'"); > first = false; > } > baseQueryBuilder.append(")"); > > ...and so on. I just sort of rattled this off so there may be little > glitches, but anyway this is just to give you an overall idea. > > Put another way, no, you do not need to iterate this method for each taxon > ID. Instead, you can still call this method once, with the multiplicity of > taxon IDs emerging in terms of the actual condition used for selecting the > GO terms to be exported (based on the available GOA records, which as you > may recall are loaded from .goa files). > > As a side note, right here you have an opportunity for a little sanity > check regarding the content of the relational database: GO terms will only > be exported if GOA records for the desired taxon IDs have been imported into > the database. So, as a pre-flight check, one can see if there are any GOA > records at all for each chosen taxon ID. If there are none, then the .goa > file for that species needs to be imported into the relational database. > > Hope this helps... > > John David N. Dionisio, PhD > Associate Professor, Computer Science > Loyola Marymount University > > > On Aug 4, 2011, at 1:00 PM, Kam Dahlquist wrote: > > > Hi, > > > > Dondi will have to chime in on this, but I think this is where things are > going to get tricky. > > > > The final gdb does not actually contain the entire GO, it gets trimmed > somehow based on the GO associations for a particular species. This is > because MAPPFinder cannot handle loading the entire GO. Since there is some > type of species-specific trimming going on, it's quite possible that this > will need to iterate. > > > > However, I don't have the foggiest idea of how this works, so Dondi will > have to chime in. > > > > Best, > > Kam > > > > At 12:09 AM 8/4/2011, you wrote: > >> Wednesday 8/3/11 progress: > >> > >> 1. After following the ExportPanel1.java ground zero code of: > databaseProfile.setSelectedSpeciesProfile( selectedProfile ); > >> > >> I found the method in DatabaseProfile.java plus a getter method; > >> SpeciesProfile setSelectedSpeciesProfile( speciesProfile ) and > SpeciesProfile getSelectedSpeciesProfile( speciesProfile ) > >> > >> I created two new methods that each handle List<Object> of > SpeciesProfiles argument instead of a single SpeciesProfile; > setSelectedSpeciesProfiles and getSelectedSpeciesProfiles. > >> > >> This enabled the ExportPanel1 ground zero code to become: > databaseProfile.setSelectedSpeciesProfiles(selectedSpecies); > >> > >> 2. public static void export() on line 104 in ExportToGenMAPP.java > >> > >> On line 107 ExportGoData is instantiated which I found in > ExportGoData.java and calls a method: public void export(char chosenAspect, > int taxon). > >> > >> Within export, taxon id is required for another method: private void > populateGoTables(char chosenAspect, int taxon). > >> > >> Within populateGoTables, taxon id is required for another method: > private void populateUniprotGoTableFromSQL( char chosenAspect, int taxon). > >> > >> But, if the export to GDB process starts off with exporting GO data, > doesn't it only need to do that once no matter how many species are > selected? As you probably realize, I'm leading towards not having to iterate > through this for each taxon id if possible. > >> > >> Also, how does the export actually work? How are GO ids and UniProt ids > related within the table? > >> > >> Thanks! > >> > >> Richard > >> > >> > > <ATT00001..txt><ATT00002..txt> > > > > ------------------------------------------------------------------------------ > BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA > The must-attend event for mobile developers. Connect with experts. > Get tools for creating Super Apps. See the latest technologies. > Sessions, hands-on labs, demos & much more. Register early & save! > http://p.sf.net/sfu/rim-blackberry-1 > _______________________________________________ > xmlpipedb-developer mailing list > xml...@li... > https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > |
From: John D. N. D. <do...@lm...> - 2011-08-05 06:19:10
|
Greetings, Sorry for the delay. I wasn't able to walk through the relevant code until this evening. As Kam said, GOA serves as the link between the UniProt and GO IDs. It essentially determines which GO IDs get exported by using GOA to see which GO IDs are associated with an exported UniProt ID. The populateUniprotGoTableFromSQL, in its current form, extracts the GO association records that match the given taxon ID then exports, as UniProt-GO pairs, the GO and UniProt IDs referenced within that GO association record. Processing that follows this is then based on the GO IDs that got exported --- and that's how the current code avoids exporting the entire list of GO terms. The operative query is on the second line of populateUniprotGoTableFromSQL: String uniProtAndGOIDSQL = "select db_object_id, go_id, evidence_code, with_or_from from goa where db like '%UniProt%' and taxon = 'taxon:" + taxon + "'"; In plain English, this selects the GOA records whose database is UniProt and whose taxon ID is the given taxon. An additional condition is added for the "aspect" (All, Component, Function, or Process) that is to be exported. This is another reduction filter, to further shrink the number of exported GO terms and thus avoid MAPPFinder issues later on. Given this, the proper expansion here is to change the taxon predicate to a multiple predicate. That is, this method can be changed to now accept a collection or array of taxon IDs, and the base query should then be changed so that it accepts any taxon from that collection. More or less, you want: private void populateUniprotGoTableFromSQL(char chosenAspect, int[] taxons) throws SQLException { ...then, instead of the single string, you want to iterate through the taxon IDs: StringBuilder baseQueryBuilder = new StringBuilder("select db_object_id, go_id, evidence_code, with_or_from from goa where db like '%UniProt%'"); boolean first = true; for (int taxon: taxons) { baseQueryBuilder.append(first ? " and (" : " or "); baseQueryBuilder .append("taxon = 'taxon:") .append(taxon).append("'"); first = false; } baseQueryBuilder.append(")"); ...and so on. I just sort of rattled this off so there may be little glitches, but anyway this is just to give you an overall idea. Put another way, no, you do not need to iterate this method for each taxon ID. Instead, you can still call this method once, with the multiplicity of taxon IDs emerging in terms of the actual condition used for selecting the GO terms to be exported (based on the available GOA records, which as you may recall are loaded from .goa files). As a side note, right here you have an opportunity for a little sanity check regarding the content of the relational database: GO terms will only be exported if GOA records for the desired taxon IDs have been imported into the database. So, as a pre-flight check, one can see if there are any GOA records at all for each chosen taxon ID. If there are none, then the .goa file for that species needs to be imported into the relational database. Hope this helps... John David N. Dionisio, PhD Associate Professor, Computer Science Loyola Marymount University On Aug 4, 2011, at 1:00 PM, Kam Dahlquist wrote: > Hi, > > Dondi will have to chime in on this, but I think this is where things are going to get tricky. > > The final gdb does not actually contain the entire GO, it gets trimmed somehow based on the GO associations for a particular species. This is because MAPPFinder cannot handle loading the entire GO. Since there is some type of species-specific trimming going on, it's quite possible that this will need to iterate. > > However, I don't have the foggiest idea of how this works, so Dondi will have to chime in. > > Best, > Kam > > At 12:09 AM 8/4/2011, you wrote: >> Wednesday 8/3/11 progress: >> >> 1. After following the ExportPanel1.java ground zero code of: databaseProfile.setSelectedSpeciesProfile( selectedProfile ); >> >> I found the method in DatabaseProfile.java plus a getter method; >> SpeciesProfile setSelectedSpeciesProfile( speciesProfile ) and SpeciesProfile getSelectedSpeciesProfile( speciesProfile ) >> >> I created two new methods that each handle List<Object> of SpeciesProfiles argument instead of a single SpeciesProfile; setSelectedSpeciesProfiles and getSelectedSpeciesProfiles. >> >> This enabled the ExportPanel1 ground zero code to become: databaseProfile.setSelectedSpeciesProfiles(selectedSpecies); >> >> 2. public static void export() on line 104 in ExportToGenMAPP.java >> >> On line 107 ExportGoData is instantiated which I found in ExportGoData.java and calls a method: public void export(char chosenAspect, int taxon). >> >> Within export, taxon id is required for another method: private void populateGoTables(char chosenAspect, int taxon). >> >> Within populateGoTables, taxon id is required for another method: private void populateUniprotGoTableFromSQL( char chosenAspect, int taxon). >> >> But, if the export to GDB process starts off with exporting GO data, doesn't it only need to do that once no matter how many species are selected? As you probably realize, I'm leading towards not having to iterate through this for each taxon id if possible. >> >> Also, how does the export actually work? How are GO ids and UniProt ids related within the table? >> >> Thanks! >> >> Richard >> >> > <ATT00001..txt><ATT00002..txt> |
From: Richard B. <rbr...@gm...> - 2011-08-04 20:46:24
|
Ok, well if I could hazard a guess I would say that only the GO associations that relate to the particular species are included. The code looks for an association of a GO term then exports it. If no association then skips to the next Go term... rinse and repeat? If this is the case then we would need to iterate the validation of GO terms for each species. The other question would be ... can we build the GO table in multiple passes( if two or more species use a common GO term, are the earlier records overwritten ) ? I'm sure Dondi will know but I'll spend some time rereading the code myself. Richard On Thu, Aug 4, 2011 at 1:00 PM, Kam Dahlquist <kda...@lm...> wrote: > Hi, > > Dondi will have to chime in on this, but I think this is where things are > going to get tricky. > > The final gdb does not actually contain the entire GO, it gets trimmed > somehow based on the GO associations for a particular species. This is > because MAPPFinder cannot handle loading the entire GO. Since there is some > type of species-specific trimming going on, it's quite possible that this > will need to iterate. > > However, I don't have the foggiest idea of how this works, so Dondi will > have to chime in. > > Best, > Kam > > > At 12:09 AM 8/4/2011, you wrote: > > Wednesday 8/3/11 progress: > > 1. After following the ExportPanel1.java ground zero code of: > databaseProfile.setSelectedSpeciesProfile( selectedProfile ); > > I found the method in DatabaseProfile.java plus a getter method; > SpeciesProfile setSelectedSpeciesProfile( speciesProfile ) and > SpeciesProfile getSelectedSpeciesProfile( speciesProfile ) > > I created two new methods that each handle List<Object> of SpeciesProfiles > argument instead of a single SpeciesProfile; setSelectedSpeciesProfiles and > getSelectedSpeciesProfiles. > > This enabled the ExportPanel1 ground zero code to become: > databaseProfile.setSelectedSpeciesProfiles(selectedSpecies); > > 2. public static void export() on line 104 in ExportToGenMAPP.java > > On line 107 ExportGoData is instantiated which I found in ExportGoData.java > and calls a method: *public* *void* export(*char* chosenAspect, *int*taxon). > > Within export, taxon id is required for another method: *private* *void*populateGoTables( > *char* chosenAspect, *int* taxon). > > Within populateGoTables, taxon id is required for another method: *private > * *void* populateUniprotGoTableFromSQL(* char* chosenAspect, *int* taxon). > > But, if the export to GDB process starts off with exporting GO data, > doesn't it only need to do that once no matter how many species are > selected? As you probably realize, I'm leading towards not having to iterate > through this for each taxon id if possible. > > Also, how does the export actually work? How are GO ids and UniProt ids > related within the table? > > Thanks! > > Richard > > > > > ------------------------------------------------------------------------------ > BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA > The must-attend event for mobile developers. Connect with experts. > Get tools for creating Super Apps. See the latest technologies. > Sessions, hands-on labs, demos & much more. Register early & save! > http://p.sf.net/sfu/rim-blackberry-1 > _______________________________________________ > xmlpipedb-developer mailing list > xml...@li... > https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > > |
From: Kam D. <kda...@lm...> - 2011-08-04 20:00:33
|
Hi, Dondi will have to chime in on this, but I think this is where things are going to get tricky. The final gdb does not actually contain the entire GO, it gets trimmed somehow based on the GO associations for a particular species. This is because MAPPFinder cannot handle loading the entire GO. Since there is some type of species-specific trimming going on, it's quite possible that this will need to iterate. However, I don't have the foggiest idea of how this works, so Dondi will have to chime in. Best, Kam At 12:09 AM 8/4/2011, you wrote: >Wednesday 8/3/11 progress: > >1. After following the ExportPanel1.java ground zero code of: >databaseProfile.setSelectedSpeciesProfile( selectedProfile ); > >I found the method in DatabaseProfile.java plus a getter method; >SpeciesProfile setSelectedSpeciesProfile( speciesProfile ) and >SpeciesProfile getSelectedSpeciesProfile( speciesProfile ) > >I created two new methods that each handle List<Object> of >SpeciesProfiles argument instead of a single SpeciesProfile; >setSelectedSpeciesProfiles and getSelectedSpeciesProfiles. > >This enabled the ExportPanel1 ground zero code to become: >databaseProfile.setSelectedSpeciesProfiles(selectedSpecies); > >2. public static void export() on line 104 in ExportToGenMAPP.java > >On line 107 ExportGoData is instantiated which I found in >ExportGoData.java and calls a method: public void export(char >chosenAspect, int taxon). > >Within export, taxon id is required for another method: private void >populateGoTables(char chosenAspect, int taxon). > >Within populateGoTables, taxon id is required for another method: >private void populateUniprotGoTableFromSQL(char chosenAspect, int taxon). > >But, if the export to GDB process starts off with exporting GO data, >doesn't it only need to do that once no matter how many species are >selected? As you probably realize, I'm leading towards not having to >iterate through this for each taxon id if possible. > >Also, how does the export actually work? How are GO ids and UniProt >ids related within the table? > >Thanks! > >Richard > > |
From: Richard B. <rbr...@gm...> - 2011-08-04 15:44:40
|
saw latest dondi submit, ui stuff looks great. recompiled and starting fresh this morning after I deal with a dead car battery situation. rb On Thu, Aug 4, 2011 at 12:09 AM, Richard Brous <rbr...@gm...> wrote: > Wednesday 8/3/11 progress: > > 1. After following the ExportPanel1.java ground zero code of: > databaseProfile.setSelectedSpeciesProfile( selectedProfile ); > > I found the method in DatabaseProfile.java plus a getter method; > SpeciesProfile setSelectedSpeciesProfile( speciesProfile ) and > SpeciesProfile getSelectedSpeciesProfile( speciesProfile ) > > I created two new methods that each handle List<Object> of SpeciesProfiles > argument instead of a single SpeciesProfile; setSelectedSpeciesProfiles and > getSelectedSpeciesProfiles. > > This enabled the ExportPanel1 ground zero code to become: > databaseProfile.setSelectedSpeciesProfiles(selectedSpecies); > > 2. public static void export() on line 104 in ExportToGenMAPP.java > > On line 107 ExportGoData is instantiated which I found in ExportGoData.java > and calls a method: *public* *void* export(*char* chosenAspect, *int*taxon). > > Within export, taxon id is required for another method: *private* *void*populateGoTables( > *char* chosenAspect, *int* taxon). > > Within populateGoTables, taxon id is required for another method: *private > * *void* populateUniprotGoTableFromSQL(*char* chosenAspect, *int* taxon). > > But, if the export to GDB process starts off with exporting GO data, > doesn't it only need to do that once no matter how many species are > selected? As you probably realize, I'm leading towards not having to iterate > through this for each taxon id if possible. > > Also, how does the export actually work? How are GO ids and UniProt ids > related within the table? > > Thanks! > > Richard > > |
From: Richard B. <rbr...@gm...> - 2011-08-04 07:09:46
|
Wednesday 8/3/11 progress: 1. After following the ExportPanel1.java ground zero code of: databaseProfile.setSelectedSpeciesProfile( selectedProfile ); I found the method in DatabaseProfile.java plus a getter method; SpeciesProfile setSelectedSpeciesProfile( speciesProfile ) and SpeciesProfile getSelectedSpeciesProfile( speciesProfile ) I created two new methods that each handle List<Object> of SpeciesProfiles argument instead of a single SpeciesProfile; setSelectedSpeciesProfiles and getSelectedSpeciesProfiles. This enabled the ExportPanel1 ground zero code to become: databaseProfile.setSelectedSpeciesProfiles(selectedSpecies); 2. public static void export() on line 104 in ExportToGenMAPP.java On line 107 ExportGoData is instantiated which I found in ExportGoData.java and calls a method: *public* *void* export(*char* chosenAspect, *int*taxon). Within export, taxon id is required for another method: *private* *void*populateGoTables( *char* chosenAspect, *int* taxon). Within populateGoTables, taxon id is required for another method: *private* *void* populateUniprotGoTableFromSQL(*char* chosenAspect, *int* taxon). But, if the export to GDB process starts off with exporting GO data, doesn't it only need to do that once no matter how many species are selected? As you probably realize, I'm leading towards not having to iterate through this for each taxon id if possible. Also, how does the export actually work? How are GO ids and UniProt ids related within the table? Thanks! Richard |
From: Richard B. <rbr...@gm...> - 2011-08-03 17:09:37
|
Hi Dondi, I checked out the new code and saw the instantiation of List as an Arrays.asList. Pretty clever... when we spoke yesterday I thought you were mentioning Collections as an interface and that when you said Arrays - meant ArrayList since it implements Collection. I have swapped in your code which creates the List as a collection of unknown (supertype of all collections) which then extends SpeciesProfile, but now when selecting species in the JList a type cast exception is thrown during event dispatch. The error is that Object cannot be cast into SpeciesProfile. I'm not sure how to fix this as I thought that using the wildcard<?> forced you to stay in terms of Objects and that you weren't able to typecast further??? Help please! =D *protected* *void* handleSpeciesProfileSelection(ListSelectionEvent listSelectionEvent) { JList list = (JList)listSelectionEvent.getSource(); StringBuilder speciesTextBuilder = *new* StringBuilder("Selected Species info: "); *List<? **extends** SpeciesProfile> selectedSpeciesProfiles = Arrays.asList((SpeciesProfile[])list.getSelectedValues());* *for** (SpeciesProfile speciesProfile: selectedSpeciesProfiles) {* // A direct class comparison is required here (as opposed to *instanceof*) // because we are looking specifically for instances of UniProtSpeciesProfile, // and not any of its subclasses. speciesTextBuilder.append("\n") .append(speciesProfile) .append((speciesProfile.getClass() == UniProtSpeciesProfile.*class*) ? ", Generic Profile." : ", Custom Profile."); } speciesDescriptionTextArea.setText(speciesTextBuilder.toString()); On Tue, Aug 2, 2011 at 4:25 PM, Richard Brous <rbr...@gm...> wrote: > OK, submitted new code which added the selected SpeciesProfiles into > selectedSpecies ArrayList. Using this as the argument for: > databaseProfile.setSelectedSpeciesProfile( selectedSpecies ); > > Thought I would snag each value when surfaced in the Object selection loop > then add to ArrayList. > > Richard > > On Tue, Aug 2, 2011 at 8:50 AM, Richard Brous <rbr...@gm...>wrote: > >> Ah yes, I see why you inlined the conditional and now the code is much >> more elegant. >> >> Btw, neglected to mention i'm starting on chapter 2 in the db textbook >> today. >> >> Look forward to our chat in 15 minutes >> richard >> On Tue, Aug 2, 2011 at 8:39 AM, John David N. Dionisio <do...@lm...>wrote: >> >>> OK, cool, the changes look good. >>> >>> I committed some comments and little tweaks, mainly for style and >>> succinctness reasons. The primary logic through-line was not touched. If >>> you have any questions on those changes, we can discuss that sometime; those >>> are secondary to the main-line issues that you mentioned. >>> >>> John David N. Dionisio, PhD >>> Assistant Professor, Computer Science >>> Loyola Marymount University >>> >>> >>> On Aug 2, 2011, at 12:31 AM, Richard Brous wrote: >>> >>> > Just committed some new code. Mainly adding the logic to append the >>> selected species with either generic or custom in the >>> speciesDescriptionTextArea and cleared out more old comments to keep me >>> focused. >>> > >>> > Also read through the first part of the ExportToGenMAPP class to get a >>> handle on how it is sent the DatabaseProfile databaseProfile with a single >>> species packaged within. From that effort, I decided to start on the >>> databaseProfile.setSelectedSpeciesProfile method which would be modified for >>> a collection of SpeciesProfiles. >>> > >>> > But I need to create that collection first back on ExportPanel1, >>> proceeding the JList selection/display code. I just need to wrap my head >>> around how to grab them and place them in a newly created SpeciesProfile [] >>> selectedProfiles, which would then be used as the argument in >>> databaseProfile.setSelectedSpeciesProfiles( selectedProfiles ); >>> > >>> > We can discuss this further on our call tomorrow. >>> > >>> > Richard >>> > >>> > >>> > >>> > >>> > On Aug 1, 2011, at 11:13 AM, Kam Dahlquist <kda...@lm...> wrote: >>> > >>> >> Hi, >>> >> >>> >> That works for me. Talk to you tomorrow, >>> >> Kam >>> >> >>> >> At 11:04 AM 8/1/2011, you wrote: >>> >>> Greetings, >>> >>> >>> >>> No worries...for this week the best day turned out to be Tuesday; >>> hope that works well for you also. So, tomorrow at 9am unless setting else >>> comes up. >>> >>> >>> >>> John David N. Dionisio, PhD >>> >>> Associate Professor, Computer Science >>> >>> Loyola Marymount University >>> >>> >>> >>> >>> >>> On Aug 1, 2011, at 10:46 AM, Kam Dahlquist <kda...@lm...> >>> wrote: >>> >>> >>> >>>> Hi, >>> >>>> >>> >>>> I'm so sorry, I was on my "staycation" last week and just completely >>> forgot about our scheduled phone call. >>> >>>> >>> >>>> I'm back in the office--what are the plans for this week's call? >>> >>>> >>> >>>> Thanks, >>> >>>> Kam >>> >>>> >>> >>>> At 08:30 AM 7/28/2011, you 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 >>> >>>>> >>> >>>>> >>> >>>> >>> ------------------------------------------------------------------------------ >>> >>>> BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA >>> >>>> The must-attend event for mobile developers. Connect with experts. >>> >>>> Get tools for creating Super Apps. See the latest technologies. >>> >>>> Sessions, hands-on labs, demos & much more. Register early & save! >>> >>>> http://p.sf.net/sfu/rim-blackberry-1 >>> >>>> _______________________________________________ >>> >>>> xmlpipedb-developer mailing list >>> >>>> xml...@li... >>> >>>> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer >>> >>> >>> >> >>> ------------------------------------------------------------------------------ >>> >> BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA >>> >> The must-attend event for mobile developers. Connect with experts. >>> >> Get tools for creating Super Apps. See the latest technologies. >>> >> Sessions, hands-on labs, demos & much more. Register early & save! >>> >> http://p.sf.net/sfu/rim-blackberry-1 >>> >> _______________________________________________ >>> >> xmlpipedb-developer mailing list >>> >> xml...@li... >>> >> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer >>> > <ATT00001..txt><ATT00002..txt> >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA >>> The must-attend event for mobile developers. Connect with experts. >>> Get tools for creating Super Apps. See the latest technologies. >>> Sessions, hands-on labs, demos & much more. Register early & save! >>> http://p.sf.net/sfu/rim-blackberry-1 >>> _______________________________________________ >>> xmlpipedb-developer mailing list >>> xml...@li... >>> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer >>> >> >> > |
From: Richard B. <rbr...@gm...> - 2011-08-02 23:25:57
|
OK, submitted new code which added the selected SpeciesProfiles into selectedSpecies ArrayList. Using this as the argument for: databaseProfile.setSelectedSpeciesProfile( selectedSpecies ); Thought I would snag each value when surfaced in the Object selection loop then add to ArrayList. Richard On Tue, Aug 2, 2011 at 8:50 AM, Richard Brous <rbr...@gm...> wrote: > Ah yes, I see why you inlined the conditional and now the code is much more > elegant. > > Btw, neglected to mention i'm starting on chapter 2 in the db textbook > today. > > Look forward to our chat in 15 minutes > richard > On Tue, Aug 2, 2011 at 8:39 AM, John David N. Dionisio <do...@lm...>wrote: > >> OK, cool, the changes look good. >> >> I committed some comments and little tweaks, mainly for style and >> succinctness reasons. The primary logic through-line was not touched. If >> you have any questions on those changes, we can discuss that sometime; those >> are secondary to the main-line issues that you mentioned. >> >> John David N. Dionisio, PhD >> Assistant Professor, Computer Science >> Loyola Marymount University >> >> >> On Aug 2, 2011, at 12:31 AM, Richard Brous wrote: >> >> > Just committed some new code. Mainly adding the logic to append the >> selected species with either generic or custom in the >> speciesDescriptionTextArea and cleared out more old comments to keep me >> focused. >> > >> > Also read through the first part of the ExportToGenMAPP class to get a >> handle on how it is sent the DatabaseProfile databaseProfile with a single >> species packaged within. From that effort, I decided to start on the >> databaseProfile.setSelectedSpeciesProfile method which would be modified for >> a collection of SpeciesProfiles. >> > >> > But I need to create that collection first back on ExportPanel1, >> proceeding the JList selection/display code. I just need to wrap my head >> around how to grab them and place them in a newly created SpeciesProfile [] >> selectedProfiles, which would then be used as the argument in >> databaseProfile.setSelectedSpeciesProfiles( selectedProfiles ); >> > >> > We can discuss this further on our call tomorrow. >> > >> > Richard >> > >> > >> > >> > >> > On Aug 1, 2011, at 11:13 AM, Kam Dahlquist <kda...@lm...> wrote: >> > >> >> Hi, >> >> >> >> That works for me. Talk to you tomorrow, >> >> Kam >> >> >> >> At 11:04 AM 8/1/2011, you wrote: >> >>> Greetings, >> >>> >> >>> No worries...for this week the best day turned out to be Tuesday; hope >> that works well for you also. So, tomorrow at 9am unless setting else comes >> up. >> >>> >> >>> John David N. Dionisio, PhD >> >>> Associate Professor, Computer Science >> >>> Loyola Marymount University >> >>> >> >>> >> >>> On Aug 1, 2011, at 10:46 AM, Kam Dahlquist <kda...@lm...> >> wrote: >> >>> >> >>>> Hi, >> >>>> >> >>>> I'm so sorry, I was on my "staycation" last week and just completely >> forgot about our scheduled phone call. >> >>>> >> >>>> I'm back in the office--what are the plans for this week's call? >> >>>> >> >>>> Thanks, >> >>>> Kam >> >>>> >> >>>> At 08:30 AM 7/28/2011, you 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 >> >>>>> >> >>>>> >> >>>> >> ------------------------------------------------------------------------------ >> >>>> BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA >> >>>> The must-attend event for mobile developers. Connect with experts. >> >>>> Get tools for creating Super Apps. See the latest technologies. >> >>>> Sessions, hands-on labs, demos & much more. Register early & save! >> >>>> http://p.sf.net/sfu/rim-blackberry-1 >> >>>> _______________________________________________ >> >>>> xmlpipedb-developer mailing list >> >>>> xml...@li... >> >>>> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer >> >>> >> >> >> ------------------------------------------------------------------------------ >> >> BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA >> >> The must-attend event for mobile developers. Connect with experts. >> >> Get tools for creating Super Apps. See the latest technologies. >> >> Sessions, hands-on labs, demos & much more. Register early & save! >> >> http://p.sf.net/sfu/rim-blackberry-1 >> >> _______________________________________________ >> >> xmlpipedb-developer mailing list >> >> xml...@li... >> >> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer >> > <ATT00001..txt><ATT00002..txt> >> >> >> >> ------------------------------------------------------------------------------ >> BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA >> The must-attend event for mobile developers. Connect with experts. >> Get tools for creating Super Apps. See the latest technologies. >> Sessions, hands-on labs, demos & much more. Register early & save! >> http://p.sf.net/sfu/rim-blackberry-1 >> _______________________________________________ >> xmlpipedb-developer mailing list >> xml...@li... >> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer >> > > |
From: Richard B. <rbr...@gm...> - 2011-08-02 15:50:30
|
Ah yes, I see why you inlined the conditional and now the code is much more elegant. Btw, neglected to mention i'm starting on chapter 2 in the db textbook today. Look forward to our chat in 15 minutes richard On Tue, Aug 2, 2011 at 8:39 AM, John David N. Dionisio <do...@lm...>wrote: > OK, cool, the changes look good. > > I committed some comments and little tweaks, mainly for style and > succinctness reasons. The primary logic through-line was not touched. If > you have any questions on those changes, we can discuss that sometime; those > are secondary to the main-line issues that you mentioned. > > John David N. Dionisio, PhD > Assistant Professor, Computer Science > Loyola Marymount University > > > On Aug 2, 2011, at 12:31 AM, Richard Brous wrote: > > > Just committed some new code. Mainly adding the logic to append the > selected species with either generic or custom in the > speciesDescriptionTextArea and cleared out more old comments to keep me > focused. > > > > Also read through the first part of the ExportToGenMAPP class to get a > handle on how it is sent the DatabaseProfile databaseProfile with a single > species packaged within. From that effort, I decided to start on the > databaseProfile.setSelectedSpeciesProfile method which would be modified for > a collection of SpeciesProfiles. > > > > But I need to create that collection first back on ExportPanel1, > proceeding the JList selection/display code. I just need to wrap my head > around how to grab them and place them in a newly created SpeciesProfile [] > selectedProfiles, which would then be used as the argument in > databaseProfile.setSelectedSpeciesProfiles( selectedProfiles ); > > > > We can discuss this further on our call tomorrow. > > > > Richard > > > > > > > > > > On Aug 1, 2011, at 11:13 AM, Kam Dahlquist <kda...@lm...> wrote: > > > >> Hi, > >> > >> That works for me. Talk to you tomorrow, > >> Kam > >> > >> At 11:04 AM 8/1/2011, you wrote: > >>> Greetings, > >>> > >>> No worries...for this week the best day turned out to be Tuesday; hope > that works well for you also. So, tomorrow at 9am unless setting else comes > up. > >>> > >>> John David N. Dionisio, PhD > >>> Associate Professor, Computer Science > >>> Loyola Marymount University > >>> > >>> > >>> On Aug 1, 2011, at 10:46 AM, Kam Dahlquist <kda...@lm...> wrote: > >>> > >>>> Hi, > >>>> > >>>> I'm so sorry, I was on my "staycation" last week and just completely > forgot about our scheduled phone call. > >>>> > >>>> I'm back in the office--what are the plans for this week's call? > >>>> > >>>> Thanks, > >>>> Kam > >>>> > >>>> At 08:30 AM 7/28/2011, you 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 > >>>>> > >>>>> > >>>> > ------------------------------------------------------------------------------ > >>>> BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA > >>>> The must-attend event for mobile developers. Connect with experts. > >>>> Get tools for creating Super Apps. See the latest technologies. > >>>> Sessions, hands-on labs, demos & much more. Register early & save! > >>>> http://p.sf.net/sfu/rim-blackberry-1 > >>>> _______________________________________________ > >>>> xmlpipedb-developer mailing list > >>>> xml...@li... > >>>> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > >>> > >> > ------------------------------------------------------------------------------ > >> BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA > >> The must-attend event for mobile developers. Connect with experts. > >> Get tools for creating Super Apps. See the latest technologies. > >> Sessions, hands-on labs, demos & much more. Register early & save! > >> http://p.sf.net/sfu/rim-blackberry-1 > >> _______________________________________________ > >> xmlpipedb-developer mailing list > >> xml...@li... > >> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > > <ATT00001..txt><ATT00002..txt> > > > > ------------------------------------------------------------------------------ > BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA > The must-attend event for mobile developers. Connect with experts. > Get tools for creating Super Apps. See the latest technologies. > Sessions, hands-on labs, demos & much more. Register early & save! > http://p.sf.net/sfu/rim-blackberry-1 > _______________________________________________ > xmlpipedb-developer mailing list > xml...@li... > https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > |
From: John D. N. D. <do...@lm...> - 2011-08-02 15:39:14
|
OK, cool, the changes look good. I committed some comments and little tweaks, mainly for style and succinctness reasons. The primary logic through-line was not touched. If you have any questions on those changes, we can discuss that sometime; those are secondary to the main-line issues that you mentioned. John David N. Dionisio, PhD Assistant Professor, Computer Science Loyola Marymount University On Aug 2, 2011, at 12:31 AM, Richard Brous wrote: > Just committed some new code. Mainly adding the logic to append the selected species with either generic or custom in the speciesDescriptionTextArea and cleared out more old comments to keep me focused. > > Also read through the first part of the ExportToGenMAPP class to get a handle on how it is sent the DatabaseProfile databaseProfile with a single species packaged within. From that effort, I decided to start on the databaseProfile.setSelectedSpeciesProfile method which would be modified for a collection of SpeciesProfiles. > > But I need to create that collection first back on ExportPanel1, proceeding the JList selection/display code. I just need to wrap my head around how to grab them and place them in a newly created SpeciesProfile [] selectedProfiles, which would then be used as the argument in databaseProfile.setSelectedSpeciesProfiles( selectedProfiles ); > > We can discuss this further on our call tomorrow. > > Richard > > > > > On Aug 1, 2011, at 11:13 AM, Kam Dahlquist <kda...@lm...> wrote: > >> Hi, >> >> That works for me. Talk to you tomorrow, >> Kam >> >> At 11:04 AM 8/1/2011, you wrote: >>> Greetings, >>> >>> No worries...for this week the best day turned out to be Tuesday; hope that works well for you also. So, tomorrow at 9am unless setting else comes up. >>> >>> John David N. Dionisio, PhD >>> Associate Professor, Computer Science >>> Loyola Marymount University >>> >>> >>> On Aug 1, 2011, at 10:46 AM, Kam Dahlquist <kda...@lm...> wrote: >>> >>>> Hi, >>>> >>>> I'm so sorry, I was on my "staycation" last week and just completely forgot about our scheduled phone call. >>>> >>>> I'm back in the office--what are the plans for this week's call? >>>> >>>> Thanks, >>>> Kam >>>> >>>> At 08:30 AM 7/28/2011, you 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 >>>>> >>>>> >>>> ------------------------------------------------------------------------------ >>>> BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA >>>> The must-attend event for mobile developers. Connect with experts. >>>> Get tools for creating Super Apps. See the latest technologies. >>>> Sessions, hands-on labs, demos & much more. Register early & save! >>>> http://p.sf.net/sfu/rim-blackberry-1 >>>> _______________________________________________ >>>> xmlpipedb-developer mailing list >>>> xml...@li... >>>> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer >>> >> ------------------------------------------------------------------------------ >> BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA >> The must-attend event for mobile developers. Connect with experts. >> Get tools for creating Super Apps. See the latest technologies. >> Sessions, hands-on labs, demos & much more. Register early & save! >> http://p.sf.net/sfu/rim-blackberry-1 >> _______________________________________________ >> xmlpipedb-developer mailing list >> xml...@li... >> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > <ATT00001..txt><ATT00002..txt> |
From: Richard B. <rbr...@gm...> - 2011-08-02 07:31:38
|
Just committed some new code. Mainly adding the logic to append the selected species with either generic or custom in the speciesDescriptionTextArea and cleared out more old comments to keep me focused. Also read through the first part of the ExportToGenMAPP class to get a handle on how it is sent the DatabaseProfile databaseProfile with a single species packaged within. From that effort, I decided to start on the databaseProfile.setSelectedSpeciesProfile method which would be modified for a collection of SpeciesProfiles. But I need to create that collection first back on ExportPanel1, proceeding the JList selection/display code. I just need to wrap my head around how to grab them and place them in a newly created SpeciesProfile [] selectedProfiles, which would then be used as the argument in databaseProfile.setSelectedSpeciesProfiles( selectedProfiles ); We can discuss this further on our call tomorrow. Richard On Aug 1, 2011, at 11:13 AM, Kam Dahlquist <kda...@lm...> wrote: Hi, That works for me. Talk to you tomorrow, Kam At 11:04 AM 8/1/2011, you wrote: Greetings, No worries...for this week the best day turned out to be Tuesday; hope that works well for you also. So, tomorrow at 9am unless setting else comes up. John David N. Dionisio, PhD Associate Professor, Computer Science Loyola Marymount University On Aug 1, 2011, at 10:46 AM, Kam Dahlquist <kda...@lm...> wrote: Hi, I'm so sorry, I was on my "staycation" last week and just completely forgot about our scheduled phone call. I'm back in the office--what are the plans for this week's call? Thanks, Kam At 08:30 AM 7/28/2011, you 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 ------------------------------------------------------------------------------ BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA The must-attend event for mobile developers. Connect with experts. Get tools for creating Super Apps. See the latest technologies. Sessions, hands-on labs, demos & much more. Register early & save! http://p.sf.net/sfu/rim-blackberry-1 _______________________________________________ xmlpipedb-developer mailing list xml...@li... https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer ------------------------------------------------------------------------------ BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA The must-attend event for mobile developers. Connect with experts. Get tools for creating Super Apps. See the latest technologies. Sessions, hands-on labs, demos & much more. Register early & save! http://p.sf.net/sfu/rim-blackberry-1 _______________________________________________ xmlpipedb-developer mailing list xml...@li... https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer |
From: Richard B. <rbr...@gm...> - 2011-08-01 18:37:57
|
ditto On Mon, Aug 1, 2011 at 11:13 AM, Kam Dahlquist <kda...@lm...> wrote: > Hi, > > That works for me. Talk to you tomorrow, > Kam > > > At 11:04 AM 8/1/2011, you wrote: > > Greetings, > > No worries...for this week the best day turned out to be Tuesday; hope that > works well for you also. So, tomorrow at 9am unless setting else comes up. > > John David N. Dionisio, PhD > Associate Professor, Computer Science > Loyola Marymount University > > > On Aug 1, 2011, at 10:46 AM, Kam Dahlquist <kda...@lm...> wrote: > > Hi, > > I'm so sorry, I was on my "staycation" last week and just completely forgot > about our scheduled phone call. > > I'm back in the office--what are the plans for this week's call? > > Thanks, > Kam > > At 08:30 AM 7/28/2011, you 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 > > > > ------------------------------------------------------------------------------ > BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA > The must-attend event for mobile developers. Connect with experts. > Get tools for creating Super Apps. See the latest technologies. > Sessions, hands-on labs, demos & much more. Register early & save! > http://p.sf.net/sfu/rim-blackberry-1 > _______________________________________________ > xmlpipedb-developer mailing list > xml...@li... > https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > > > > > ------------------------------------------------------------------------------ > BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA > The must-attend event for mobile developers. Connect with experts. > Get tools for creating Super Apps. See the latest technologies. > Sessions, hands-on labs, demos & much more. Register early & save! > http://p.sf.net/sfu/rim-blackberry-1 > _______________________________________________ > xmlpipedb-developer mailing list > xml...@li... > https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > > |
From: Kam D. <kda...@lm...> - 2011-08-01 18:13:43
|
Hi, That works for me. Talk to you tomorrow, Kam At 11:04 AM 8/1/2011, you wrote: >Greetings, > >No worries...for this week the best day turned out to be Tuesday; >hope that works well for you also. So, tomorrow at 9am unless >setting else comes up. > >John David N. Dionisio, PhD >Associate Professor, Computer Science >Loyola Marymount University > > >On Aug 1, 2011, at 10:46 AM, Kam Dahlquist ><<mailto:kda...@lm...>kda...@lm...> wrote: > >>Hi, >> >>I'm so sorry, I was on my "staycation" last week and just >>completely forgot about our scheduled phone call. >> >>I'm back in the office--what are the plans for this week's call? >> >>Thanks, >>Kam >> >>At 08:30 AM 7/28/2011, you wrote: >>>yes fri works for me. thank you! >>> >>>richard >>> >>>On Wed, Jul 27, 2011 at 9:42 PM, John David N. Dionisio >>><<mailto:do...@lm...>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 >>><<mailto:rbr...@gm...>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 >>>><<mailto:do...@lm...>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 >>>> <<mailto:do...@lm...>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 >>>> <<mailto:kda...@lm...>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 >>>> > >> <<mailto:do...@lm...>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 >>>> > >> <<mailto:rbr...@gm...>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" >>>> > >> <<mailto:do...@lm...>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" >>>> > >> <<mailto:do...@lm...>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 >>>> > >> <<mailto:do...@lm...>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>http://p.sf.net/sfu/splunk-d2d-c2 >>>> > >>>>>>>> _______________________________________________ >>>> > >>>>>>>> xmlpipedb-developer mailing list >>>> > >>>>>>>> >>>> <mailto:xml...@li...>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>http://p.sf.net/sfu/appsumosfdev2dev >>>> > >>>>>>> _______________________________________________ >>>> > >>>>>>> xmlpipedb-developer mailing list >>>> > >>>>>>> >>>> <mailto:xml...@li...>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>http://p.sf.net/sfu/appsumosfdev2dev >>>> > >>>>>> _______________________________________________ >>>> > >>>>>> xmlpipedb-developer mailing list >>>> > >>>>>> >>>> <mailto:xml...@li...>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/>http://www.accelacomm.com/jaw/sfnl/114/51385063/ >>>> >>>> > >>>>> _______________________________________________ >>>> > >>>>> xmlpipedb-developer mailing list >>>> > >>>>> >>>> <mailto:xml...@li...>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/>http://www.accelacomm.com/jaw/sfnl/114/51426210/ >>>> >>>> > >>> _______________________________________________ >>>> > >>> xmlpipedb-developer mailing list >>>> > >>> >>>> <mailto:xml...@li...>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/>http://www.accelacomm.com/jaw/sfnl/114/51426210/ >>>> >>>> > >> _______________________________________________ >>>> > >> xmlpipedb-developer mailing list >>>> > >> >>>> <mailto:xml...@li...>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/>http://www.accelacomm.com/jaw/sfnl/114/51426210/ >>>> >>>> > > _______________________________________________ >>>> > > xmlpipedb-developer mailing list >>>> > > >>>> <mailto:xml...@li...>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/>http://www.accelacomm.com/jaw/sfnl/114/51426210/ >>>> >>>> > _______________________________________________ >>>> > xmlpipedb-developer mailing list >>>> > >>>> <mailto:xml...@li...>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/>http://www.accelacomm.com/jaw/sfnl/114/51426253/ >>>> >>>>_______________________________________________ >>>>xmlpipedb-developer mailing list >>>><mailto:xml...@li...>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>http://p.sf.net/sfu/slashdot-survey >>>>_______________________________________________ >>>>xmlpipedb-developer mailing list >>>><mailto:xml...@li...>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>http://p.sf.net/sfu/slashdot-survey >>>_______________________________________________ >>>xmlpipedb-developer mailing list >>><mailto:xml...@li...>xml...@li... >>> >>>https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer >>> >>> >>------------------------------------------------------------------------------ >>BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA >>The must-attend event for mobile developers. Connect with experts. >>Get tools for creating Super Apps. See the latest technologies. >>Sessions, hands-on labs, demos & much more. Register early & save! >><http://p.sf.net/sfu/rim-blackberry-1>http://p.sf.net/sfu/rim-blackberry-1 >>_______________________________________________ >>xmlpipedb-developer mailing list >><mailto:xml...@li...>xml...@li... >>https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > |
From: John D. N. D. <do...@lm...> - 2011-08-01 18:05:14
|
Greetings, No worries...for this week the best day turned out to be Tuesday; hope that works well for you also. So, tomorrow at 9am unless setting else comes up. John David N. Dionisio, PhD Associate Professor, Computer Science Loyola Marymount University On Aug 1, 2011, at 10:46 AM, Kam Dahlquist <kda...@lm...> wrote: > Hi, > > I'm so sorry, I was on my "staycation" last week and just completely forgot about our scheduled phone call. > > I'm back in the office--what are the plans for this week's call? > > Thanks, > Kam > > At 08:30 AM 7/28/2011, you 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 >> >> >> > > ------------------------------------------------------------------------------ > BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA > The must-attend event for mobile developers. Connect with experts. > Get tools for creating Super Apps. See the latest technologies. > Sessions, hands-on labs, demos & much more. Register early & save! > http://p.sf.net/sfu/rim-blackberry-1 > _______________________________________________ > xmlpipedb-developer mailing list > xml...@li... > https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer |
From: Kam D. <kda...@lm...> - 2011-08-01 17:47:05
|
Hi, I'm so sorry, I was on my "staycation" last week and just completely forgot about our scheduled phone call. I'm back in the office--what are the plans for this week's call? Thanks, Kam At 08:30 AM 7/28/2011, you wrote: >yes fri works for me. thank you! > >richard > >On Wed, Jul 27, 2011 at 9:42 PM, John David N. Dionisio ><<mailto:do...@lm...>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 ><<mailto:rbr...@gm...>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 >><<mailto:do...@lm...>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 >> <<mailto:do...@lm...>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 >> <<mailto:kda...@lm...>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 >> > >> <<mailto:do...@lm...>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 >> > >> <<mailto:rbr...@gm...>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" >> > >> <<mailto:do...@lm...>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" >> > >> <<mailto:do...@lm...>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 >> > >> <<mailto:do...@lm...>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>http://p.sf.net/sfu/splunk-d2d-c2 >> > >>>>>>>> _______________________________________________ >> > >>>>>>>> xmlpipedb-developer mailing list >> > >>>>>>>> >> <mailto:xml...@li...>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>http://p.sf.net/sfu/appsumosfdev2dev >> > >>>>>>> _______________________________________________ >> > >>>>>>> xmlpipedb-developer mailing list >> > >>>>>>> >> <mailto:xml...@li...>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>http://p.sf.net/sfu/appsumosfdev2dev >> > >>>>>> _______________________________________________ >> > >>>>>> xmlpipedb-developer mailing list >> > >>>>>> >> <mailto:xml...@li...>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/>http://www.accelacomm.com/jaw/sfnl/114/51385063/ >> > >>>>> _______________________________________________ >> > >>>>> xmlpipedb-developer mailing list >> > >>>>> >> <mailto:xml...@li...>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/>http://www.accelacomm.com/jaw/sfnl/114/51426210/ >> > >>> _______________________________________________ >> > >>> xmlpipedb-developer mailing list >> > >>> >> <mailto:xml...@li...>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/>http://www.accelacomm.com/jaw/sfnl/114/51426210/ >> > >> _______________________________________________ >> > >> xmlpipedb-developer mailing list >> > >> >> <mailto:xml...@li...>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/>http://www.accelacomm.com/jaw/sfnl/114/51426210/ >> > > _______________________________________________ >> > > xmlpipedb-developer mailing list >> > > >> <mailto:xml...@li...>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/>http://www.accelacomm.com/jaw/sfnl/114/51426210/ >> > _______________________________________________ >> > xmlpipedb-developer mailing list >> > >> <mailto:xml...@li...>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/>http://www.accelacomm.com/jaw/sfnl/114/51426253/ >>_______________________________________________ >>xmlpipedb-developer mailing list >><mailto:xml...@li...>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>http://p.sf.net/sfu/slashdot-survey >>_______________________________________________ >>xmlpipedb-developer mailing list >><mailto:xml...@li...>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>http://p.sf.net/sfu/slashdot-survey >_______________________________________________ >xmlpipedb-developer mailing list ><mailto:xml...@li...>xml...@li... >https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > > > |
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> |
From: Richard B. <rbr...@gm...> - 2011-07-31 22:39:51
|
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 > |
From: John D. N. D. <do...@lm...> - 2011-07-29 07:16:40
|
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> |
From: Richard B. <rbr...@gm...> - 2011-07-29 06:05:47
|
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 >> >> > |
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 > > |