[Biojava-l] SequenceDBInstallation

Gerald Loeffler Gerald.Loeffler@vienna.at
Mon, 03 Jul 2000 20:22:28 +0200


This is a multi-part message in MIME format.
--------------5EDBE52F55F8D097795F69E5
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hi!

We need factories for SequenceDB objects and we need managers for
SequenceDB objects such that e.g. there is only exactly one SequenceDB
object that accesses the SwissProt flat file /data/sprot/sprot.dat.

I attach 2 files: SequenceDBInstallation is an interface that defines
such a factory/manager for SequenceDB objects. It is very short and
documented rigorously, so please have a look at it for a more detailed
explanation why we need it. File StupidSequenceDBInstallation.java
contains an implementation of this interface for testing purposes.

Once interface SequenceDBInstallation is in place and implemented
widely, we should be able to do things like this:

SequenceDBInstallation inst = new SRSSequenceDBInstallation();
// or inst = new CorbaSequenceDBInstallation("bsa_naming_context");
// or inst = new FASTAFileSequenceDBInstallation("/data/sequences/");
SequenceDB sprot     = inst.getSequenceDB("swissprot");
Sequence   important = sprot.getSequence("FOO_DROME");

	what do you think?,
	cheers,
	gerald
-- 
   Gerald.Loeffler@vienna.at _________________ Software Architect
   http://www.imp.univie.ac.at ____ http://www.daemonstration.com
   OOA&D, Java, J2EE, JSP, Servlets, JavaBeans, ODBMS, RDBMS, XML
--------------5EDBE52F55F8D097795F69E5
Content-Type: application/x-unknown-content-type-java_auto_file;
 name="SequenceDBInstallation.java"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="SequenceDBInstallation.java"

