
import ns org.eclipse.osbp.runtime.web.sample.entities.BaseUUID
import ns org.eclipse.osbp.runtime.web.sample.entities.Person
import ns org.eclipse.osbp.runtime.web.sample.entities.Address
import ns org.eclipse.osbp.runtime.web.sample.entities.Country
import ns org.eclipse.osbp.runtime.web.sample.entities.Gender
package org.eclipse.osbp.runtime.web.sample.dtos {

	autoDto BaseUUIDDto wraps BaseUUID {

		inheritVar ^uuid
	}

	autoDto PersonDto extends BaseUUIDDto wraps Person {

		inheritVar firstname
		inheritVar lastname
		inheritVar birthdate
		inheritVar age
		inheritVar weight
		inheritVar gender
		inheritRef address mapto AddressDto
	}

	autoDto AddressDto extends BaseUUIDDto wraps Address {

		inheritVar street
		inheritVar city
		inheritRef country mapto CountryDto
	}

	autoDto CountryDto extends BaseUUIDDto wraps Country {

		inheritVar name
		inheritVar isoCode
		inheritVar euMember
	}
	enum Gender {
		MALE,

		FEMALE
	}
}