
import ns org.eclipse.osbp.dsl.tests.carstore.entities.Base
import ns org.eclipse.osbp.dsl.tests.carstore.entities.Car
import ns org.eclipse.osbp.dsl.tests.carstore.entities.Addon
import ns org.eclipse.osbp.dsl.tests.carstore.entities.ToCycle1
import ns org.eclipse.osbp.dsl.tests.carstore.entities.ToCycle2
import ns org.eclipse.osbp.dsl.tests.carstore.entities.Person
import ns org.eclipse.osbp.dsl.tests.carstore.entities.Address
package org.eclipse.osbp.dsl.tests.carstore.dtos {

	autoDto BaseDto wraps Base {

		inheritVar ^uuid
		inheritVar ^version
	}

	autoDto CarDto extends BaseDto wraps Car {

		inheritVar number
		inheritVar finishingDate
		inheritRef addons mapto AddonDto
		inheritRef owner mapto PersonDto
		inheritRef cycles1 mapto ToCycle1Dto
	}

	autoDto AddonDto extends BaseDto wraps Addon {

		inheritVar description
		inheritRef car mapto CarDto
	}

	autoDto ToCycle1Dto extends BaseDto wraps ToCycle1 {

		inheritRef car mapto CarDto
		inheritRef cycles2 mapto ToCycle2Dto
	}

	autoDto ToCycle2Dto extends BaseDto wraps ToCycle2 {

		inheritRef parent mapto ToCycle1Dto
		inheritRef car mapto CarDto
	}

	autoDto PersonDto extends BaseDto wraps Person {

		inheritVar firstname
		inheritVar lastname
		inheritRef ownsCars mapto CarDto
		inheritVar homeAddress mapto AddressDto
		inheritVar workAddress mapto AddressDto
	}

	autoDto AddressDto wraps Address {

		inheritVar streetname
		inheritVar postalcode
	}
}