package org.eclipse.osbp.runtime.web.sample.entities {

	datatype String jvmType String
	datatype double jvmType Double asPrimitive
	datatype int jvmType Integer asPrimitive
	datatype boolean jvmType Boolean asPrimitive
	datatype Date dateType date

	mappedSuperclass BaseUUID {
		persistenceUnit "sample"
		uuid String uuid
	}

	entity Person extends BaseUUID {
		persistenceUnit "sample"
		var filter String firstname
		var range String lastname
		var filter Date birthdate
		var filter int age
		var range double weight
		var Gender gender
		ref filterDepth 03 Address address
	}

	entity Address extends BaseUUID {
		persistenceUnit "sample"
		var filter String street
		var filter String city
		ref filterDepth 03 Country country
	}

	entity Country extends BaseUUID {
		persistenceUnit "sample"
		var filter String name
		var filter String isoCode
		var filter boolean euMember
	}

	enum Gender {
		MALE, FEMALE
	}

}