cGFja2FnZSBvcmcuYmlvamF2YS5iaW8uc2VxOwoKaW1wb3J0IGphdmEudXRpbC5TZXQ7Cgov
KioKICogQSBTZXF1ZW5jZURCSW5zdGFsbGF0aW9uIGhhcyB0aGUgZnVuY3Rpb25hbGl0eSBv
ZiBhIGZhY3RvcnkgZm9yIFNlcXVlbmNlREIgb2JqZWN0cyBhcmUgYWRkaXRpb25hbGx5IG1h
bmFnZXMgdGhlCiAqIFNlcXVlbmNlREIgb2JqZWN0cyBjcmVhdGVkIGJ5IGl0c2VsZiBzdWNo
IHRoYXQgdGhlIG1pbmltdW0gbnVtYmVyIG9mIFNlcXVlbmNlREIgb2JqZWN0cyBpcyBjcmVh
dGVkIGJ5IGEgcGFydGljdWxhcgogKiBTZXF1ZW5jZURCSW5zdGFsbGF0aW9uIG9iamVjdC4K
ICogPHA+CiAqIFRoZSBpZGVhIGJlaGluZCB0aGlzIGludGVyZmFjZSBpcyB0aGF0IHNlcXVl
bmNlIGRhdGFiYXNlcyBhcmUgdXN1YWxseSBpbnN0YWxsZWQgaW4gZ3JvdXBzLiBFLmcuLCB0
aGVyZSBtaWdodCBiZSBhCiAqIGRpcmVjdG9yeSB3aGljaCBjb250YWlucyBGQVNUQS1mb3Jt
YXRlZCBzZXF1ZW5jZSBmaWxlcyBmb3IgRU1CTCBhbmQgU3dpc3NQcm90LCBvciB0aGVyZSBt
aWdodCBiZSBhbgogKiBTUlMtaW5zdGFsbGF0aW9uIHRoYXQgcHJvdmlkZXMgYWNjZXNzIHRv
IEdlbkJhbmsgYW5kIFN3aXNzUHJvdCBvciB0aGVyZSBtaWdodCBiZSBhIHJlbGF0aW9uYWwg
ZGF0YWJhc2UgdGhhdCBjYW4gYmUKICogcXVlcmllZCBmb3IgR2VuQmFuaywgUElSIGFuZCBT
d2lzc1Byb3QgZW50cmllcy4gVGhlc2UgMyBjYXNlcyB3b3VsZCBiZSByZXByZXNlbnRlZCB0
aHJvdWdoIDMgZGlzdGluY3QKICogU2VxdWVuY2VEQkluc3RhbGxhdGlvbiBvYmplY3RzLiBF
YWNoIG9mIHRoZXNlIG9iamVjdHMgY2FuIGJlIHF1ZXJpZWQgZm9yIHRoZSBzZXQgb2YgU2Vx
dWVuY2VEQiBvYmplY3RzIGl0IHN1cHBvcnRzLAogKiBvciBhIHBhcnRpY3VsYXIgU2VxdWVu
Y2VEQiBvYmplY3QgY2FuIGJlIHJldHJpZXZlZCBmcm9tIGEgU2VxdWVuY2VEQkluc3RhbGxh
dGlvbiBvYmplY3QgdGhyb3VnaCBhIHN0cmluZyBpZGVudGlmaWVyLgogKiBBbGwgU2VxdWVu
Y2VEQiBvYmplY3RzIHRoYXQgYmVsb25nIHRvIGEgcGFydGljdWxhciBTZXF1ZW5jZURCSW5z
dGFsbGF0aW9uIHNoYXJlIHRoZSBzYW1lIHdheSBvZiByZXRyaWV2aW5nIHNlcXVlbmNlcwog
KiBhbmQgd2lsbCBoZW5jZSBiZSBjb25zdHJ1Y3RlZCBhbmQgY29uZmlndXJlZCBpbiBhIHZl
cnkgc2ltaWxhciBmYXNoaW9uIC0gd2hpY2ggaXMgdGhlIHByaW1hcnkgcmVhc29uIGZvciBp
bnZlbnRpbmcKICogdGhlIFNlcXVlbmNlREJJbnN0YWxsYXRpb24gb2JqZWN0IHdoaWNoIGNh
biBhY3QgYXMgYSBmYWN0b3J5IGZhY3RvcnkgZm9yIFNlcXVlbmNlREIgb2JqZWN0cy4KICog
PHA+CiAqIEEgU2VxdWVuY2VEQkluc3RhbGxhdGlvbiBvYmplY3QgYWxzbyBtYW5hZ2VzIHRo
ZSBTZXF1ZW5jZURCIG9iamVjdHMgaXQgaGFzIGNyZWF0ZWQgc28gdGhhdCByZXF1ZXN0cyBm
b3IgdGhlIHNhbWUKICogZGF0YWJhc2UgKHNheSBTd2lzc1Byb3QpIHdpbGwgYWx3YXlzIHJl
dHVybiB0aGUgc2FtZSBTZXF1ZW5jZURCIG9iamVjdC4gVGhpcyBiZWNvbWVzIHBhcnRpY3Vs
YXJseSBpbXBvcnRhbnQgd2hlbgogKiBTZXF1ZW5jZURCIG9iamVjdHMgYWxsb3cgdGhlIG1v
ZGlmaWNhdGlvbiAoY3JlYXRlL3VwZGF0ZS9kZWxldGUgb2YgU2VxdWVuY2UgZW50cmllcykg
b2YgdGhlIHVuZGVybHlpbmcgc2VxdWVuY2UKICogZGF0YWJhc2UgYW5kIHRoaXMgc2VxdWVu
Y2UgImRhdGFiYXNlIiBpcyBub3QgdHJhbnNhY3Rpb25hbCBpbiBpdHNlbGYgKHN1Y2ggYXMg
YSBGQVNUQSBmaWxlKS4gQmVjYXVzZSBpbiB0aGlzIGNhc2UKICogdGhlIFNlcXVlbmNlREIg
b2JqZWN0IG11c3QgYWN0IGFzIGEgdHJhbnNhY3Rpb25hbCBmcm9udC1lbmQgdG8gdGhlIHNl
cXVlbmNlIGRhdGFiYXNlIGFuZCB0aGVyZSBzaG91bGQgcmVhbGx5IGJlCiAqIG9ubHkgb25l
IFNlcXVlbmNlREIgb2JqZWN0IGZvciBlYWNoIHNlcXVlbmNlIGRhdGFiYXNlIC0gd2hpY2gg
aXMgZW5zdXJlZCBieSBTZXF1ZW5jZURCSW5zdGFsbGF0aW9uLgogKgogKiBAYXV0aG9yIDxB
IGhyZWY9Im1haWx0bzpHZXJhbGQuTG9lZmZsZXJAdmllbm5hLmF0Ij5HZXJhbGQgTG9lZmZs
ZXI8L0E+IGZvciB0aGUgCiAqICAgICAgICAgPEEgaHJlZj0iaHR0cDovL3d3dy5pbXAudW5p
dmllLmFjLmF0Ij5JTVA8L0E+CiAqLwpwdWJsaWMgaW50ZXJmYWNlIFNlcXVlbmNlREJJbnN0
YWxsYXRpb24gewogIC8qKgogICAqIHJldHVybiBhbGwgc2VxdWVuY2UgZGJzIGF2YWlsYWJs
ZSBpbiB0aGlzIHNlcXVlbmNlIGRiIGluc3RhbGxhdGlvbi4gVGhpcyBpcyBub3QganVzdCB0
aGUgc2V0IG9mIHNlcXVlbmNlIGRicwogICAqIGFscmVhZHkgcmV0dXJuZWQgYnkgZ2V0U2Vx
dWVuY2VEQigpIGJ1dCB0aGUgZW50aXJlIHNldCBvZiBzZXF1ZW5jZSBkYnMgc3VwcG9ydGVk
IGJ5IHRoaXMgb2JqZWN0LgogICAqCiAgICogQHJldHVybiBhIHNldCBvZiBTZXF1ZW5jZURC
IG9iamVjdHMgd2hpY2ggbWF5IGJlIGVtcHR5LiBBbiBpbXBsZW1lbnRhdGlvbiBtYXkgYWxz
byByZXR1cm4gbnVsbCBpZiBpdCBpcyBub3QgYXQgYWxsCiAgICogICAgICAgICBwb3NzaWJs
ZSB0byBkZXRlcm1pbmUgd2hpY2ggc2VxdWVuY2UgZGJzIGFyZSBwYXJ0IG9mIHRoaXMgaW5z
dGFsbGF0aW9uLgogICAqLwogIFNldCBnZXRTZXF1ZW5jZURCcygpOwoKICAvKioKICAgKiBy
ZXR1cm4gdGhlIFNlcXVlbmNlREIgZm9yIHRoZSBnaXZlbiBpZGVudGlmaWVyLiBUaGUgaWRl
bnRpZmllciBjYW4gYmUgYnV0IG5lZWQgbm90IGJlIHRoZSBuYW1lIG9mIHRoZSBzZXF1ZW5j
ZSBkYi4KICAgKiBBbiBpbXBsZW1lbnRhdGlvbiBtYXkgc3VwcG9ydCBhbnkgbnVtYmVyIG9m
IGlkZW50aWZpZXJzIHRvICh1bmlxdWVseSkgaWRlbnRpZnkgYSBwYXJ0aWN1bGFyIHNlcXVl
bmNlIGRiIC0gYnV0IHRoZQogICAqIG5hbWUgb2YgdGhlIHNlcXVlbmNlIGRiIChyZXR1cm5l
ZCBieSBTZXF1ZW5jZURCLmdldE5hbWUoKSkgc2hvdWxkIGFsd2F5cyBiZSBhbW9uZyB0aGVt
LgogICAqIDxwPgogICAqIElmIHRoZSBzZXF1ZW5jZSBkYiBpZGVudGlmaWVkIGJ5IHRoZSBn
aXZlbiBpZGVudGlmaWVyIGhhcyBub3QgYmVlbiByZXF1ZXN0ZWQgdGhyb3VnaCB0aGlzIG9i
amVjdCwgaXQgd2lsbCBiZQogICAqIGNyZWF0ZWQgYW5kIHJldHVybmVkIChoZW5jZSB0aGlz
IG1ldGhvZCBpcyBhIGZhY3RvcnkgbWV0aG9kKS4gSWYgdGhlIHNlcXVlbmNlIGRiIGlkZW50
aWZpZWQgYnkgdGhlIGdpdmVuIGlkZW50aWZpZXIKICAgKiBoYXMgYWxyZWFkeSBiZWVuIHJl
cXVlc3RlZCwgdGhlIHNhbWUgb2JqZWN0IGlzIHJldHVybmVkLgogICAqCiAgICogQHBhcmFt
IGlkZW50aWZpZXIgdGhlIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHNlcXVlbmNlIGRi
LiBNYXkgbm90IGJlIG51bGwuCiAgICogQHJldHVybiB0aGUgU2VxdWVuY2VEQiBvYmplY3Qg
dGhhdCBtYXRjaGVzIHRoZSBnaXZlbiBpZGVudGlmaWVyIG9yIG51bGwgaWYgbm8gc3VjaCBT
ZXF1ZW5jZURCIG9iamVjdCBjb3VsZCBiZQogICAqICAgICAgICAgZm91bmQuIChJdCBpcyB0
aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGltcGxlbWVudGF0aW9uIHRvIHRha2UgY2FyZSB0
aGF0IGFsbCBpZGVudGlmaWVycyBhcmUgdW5pcXVlIHNvCiAgICogICAgICAgICBpZiBpdCB0
dXJucyBvdXQgdGhhdCB0aGUgZ2l2ZW4gaWRlbnRpZmllciBpZGVudGlmaWVzIG1vcmUgdGhh
biBvbmUgc2VxdWVuY2UgZGIsIHRoaXMgbWV0aG9kIHNob3VsZCB0aHJvdwogICAqICAgICAg
ICAgYSBSdW50aW1lRXhjZXB0aW9uLikKICAgKi8KICBTZXF1ZW5jZURCIGdldFNlcXVlbmNl
REIoU3RyaW5nIGlkZW50aWZpZXIpOwp9Cg==
--------------5EDBE52F55F8D097795F69E5
Content-Type: application/x-unknown-content-type-java_auto_file;
 name="StupidSequenceDBInstallation.java"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="StupidSequenceDBInstallation.java"

