/[cvs]/nfo/perl/libs/Data/Storage.pm
ViewVC logotype

Diff of /nfo/perl/libs/Data/Storage.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4 by joko, Sun Oct 27 18:35:07 2002 UTC revision 1.5 by joko, Tue Oct 29 19:24:18 2002 UTC
# Line 7  Line 7 
7  #################################  #################################
8  #  #
9  #  $Log$  #  $Log$
10    #  Revision 1.5  2002/10/29 19:24:18  joko
11    #  - reduced logging
12    #  + added some pod
13    #
14  #  Revision 1.4  2002/10/27 18:35:07  joko  #  Revision 1.4  2002/10/27 18:35:07  joko
15  #  + added pod  #  + added pod
16  #  #
# Line 33  BEGIN { Line 37  BEGIN {
37  $Data::Storage::VERSION = 0.01;  $Data::Storage::VERSION = 0.01;
38  }  }
39    
40    
41  =head1 NAME  =head1 NAME
42    
43  Data::Storage - Interface for accessing various Storage implementations for Perl in an independent way  Data::Storage - Interface for accessing various Storage implementations for Perl in an independent way
# Line 76  use warnings; Line 81  use warnings;
81    
82  use Data::Storage::Locator;  use Data::Storage::Locator;
83    
84    my $TRACELEVEL = 0;
85    
86  # get logger instance  # get logger instance
87  my $logger = Log::Dispatch::Config->instance;  my $logger = Log::Dispatch::Config->instance;
88    
# Line 111  sub AUTOLOAD { Line 118  sub AUTOLOAD {
118    my $method = $AUTOLOAD;    my $method = $AUTOLOAD;
119    $method =~ s/^.*:://;    $method =~ s/^.*:://;
120    
121    # advanced logging of AUTOLOAD calls    # advanced logging of AUTOLOAD calls ...
122      my $logstring = "";    # ... nice but do it only when TRACING (TODO) is enabled
123      $logstring .= __PACKAGE__ . "[$self->{locator}->{type}]" . "->" . $method;      if ($TRACELEVEL) {
124      #print "count: ", $#_, "\n";        my $logstring = "";
125      #$logstring .= Dumper(@_) if ($#_ != -1);        $logstring .= __PACKAGE__ . "[$self->{locator}->{type}]" . "->" . $method;
126      my $tabcount = int( (80 - length($logstring)) / 10 );        #print "count: ", $#_, "\n";
127      $logstring .= "\t" x $tabcount . "(AUTOLOAD)";        #$logstring .= Dumper(@_) if ($#_ != -1);
128      # TODO: only ok if logstring doesn't contain        my $tabcount = int( (80 - length($logstring)) / 10 );
129      #            e.g. "Data::Storage[Tangram]->insert(SystemEvent=HASH(0x5c0034c))          (AUTOLOAD)"        $logstring .= "\t" x $tabcount . "(AUTOLOAD)";
130      # but that would be way too specific as long as we don't have an abstract handler for this  ;)        # TODO: only ok if logstring doesn't contain
131      $logger->debug( $logstring );        #            e.g. "Data::Storage[Tangram]->insert(SystemEvent=HASH(0x5c0034c))          (AUTOLOAD)"
132          # but that would be way too specific as long as we don't have an abstract handler for this  ;)
133          $logger->debug( $logstring );
134        }
135        
136    # filtering AUTOLOAD calls    # filtering AUTOLOAD calls
137    if ($self->_filter_AUTOLOAD($method)) {    if ($self->_filter_AUTOLOAD($method)) {
138      $self->_accessStorage();      $self->_accessStorage();
# Line 155  sub normalizeArgs { Line 165  sub normalizeArgs {
165  sub _accessStorage {  sub _accessStorage {
166    my $self = shift;    my $self = shift;
167    # TODO: to some tracelevel!    # TODO: to some tracelevel!
168    $logger->debug( __PACKAGE__ .  "[$self->{locator}->{type}]" . "->_accessStorage()" );    if ($TRACELEVEL) {
169        $logger->debug( __PACKAGE__ .  "[$self->{locator}->{type}]" . "->_accessStorage()" );
170      }
171    if (!$self->{STORAGEHANDLE}) {    if (!$self->{STORAGEHANDLE}) {
172      $self->_createStorageHandle();      $self->_createStorageHandle();
173    }    }
# Line 373  Data::Storage is free software. IT COMES Line 385  Data::Storage is free software. IT COMES
385      R retrieve  ->  no, not subject of this aspect since it is about deployment only      R retrieve  ->  no, not subject of this aspect since it is about deployment only
386      U update    ->  yes, just by user-interaction; maybe automatically if it can be determined that data wouldn't be lost      U update    ->  yes, just by user-interaction; maybe automatically if it can be determined that data wouldn't be lost
387      D delete    ->  yes, just by user-interaction      D delete    ->  yes, just by user-interaction
388    It's all about not to be able to loose data simply while this is in alpha stage.    
389      It's all about not to be able to loose data simply while this is in pre-alpha stage.
390      And loosing data by being able to modify and redeploy schemas easily is definitely quite easy.
391      
392      As we can see, creations of Classes and new Class variables is handled
393      automatically and this is believed to be the most common case under normal circumstances.
394    
395    
396  =head2 Introduce some features:  =head2 Introduce some features:
397    
398    Get this stuff together with UML (Unified Modeling Language) and/or standards from ODMG.    - Get this stuff together with UML (Unified Modeling Language) and/or standards from ODMG.
399    Make it possible to load/save schemas in XMI (XML Metadata Interchange),    - Make it possible to load/save schemas in XMI (XML Metadata Interchange),
400    which seems to be most commonly used today, perhaps handle objects with OIFML.      which seems to be most commonly used today, perhaps handle objects with OIFML.
401    Integrate/bundle this with a web-/html-based UML modeling tool or      Integrate/bundle this with a web-/html-based UML modeling tool or
402    some other interesting stuff like the "Co-operative UML Editor" from Uni Darmstadt. (web-/java-based)      some other interesting stuff like the "Co-operative UML Editor" from Uni Darmstadt. (web-/java-based)
403    Enable Round Trip Engineering. Keep code and diagrams in sync. Don't annoy/bother the programmer.    - Enable Round Trip Engineering. Keep code and diagrams in sync. Don't annoy/bother the programmers.
404      - Add some more handlers:
405        - look at DBD::CSV, Text::CSV, XML::CSV, XML::Excel
406      - Add some more locations/locators:
407        - PerlDAV: http://www.webdav.org/perldav/
408      - Move to t3, use InCASE
409    
410    
411  =head3 Links:  =head3 Links:
412    
413      Specs:
414      UML 1.3 Spec: http://cgi.omg.org/cgi-bin/doc?ad/99-06-08.pdf      UML 1.3 Spec: http://cgi.omg.org/cgi-bin/doc?ad/99-06-08.pdf
415      XMI 1.1 Spec: http://cgi.omg.org/cgi-bin/doc?ad/99-10-02.pdf      XMI 1.1 Spec: http://cgi.omg.org/cgi-bin/doc?ad/99-10-02.pdf
416      XMI 2.0 Spec: http://cgi.omg.org/docs/ad/01-06-12.pdf      XMI 2.0 Spec: http://cgi.omg.org/docs/ad/01-06-12.pdf
417      ODMG: http://odmg.org/      ODMG: http://odmg.org/
418      OIFML: http://odmg.org/library/readingroom/oifml.pdf      OIFML: http://odmg.org/library/readingroom/oifml.pdf
     Co-operative UML Editor: http://www.darmstadt.gmd.de/concert/activities/internal/umledit.html  
419    
420    further readings:    CASE Tools:
421        Rational Rose (commercial): http://www.rational.com/products/rose/
422        Together (commercial): http://www.oi.com/products/controlcenter/index.jsp
423        InCASE - Tangram-based Universal Object Editor
424        Sybase PowerDesigner: http://www.sybase.com/powerdesigner
425      
426      UML Editors:
427        Fujaba (free, university): http://www.fujaba.de/
428        ArgoUML (free): http://argouml.tigris.org/
429        Poseidon (commercial): http://www.gentleware.com/products/poseidonDE.php3
430        Co-operative UML Editor (research): http://www.darmstadt.gmd.de/concert/activities/internal/umledit.html
431        Metamill (commercial): http://www.metamill.com/
432        Violet (university, research, education): http://www.horstmann.com/violet/
433        PyUt (free): http://pyut.sourceforge.net/
434        (Dia (free): http://www.lysator.liu.se/~alla/dia/)
435        UMLet (free, university): http://www.swt.tuwien.ac.at/umlet/index.html
436        Voodoo (free): http://voodoo.sourceforge.net/
437    
438      UML Tools:
439        http://www.objectsbydesign.com/tools/umltools_byPrice.html
440    
441      Further readings:
442      http://www.google.com/search?q=web+based+uml+editor&hl=en&lr=&ie=UTF-8&oe=UTF-8&start=10&sa=N      http://www.google.com/search?q=web+based+uml+editor&hl=en&lr=&ie=UTF-8&oe=UTF-8&start=10&sa=N
443      http://www.fernuni-hagen.de/DVT/Aktuelles/01FHHeidelberg.pdf      http://www.fernuni-hagen.de/DVT/Aktuelles/01FHHeidelberg.pdf
444      http://www.enhyper.com/src/documentation/      http://www.enhyper.com/src/documentation/
# Line 403  Data::Storage is free software. IT COMES Line 446  Data::Storage is free software. IT COMES
446      http://citeseer.nj.nec.com/vilain00diagrammatic.html      http://citeseer.nj.nec.com/vilain00diagrammatic.html
447      http://archive.devx.com/uml/articles/Smith01/Smith01-3.asp      http://archive.devx.com/uml/articles/Smith01/Smith01-3.asp
448    
   maybe useful for / to be integrated with:  
     ArapXML: http://xml.coverpages.org/ni2001-09-24-b.html  

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed