*/\r
package jalview.gui;\r
\r
+import java.security.interfaces.DSAKey;\r
+import java.text.ParseException;\r
import java.util.*;\r
+import java.util.List;\r
\r
import java.awt.*;\r
import java.awt.event.*;\r
import javax.swing.event.*;\r
import javax.swing.table.*;\r
\r
-import org.biojava.dasobert.dasregistry.*;\r
+import org.biodas.jdas.dassources.Capabilities;\r
+import org.biodas.jdas.dassources.utils.DasTimeFormat;\r
+import org.biodas.jdas.schema.sources.CAPABILITY;\r
+import org.biodas.jdas.schema.sources.COORDINATES;\r
+import org.biodas.jdas.schema.sources.MAINTAINER;\r
+import org.biodas.jdas.schema.sources.PROP;\r
+import org.biodas.jdas.schema.sources.SOURCE;\r
+import org.biodas.jdas.schema.sources.SOURCES;\r
+import org.biodas.jdas.schema.sources.VERSION;\r
+\r
import jalview.jbgui.*;\r
import jalview.util.*;\r
\r
public class DasSourceBrowser extends GDasSourceBrowser implements\r
Runnable, ListSelectionListener\r
{\r
- static DasSource[] dasSources = null;\r
+ static org.biodas.jdas.schema.sources.SOURCE[] dasSources = null;\r
\r
Hashtable localSources = null;\r
\r
Object[][] data = new Object[dSize][2];\r
for (int i = 0; i < dSize; i++)\r
{\r
- data[i][0] = dasSources[i].getNickname();\r
+ data[i][0] = dasSources[i]. // what's equivalent of nickname\r
data[i][1] = new Boolean(selectedSources.contains(dasSources[i]\r
.getNickname()));\r
}\r
worker.start();\r
}\r
\r
- private void setCapabilities(DasSource[] sources)\r
+ private boolean isLaterThan(String ref, String newer)\r
{\r
- Vector authority = new Vector();\r
- Vector type = new Vector();\r
- Vector label = new Vector();\r
-\r
- authority.addElement("Any");\r
- type.addElement("Any");\r
- label.addElement("Any");\r
+ Date refdate=null,newdate=null;\r
+ try {\r
+ refdate=DasTimeFormat.fromDASString(ref);\r
+ \r
+ }\r
+ catch (ParseException x)\r
+ {\r
+ return false;\r
+ }\r
+ try {\r
+ newdate = DasTimeFormat.fromDASString(newer);\r
+ }\r
+ catch (ParseException e) {\r
+ // TODO: handle exception\r
+ }\r
+ if (refdate!=null)\r
+ {\r
+ if (newdate!=null)\r
+ {\r
+ return refdate.before(newdate);\r
+ }\r
+ return false;\r
+ }\r
+ if (newdate!=null)\r
+ {\r
+ return true;\r
+ }\r
+ // assume first instance of source is newest in list. - TODO: check if natural ordering of source versions is newest first or oldest first\r
+ return false;\r
+ }\r
+ private void setCapabilities(SOURCE[] sources)\r
+ {\r
+ Vector<String> authority = new Vector<String>();\r
+ Vector<String> type = new Vector<String>();\r
+ Vector<String> label = new Vector<String>();\r
+ Vector<String> taxIds=new Vector<String>();\r
+ authority.add("Any");\r
+ type.add("Any");\r
+ label.add("Any");\r
+ \r
\r
for (int i = 0; i < sources.length; i++)\r
{\r
- DasSource ds = sources[i];\r
-\r
- DasCoordinateSystem[] dcs = ds.getCoordinateSystem();\r
-\r
- for (int j = 0; j < dcs.length; j++)\r
+ SOURCE ds = sources[i];\r
+ VERSION latest=null;\r
+ for (VERSION v:ds.getVERSION()) {\r
+ if (latest==null || isLaterThan(latest.getCreated(),v.getCreated()))\r
+ {\r
+ // TODO: das 1.6 - should just get the first version - ignore other versions since not specified how to construct URL from version's URI + source URI\r
+ latest=v;\r
+ }\r
+ }\r
+ \r
+ for (COORDINATES cs: latest.getCOORDINATES())\r
{\r
- if (!type.contains(dcs[j].getCategory()))\r
+ if (!type.contains(cs.getSource()))\r
{\r
- type.addElement(dcs[j].getCategory());\r
+ type.add(cs.getSource()); // source==category\r
}\r
\r
- if (!authority.contains(dcs[j].getName()))\r
+ if (!authority.contains(cs.getAuthority()))\r
{\r
- authority.addElement(dcs[j].getName());\r
+ authority.add(cs.getAuthority());\r
}\r
}\r
\r
- String[] slabels = ds.getLabels();\r
- for (int s = 0; s < slabels.length; s++)\r
+ for (PROP slabel:latest.getPROP())\r
{\r
- if (!label.contains(slabels[s]))\r
+ if (slabel.getName().equalsIgnoreCase("LABEL") && !label.contains(slabel.getValue()))\r
{\r
- label.addElement(slabels[s]);\r
+ label.add(slabel.getValue());\r
}\r
}\r
\r
filter1.setListData(authority);\r
filter2.setListData(type);\r
filter3.setListData(label);\r
+ // filter4 taxIds\r
\r
javax.swing.SwingUtilities.invokeLater(new Runnable()\r
{\r
{\r
int selectedRow = table.getSelectionModel().getMinSelectionIndex();\r
nickname = table.getValueAt(selectedRow, 0).toString();\r
- url = ((DasSource) localSources.get(nickname)).getUrl();\r
- seqsrc = ((DasSource) localSources.get(nickname))\r
- .hasCapability("sequence");\r
+ url = ((SOURCE) localSources.get(nickname)).getUri();\r
+ seqsrc = ((SOURCE) localSources.get(nickname)).getVERSION().get(0).getCAPABILITY().contains(Capabilities.SEQUENCE);\r
}\r
\r
JTextField nametf = new JTextField(nickname, 40);\r
urltf.setText(urltf.getText() + "/");\r
}\r
\r
- Das1Source local = new Das1Source();\r
+ // build using pattern from test: sourcesclientImplTest\r
+ {\r
+ SOURCE source = new SOURCE();\r
+ String uri = "http://das.sanger.ac.uk/das/dummysource";\r
+ source.setUri("http://das.sanger.ac.uk/das/dummysource");\r
+ source.setDescription("Dummy Test Source, should not be in a working registry sources doc");\r
+ VERSION version = new VERSION();\r
+ version.setUri(uri);\r
+ COORDINATES coord = new COORDINATES();\r
+ coord.setAuthority("NCBI");\r
+ coord.setSource("Chromosome");\r
+ coord.setTaxid("9606");\r
+ coord.setVersion("35");\r
+ version.getCOORDINATES().add(coord);\r
+ CAPABILITY cap = new CAPABILITY();\r
+ cap.setQueryUri(uri + "features");\r
+ cap.setType("das1:" + Capabilities.FEATURES.getName());\r
+ version.getCAPABILITY().add(cap);\r
+ source.getVERSION().add(version);\r
+ MAINTAINER m = new MAINTAINER();\r
+ m.setEmail("jw12@sanger.ac.uk");\r
+ source.setMAINTAINER(m);\r
+ source.setTitle("dummy title");\r
+\r
+ }\r
+ SOURCE local = new Das1Source();\r
\r
local.setUrl(urltf.getText());\r
local.setNickname(nametf.getText());\r