blob: 077b6ae73a018f1812386cff64b86d8976a81ff0 [file] [log] [blame]
class Data {
projectName
srcName
packageName
}
/**
*
*/
Type::markType( Type type, defSrc, defPrj ) {
if( type.data == null )
type.data = getTypeData();
}
// Get or create the Data for this Type
Type::getTypeData(defSrc, defPrj) : Data {
// Check if it exist
if( type.data != null )
return type.data ;
// Create it
Data data = new Data();
// srcName = si stereotype ==> stereotype; sinon si parent ==> parent.srcName; sinon defSrc
if( parent != null ) {
parentData = parent.getData(defSrc, defPrj);
data.srcName = getStereotype( , "src", parentData.srcName );
projectName = getStereotype( , "project", parentData.projectName );
packageName = parentData.packageName;
}
else {
data.srcName = getStereotype( , "src", defSrc );
projectName = getStereotype( , "project", defPrj );
packageName = DFLT_PACKAGE_NAME;
}
return type.data;
}
// Get or create the Data for this Package
// Check if the package is a src or project
Package::getTypeData(defSrc, defPrj) : Data {
// Check if it exist
if( type.data != null )
return type.data ;
// Create it
// Data data = new Data();
// Are we a "src" ?
if( isStereotyped("src") ) {
return createTypeDataFromSrcFolder(defSrc, defPrj);
}
else if( isStereotyped("project") ) {
return createTypeDataFromProject(defSrc, defPrj);
}
else if( self.isTypeOf(uml::Model) ) {
// This is a simple package
return createTypeDataFromUmlModel(defSrc, defPrj);
}
else {
// This is a simple package
return createTypeDataFromSimplePackage(defSrc, defPrj);
}
}
// Get or create the Data for this simple Package
//
// Don't check if the package is a src or project
Package::createTypeDataFromSimplePackage(defSrc, defPrj) : Data {
Data data = new Data();
// srcName = si stereotype ==> stereotype; sinon si parent ==> parent.srcName; sinon defSrc
if( parent != null ) {
parentData = parent.getData(defSrc, defPrj);
data.srcName = getStereotype( "JavaPackage", "src", parentData.srcName );
projectName = getStereotype( , "project", parentData.projectName );
// packageName = parentData.packageName + "." + (stereotype ? stereotype: self.name)
packageName = computePackageName( parentData.packageName, getStereotype( , "name", self.name ) );
}
else {
data.srcName = getStereotype( "JavaPackage", "src", defSrc );
projectName = getStereotype( , "project", defPrj );
packageName = getStereotype( , "name", self.name );
}
return type.data;
}
// Compute the package name from the prefix and suffix.
// check if prefix is null or size=0
computePackageName( prefix, suffix ) {
if( prefix != null && prefix != "")
return prefix + "." + suffix;
else
return suffix;
}
// Get or create the Data for a Package Stereotypes "SrcFolder"
//
// Don't Check if the package is a src or project
Package::createTypeDataFromSourceFolder(defSrc, defPrj) : Data {
Data data = new Data();
// srcName = si stereotype ==> stereotype; sinon si parent ==> parent.srcName; sinon defSrc
if( parent != null ) {
// Lookup for Project
parentData = parent.getData(defSrc, defPrj);
data.srcName = getStereotype( "JavaSrcFolder", "src", parentData.srcName );
projectName = getStereotype( , "project", parentData.projectName );
// packageName = "" or null, as we are in a srcFolder (root of packages)
packageName = null;
}
else {
data.srcName = getStereotype( "JavaPackage", "src", defSrc );
projectName = getStereotype( , "project", defPrj );
packageName = null;
}
return type.data;
}
// Get or create the Data for a Package Stereotypes "Project"
//
// Don't Check if the package is a src or project
Package::createTypeDataFromProjectFolder(defSrc, defPrj) : Data {
Data data = new Data();
data.srcName = getStereotype( "JavaProject", "src", defSrc );
projectName = getStereotype( , "project", defPrj );
packageName = null;
return type.data;
}
// Get or create the Data for a uml::Model
// This is the root, so stop recursivity
// Don't Check if the package is a src or project
Package::createTypeDataFromUmlModel(defSrc, defPrj) : Data {
Data data = new Data();
data.srcName = gdefSrc;
projectName = defPrj ;
packageName = null;
return type.data;
}