-- @atlcompiler atl2006
-- @nsURI UML=http://www.eclipse.org/uml2/2.1.0/UML
module Public2Private;
create OUT : UML refining IN : UML;

helper context String def : toU1Case : String = 
	if self.size() > 0 
		then self.substring(1,1).toUpper() + self.substring(2,self.size()) 
 		else self 
	endif;

rule Property {
	from
		publicAttribute : UML!Property (
			publicAttribute.visibility = #public and publicAttribute.association.oclIsUndefined()
		)
	to
		privateAttribute : UML!Property (
			visibility <- #private
		),
		getter : UML!Operation (
			name <- 'get'+publicAttribute.name.toU1Case,
			class <- publicAttribute.refImmediateComposite(),
			type <- publicAttribute.type
		),
		setter : UML!Operation (
			name <- 'set'+publicAttribute.name.toU1Case,
			class <- publicAttribute.refImmediateComposite(),
			ownedParameter <- setterParam
		),
		setterParam : UML!Parameter (
			name <- publicAttribute.name,
			type <- publicAttribute.type
		)
}

