commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gnue geas/.cvsignore geas/doc/odmg.txt common/s...


From: Daniel E. Baumann
Subject: gnue geas/.cvsignore geas/doc/odmg.txt common/s...
Date: Mon, 11 Feb 2002 02:35:53 -0500

CVSROOT:        /cvsroot/gnue
Module name:    gnue
Changes by:     Daniel E. Baumann <address@hidden>      02/02/11 02:35:53

Modified files:
        geas           : .cvsignore 
        geas/doc       : odmg.txt 
Added files:
        common/src/dbdrivers/_pgsql: .cvsignore 
        common/src/dbdrivers/pypgsql: .cvsignore 
        designer/src/forms: .cvsignore 
        designer/src/navigator: .cvsignore 

Log message:
        Update the ODMG notes, ignore some files so my cvs up is purty ;).

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/common/src/dbdrivers/_pgsql/.cvsignore?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/common/src/dbdrivers/pypgsql/.cvsignore?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/.cvsignore?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/navigator/.cvsignore?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/geas/.cvsignore.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/geas/doc/odmg.txt.diff?tr1=1.4&tr2=1.5&r1=text&r2=text

Patches:
Index: gnue/geas/.cvsignore
diff -c gnue/geas/.cvsignore:1.2 gnue/geas/.cvsignore:1.3
*** gnue/geas/.cvsignore:1.2    Tue Jun 12 07:02:23 2001
--- gnue/geas/.cvsignore        Mon Feb 11 02:35:53 2002
***************
*** 28,33 ****
--- 28,34 ----
  ltconfig
  ltmain.sh
  stamp-h
+ stamp-h1
  stamp-h.in
  stamp.h
  version.h
Index: gnue/geas/doc/odmg.txt
diff -c gnue/geas/doc/odmg.txt:1.4 gnue/geas/doc/odmg.txt:1.5
*** gnue/geas/doc/odmg.txt:1.4  Fri Feb  8 01:14:32 2002
--- gnue/geas/doc/odmg.txt      Mon Feb 11 02:35:53 2002
***************
*** 96,102 ****
      - Associate_Professor is special case of Professor
      - subtype's interface can also be refined to specialize state and
      behavior 
!     - e.g, a Employee might have an operation for claculate_paycheck
      - Salaried_Employee and Hourly_Employee might each refine that
      behavior to 0 specific needs
      - polymorphic nature of object programming would enable to correct
--- 96,102 ----
      - Associate_Professor is special case of Professor
      - subtype's interface can also be refined to specialize state and
      behavior 
!     - e.g, a Employee might have an operation for calculate_paycheck
      - Salaried_Employee and Hourly_Employee might each refine that
      behavior to 0 specific needs
      - polymorphic nature of object programming would enable to correct
***************
*** 188,191 ****
        - a *simple key* consists of a single property
        - a *compound key* consists of a set of properties
        - the scope of uniqueness is the extent of the type; type must
!       have an extent to have a key
\ No newline at end of file
--- 188,444 ----
        - a *simple key* consists of a single property
        - a *compound key* consists of a set of properties
        - the scope of uniqueness is the extent of the type; type must
