Ignore:
Timestamp:
Dec 9, 2010, 9:12:10 PM (9 years ago)
Author:
robert@…
Message:

Added an export and import functionality for templates, as described in ticket #76

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/domain/dbnp/studycapturing/TemplateField.groovy

    r1213 r1257  
    366366        }
    367367
     368
     369        /**
     370         * Check whether the contents of the other templatefield and the current templatefield are equal.
     371         * For this check the comments field doesn't matter.
     372         *
     373         * @return      true iff this template field equals the other template field
     374         *                      (the comments field may be different)
     375         */
     376        public boolean contentEquals( Object otherObject ) {
     377                if( !( otherObject instanceof TemplateField ) )
     378                        return false
     379
     380                TemplateField otherField = (TemplateField) otherObject;
     381
     382                if( otherField == this )
     383                        return true
     384
     385                if( otherField == null )
     386                        return false
     387
     388                if( otherField.entity != this.entity ) {
     389                        return false
     390                }
     391                if( otherField.name != this.name ) {
     392                        return false
     393                }
     394                if( otherField.type != this.type ) {
     395                        return false
     396                }
     397                if( otherField.unit != this.unit ) {
     398                        return false
     399                }
     400                if( otherField.required != this.required ) {
     401                        return false
     402                }
     403
     404                if( otherField.preferredIdentifier != this.preferredIdentifier ) {
     405                        return false
     406                }
     407
     408                // Check whether the list entries are equal (except for the order)
     409                def size1 = otherField.listEntries?.size() ?: 0
     410                def size2 = this.listEntries?.size() ?: 0
     411                if( size1 != size2 ) {
     412                        return false
     413                }
     414               
     415                if( otherField.listEntries != null && this.listEntries != null ) {
     416                        for( def entry in this.listEntries ) {
     417                                def entryFound = false;
     418                                for( def otherEntry in otherField.listEntries ) {
     419                                        if( otherEntry.name == entry.name ) {
     420                                                entryFound = true;
     421                                                break
     422                                        }
     423                                }
     424
     425                                if( !entryFound ) {
     426                                        return false
     427                                }
     428                        }
     429                }
     430               
     431                // Check whether the ontologies are equal (except for the order)
     432                size1 = otherField.ontologies?.size() ?: 0
     433                size2 = this.ontologies?.size() ?: 0
     434                if( size1 != size2 ) {
     435                        return false
     436                }
     437                if( this.ontologies != null && otherField.ontologies != null ) {
     438                        for( def ontology in this.ontologies ) {
     439                                if( !otherField.ontologies.contains( ontology ) ) {
     440                                        return false
     441                                }
     442                        }
     443                }
     444               
     445                // If all tests pass, the objects are content-equal
     446                return true
     447        }
     448
     449        /**
     450         * Create a new template field based on the parsed XML object.
     451         *
     452         * @see grails.converters.XML#parse(java.lang.String)
     453         * @throws IllegalArgumentException
     454         */
     455        public static parse(Object xmlObject, Class entity) {
     456                def t = new TemplateField();
     457
     458                t.name = xmlObject?.name?.text()
     459                t.unit = xmlObject?.unit?.text() == "" ? null : xmlObject?.unit?.text()
     460                t.comment = xmlObject?.comment?.text()
     461                t.required = xmlObject?.required?.text() == 'true' ? true : false
     462                t.preferredIdentifier = xmlObject?.preferredIdentifier?.text() == 'true' ? true : false
     463
     464                t.entity = entity
     465
     466                t.type = TemplateFieldType.valueOf( xmlObject?.type?.text() )
     467
     468                // Search for ontologies
     469                xmlObject.ontologies?.ontology.each {
     470                        def ncboId = it.ncboId?.text();
     471                        t.addToOntologies( Ontology.getOrCreateOntologyByNcboId( ncboId ) );
     472                }
     473
     474                // Search for list entries
     475                xmlObject.listItems?.listItem.each {
     476                        t.addToListEntries( new TemplateFieldListItem( name: it.name?.text() ) );
     477                }
     478                return t;
     479        }
     480
     481
    368482}
Note: See TracChangeset for help on using the changeset viewer.