From: <ja...@us...> - 2006-09-13 11:52:50
|
Revision: 56 http://svn.sourceforge.net/surveyforge/?rev=56&view=rev Author: javism Date: 2006-09-13 04:52:33 -0700 (Wed, 13 Sep 2006) Log Message: ----------- * Core restructuring to support AbstractValueDomains * new concept of ConceptualDataElement and QuestionDataElement Modified Paths: -------------- trunk/surveyforge-core/src/main/java/org/surveyforge/core/data/RegisterData.java trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/ConceptualDataElement.java trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/DataElement.java trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/RegisterDataElement.java trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/StatisticalObjectType.java trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/ValueDomain.java trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/domain/StructuredValueDomain.java Added Paths: ----------- trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/QuestionDataElement.java Modified: trunk/surveyforge-core/src/main/java/org/surveyforge/core/data/RegisterData.java =================================================================== --- trunk/surveyforge-core/src/main/java/org/surveyforge/core/data/RegisterData.java 2006-09-13 10:49:44 UTC (rev 55) +++ trunk/surveyforge-core/src/main/java/org/surveyforge/core/data/RegisterData.java 2006-09-13 11:52:33 UTC (rev 56) @@ -35,6 +35,7 @@ import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.OneToOne; + import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.IndexColumn; import org.surveyforge.core.metadata.Register; Modified: trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/ConceptualDataElement.java =================================================================== --- trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/ConceptualDataElement.java 2006-09-13 10:49:44 UTC (rev 55) +++ trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/ConceptualDataElement.java 2006-09-13 11:52:33 UTC (rev 56) @@ -22,12 +22,10 @@ package org.surveyforge.core.metadata; import javax.persistence.Entity; -import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; -import org.surveyforge.core.survey.Question; +import org.surveyforge.core.metadata.domain.AbstractValueDomain; -// TODO: Measure unit? // TODO: Elaborate on comments /** * Conceptual data elements define conceptual standards for data elements. Conceptual data elements have a context independent @@ -37,14 +35,10 @@ * @author jsegura */ @Entity -public class ConceptualDataElement extends DataElement +public class ConceptualDataElement extends QuestionDataElement { private static final long serialVersionUID = -6880246451318487216L; - /** */ - @ManyToOne(optional = true) - @JoinColumn(name = "question_id") - private Question question; /** */ @ManyToOne private ObjectVariable objectVariable; @@ -59,28 +53,14 @@ * @param valueDomain * @param identifier */ - public ConceptualDataElement( ValueDomain valueDomain, String identifier ) + public ConceptualDataElement( AbstractValueDomain valueDomain, ObjectVariable objectVariable, String identifier ) { super( valueDomain, identifier ); + this.setObjectVariable( objectVariable ); } - /** - * @return Returns the question. - */ - public Question getQuestion( ) - { - return this.question; - } /** - * @param question The question to set. - */ - public void setQuestion( Question question ) - { - this.question = question; - } - - /** * @return Returns the objectVariable. */ public ObjectVariable getObjectVariable( ) @@ -111,4 +91,4 @@ { return this.getIdentifier( ).hashCode( ); } - } + } \ No newline at end of file Modified: trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/DataElement.java =================================================================== --- trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/DataElement.java 2006-09-13 10:49:44 UTC (rev 55) +++ trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/DataElement.java 2006-09-13 11:52:33 UTC (rev 56) @@ -40,6 +40,7 @@ import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.IndexColumn; +import org.surveyforge.core.metadata.domain.AbstractValueDomain; // TODO Elaborate on comments /** @@ -75,7 +76,7 @@ /** */ @ManyToOne(cascade = {CascadeType.ALL}) @JoinColumn(name = "valueDomain_id") - private ValueDomain valueDomain; + private AbstractValueDomain valueDomain; /** */ @ManyToOne(cascade = {CascadeType.ALL}) @JoinColumn(name = "variableStructure_id", insertable = false, updatable = false) @@ -99,7 +100,7 @@ * @param valueDomain * @param identifier */ - public DataElement( ValueDomain valueDomain, String identifier ) + public DataElement( AbstractValueDomain valueDomain, String identifier ) { this.setValueDomain( valueDomain ); this.setIdentifier( identifier ); @@ -162,7 +163,7 @@ /** * @return Returns the valueDomain. */ - public ValueDomain getValueDomain( ) + public AbstractValueDomain getValueDomain( ) { return this.valueDomain; } @@ -170,7 +171,7 @@ /** * @param valueDomain The valueDomain to set. */ - public void setValueDomain( ValueDomain valueDomain ) + public void setValueDomain( AbstractValueDomain valueDomain ) { if( valueDomain != null ) this.valueDomain = valueDomain; Added: trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/QuestionDataElement.java =================================================================== --- trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/QuestionDataElement.java (rev 0) +++ trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/QuestionDataElement.java 2006-09-13 11:52:33 UTC (rev 56) @@ -0,0 +1,84 @@ +/* + * surveyforge-core - Copyright (C) 2006 OPEN input - http://www.openinput.com/ + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to + * the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA + * + * $Id$ + */ +package org.surveyforge.core.metadata; + +import javax.persistence.Entity; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; + +import org.surveyforge.core.metadata.domain.AbstractValueDomain; +import org.surveyforge.core.survey.Question; + +/** + * @author jsegura + */ +@Entity +public class QuestionDataElement extends DataElement + { + /** + * + */ + private static final long serialVersionUID = 5831283455803703349L; + + + @ManyToOne(optional = true) + @JoinColumn(name = "question_id") + private Question question; + + + protected QuestionDataElement( ) + {} + + public QuestionDataElement( AbstractValueDomain valueDomain, String identifier ) + { + super( valueDomain, identifier ); + } + + /** + * @return Returns the question. + */ + public Question getQuestion( ) + { + return this.question; + } + + /** + * @param question The question to set. + */ + public void setQuestion( Question question ) + { + this.question = question; + } + + @Override + public boolean equals( Object object ) + { + QuestionDataElement other = (QuestionDataElement) object; + return this.getIdentifier( ).equals( other.getIdentifier( ) ); + } + + @Override + public int hashCode( ) + { + return this.getIdentifier( ).hashCode( ); + } + } Property changes on: trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/QuestionDataElement.java ___________________________________________________________________ Name: svn:keywords + Date Revision Author HeadURL Id Modified: trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/RegisterDataElement.java =================================================================== --- trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/RegisterDataElement.java 2006-09-13 10:49:44 UTC (rev 55) +++ trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/RegisterDataElement.java 2006-09-13 11:52:33 UTC (rev 56) @@ -26,7 +26,9 @@ import javax.persistence.ManyToOne; import javax.persistence.OneToOne; +import org.surveyforge.core.metadata.domain.AbstractValueDomain; import org.surveyforge.core.survey.Question; +import org.surveyforge.core.survey.QuestionnaireElement; /** * Register data elements define data elements for a register. In contrast to an abstract data element a register data element is @@ -49,6 +51,9 @@ @ManyToOne(optional = true) private Question question; + @OneToOne + private QuestionnaireElement questionnaireElement; + protected RegisterDataElement( ) {}; @@ -61,14 +66,14 @@ */ public RegisterDataElement( ConceptualDataElement conceptualDataElement, String identifier ) { - super( conceptualDataElement.getValueDomain( ).clone( ), identifier ); + super( identifier ); this.setConceptualDataElement( conceptualDataElement ); } /** * Creates a new instance of ConceptualDataElement linked with a {@link ConceptualDataElement}. */ - public RegisterDataElement( ValueDomain valueDomain, String identifier ) + public RegisterDataElement( AbstractValueDomain valueDomain, String identifier ) { super( valueDomain, identifier ); } @@ -89,12 +94,8 @@ * @param conceptualDataElement The conceptualDataElements to set. * @throws NullPointerException If the conceptualDataElement is <code>null</code>. */ - public void setConceptualDataElement( ConceptualDataElement conceptualDataElement ) + private void setConceptualDataElement( ConceptualDataElement conceptualDataElement ) { - if( conceptualDataElement == null ) - { - this.setValueDomain( conceptualDataElement.getValueDomain( ).clone( ) ); - } this.conceptualDataElement = conceptualDataElement; } @@ -129,4 +130,25 @@ { this.question = question; } + + /** + * @return the questionnaireElement + */ + public QuestionnaireElement getQuestionnaireElement( ) + { + return questionnaireElement; + } + + /** + * @param questionnaireElement the questionnaireElement to set + */ + public void setQuestionnaireElement( QuestionnaireElement questionnaireElement ) + { + this.questionnaireElement = questionnaireElement; + } + + public AbstractValueDomain getValueDomain( ) + { + return (super.getValueDomain( ) != null ? super.getValueDomain( ) : this.getConceptualDataElement( ).getValueDomain( )); + } } Modified: trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/StatisticalObjectType.java =================================================================== --- trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/StatisticalObjectType.java 2006-09-13 10:49:44 UTC (rev 55) +++ trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/StatisticalObjectType.java 2006-09-13 11:52:33 UTC (rev 56) @@ -273,7 +273,6 @@ throw new NullPointerException( ); } - // TODO add subtypes to hashcode & equals @Override public boolean equals( Object object ) { Modified: trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/ValueDomain.java =================================================================== --- trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/ValueDomain.java 2006-09-13 10:49:44 UTC (rev 55) +++ trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/ValueDomain.java 2006-09-13 11:52:33 UTC (rev 56) @@ -23,12 +23,11 @@ import java.io.Serializable; + /** * @author jsegura */ public interface ValueDomain { public boolean isValid( Serializable object ); - - public ValueDomain clone( ); } Modified: trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/domain/StructuredValueDomain.java =================================================================== --- trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/domain/StructuredValueDomain.java 2006-09-13 10:49:44 UTC (rev 55) +++ trunk/surveyforge-core/src/main/java/org/surveyforge/core/metadata/domain/StructuredValueDomain.java 2006-09-13 11:52:33 UTC (rev 56) @@ -23,7 +23,7 @@ @OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.ALL}) @IndexColumn(name = "subDomainsIndex") @JoinColumn(name = "upperDomain_id") - private List<ValueDomain> subDomains = new ArrayList<ValueDomain>( ); + private List<AbstractValueDomain> subDomains = new ArrayList<AbstractValueDomain>( ); public StructuredValueDomain( ) @@ -66,12 +66,12 @@ /** * @return the subDomains */ - public List<ValueDomain> getSubDomains( ) + public List<AbstractValueDomain> getSubDomains( ) { return Collections.unmodifiableList( this.subDomains ); } - public void addSubDomain( ValueDomain domain ) + public void addSubDomain( AbstractValueDomain domain ) { if( domain != null ) { @@ -81,7 +81,7 @@ throw new NullPointerException( ); } - public void removeSubDomain( ValueDomain domain ) + public void removeSubDomain( AbstractValueDomain domain ) { if( domain != null ) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |