Hi,

Been looking at the classes created by the SourceGenerator (javaclassmapping=type) and have the following question/query:


Here's a snippet of my xsd file:


        <complexType name="G1_GEHR_DATE_TIME_RANGE">

                <complexContent>

                        <restriction base="gom:G1_RANGE">

                                <sequence>

                                        <element name="lower" type="gom:G1_GEHR_DATE_TIME" minOccurs="0"/>

                                        <element name="upper" type="gom:G1_GEHR_DATE_TIME" minOccurs="0"/>

                                        <element name="lower_is_infinite" type="gom:G1_BOOLEAN" default="false" minOccurs="0"/>

                                        <element name="upper_is_infinite" type="gom:G1_BOOLEAN" default="false" minOccurs="0"/>

                                        <element name="include_lower" type="gom:G1_BOOLEAN" default="true" minOccurs="0"/>

                                        <element name="include_upper" type="gom:G1_BOOLEAN" default="true" minOccurs="0"/>

                                        <element name="is_inside" type="gom:G1_BOOLEAN" default="true" minOccurs="0"/>

                                </sequence>

                        </restriction>

                </complexContent>

        </complexType>


        <complexType name="G1_RANGE" abstract="true">

                <complexContent>

                        <extension base="gom:G1_DATA_VALUE">

                                <sequence>

                                        <element name="lower" minOccurs="0"/>

                                        <element name="upper" minOccurs="0"/>

                                        <element name="lower_is_infinite" type="gom:G1_BOOLEAN" default="false" minOccurs="0"/>

                                        <element name="upper_is_infinite" type="gom:G1_BOOLEAN" default="false" minOccurs="0"/>

                                        <element name="include_lower" type="gom:G1_BOOLEAN" default="true" minOccurs="0"/>

                                        <element name="include_upper" type="gom:G1_BOOLEAN" default="true" minOccurs="0"/>

                                        <element name="is_inside" type="gom:G1_BOOLEAN" default="true" minOccurs="0"/>

                                </sequence>

                        </extension>

                </complexContent>

        </complexType>


        <complexType name="G1_DATA_VALUE"/>


The classes produced for the above are:


public class G1_DATA_VALUE implements java.io.Serializable
  As expected, no properties


public class G1_RANGE extends org.gehr.type.gom.G1_DATA_VALUE implements java.io.Serializable

  No properties?



public class G1_GEHR_DATE_TIME_RANGE extends org.gehr.type.gom.G1_RANGE implements java.io.Serializable

    private G1_GEHR_DATE_TIME _lower;

    private G1_GEHR_DATE_TIME _upper;

    private boolean _lower_is_infinite = false;

    private boolean _upper_is_infinite = false;

    private boolean _include_lower = true;

    private boolean _include_upper = true;

    private boolean _is_inside = true;

(other '_has...' properties removed)



Which presents a problem if you have multiple classes extending from G1_RANGE and need to reference them all as a GL_RANGE (as no methods).


Should the classes not be more like:


public class G1_RANGE extends org.gehr.type.gom.G1_DATA_VALUE implements java.io.Serializable

    private Object _lower;

    private Object _upper;

    private boolean _lower_is_infinite = false;

    private boolean _upper_is_infinite = false;

    private boolean _include_lower = true;

    private boolean _include_upper = true;

    private boolean _is_inside = true;


public class G1_GEHR_DATE_TIME_RANGE extends org.gehr.type.gom.G1_RANGE implements java.io.Serializable

  No properties, but type checking on relevant setter methods?


e.g.


public void setLower(Object lower) {

  if (lower instanceof G1_GEHR_DATE_TIME) {

    super.setLower(lower);

  } else {

    throw new IllegalArgumentException("Invalid type.");

  }

}




(just a thought)



If it can already be done then that's great. If not and considered a good idea then I'm prepared to have a go myself, but I'd need some direction on where to start in the code)



Regards,



Sean


--------------------------------------------------
Dr Sean Radford, MBBS, MSc
Senior Consultant
Agora Professional Services Ltd
[EMAIL PROTECTED]
http://www.agora.co.uk
--------------------------------------------------
Agora Professional Services is an entrepreneurial consulting firm specialising in e-Business and innovative solutions since 1995.



Reply via email to