cGFja2FnZSBvcmcuYmlvamF2YS5iaW8uc2VxOwoKaW1wb3J0IGNvbS5kYWVtb25zdHJhdGlv
bi5jb250cmFjdC5Db250cmFjdDsKaW1wb3J0IGNvbS5kYWVtb25zdHJhdGlvbi51dGlsLk9i
amVjdFV0aWw7CgppbXBvcnQgb3JnLmxvZzRqLkNhdGVnb3J5OwoKaW1wb3J0IGphdmEudXRp
bC4qOwoKLyoqCiAqIHRoaXMgY2xhc3MgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgaW50ZXJm
YWNlIFNlcXVlbmNlREJJbnN0YWxsYXRpb24gdGhhdCBpcyBvZiB1c2Ugb25seSBmb3IgdGVz
dGluZyBwdXJwb3Nlcy4gRm9yCiAqIGVhY2ggc2VxdWVuY2UgZGIgcmVxdWVzdGVkIHVzaW5n
IGFuIGlkZW50aWZpZXIgaXQgaGFzIG5vdCBzZWVuIHlldCAodXNpbmcgZ2V0U2VxdWVuY2VE
QigpKSBpdCBjcmVhdGVzIGEgbmV3IChhbmQKICogZW1wdHkpIEhhc2hTZXF1ZW5jZURCIG9i
amVjdCBhbmQgcmV0dXJucyBpdC4KICoKICogQGF1dGhvciA8QSBocmVmPSJtYWlsdG86R2Vy
YWxkLkxvZWZmbGVyQHZpZW5uYS5hdCI+R2VyYWxkIExvZWZmbGVyPC9BPiBmb3IgdGhlIAog
KiAgICAgICAgIDxBIGhyZWY9Imh0dHA6Ly93d3cuaW1wLnVuaXZpZS5hYy5hdCI+SU1QPC9B
PgogKi8KcHVibGljIGNsYXNzIFN0dXBpZFNlcXVlbmNlREJJbnN0YWxsYXRpb24gaW1wbGVt
ZW50cyBTZXF1ZW5jZURCSW5zdGFsbGF0aW9uIHsKICBwcml2YXRlIHN0YXRpYyBmaW5hbCBD
YXRlZ29yeSBsb2dnZXIgPSBDYXRlZ29yeS5nZXRJbnN0YW5jZShTdHVwaWRTZXF1ZW5jZURC
SW5zdGFsbGF0aW9uLmNsYXNzLmdldE5hbWUoKSk7CgogIHByaXZhdGUgTWFwIHNlcXVlbmNl
REJCeUlkZW50aWZpZXIgPSBuZXcgSGFzaE1hcCgpOwogIAogIC8qKgogICAqIGFsd2F5cyBy
ZXR1cm5zIG51bGwgYmVjYXVzZSBhbiBvYmplY3Qgb2YgdGhpcyBjbGFzcyBjYW4gZ2V0IGFu
eSBkZXNpcmVkIHNlcXVlbmNlIERCLgogICAqLwogIHB1YmxpYyBTZXQgZ2V0U2VxdWVuY2VE
QnMoKSB7CiAgICByZXR1cm4gbnVsbDsKICB9CgogIC8qKgogICAqIGlmIHRoZSBnaXZlbiBp
ZGVudGlmaWVyIGhhcyBiZWVuIHVzZWQgYmVmb3JlIHRvIGdldCBhIHNlcXVlbmNlIGRiLCB0
aGUgc2FtZSBvYmplY3QgaXMgYWdhaW4gcmV0dXJuZWQuIElmIGhvd2V2ZXIsCiAgICogdGhl
IGdpdmVuIGlkZW50aWZpZXIgaGFzIG5vdCBiZWVuIHNlZW4gYnkgdGhpcyBtZXRob2QgZm9y
IHRoaXMgb2JqZWN0IHlldCwgYSBuZXdseSBjcmVhdGVkIEhhc2hTZXF1ZW5jZURCIGlzCiAg
ICogcmV0dXJuZWQuCiAgICovCiAgcHVibGljIFNlcXVlbmNlREIgZ2V0U2VxdWVuY2VEQihT
dHJpbmcgaWRlbnRpZmllcikgewogICAgQ29udHJhY3QucHJlKGlkZW50aWZpZXIgIT0gbnVs
bCwgImlkZW50aWZpZXIgbm90IG51bGwiKTsKCiAgICBTZXF1ZW5jZURCIGRiID0gKFNlcXVl
bmNlREIpIHRoaXMuc2VxdWVuY2VEQkJ5SWRlbnRpZmllci5nZXQoaWRlbnRpZmllcik7CiAg
ICBpZiAoZGIgPT0gbnVsbCkgewogICAgICBkYiA9IG5ldyBIYXNoU2VxdWVuY2VEQigpOwog
ICAgICB0aGlzLnNlcXVlbmNlREJCeUlkZW50aWZpZXIucHV0KGlkZW50aWZpZXIsIGRiKTsK
ICAgIH0KCiAgICByZXR1cm4gZGI7CiAgfQoKICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkg
ewogICAgcmV0dXJuICJTdHVwaWRTZXF1ZW5jZURCSW5zdGFsbGF0aW9uIjsKICB9CiAgCiAg
cHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvKSB7CiAgICBpZiAobyA9PSB0aGlzKSBy
ZXR1cm4gdHJ1ZTsKICAgIAogICAgLy8gaWYgdGhpcyBjbGFzcyBpcyBhIGRpcmVjdCBzdWIt
Y2xhc3Mgb2YgT2JqZWN0OgogICAgaWYgKG8gPT0gbnVsbCkgcmV0dXJuIGZhbHNlOwogICAg
aWYgKCFvLmdldENsYXNzKCkuZXF1YWxzKHRoaXMuZ2V0Q2xhc3MoKSkpIHJldHVybiBmYWxz
ZTsKICAgIAogICAgU3R1cGlkU2VxdWVuY2VEQkluc3RhbGxhdGlvbiB0aGF0ID0gKFN0dXBp
ZFNlcXVlbmNlREJJbnN0YWxsYXRpb24pIG87CiAgICAKICAgIC8vIG9ubHkgY29tcGFyZSBm
aWVsZHMgb2YgdGhpcyBjbGFzcyAobm90IG9mIHN1cGVyLWNsYXNzZXMpOgogICAgaWYgKCFP
YmplY3RVdGlsLmVxdWFscyh0aGlzLnNlcXVlbmNlREJCeUlkZW50aWZpZXIsIHRoYXQuc2Vx
dWVuY2VEQkJ5SWRlbnRpZmllcikpIHJldHVybiBmYWxzZTsKICAgIAogICAgLy8gdGhpcyBh
bmQgdGhhdCBhcmUgaWRlbnRpY2FsIGlmIHdlIG1hZGUgaXQgJ3RpbCBoZXJlCiAgICByZXR1
cm4gdHJ1ZTsKICB9CiAgCiAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKICAgIC8vIGlmIHRo
aXMgY2xhc3MgaXMgYSBkaXJlY3Qgc3ViLWNsYXNzIG9mIE9iamVjdDoKICAgIGludCBoYyA9
IDA7CgogICAgLy8gb25seSB0YWtlIGludG8gYWNjb3VudCBmaWVsZHMgb2YgdGhpcyBjbGFz
cyAobm90IG9mIHN1cGVyLWNsYXNzKToKICAgIGhjID0gT2JqZWN0VXRpbC5oYXNoQ29kZSho
Yywgc2VxdWVuY2VEQkJ5SWRlbnRpZmllcik7CgogICAgcmV0dXJuIGhjOwogIH0KfQo=
--------------5EDBE52F55F8D097795F69E5--