!       have an extent to have a key
! 
!   Objects
!   =======
!   - all objects are grouped into an enclosing module that defines a
!   name scope for the types of the model:
! 
!     module ODLTypes
!     {
!       exception DatabaseClosed{};
!       exception TransactionInProgress{};
!       exception TransactionsNotInProgress{};
!       exception IntegrityError{};
!       exception LockNotGranted{};
!   
!       // the following interfaces and classes are defined here
!     };
! 
!     Object Creation
!     ===============
!     - objects created by invoking creation operations on *factory
!     interfaces*
!     - the "new" operation causes the creation of a new instance of an
!     object of the "Object" type
! 
!       interface ObjectFactory
!       {
!         Object new();
!       };
! 
!     - All objects have following ODL interface which is implicitly
!       inherited by all user-defined types
! 
!       interface Object
!       {
!         enum    Lock_Type{read, write, upgrade};
! 
!         // Obtains a specific lock on an object. If an attempt is made
!         // to get a lock on an already locked object, this operation
!         // will block until the specified lock can be acquired, some
!         // time-out threshold is exceeded, or a transaction deadlock is
!         // detected. If the time-out threshold is crossed a 
!         // LockNotGranted exception is raised, If a transaction
!         // deadlock is detected, the transaction deadlock exception is raised.
!          void lock(in Lock_Type mode) raises(LockNotGranted);
! 
!         // Returns TRUE if specified lock was obtained and FALSE if
!         // the lock is in conflict with an existing lock on the object
!         boolean try_lock(in Lock_type mode);
! 
!         // Compares the identity of this object with another
!         boolean same_as(in Object anObject);
! 
!         // Creates a new object that is equivalent to the receiver
!         // object, the new object is not the "same_as" the original object
!         Object  copy();
! 
!         // Explicitly deletes an object from an ODMS by removing it
!         // from memory in addition to the ODMS
!         void    delete();
!       };
! 
!     - default ODMG locking policy is implicit, all ODMG object support
!       explicit locking operations
!     - IntergrityError exception is raised by operations on
!       relationships and signifies that referential integrity has
!       been violated
!     -  access, creation, modification, and deletion of persistent
!       objects must be done within scope of transaction
!     - if attempted outside transaction, TransactionNotInProgress
!       exception is raised
!     - it is assumed that all operations defined on persistent objects
!       have the ability to raise the TransactionNotInProgress exception
! 
!     Object Indentifiers
!     ===================
!     - all objects have identifiers, and object can always be
!     distinguished form all other objects within its *storage domain*
!     - all identifiers in an ODMS are unique, relative to each other
!     - representation of the of an object referred to as an *object
!     identifier*
!     - an object retains the same identifier throughout its entire life
!     time
!     - value of an object's identifier will never change
!     - object remains the same object even if its attribute values or
!     relationships change
!     - an oid is commonly used as a means for one object to reference
!     another
!     - literals do not have their own identifiers and cannot stand
!     alone as objects; they are embedded in objects can cannot be
!     individually referenced
!     - literals values are described as being constant
!     - literals are *immutable*; objects are *mutable*
!     - changing values of attributes of an object. or the relationships
!     in which it participates, does not change the identity of the
!     object
!     - OIDs are generated by the ODMS
!     - operation "same_as" is supported, which allows any 2 objects to
!     be compared
!  
!     Object Names
!     ============
!     - an object may be given one or two names that are meaningful to
!     the programmer or end user
!     - ODMS provides a function to map an object name to an object
!     - application can refer at its convience to an object by name;
!     ODMS applies the mapping function to determine the oid that
!     locates the desired object
!     - ODMS expects names to be commonly used by applications to refer
!     to "root" objects, which provide entry points into the ODMS
!     - object name, by contrast, not a defined type interface and does
!     not correspond to an objects property values
!     - scope of uniqueness of names is an ODMS
!     - Object Model does not include a notion of hierarchical names
!     within an ODMS or of name spaces that span ODMSs
! 
!     Object Lifetimes
!     ================
!     - 2 life times are supports in the Object Model:
!       - transient
!       - persistent
!     - *transient* is allocated memory that is managed by the
!     programming language runtime system
!     - when the process/procedure terminates that created the transient
!     object, the memory is deallocated
!     - *persistent* lifetime is allocated memory and storage managed by
!     the ODMS runtime system
!     - these objects continue to exist after the procedure or process
!     that creates them terminates
!     - object lifetimes are independent of type; type may have some
!     instances that are persistent and other that are transient
!     - because ODMG Object Model supports independence of type and
!     lifetime, both persistent and transient objects can be manipulated
!     using the same operations (i.e., OQL)
!     
!     Atomic Objects
!     ==============
!     - an atomic object type is user-defined; there are no built-in
!     atomic object types in the ODMG Object Model
!     
!     Collection Objects
!     ==================
!     - in ODMG Object Model, instances of *collection objects* are
!     composed of distinct elements, each of which can be an instance of
!     an atomic type, another collection, or a literal type
!     - *all* elements of the collection must be of the *same* type
!     - either all the same atomic type or all of the same type of
!     collection, or all of the same literal type
!     - collections supported by ODMG Object Model include:
!       - Set<t>
!       - Bag<t>
!       - List<t>
!       - Array<t>
!       - Dictionary<t,v>
!    - each of these is a type generator, parameterized by the type
!     shown within the angle bracket
!    - all the elements of a Set object are of the same type 't'
!    - all elements of a List object are of the same type 't'
!    - collections are created by invoking operations of the 'factory'
!     interfaces defined for each particular collection
! 
!      interface Collection: Object
!      {
!        exception             InvalidCollectionType{};
!        exception             ElementNotFound{};
! 
!        // Returns the number elements contained in the collection
!        unsigned long         cardinality();
! 
!        // These methods provide means for dynamically querying a collection to
!        // obtain its characteristics
!        boolean               is_empty();
!        boolean               is_ordered();
!        boolean               allows_duplicates();
! 
!        // These methods provide support for element management within a 
collection
!        boolean               contains_element(in Object element);
!        void                  insert_element(in Object element);
!        void                  remove_element(in Object element) 
raises(ElementNotFound);
! 
!        // These methods support the traversal of elements within a
!        // collection. Creates Iterators that support forward-only
!        // traversals on all collections and bidirectional traversals of
!        // ordered collections
!        Iterator              create_iterator(in boolean stable);
!        BidirectionalIterator create_bidirectional_iterator(in boolean
!        stable) raises(InvalidCollectionType);
! 
!        // These methods are used to evaluate OQL predicates upon a the
!        // contents of a collection. The boolean results of 'query' and
!        // 'exists_element' methods indicate whether any elements were
!        // found as a result of performing the OQL query
!        Object                 select_element(in string OQL_predicate);
!        Iterator               select(in string OQL_predicate);
!        boolean                query(in string OQL_predicate, 
!                                     inout Collection result);
!        boolean                exists_element(in string OQL_predicate);
!      };
! 
!     - Collection objects also inherit the operations in the Object
!       interface
!     - identity comparisons are done using the 'same_as' operation
!     - a 'copy' of a Collection returns a new shallow copy of the
!       collection
!     - 'delete' operation removes the collection from the ODMS, and if
!       the collection contains literals, also deletes the contents of
!       the collection, if the collection contains objects, the
!       collection remains unchanged 
! 
!     - an Iterator, which is a mechanism for accessing elements of a
!       Collection object, can be created to traverse the collection
! 
!       interface Iterator
!       {
!         exception NoMoreElements{};
!         exception InvalidCollectionType{};
! 
!         // Determines whether an iteration is safe from changes made
!         // to the collection during iteration, a stable iterator
!         // ensures that modifications made to a collection during
!         // iteration will not effect traversal, if an iterator is not
!         // stable, the iteration only supports retrieving elements from a
!         // collection during traversal, as changes made to the collection
!         // during iteration may result in missed elements or double
!         // processing of an element
!         boolean   is_stable();
! 
!         boolean   at_end();
!   
!         // Repositions the iterator to the first element in the iteration
!         void      reset();
!         
!         // Retrieves the element currently pointed to by the iterator
!         Object    get_element() raises(NoMoreElements);
! 
!         // Increments the iterator to the next element in the iteration
!         void      next_position() raises(NoMoreElements);
! 
!         // This is valid only when iterating over an Array or List, it
!         // replaces the element currently pointed to by the iterator with
!         // the argument object
!         void      replace_element(in Object element)
!                                   raises(InvalidCollectionType);
! 
!       };
! 
!       interface BidirectionalIterator: Iterator
!       {
!         boolean   at_beginning();
! 
!         // Decrements the iterator to the previous element in the iteration
!         void      previous_position() raises(NoMoreElements);
!       };
!                 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]