<?php
/**
* Script that intends to read from a BoUML (http://bouml.free.fr/) file set its artifacts
* Completly open license; don't worry, use it as you want!
*
* Plenty of work need to be done like:
* 1. Add up all uml artifacts supported by boUML within UML_Parser_Configuration_BoUML class
* 2. Manage error better with more exceptions
*
* This is not meant to be a 'final' version or tool; only to embed in whatever you need to understand with BoUML files
*
* We at http://www.innox.com.mx use this code to be sure that all components designed in bouml are actually implemented in code :)
* @author jgonzalez@innox.com.mx
*
* Browse down in this script for a step by step classes configuration procedure
*/
require_once("UML_Package.php");
require_once("UML_Parser_Configuration.php");
require_once("UML_Parser_Configuration_BoUML.php");
require_once("UML_Artifact.php");
require_once("UML_Project.php");
require_once("UML_Data_Source.php");
/**
* Ths the source class configuration that handles how raw data from files is read
* @author jgonzalez
*
*/
class UML_Data_Source_BoUML extends UML_Data_Source_Abstract {
public function getSource($source = NULL) {
$complete_file_name = $this->configuration->getProjectPath()."/".$this->getArtifactName();
$source = NULL;
if (is_readable($complete_file_name)) {
$source = utf8_encode(file_get_contents($complete_file_name));
} else {
throw new Exception("BoUML::getSource() -> Unable to read file [$complete_file_name]");
}
return $source;
}
}
/**
* Script
* Version .1alpha
*
* todos:
* a) Add in all artifact types to UML_Parser_Configuration_BoUML
*/
// 1. Create configuration manager class
$configuration = new UML_Parser_Configuration_BoUML();
// 2. Configure the root folder for project files
$configuration->setProjectPath('/Users/jgonzalez/Documents/Documentos_Putty/karmaki_docs/diseno_global/Karmaki-Diseno_global');
// 3. Select main file
$bouml_data_source = new UML_Data_Source_BoUML('Karmaki-Diseno_global.prj');
$bouml_data_source->setConfiguration($configuration);
// 4. Create project from main source assigning configuration class
$bouml_project = UML_Project::createFromSource($bouml_data_source, $configuration);
// 5. Finally user can browse
foreach($bouml_project->getPackages() as $package) {
foreach($package->getArtifactsByType($configuration->getArtifactNameForComponent()) as $component) {
print($component->getName()."\n");
}
}
|